oota-llvm.git
10 years agoMC: Fix associative sections on COFF
David Majnemer [Fri, 27 Jun 2014 17:19:44 +0000 (17:19 +0000)]
MC: Fix associative sections on COFF

COFF sections in MC were represented by a tuple of section-name and
COMDAT-name.  This is not sufficient to represent a .text section
associated with another .text section; we need a way to distinguish
between the key section and the one marked associative.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211913 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[FastISel][X86] Fix typos.
Juergen Ributzka [Fri, 27 Jun 2014 17:16:34 +0000 (17:16 +0000)]
[FastISel][X86] Fix typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211911 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Don't crash on unhandled instruction in promote alloca
Matt Arsenault [Fri, 27 Jun 2014 16:52:49 +0000 (16:52 +0000)]
R600: Don't crash on unhandled instruction in promote alloca

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211906 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agollvm-objdump: don't assert if ELF file has no sections
Ed Maste [Fri, 27 Jun 2014 16:37:20 +0000 (16:37 +0000)]
llvm-objdump: don't assert if ELF file has no sections

FreeBSD core files, for example, have no sections (only program headers).

llvm.org/pr20139
Differential Revision: http://reviews.llvm.org/D4323

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211904 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoClean up unused variable warning in release build.
Alexander Kornienko [Fri, 27 Jun 2014 15:30:55 +0000 (15:30 +0000)]
Clean up unused variable warning in release build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211902 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRe-apply r211287: Remove support for LLVM runtime multi-threading.
Chandler Carruth [Fri, 27 Jun 2014 15:13:01 +0000 (15:13 +0000)]
Re-apply r211287: Remove support for LLVM runtime multi-threading.

I'll fix the problems in libclang and other projects in ways that don't
require <mutex> until we sort out the cygwin situation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211900 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[PowerPC] Constrain base register in PPCRegisterInfo::resolveFrameIndex
Ulrich Weigand [Fri, 27 Jun 2014 13:04:12 +0000 (13:04 +0000)]
[PowerPC] Constrain base register in PPCRegisterInfo::resolveFrameIndex

I've run into a bug where current LLVM at -O0 (with fast-isel)
generated invalid code like:

        ld 0, 20936(1)                  # 8-byte Folded Reload
        stw 12, 10348(0)
        stw 12, 10344(0)

The underlying vreg had been introduced as base register by the
Local Stack Slot Allocation pass.  That register was constrained
to G8RC by PPCRegisterInfo::materializeFrameBaseRegister to match
the ADDI instruction used to set it, but it was *not* constrained
to G8RC_NOX0 to fit the *use* of the register in an address.

That should have happened in PPCRegisterInfo::resolveFrameIndex.
This patch adds an appropriate constrainRegClass call.

Reviewed by Hal Finkel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211897 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[x86] Clean up some unused variables, especially in release builds.
Chandler Carruth [Fri, 27 Jun 2014 12:04:18 +0000 (12:04 +0000)]
[x86] Clean up some unused variables, especially in release builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211894 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[x86] Teach the target combine step to aggressively fold pshufd insturcions.
Chandler Carruth [Fri, 27 Jun 2014 11:40:13 +0000 (11:40 +0000)]
[x86] Teach the target combine step to aggressively fold pshufd insturcions.

Summary:
This allows it to fold pshufd instructions across intervening
half-shuffles and other noise. This pattern actually shows up in the
generic lowering tests, but I've also added direct tests using
intrinsics to make sure that the specific desired functionality is
working even if the lowering stuff changes in the future.

Differential Revision: http://reviews.llvm.org/D4292

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211892 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ELF][Mips] Fix recognition of MIPS 64-bit arch in the ELFObjectFile:getArch() method.
Simon Atanasyan [Fri, 27 Jun 2014 11:36:45 +0000 (11:36 +0000)]
[ELF][Mips] Fix recognition of MIPS 64-bit arch in the ELFObjectFile:getArch() method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211891 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[x86] Teach the target-specific combining how to aggressively fold
Chandler Carruth [Fri, 27 Jun 2014 11:34:40 +0000 (11:34 +0000)]
[x86] Teach the target-specific combining how to aggressively fold
half-shuffles, even looking through intervening instructions in a chain.

Summary:
This doesn't happen to show up with any test cases I've found for the current
shuffle lowering, but previous attempts would benefit from this and it seems
generally useful. I've tested it directly using intrinsics, which also shows
that it will work with hand vectorized code as well.

Note that even though pshufd isn't directly used in these tests, it gets
exercised because we combine some of the half shuffles into a pshufd
first, and then merge them.

Differential Revision: http://reviews.llvm.org/D4291

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211890 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[x86] Teach the X86 backend to DAG-combine SSE2 shuffles that are
Chandler Carruth [Fri, 27 Jun 2014 11:27:52 +0000 (11:27 +0000)]
[x86] Teach the X86 backend to DAG-combine SSE2 shuffles that are
trivially redundant.

This fixes several cases in the new vector shuffle lowering algorithm
which would generate redundant shuffle instructions for the sake of
simplicity.

I'm also deleting a testcase which was somewhat ridiculous. It was
checking for a bug in 2007 about incorrectly transforming shuffles by
looking for the string "-86" in the output of a pretty substantial
function. This test case doesn't seem to have any value at this point.

Differential Revision: http://reviews.llvm.org/D4240

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211889 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[x86] Begin a significant overhaul of how vector lowering is done in the
Chandler Carruth [Fri, 27 Jun 2014 11:23:44 +0000 (11:23 +0000)]
[x86] Begin a significant overhaul of how vector lowering is done in the
x86 backend.

This sketches out a new code path for vector lowering, hidden behind an
off-by-default flag while it is under development. The fundamental idea
behind the new code path is to aggressively break down the problem space
in ways that ease selecting the odd set of instructions available on
x86, and carefully avoid scalarizing code even when forced to use older
ISAs. Notably, this starts off restricting itself to SSE2 and implements
the complete vector shuffle and blend space for 128-bit vectors in SSE2
without scalarizing. The plan is to layer on top of this ISA extensions
where we can bail out of the complex SSE2 lowering and opt for
a cheaper, specialized instruction (or set of instructions). It also
needs to be generalized to AVX and AVX512 vector widths.

Currently, this does a decent but not perfect job for SSE2. There are
some specific shortcomings that I plan to address:
- We need a peephole combine to fold together shuffles where possible.
  There are cases where a previous shuffle could be modified slightly to
  arrange for elements to be in the correct position and a later shuffle
  eliminated. Doing this eagerly added quite a bit of complexity, and
  so my plan is to combine away these redundancies afterward.
- There are a lot more clever ways to use unpck and pack that need to be
  added. This is essential for real world shuffles as it turns out...

Once SSE2 is polished a bit I should be able to get interesting numbers
on performance improvements on benchmarks conducive to vectorization.
All of this will be off by default until it is functionally equivalent
of course.

Differential Revision: http://reviews.llvm.org/D4225

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211888 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[RuntimeDyld, PowerPC] Fix/improve handling of TOC relocations
Ulrich Weigand [Fri, 27 Jun 2014 10:32:14 +0000 (10:32 +0000)]
[RuntimeDyld, PowerPC] Fix/improve handling of TOC relocations

Current PPC64 RuntimeDyld code to handle TOC relocations has two
problems:

- With recent linkers, in addition to the relocations that implicitly
  refer to the TOC base (R_PPC64_TOC*), you can now also use the .TOC.
  magic symbol with any other relocation to refer to the TOC base
  explicitly.  This isn't currently used much in ELFv1 code (although
  it could be), but it is essential in ELFv2 code.

- In a complex JIT environment with multiple modules, each module may
  have its own .toc section, and TOC relocations in one module must
  refer to *its own* TOC section.  The current findPPC64TOC implementation
  does not correctly implement this; in fact, it will always return the
  address of the first TOC section it finds anywhere.  (Note that at the
  time findPPC64TOC is called, we don't even *know* which module the
  relocation originally resided in, so it is not even possible to fix
  this routine as-is.)

This commit fixes both problems by handling TOC relocations earlier, in
processRelocationRef.  To do this, I've removed the findPPC64TOC routine
and replaced it by a new routine findPPC64TOCSection, which works
analogously to findOPDEntrySection in scanning the sections of the
ObjImage provided by its caller, processRelocationRef.  This solves the
issue of finding the correct TOC section associated with the current
module.

This makes it straightforward to implement both R_PPC64_TOC relocations,
and relocations explicitly refering to the .TOC. symbol, directly in
processRelocationRef.  There is now a new problem in implementing the
R_PPC64_TOC16* relocations, because those can now in theory involve
*three* different sections: the relocation may be applied in section A,
refer explicitly to a symbol in section B, and refer implicitly to the
TOC section C.  The final processing of the relocation thus may only
happen after all three of these sections have been assigned final
addresses.  There is currently no obvious means to implement this in
its general form with the common-code RuntimeDyld infrastructure.

Fortunately, ppc64 code usually makes no use of this most general form;
in fact, TOC16 relocations are only ever generated by LLVM for symbols
residing themselves in the TOC, which means "section B" == "section C"
in the above terminology.  This special case can easily be handled with
the current infrastructure, and that is what this patch does.
[ Unhandled cases result in an explicit error, unlike the current code
which silently returns the wrong TOC base address ... ]

This patch makes the JIT work on both BE and LE (ELFv2 requires
additional patches, of course), and allowed me to successfully run
complex JIT scenarios (via mesa/llvmpipe).

Reviewed by Hal Finkel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211885 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoIRReader: don't mark MemoryBuffers const
Alp Toker [Fri, 27 Jun 2014 09:19:14 +0000 (09:19 +0000)]
IRReader: don't mark MemoryBuffers const

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211883 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded instruction combine to transform few more negative values addition to subtracti...
Dinesh Dwivedi [Fri, 27 Jun 2014 07:47:35 +0000 (07:47 +0000)]
Added instruction combine to transform few more negative values addition to subtraction (Part 3)
This patch enables transforms for

(x + (~(y | c) + 1) --> x - (y | c) if c is odd

Differential Revision: http://reviews.llvm.org/D4210

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211881 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove the caching of the target machine from SystemZTargetLowering.
Eric Christopher [Fri, 27 Jun 2014 07:38:01 +0000 (07:38 +0000)]
Remove the caching of the target machine from SystemZTargetLowering.
Update all callers and uses accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211880 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGlobalOpt: Fix constantfold-initializers.ll test
David Majnemer [Fri, 27 Jun 2014 07:36:26 +0000 (07:36 +0000)]
GlobalOpt: Fix constantfold-initializers.ll test

The test added in r211762 was sloppy, the correct initializer wasn't
added to @llvm.global_ctors

Spotted by Pasi Parviainen!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211879 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove target machine caching from SystemZInstrInfo and
Eric Christopher [Fri, 27 Jun 2014 07:01:17 +0000 (07:01 +0000)]
Remove target machine caching from SystemZInstrInfo and
SystemZRegisterInfo and replace it with the subtarget as that's
all they needed in the first place. Update all uses and calls
accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211877 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Revert "Revert "PR20038: DebugInfo: Inlined call sites where the caller has...
David Blaikie [Fri, 27 Jun 2014 05:34:05 +0000 (05:34 +0000)]
Revert "Revert "Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location."""

Reverting this again, didn't mean to commit it - while r211872 fixes one
of the issues here, there are still others to figure out and address.

This reverts commit r211871.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211873 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoArgumentPromotion: Propagate debug locations on calls for which arguments are promoted.
David Blaikie [Fri, 27 Jun 2014 05:32:09 +0000 (05:32 +0000)]
ArgumentPromotion: Propagate debug locations on calls for which arguments are promoted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211872 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug...
David Blaikie [Fri, 27 Jun 2014 05:31:49 +0000 (05:31 +0000)]
Revert "Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location.""

This reverts commit r211724.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211871 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHave SystemZSelectionDAGInfo constructor take a DataLayout rather
Eric Christopher [Fri, 27 Jun 2014 05:26:28 +0000 (05:26 +0000)]
Have SystemZSelectionDAGInfo constructor take a DataLayout rather
than a target machine since it doesn't need anything past the
DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211870 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRename getX86ConditonCode -> getX86ConditionCode
Craig Topper [Fri, 27 Jun 2014 05:18:21 +0000 (05:18 +0000)]
Rename getX86ConditonCode -> getX86ConditionCode

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211869 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoLeft out the NDEBUG in the previous checkin.
Andrew Trick [Fri, 27 Jun 2014 05:09:36 +0000 (05:09 +0000)]
Left out the NDEBUG in the previous checkin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211867 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMachineScheduler: add some book-keeping to fix an assert.
Andrew Trick [Fri, 27 Jun 2014 04:57:05 +0000 (04:57 +0000)]
MachineScheduler: add some book-keeping to fix an assert.

Fixe for Bug 20057 - Assertion failied in llvm::SUnit* llvm::SchedBoundary::pickOnlyChoice(): Assertion `i <= (HazardRec->getMaxLookAhead() + MaxObservedStall) && "permanent hazard"'

Thanks to Chad for the test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211865 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPropagate const-correctness into parseBitcodeFile()
Alp Toker [Fri, 27 Jun 2014 04:48:32 +0000 (04:48 +0000)]
Propagate const-correctness into parseBitcodeFile()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211864 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHave MipsSelectionDAGInfo constructor take a DataLayout rather
Eric Christopher [Fri, 27 Jun 2014 04:38:30 +0000 (04:38 +0000)]
Have MipsSelectionDAGInfo constructor take a DataLayout rather
than a target machine since it doesn't need anything past the
DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211863 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoParseIR: don't take ownership of the MemoryBuffer
Alp Toker [Fri, 27 Jun 2014 04:33:58 +0000 (04:33 +0000)]
ParseIR: don't take ownership of the MemoryBuffer

clang was needlessly duplicating whole memory buffer contents in an attempt to
satisfy unclear ownership semantics. Let's just hide internal LLVM quirks and
present a simple non-owning interface.

The public C API preserves previous behaviour for stability.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211861 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove NVPTX subtarget dependent variables from the target machine
Eric Christopher [Fri, 27 Jun 2014 04:33:14 +0000 (04:33 +0000)]
Move NVPTX subtarget dependent variables from the target machine
to the subtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211860 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Add some testcases for promote alloca pass.
Matt Arsenault [Fri, 27 Jun 2014 03:55:55 +0000 (03:55 +0000)]
R600: Add some testcases for promote alloca pass.

More complicated GEPs are skipped. Add some tests to
actually stress this skipping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211859 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse the target lowering we can get off of the DAG rather than off
Eric Christopher [Fri, 27 Jun 2014 03:45:49 +0000 (03:45 +0000)]
Use the target lowering we can get off of the DAG rather than off
of the cached target machine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211858 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSupport: update DLLCharacteristics enumeration
Saleem Abdulrasool [Fri, 27 Jun 2014 03:11:18 +0000 (03:11 +0000)]
Support: update DLLCharacteristics enumeration

Add the new AppContainer characteristic which is import for Windows Store
(Metro) compatible applications.  Add the new Control Flow Guard flag to bring
the enumeration up to date with the current values as of Windows 8.1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211855 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSupport: tweak comment layout
Saleem Abdulrasool [Fri, 27 Jun 2014 03:11:14 +0000 (03:11 +0000)]
Support: tweak comment layout

Make the comment layout more uniform.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211854 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't force the build of toos/lto as a static lib.
Rafael Espindola [Fri, 27 Jun 2014 02:51:21 +0000 (02:51 +0000)]
Don't force the build of toos/lto as a static lib.

Any uses of tools/lto as a static lib should probably move to lib/LTO.
This was also never implemented in the configure build, so this reduces
the differences among the two.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211852 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix missing newline and simplify debug printing.
Matt Arsenault [Fri, 27 Jun 2014 02:36:59 +0000 (02:36 +0000)]
Fix missing newline and simplify debug printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211850 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Move load/store ReplaceNodeResults to common code.
Matt Arsenault [Fri, 27 Jun 2014 02:33:47 +0000 (02:33 +0000)]
R600: Move load/store ReplaceNodeResults to common code.

Future patches will want to custom lower loads on SI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211848 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove the constructor for NVPTXFrameLowering into the implementation
Eric Christopher [Fri, 27 Jun 2014 02:05:24 +0000 (02:05 +0000)]
Move the constructor for NVPTXFrameLowering into the implementation
file in preparation for the subtarget move.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211847 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unnecessary caching of the TargetMachine on NVPTXFrameLowering.
Eric Christopher [Fri, 27 Jun 2014 02:05:22 +0000 (02:05 +0000)]
Remove unnecessary caching of the TargetMachine on NVPTXFrameLowering.
Adjust the constructor accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211846 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRework the logic for setting the TargetName. This appears to
Eric Christopher [Fri, 27 Jun 2014 02:05:19 +0000 (02:05 +0000)]
Rework the logic for setting the TargetName. This appears to
be shorter and identical in goal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211845 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove caching of the target machine in NVPTXInstrInfo and
Eric Christopher [Fri, 27 Jun 2014 01:27:08 +0000 (01:27 +0000)]
Remove caching of the target machine in NVPTXInstrInfo and
update constructor accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211840 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove comment that duplicated information in the constructor
Eric Christopher [Fri, 27 Jun 2014 01:27:06 +0000 (01:27 +0000)]
Remove comment that duplicated information in the constructor
that it's after.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211839 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove commented out code.
Eric Christopher [Fri, 27 Jun 2014 01:27:05 +0000 (01:27 +0000)]
Remove commented out code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211838 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove extraneous parens and extraneous const cast (and fix the
Eric Christopher [Fri, 27 Jun 2014 01:27:03 +0000 (01:27 +0000)]
Remove extraneous parens and extraneous const cast (and fix the
prototype for the function to patch what we were returning).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211837 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove the subtarget dependent features from the target machine to
Eric Christopher [Fri, 27 Jun 2014 01:14:54 +0000 (01:14 +0000)]
Move the subtarget dependent features from the target machine to
the subtarget for the MSP430 target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211836 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove uses and caches of the target machine and subtarget from
Eric Christopher [Fri, 27 Jun 2014 01:14:50 +0000 (01:14 +0000)]
Remove uses and caches of the target machine and subtarget from
both MSP430InstrInfo and MSP430RegisterInfo. Remove unused member
variable StackAlign from MSP430RegisterInfo. Update constructors
accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211835 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove caching of an unused subtarget from MSP430FrameLowering.
Eric Christopher [Fri, 27 Jun 2014 00:52:11 +0000 (00:52 +0000)]
Remove caching of an unused subtarget from MSP430FrameLowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211830 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] AVX512: Add vbroadcasti*
Adam Nemet [Fri, 27 Jun 2014 00:43:38 +0000 (00:43 +0000)]
[X86] AVX512: Add vbroadcasti*

For now I used a separate template for these sub-vector/tuple broadcasts
rather than sharing the mem variants with avx512_int_broadcast_rm.

<rdar://problem/17402869>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211828 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unnecessary caching of variables by MSP430TargetLowering and
Eric Christopher [Fri, 27 Jun 2014 00:37:59 +0000 (00:37 +0000)]
Remove unnecessary caching of variables by MSP430TargetLowering and
make the constructor more general since it only needs a target
machine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211827 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHave MSP430SelectionDAGInfo constructor take a DataLayout rather
Eric Christopher [Fri, 27 Jun 2014 00:37:57 +0000 (00:37 +0000)]
Have MSP430SelectionDAGInfo constructor take a DataLayout rather
than a target machine since it doesn't need anything past the
DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211826 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove all of the hexagon subtarget dependent variables from the target
Eric Christopher [Fri, 27 Jun 2014 00:27:40 +0000 (00:27 +0000)]
Move all of the hexagon subtarget dependent variables from the target
machine to the subtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211824 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHave HexagonSelectionDAGInfo take a DataLayout rather than a
Eric Christopher [Fri, 27 Jun 2014 00:18:25 +0000 (00:18 +0000)]
Have HexagonSelectionDAGInfo take a DataLayout rather than a
target machine since that's all it needs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211822 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMake HexagonISelLowering not dependent upon a HexagonTargetMachine,
Eric Christopher [Fri, 27 Jun 2014 00:13:52 +0000 (00:13 +0000)]
Make HexagonISelLowering not dependent upon a HexagonTargetMachine,
but a normal TargetMachine and remove a few cached uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211821 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReduce indentation.
Eric Christopher [Fri, 27 Jun 2014 00:13:49 +0000 (00:13 +0000)]
Reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211820 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unnecessary caching of the subtarget for HexagonFrameLowering and remove the...
Eric Christopher [Fri, 27 Jun 2014 00:13:47 +0000 (00:13 +0000)]
Remove unnecessary caching of the subtarget for HexagonFrameLowering and remove the unused constructor argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211819 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoInstrItineraryData is already on the subtarget, no reason to
Eric Christopher [Fri, 27 Jun 2014 00:13:43 +0000 (00:13 +0000)]
InstrItineraryData is already on the subtarget, no reason to
cache it on the target as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211818 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[StackMaps] Enable patchpoint liveness analysis per default.
Juergen Ributzka [Thu, 26 Jun 2014 23:39:52 +0000 (23:39 +0000)]
[StackMaps] Enable patchpoint liveness analysis per default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211817 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Stackmaps] Remove the liveness calculation for stackmap intrinsics.
Juergen Ributzka [Thu, 26 Jun 2014 23:39:44 +0000 (23:39 +0000)]
[Stackmaps] Remove the liveness calculation for stackmap intrinsics.

There is no need to calculate the liveness information for stackmaps. The
liveness information is still available for the patchpoint intrinsic and
that is also the intended usage model.

Related to <rdar://problem/17473725>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211816 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[RuntimeDyld] Teach MachOObjectImage to deregister itself with the debugger upon
Lang Hames [Thu, 26 Jun 2014 23:05:44 +0000 (23:05 +0000)]
[RuntimeDyld] Teach MachOObjectImage to deregister itself with the debugger upon
destruction the same way ELFObjectImage does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211815 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "Introduce a string_ostream string builder facilty"
Alp Toker [Thu, 26 Jun 2014 22:52:05 +0000 (22:52 +0000)]
Revert "Introduce a string_ostream string builder facilty"

Temporarily back out commits r211749, r211752 and r211754.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211814 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove the various Subtarget dependent members down to the subtarget
Eric Christopher [Thu, 26 Jun 2014 22:33:55 +0000 (22:33 +0000)]
Move the various Subtarget dependent members down to the subtarget
for the Sparc port. Use the same initializeSubtargetDependencies
function to handle initialization similar to the other ports to
handle dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211811 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoHave SparcSelectionDAGInfo take a DataLayout to initialize since
Eric Christopher [Thu, 26 Jun 2014 22:33:52 +0000 (22:33 +0000)]
Have SparcSelectionDAGInfo take a DataLayout to initialize since
that's all it needs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211810 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove the storage and use of the subtarget out of the sparc frame
Eric Christopher [Thu, 26 Jun 2014 22:33:50 +0000 (22:33 +0000)]
Remove the storage and use of the subtarget out of the sparc frame
lowering code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211809 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agofixed typo
Sanjay Patel [Thu, 26 Jun 2014 22:18:51 +0000 (22:18 +0000)]
fixed typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211808 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix the new LTOCodeGenerator setup in gold to parse options before using MAttrs.
Tom Roeder [Thu, 26 Jun 2014 20:43:27 +0000 (20:43 +0000)]
Fix the new LTOCodeGenerator setup in gold to parse options before using MAttrs.

This fixes a regression that made clang -flto -Wl,--plugin-opt=-mattr=+aes not
pass the "+aes" option to the LTOCodeGenerator attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211804 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGVN: Preserve invariant.load metadata
Arnold Schwaighofer [Thu, 26 Jun 2014 19:51:19 +0000 (19:51 +0000)]
GVN: Preserve invariant.load metadata

If both instructions to be replaced are marked invariant the resulting
instruction is invariant.

rdar://13358910

Fix by Erik Eckstein!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211801 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove extraneous includes from the target machines.
Eric Christopher [Thu, 26 Jun 2014 19:30:05 +0000 (19:30 +0000)]
Remove extraneous includes from the target machines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211800 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove all of the ARM subtarget features down onto the subtarget
Eric Christopher [Thu, 26 Jun 2014 19:30:02 +0000 (19:30 +0000)]
Move all of the ARM subtarget features down onto the subtarget
rather than the target machine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211799 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove the frame lowering constructors out of line to avoid circular
Eric Christopher [Thu, 26 Jun 2014 19:29:59 +0000 (19:29 +0000)]
Move the frame lowering constructors out of line to avoid circular
includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211798 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoChanged Phab 'CC' to 'subscriber'; fixed typo
Sanjay Patel [Thu, 26 Jun 2014 18:12:42 +0000 (18:12 +0000)]
Changed Phab 'CC' to 'subscriber'; fixed typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211793 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Add FP mode bits to binary.
Matt Arsenault [Thu, 26 Jun 2014 17:22:30 +0000 (17:22 +0000)]
R600/SI: Add FP mode bits to binary.

The default rounding mode to initialize the mode register needs
to be reported to the runtime. Fill in other bits a kernel
may be interested in setting for future use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211791 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSilencing a warning about isZExtFree hiding an inherited virtual function. No functio...
Aaron Ballman [Thu, 26 Jun 2014 13:45:47 +0000 (13:45 +0000)]
Silencing a warning about isZExtFree hiding an inherited virtual function. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211783 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSilence a warning due to a comparison between signed and unsigned.
Andrea Di Biagio [Thu, 26 Jun 2014 13:41:10 +0000 (13:41 +0000)]
Silence a warning due to a comparison between signed and unsigned.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211782 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd support for ppc64/power8 as a host
Will Schmidt [Thu, 26 Jun 2014 13:37:03 +0000 (13:37 +0000)]
Add support for ppc64/power8 as a host

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211781 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoadd ppc64/pwr8 as target
Will Schmidt [Thu, 26 Jun 2014 13:36:19 +0000 (13:36 +0000)]
add ppc64/pwr8 as target
includes handling DIR_PWR8 where appropriate
The P7Model Itinerary is currently tied in for use under the P8Model, and will be updated later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211779 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded parsing co-processor names starting with "cr"
Renato Golin [Thu, 26 Jun 2014 13:10:53 +0000 (13:10 +0000)]
Added parsing co-processor names starting with "cr"

Additional compliant GAS names for coprocessor register name
are enabled for all instruction with parameter MCK_CoprocReg:
LDC,LDC2,STC,STC2,CDP,CDP2,MCR,MCR2,MCRR,MCRR2,MRC,MRC2,MRRC,MRRC2

Patch by Andrey Kuharev.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211776 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] Improve the selection of SSE3/AVX addsub instructions.
Andrea Di Biagio [Thu, 26 Jun 2014 10:45:21 +0000 (10:45 +0000)]
[X86] Improve the selection of SSE3/AVX addsub instructions.

This patch teaches the backend how to canonicalize a shuffle vectors
according to the rule:

 - (shuffle (FADD A, B), (FSUB A, B), Mask) ->
       (shuffle (FSUB A, -B), (FADD A, -B), Mask)

Where 'Mask' is:
  <0,5,2,7>            ;; for v4f32 and v4f64 shuffles.
  <0,3>                ;; for v2f64 shuffles.
  <0,9,2,11,4,13,6,15> ;; for v8f32 shuffles.

In general, ISel only knows how to pattern-match a canonical
'fadd + fsub + blendi' dag node sequence into an ADDSUB instruction.

This new rule allows to convert a non-canonical dag sequence into a
canonical one that will be matched by a single ADDSUB at ISel stage.

The idea of converting a non-canonical ADDSUB into a canonical one by
swapping the first two operands of the shuffle, and then negating the
second operand of the FADD and FSUB, was originally proposed by Hal Finkel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211771 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThis patch removed duplicate code for matching patterns
Dinesh Dwivedi [Thu, 26 Jun 2014 08:57:33 +0000 (08:57 +0000)]
This patch removed duplicate code for matching patterns
which are now handled in SimplifyUsingDistributiveLaws()
(after r211261)

Differential Revision: http://reviews.llvm.org/D4253

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211768 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded instruction combine to transform few more negative values addition to subtracti...
Dinesh Dwivedi [Thu, 26 Jun 2014 05:40:22 +0000 (05:40 +0000)]
Added instruction combine to transform few more negative values addition to subtraction (Part 2)
This patch enables transforms for

(x + (~(y | c) + 1)   -->   x - (y | c) if c is even

Differential Revision: http://reviews.llvm.org/D4209

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211765 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGlobalOpt: Don't optimize thread_local for initializers
David Majnemer [Thu, 26 Jun 2014 03:02:19 +0000 (03:02 +0000)]
GlobalOpt: Don't optimize thread_local for initializers

Folding a reference to a thread_local variable into another global
variable's initializer is very problematic, there is no relocation that
exists to represent such an access.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211762 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Fix vector FMA
Matt Arsenault [Thu, 26 Jun 2014 01:28:05 +0000 (01:28 +0000)]
R600: Fix vector FMA

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211757 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove forward decl of SmallVectorImpl now that we have the header
Reid Kleckner [Thu, 26 Jun 2014 01:03:20 +0000 (01:03 +0000)]
Remove forward decl of SmallVectorImpl now that we have the header

Follow up to r211749.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211754 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDon't build switch tables for dllimport and TLS variables in GEPs
Hans Wennborg [Thu, 26 Jun 2014 00:30:52 +0000 (00:30 +0000)]
Don't build switch tables for dllimport and TLS variables in GEPs

This is a follow-up to r211331, which failed to notice that we were
returning early from ValidLookupTableConstant for GEPs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211753 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMSVC build fix following r211749
Alp Toker [Thu, 26 Jun 2014 00:25:41 +0000 (00:25 +0000)]
MSVC build fix following r211749

Avoid strndup()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211752 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] AVX512: Fix asm syntax for packed vcmp
Adam Nemet [Thu, 26 Jun 2014 00:21:12 +0000 (00:21 +0000)]
[X86] AVX512: Fix asm syntax for packed vcmp

The *_alt defs for vcmp are used by the InstParser (the asm string in the main
def is used by the InstPrinter) .  The former was accepting vector registers
as destination rather than mask registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211750 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoIntroduce a string_ostream string builder facilty
Alp Toker [Thu, 26 Jun 2014 00:00:48 +0000 (00:00 +0000)]
Introduce a string_ostream string builder facilty

string_ostream is a safe and efficient string builder that combines opaque
stack storage with a built-in ostream interface.

small_string_ostream<bytes> additionally permits an explicit stack storage size
other than the default 128 bytes to be provided. Beyond that, storage is
transferred to the heap.

This convenient class can be used in most places an
std::string+raw_string_ostream pair or SmallString<>+raw_svector_ostream pair
would previously have been used, in order to guarantee consistent access
without byte truncation.

The patch also converts much of LLVM to use the new facility. These changes
include several probable bug fixes for truncated output, a programming error
that's no longer possible with the new interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211749 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFor CrashRecoveryContext::RunSafelyOnThread, propagate Darwin's PRIO_DARWIN_BG to...
Argyrios Kyrtzidis [Wed, 25 Jun 2014 23:54:50 +0000 (23:54 +0000)]
For CrashRecoveryContext::RunSafelyOnThread, propagate Darwin's PRIO_DARWIN_BG to the new thread if it is
set on the calling thread.

This allows libclang's indexing threads to propagate their priority to the clang module building threads.

rdar://17459872

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211747 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix typo
Michael Liao [Wed, 25 Jun 2014 23:39:08 +0000 (23:39 +0000)]
Fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211744 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[FastISel][X86] More refactoring of select lowering and XALU folding. NFC.
Juergen Ributzka [Wed, 25 Jun 2014 22:50:59 +0000 (22:50 +0000)]
[FastISel][X86] More refactoring of select lowering and XALU folding. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211740 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThe includes were sorted. Revert r210578.
Eric Christopher [Wed, 25 Jun 2014 22:36:37 +0000 (22:36 +0000)]
The includes were sorted. Revert r210578.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211737 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[FastISel][X86] Refactor XALU folding. NFC.
Juergen Ributzka [Wed, 25 Jun 2014 22:17:23 +0000 (22:17 +0000)]
[FastISel][X86] Refactor XALU folding. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211735 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMention that Phabricator users should subscribe to *-commits
Reid Kleckner [Wed, 25 Jun 2014 20:25:21 +0000 (20:25 +0000)]
Mention that Phabricator users should subscribe to *-commits

This probably explains why a lot of messages get lost for first time
Phabricator users.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211731 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[FastISel][X86] Only fold the cmp into the select when both instructions are in the...
Juergen Ributzka [Wed, 25 Jun 2014 20:06:12 +0000 (20:06 +0000)]
[FastISel][X86] Only fold the cmp into the select when both instructions are in the same basic block.

If the cmp is in a different basic block, then it is possible that not all
operands of that compare have defined registers. This can happen when one of
the operands to the cmp is a load and the load gets folded into the cmp. In
this case FastISel will skip the load instruction and the vreg is never
defined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211730 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMerge the used symbol scanning of MCObjectStreamer and RecordStreamer.
Rafael Espindola [Wed, 25 Jun 2014 18:37:33 +0000 (18:37 +0000)]
Merge the used symbol scanning of MCObjectStreamer and RecordStreamer.

This completes the refactoring of RecordStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211727 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but...
David Blaikie [Wed, 25 Jun 2014 18:20:54 +0000 (18:20 +0000)]
Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location."

This reverts commit r211723.

Breaks the ASan/compiler-rt build... guess I didn't test very far at all
:/.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211724 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoPR20038: DebugInfo: Inlined call sites where the caller has debug info but the call...
David Blaikie [Wed, 25 Jun 2014 18:03:10 +0000 (18:03 +0000)]
PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location.

This situation does bad things when inlined, so I've fixed Clang not to
produce inlinable call sites without locations when the caller has debug
info (in the one case where I could find that this occurred). This
updates the PR20038 test case to be what clang now produces, and readds
the assertion that had to be removed due to this bug.

I've also beefed up the debug info verifier to help diagnose these
issues in the future, and I hope to add checks to the inliner to just
assert-fail if it encounters this situation. If, in the future, we
decide we have to cope with this situation, the right thing to do is
probably to just remove all the DebugLocs from the inlined instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211723 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd Rpass-missed and Rpass-analysis reports to the loop vectorizer. The remarks give...
Tyler Nowicki [Wed, 25 Jun 2014 17:50:15 +0000 (17:50 +0000)]
Add Rpass-missed and Rpass-analysis reports to the loop vectorizer. The remarks give the vector width of vectorized loops and a brief analysis of loops that fail to be vectorized. For example, an analysis will be generated for loops containing control flow that cannot be simplified to a select. The optimization remarks also give the debug location of expressions that cannot be vectorized, for example the location of an unvectorizable call.

Reviewed by: Arnold Schwaighofer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211721 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] Always prefer to lower a VECTOR_SHUFFLE into a BLENDI instead of SHUFP (or...
Andrea Di Biagio [Wed, 25 Jun 2014 17:41:58 +0000 (17:41 +0000)]
[X86] Always prefer to lower a VECTOR_SHUFFLE into a BLENDI instead of SHUFP (or VPERM2X128).

This patch teaches method 'LowerVECTOR_SHUFFLE' to give higher precedence to
the check for 'isBlendMask'; the idea is that, when possible, we should firstly
check if a shuffle performs a blend, and in case, try to lower it into a BLENDI
instead of selecting a SHUFP or (worse) a VPERM2X128.

In general:
 - AVX VBLENDPS/D always have better latency and throughput than VPERM2F128;
 - BLENDPS/D instructions tend to always have better 'reciprocal throughput'
   than the equivalent SHUFPS/D;
 - Both BLENDPS/D and SHUFPS/D are often decoded into the same number of
   m-ops; however, a m-op obtained from a BLENDPS/D can be scheduled to more
   than one execution port.

This patch:
 - Moves the check for 'isBlendMask' immediately before the check for
   'isSHUFPMask' within method 'LowerVECTOR_SHUFFLE';
 - Updates existing tests for sse/avx shuffle/blend instructions to verify
   that we select (v)blendps/d when possible (instead of (v)shufps/d or
   vperm2f128).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211720 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix indentation.
Juergen Ributzka [Wed, 25 Jun 2014 16:49:37 +0000 (16:49 +0000)]
Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211717 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix the build.
Rafael Espindola [Wed, 25 Jun 2014 15:47:36 +0000 (15:47 +0000)]
Fix the build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211715 91177308-0d34-0410-b5e6-96231b3b80d8