oota-llvm.git
11 years agoRevert r178166. According to Howard, this code is actually ok.
Dan Gohman [Fri, 29 Mar 2013 00:13:08 +0000 (00:13 +0000)]
Revert r178166. According to Howard, this code is actually ok.

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

11 years ago[Mips Assembler] Add support for OR macro with imediate opperand
Jack Carter [Thu, 28 Mar 2013 23:45:13 +0000 (23:45 +0000)]
[Mips Assembler] Add support for OR macro with imediate opperand

Mips assembler supports macros that allows the OR instruction
to have an immediate parameter. This patch adds an instruction
alias that converts this macro into a Mips ORI instruction.

Contributer: Vladimir Medic

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

11 years agoAdd support of RDSEED defined in AVX2 extension
Michael Liao [Thu, 28 Mar 2013 23:41:26 +0000 (23:41 +0000)]
Add support of RDSEED defined in AVX2 extension

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

11 years agoEnhance boolean simplification to handle 16-/64-bit RDRAND
Michael Liao [Thu, 28 Mar 2013 23:38:52 +0000 (23:38 +0000)]
Enhance boolean simplification to handle 16-/64-bit RDRAND

- RDRAND always clears the destination value when a random value is not
  available (i.e. CF == 0). This value is truncated or zero-extended as
  the false boolean value to be returned. Boolean simplification needs
  to skip this 'zext' or 'trunc' node.

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

11 years agoSkip moving call address loading into callseq when targets prefer register indirect...
Michael Liao [Thu, 28 Mar 2013 23:13:21 +0000 (23:13 +0000)]
Skip moving call address loading into callseq when targets prefer register indirect call.

To enable a load of a call address to be folded with that call, this
load is moved from outside of callseq into callseq. Such a moving
adds a non-glued node (that load) into a glued sequence. This non-glue
load is only removed when DAG selection folds them into a memory form
call instruction. When such instruction selection is disabled, it breaks
DAG schedule.

To prevent that, such moving is disabled when target favors register
indirect call.

Previous workaround disabling CALL32m/CALL64m insn selection is removed.

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

11 years agoRemoved dead code from ObjCARCOpts relating to tracking objc_retainBlocks through...
Michael Gottesman [Thu, 28 Mar 2013 23:08:44 +0000 (23:08 +0000)]
Removed dead code from ObjCARCOpts relating to tracking objc_retainBlocks through the ARC Dataflow analysis. By the time we get to the ARC dataflow analysis, any objc_retainBlock calls are not optimizable.

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

11 years ago[fast-isel] Add a preemptive fix for the case where we fail to materialize an
Chad Rosier [Thu, 28 Mar 2013 23:04:47 +0000 (23:04 +0000)]
[fast-isel] Add a preemptive fix for the case where we fail to materialize an
immediate in a register.  I don't believe this should ever fail, but I see no
harm in trying to make this code bullet proof.

I've added an assert to ensure my assumtion is correct.  If the assertion fires
something is wrong and we should fix it, rather then just silently fall back to
SelectionDAG isel.

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

11 years ago[Mips Assembler] Add alias definitions for jal
Jack Carter [Thu, 28 Mar 2013 23:02:21 +0000 (23:02 +0000)]
[Mips Assembler] Add alias definitions for jal

Mips assembler allows following to be used as aliased instructions:
jal $rs for jalr $rs
jal $rd,$rd for jalr $rd,$rs

This patch provides alias definitions in td files and test cases to show the usage.

Contributer: Vladimir Medic

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

11 years agoAdd the X86 FMAs to the scheduling model.
Nadav Rotem [Thu, 28 Mar 2013 22:54:45 +0000 (22:54 +0000)]
Add the X86 FMAs to the scheduling model.

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

11 years agoMinor simplification.
Bill Wendling [Thu, 28 Mar 2013 22:40:08 +0000 (22:40 +0000)]
Minor simplification.

Go ahead and use the full path for both the .gcno and .gcda files.

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

11 years agoAdd the Haswell machine model.
Nadav Rotem [Thu, 28 Mar 2013 22:34:46 +0000 (22:34 +0000)]
Add the Haswell machine model.

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

11 years agoRemove the unused port from the SandyBridge machine model
Nadav Rotem [Thu, 28 Mar 2013 22:32:41 +0000 (22:32 +0000)]
Remove the unused port from the SandyBridge machine model

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

11 years agoAdd ADX CPUID detection
Michael Liao [Thu, 28 Mar 2013 22:29:53 +0000 (22:29 +0000)]
Add ADX CPUID detection

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

11 years agoThese two are default in the constructor for MCAsmInfo.
Eric Christopher [Thu, 28 Mar 2013 21:37:18 +0000 (21:37 +0000)]
These two are default in the constructor for MCAsmInfo.

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

11 years agoMake Win32 put the SRet address into EAX, fixes PR15556
Timur Iskhodzhanov [Thu, 28 Mar 2013 21:30:04 +0000 (21:30 +0000)]
Make Win32 put the SRet address into EAX, fixes PR15556

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

11 years agoSpecify CPUs on the PPC bswap-load-store test
Hal Finkel [Thu, 28 Mar 2013 20:35:18 +0000 (20:35 +0000)]
Specify CPUs on the PPC bswap-load-store test

Otherwise, the CHECK-NOT's might trigger depending on the host's CPU.

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

11 years agoOnly enable 64-bit bswap DAG combines for PPC64
Hal Finkel [Thu, 28 Mar 2013 20:23:46 +0000 (20:23 +0000)]
Only enable 64-bit bswap DAG combines for PPC64

Compiling in 32-bit mode on a P7 would assert after 64-bit DAG combines were
added for bswap with load/store. This is because these combines are really only
valid in 64-bit mode, regardless of the CPU (and this was not being checked).

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

11 years agoNon optimizable objc_retainBlock calls are not forwarding.
Michael Gottesman [Thu, 28 Mar 2013 20:11:30 +0000 (20:11 +0000)]
Non optimizable objc_retainBlock calls are not forwarding.

Since we handle optimizable objc_retainBlocks through strength reduction
in OptimizableIndividualCalls, we know that all code after that point
will only see non-optimizable objc_retainBlock calls. IsForwarding is
only called by functions after that point, so it is ok to just classify
objc_retainBlock as non-forwarding.

<rdar://problem/13249661>.

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

11 years ago[ObjCARC] Strength reduce objc_retainBlock -> objc_retain if the objc_retainBlock...
Michael Gottesman [Thu, 28 Mar 2013 20:11:19 +0000 (20:11 +0000)]
[ObjCARC] Strength reduce objc_retainBlock -> objc_retain if the objc_retainBlock is optimizable.

If an objc_retainBlock has the copy_on_escape metadata attached to it
AND if the block pointer argument only escapes down the stack, we are
allowed to strength reduce the objc_retainBlock to to an objc_retain and
thus optimize it.

Current there is logic in the ARC data flow analysis to handle
this case which is complicated and involved making distinctions in
between objc_retainBlock and objc_retain in certain places and
considering them the same in others.

This patch simplifies said code by:

1. Performing the strength reduction in the initial ARC peephole
analysis (ObjCARCOpts::OptimizeIndividualCalls).

2. Changes the ARC dataflow analysis (which runs after the peephole
analysis) to consider all objc_retainBlock calls to not be optimizable
(since if the call was optimizable, we would have strength reduced it
already).

This patch leaves in the infrastructure in the ARC dataflow analysis to
handle this case, which due to 2 will just be dead code. I am doing this
on purpose to separate the removal of the old code from the testing of
the new code.

<rdar://problem/13249661>.

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

11 years agoHexagon: Replace switch-case in isDotNewInst with TSFlags.
Jyotsna Verma [Thu, 28 Mar 2013 19:44:04 +0000 (19:44 +0000)]
Hexagon: Replace switch-case in isDotNewInst with TSFlags.

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

11 years agoFix bad indentation in r178276
Hal Finkel [Thu, 28 Mar 2013 19:43:12 +0000 (19:43 +0000)]
Fix bad indentation in r178276

Thanks to Bill Schmidt for pointing this out!

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

11 years agoHexagon: Enable SupportDebugInfomation and DwarfInSection flags.
Jyotsna Verma [Thu, 28 Mar 2013 19:34:49 +0000 (19:34 +0000)]
Hexagon: Enable SupportDebugInfomation and DwarfInSection flags.

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

11 years agoRemove -O3.
Akira Hatanaka [Thu, 28 Mar 2013 19:34:14 +0000 (19:34 +0000)]
Remove -O3.

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

11 years agoUse direct types in most PowerPC Altivec instructions and patterns.
Bill Schmidt [Thu, 28 Mar 2013 19:27:24 +0000 (19:27 +0000)]
Use direct types in most PowerPC Altivec instructions and patterns.

This follows up Ulrich Weigand's work in PPCInstrInfo.td and
PPCInstr64Bit.td by doing the corresponding work for most of the
Altivec patterns.  I have not been able to do anything for the
following classes of instructions:

(1) Vector logicals.  These don't have corresponding intrinsics and
don't have a single obvious vector type.  So far as I can tell I need
to leave these as VRRC.  Affected instructions are:  VAND, VANDC,
VNOR, VOR, VXOR, V_SET0.

(2) Instructions that make use of vector shuffle.  The selection code
promotes all shuffles to v16i8, so any pattern that matches on a
shuffle is constrained.  I haven't found any way to make the patterns
match on their natural types, so I plan to leave these as VRRC.
Affected instructions are:  VMRG*, VSPLTB, VSPLTH, VSPLTW, VPKUHUM,
VPKUWUM.

No change in behavior is anticipated.

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

11 years agoAdd the PPC64 ldbrx/stdbrx instructions
Hal Finkel [Thu, 28 Mar 2013 19:25:55 +0000 (19:25 +0000)]
Add the PPC64 ldbrx/stdbrx instructions

These are 64-bit load/store with byte-swap, and available on the P7 and the A2.
Like the similar instructions for 16- and 32-bit words, these are matched in the
target DAG-combine phase against load/store-bswap pairs.

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

11 years agoFix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper...
Gordon Keiser [Thu, 28 Mar 2013 19:22:28 +0000 (19:22 +0000)]
Fix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper bit is set.
They should always be zero-extended, not sign extended.  Added test case.

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

11 years agoTesting commit access to llvm. Remove two lines of whitespace from the Thumb README.
Gordon Keiser [Thu, 28 Mar 2013 18:26:15 +0000 (18:26 +0000)]
Testing commit access to llvm.  Remove two lines of whitespace from the Thumb README.

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

11 years agoCorrect spelling of Git.
Thomas Schwinge [Thu, 28 Mar 2013 18:06:20 +0000 (18:06 +0000)]
Correct spelling of Git.

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

11 years agoMove test since it depends on the X86 backend.
Rafael Espindola [Thu, 28 Mar 2013 17:01:28 +0000 (17:01 +0000)]
Move test since it depends on the X86 backend.

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

11 years agoHexagon: Use multiclass for gp-relative instructions.
Jyotsna Verma [Thu, 28 Mar 2013 16:25:57 +0000 (16:25 +0000)]
Hexagon: Use multiclass for gp-relative instructions.
Remove noV4T gp-relative instructions.

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

11 years agoSeciton 24.2.2 of the C++ standard, [iterator.iterators], Table 106
Howard Hinnant [Thu, 28 Mar 2013 15:47:50 +0000 (15:47 +0000)]
Seciton 24.2.2 of the C++ standard, [iterator.iterators], Table 106
requires that the return type of *r for all iterators r be reference,
where reference is defined in [iterator.requirements.general]/p11 as
iterator_traits<X>::reference, and X is the type of r.

But in CFG.h, the dereference operator of PredIterator and SuccIterator
return pointer, not reference.

Furthermore the nested type reference is value_type&, which is not the
type returned from operator*().

This patch simply makes the iterator::reference type value_type*, which
is what the operator*() returns, and then re-lables the return type as
reference.

From a functionality point of view, the only difference is that the
nested reference type is now value_type* instead of value_type&.

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

11 years agoAArch64: implement GICv3 system registers
Tim Northover [Thu, 28 Mar 2013 14:30:46 +0000 (14:30 +0000)]
AArch64: implement GICv3 system registers

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

11 years agoAdd the PPC64 popcntd instruction
Hal Finkel [Thu, 28 Mar 2013 13:29:47 +0000 (13:29 +0000)]
Add the PPC64 popcntd instruction

PPC ISA 2.06 (P7, A2, etc.) has a popcntd instruction. Add this instruction and
tell TTI about it so that popcount-loop recognition will know about it.

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

11 years ago[tsan] make sure memset/memcpy/memmove are not inlined in tsan mode
Kostya Serebryany [Thu, 28 Mar 2013 11:21:13 +0000 (11:21 +0000)]
[tsan] make sure memset/memcpy/memmove are not inlined in tsan mode

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

11 years agoRevert "Updated ELF relocation test for .eh_frame section"
Michael Gottesman [Thu, 28 Mar 2013 05:14:26 +0000 (05:14 +0000)]
Revert "Updated ELF relocation test for .eh_frame section"

This reverts commit c8d65364223a04b179958a50a4bf0f89b21dd7d2.

This broke a bunch of the buildbots.

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

11 years agoDisable JIT/MCJIT tests in unittests/ExecutionEngine for the targets that don't suppo...
Jyotsna Verma [Thu, 28 Mar 2013 03:38:29 +0000 (03:38 +0000)]
Disable JIT/MCJIT tests in unittests/ExecutionEngine for the targets that don't support JIT.

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

11 years agoCleanup PPC CR-spill kill flags and 32- vs. 64-bit instructions
Hal Finkel [Thu, 28 Mar 2013 03:38:16 +0000 (03:38 +0000)]
Cleanup PPC CR-spill kill flags and 32- vs. 64-bit instructions

There were a few places where kill flags were not being set correctly, and
where 32-bit instruction variants were being used with 64-bit registers. After
r178180, this code was being triggered causing llc to assert.

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

11 years agoFix typo in PPCInstr64Bit
Hal Finkel [Thu, 28 Mar 2013 03:38:08 +0000 (03:38 +0000)]
Fix typo in PPCInstr64Bit

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

11 years agoRevert "Adding DIImportedModules to DIScopes."
David Blaikie [Thu, 28 Mar 2013 02:44:59 +0000 (02:44 +0000)]
Revert "Adding DIImportedModules to DIScopes."

This reverts commit 342d92c7a0adeabc9ab00f3f0d88d739fe7da4c7.

Turns out we're going with a different schema design to represent
DW_TAG_imported_modules so we won't need this extra field.

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

11 years agoCheck if Type is a vector before calling function Type::getVectorNumElements.
Akira Hatanaka [Thu, 28 Mar 2013 01:28:02 +0000 (01:28 +0000)]
Check if Type is a vector before calling function Type::getVectorNumElements.

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

11 years agoThis patch follows is a follow up to r178171, which uses the register
Preston Gurd [Wed, 27 Mar 2013 23:16:18 +0000 (23:16 +0000)]
This patch follows is a follow up to r178171, which uses the register
form of call in preference to memory indirect on Atom.

In this case, the patch applies the optimization to the code for reloading
spilled registers.

The patch also includes changes to sibcall.ll and movgs.ll, which were
failing on the Atom buildbot after the first patch was applied.

This patch by Sriram Murali.

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

11 years agoUpdated ELF relocation test for .eh_frame section
Jack Carter [Wed, 27 Mar 2013 22:58:49 +0000 (22:58 +0000)]
Updated ELF relocation test for .eh_frame section

Made sure we were looking a correct section
Added Mips32/64 as an extra check
Updated llvm-objdump to generate symbolic info for Mips relocations

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

11 years ago[ms-inline asm] Add support of imm displacement before bracketed memory
Chad Rosier [Wed, 27 Mar 2013 21:49:56 +0000 (21:49 +0000)]
[ms-inline asm] Add support of imm displacement before bracketed memory
expression.  Specifically, this syntax:

 ImmDisp [ BaseReg + Scale*IndexReg + Disp ]

We don't currently support:

 ImmDisp [ Symbol ]

rdar://13518671

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

11 years agoResynchronize isLoadFromStackSlot with LoadRegFromStackSlot (and stores) in PPCInstrInfo
Hal Finkel [Wed, 27 Mar 2013 21:21:15 +0000 (21:21 +0000)]
Resynchronize isLoadFromStackSlot with LoadRegFromStackSlot (and stores) in PPCInstrInfo

These functions should have the same list of load/store instructions. Now that
all load/store forms have been normalized (to single instructions or pseudos)
they can be resynchronized.

Found by inspection, although hopefully this will improve optimization.  I've
also added some comments.

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

11 years agotest file name change to correct typo
Jack Carter [Wed, 27 Mar 2013 20:07:48 +0000 (20:07 +0000)]
test file name change to correct typo

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

11 years agoFor the current Atom processor, the fastest way to handle a call
Preston Gurd [Wed, 27 Mar 2013 19:14:02 +0000 (19:14 +0000)]
For the current Atom processor, the fastest way to handle a call
indirect through a memory address is to load the memory address into
a register and then call indirect through the register.

This patch implements this improvement by modifying SelectionDAG to
force a function address which is a memory reference to be loaded
into a virtual register.

Patch by Sriram Murali.

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

11 years agoFix typo (common to both X86 and PPC)
Hal Finkel [Wed, 27 Mar 2013 19:10:42 +0000 (19:10 +0000)]
Fix typo (common to both X86 and PPC)

Thanks to Bill Schmidt for pointing this out during code review!

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

11 years agoRemove more dead LR-as-GPR PPC code
Hal Finkel [Wed, 27 Mar 2013 19:10:40 +0000 (19:10 +0000)]
Remove more dead LR-as-GPR PPC code

I had removed similar code a few days ago, but somehow missed this.

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

11 years agoAvoid undefined behavior from passing a std::vector's own contents
Dan Gohman [Wed, 27 Mar 2013 18:44:56 +0000 (18:44 +0000)]
Avoid undefined behavior from passing a std::vector's own contents
in as an argument to push_back.

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

11 years agoRemove "gpr0 allocation" from the PPC README TODO list
Hal Finkel [Wed, 27 Mar 2013 18:39:52 +0000 (18:39 +0000)]
Remove "gpr0 allocation" from the PPC README TODO list

As Chris pointed out, post r178123, this is now done!

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

11 years agoDon't try to generate crash diagnostics if we had an I/O failure. It's very
Chad Rosier [Wed, 27 Mar 2013 18:30:00 +0000 (18:30 +0000)]
Don't try to generate crash diagnostics if we had an I/O failure.  It's very
likely the crash diagnostics generation will fail as well.
Part of rdar://13296693

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

11 years agoAdd a boolean parameter to the llvm::report_fatal_error() function to indicated
Chad Rosier [Wed, 27 Mar 2013 18:27:54 +0000 (18:27 +0000)]
Add a boolean parameter to the llvm::report_fatal_error() function to indicated
if crash diagnostics should be generated.  By default this is enabled.
Part of rdar://13296693

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

11 years agoSpecutively revert r178130.
Bill Wendling [Wed, 27 Mar 2013 17:54:41 +0000 (17:54 +0000)]
Specutively revert r178130.

This may be causing a failure on some buildbots:

Referencing function in another module!
  tail call fastcc void @_ZL11EvaluateOpstPtRj(i16 zeroext %17, i16* %Vals, i32* %NumVals), !dbg !219
Referencing function in another module!
  tail call fastcc void @_ZL11EvaluateOpstPtRj(i16 zeroext %19, i16* %Vals, i32* %NumVals), !dbg !221
Broken module found, compilation aborted!
Stack dump:
0.    Running pass 'Function Pass Manager' on module 'ld-temp.o'.
1.    Running pass 'Module Verifier' on function '@_ZL11EvaluateOpstPtRj'
clang: error: unable to execute command: Illegal instruction: 4
clang: error: linker command failed due to signal (use -v to see invocation)

<rdar://problem/13516485>

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

11 years agoFix comment
David Blaikie [Wed, 27 Mar 2013 17:50:12 +0000 (17:50 +0000)]
Fix comment

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

11 years agoCleanup the simplify_type implementation.
Rafael Espindola [Wed, 27 Mar 2013 16:43:11 +0000 (16:43 +0000)]
Cleanup the simplify_type implementation.

As far as simplify_type is concerned, there are 3 kinds of smart pointers:

* const correct: A 'const MyPtr<int> &' produces a 'const int*'. A
'MyPtr<int> &' produces a 'int *'.
* always const: Even a 'MyPtr<int> &' produces a 'const int*'.
* no const: Even a 'const MyPtr<int> &' produces a 'int*'.

This patch then does the following:

* Removes the unused specializations. Since they are unused, it is hard
to know which kind should be implemented.
* Make sure we don't drop const.
* Fix the default forwarding so that const correct pointer only need
one specialization.
* Simplifies the existing specializations.

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

11 years agoR600/SI: add SETO/SETUO patterns
Christian Konig [Wed, 27 Mar 2013 15:27:31 +0000 (15:27 +0000)]
R600/SI: add SETO/SETUO patterns

6 more piglit tests.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178145 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoSilence warning about mixing || in &&, fix up 80-cols.
Benjamin Kramer [Wed, 27 Mar 2013 15:03:14 +0000 (15:03 +0000)]
Silence warning about mixing || in &&, fix up 80-cols.

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

11 years agoPrint PPC ZERO as 0 (not r0) even on Darwin
Hal Finkel [Wed, 27 Mar 2013 13:20:52 +0000 (13:20 +0000)]
Print PPC ZERO as 0 (not r0) even on Darwin

It seems that the Darwin PPC assembler requires r0 to be written as 0 when it
means 0 (at least in lwarx/stwcx.). Fixes PR15605.

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

11 years agoSwitch to LLVM support function abs64 to keep VS2008 happy.
Tim Northover [Wed, 27 Mar 2013 13:15:08 +0000 (13:15 +0000)]
Switch to LLVM support function abs64 to keep VS2008 happy.

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

11 years agoDisable ASan/MSan symbolization of reports in tests.
Evgeniy Stepanov [Wed, 27 Mar 2013 13:11:12 +0000 (13:11 +0000)]
Disable ASan/MSan symbolization of reports in tests.

It was using an instrumented symbolizer binary, which is a potential fork bomb.

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

11 years agoFix target-customized spilling in the register scavenger
Hal Finkel [Wed, 27 Mar 2013 13:00:56 +0000 (13:00 +0000)]
Fix target-customized spilling in the register scavenger

This is a follow-up to r178073 (which should actually make target-customized
spilling work again).

I still don't have a regression test for this (but it would be good to have
one; Thumb 1 and Mips16 use this callback as well).

Patch by Richard Sandiford.

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

11 years agoDisable Initialize.MultipleThreads test under MemorySanitizer.
Evgeniy Stepanov [Wed, 27 Mar 2013 12:50:49 +0000 (12:50 +0000)]
Disable Initialize.MultipleThreads test under MemorySanitizer.

Fails due to insufficient thread stack.

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

11 years agoEnabling the generation of dependency breakers for partial updates on Cortex-A15...
Silviu Baranga [Wed, 27 Mar 2013 12:38:44 +0000 (12:38 +0000)]
Enabling the generation of dependency breakers for partial updates on Cortex-A15. Also fixing a small bug in getting the update clearence for VLD1LNd32.

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

11 years agoHexagon: Disable optimizations at O0.
Jyotsna Verma [Wed, 27 Mar 2013 11:14:24 +0000 (11:14 +0000)]
Hexagon: Disable optimizations at O0.

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

11 years agoImprove performance of LinkModules when linking with modules with large numbers of...
James Molloy [Wed, 27 Mar 2013 10:23:32 +0000 (10:23 +0000)]
Improve performance of LinkModules when linking with modules with large numbers of functions which link lazily. Instead of creating and destroying function prototypes irrespective of if they are used, only create them if they are used.

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

11 years agoR600/SI: add cummuting of rev instructions
Christian Konig [Wed, 27 Mar 2013 09:12:59 +0000 (09:12 +0000)]
R600/SI: add cummuting of rev instructions

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178127 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoR600/SI: add mulhu/mulhs patterns
Christian Konig [Wed, 27 Mar 2013 09:12:51 +0000 (09:12 +0000)]
R600/SI: add mulhu/mulhs patterns

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178126 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoR600/SI: add srl/sha patterns for SI
Christian Konig [Wed, 27 Mar 2013 09:12:44 +0000 (09:12 +0000)]
R600/SI: add srl/sha patterns for SI

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178125 91177308-0d34-0410-b5e6-96231b3b80d8

11 years agoAllocate r0 on PPC
Hal Finkel [Wed, 27 Mar 2013 06:52:27 +0000 (06:52 +0000)]
Allocate r0 on PPC

The R0 register can now be allocated because instructions
that cannot use R0 as a GPR have been appropriately marked.

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

11 years agoUse the PPC no-r0 class on the TOC LD pseudos
Hal Finkel [Wed, 27 Mar 2013 06:36:55 +0000 (06:36 +0000)]
Use the PPC no-r0 class on the TOC LD pseudos

The register parameter in these instructions becomes the base register in an
r+i ld instruction (and, thus, cannot be r0).

This is not yet testable because we don't yet allocate r0 (and even then any
test would be very fragile).

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

11 years agoApply the no-r0 register class to the PPC SELECT_CC_I[4|8] pseudos
Hal Finkel [Wed, 27 Mar 2013 05:57:58 +0000 (05:57 +0000)]
Apply the no-r0 register class to the PPC SELECT_CC_I[4|8] pseudos

Either operand of these pseudo instructions can be transformed into the first
operand of an isel instruction (and this operand cannot be r0).

This is not yet testable because we don't yet allocate r0 (and even when we do,
any test would be very fragile).

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

11 years agoApply the no-r0 class to PPC TOC ADDI[S] pseudo instructions
Hal Finkel [Wed, 27 Mar 2013 05:57:56 +0000 (05:57 +0000)]
Apply the no-r0 class to PPC TOC ADDI[S] pseudo instructions

Like the addi/addis instructions themselves, these pseudo instructions also
cannot have r0 as their register parameter (because it will be interpreted as
the value 0).

This is not yet testable because we don't yet allocate r0 (and even when we do,
any regression test would be very fragile because it would depend on the
register allocator heuristics).

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

11 years agoRemove the link register from the GPR classes on PowerPC.
Bill Schmidt [Wed, 27 Mar 2013 02:40:14 +0000 (02:40 +0000)]
Remove the link register from the GPR classes on PowerPC.

Some implementation detail in the forgotten past required the link
register to be placed in the GPRC and G8RC register classes.  This is
just wrong on the face of it, and causes several extra intersection
register classes to be generated.  I found this was having evil
effects on instruction scheduling, by causing the wrong register class
to be consulted for register pressure decisions.

No code generation changes are expected, other than some minor changes
in instruction order.  Seven tests in the test bucket required minor
tweaks to adjust to the new normal.

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

11 years agoAdded back in the test for arc-annotations.
Michael Gottesman [Wed, 27 Mar 2013 00:09:58 +0000 (00:09 +0000)]
Added back in the test for arc-annotations.

The test was removed since I had not turned off the test during release
builds. This fails since ARC annotations support  is conditionally
compiled out during release builds. I added the proper requires header
to assuage this issue.

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

11 years agoAdding DIImportedModules to DIScopes.
David Blaikie [Wed, 27 Mar 2013 00:07:26 +0000 (00:07 +0000)]
Adding DIImportedModules to DIScopes.

This is just the basic groundwork for supporting DW_TAG_imported_module but I
wanted to commit this before pushing support further into Clang or LLVM so that
this rather churny change is isolated from the rest of the work. The major
churn here is obviously adding another field (within the common DIScope prefix)
to all DIScopes (files, classes, namespaces, lexical scopes, etc). This should
be the last big churny change needed for DW_TAG_imported_module/using directive
support/PR14606.

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

11 years agoDon't spill PPC VRSAVE on non-Darwin (even in SjLj)
Hal Finkel [Wed, 27 Mar 2013 00:02:20 +0000 (00:02 +0000)]
Don't spill PPC VRSAVE on non-Darwin (even in SjLj)

As Bill Schmidt pointed out to me, only on Darwin do we need to spill/restore
VRSAVE in the SjLj code. For non-Darwin, don't spill/restore VRSAVE (and I've
added some asserts to make sure that we're not).

As it turns out, we're not currently handling the Darwin case correctly (I've
added a FIXME in the test case). I've tried adding various implied register
definitions/uses to force the spill without success, so I'll need to address
this later.

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

11 years agoMake DIBuilder::createClassType more type safe by returning DICompositeType rather...
David Blaikie [Tue, 26 Mar 2013 23:46:39 +0000 (23:46 +0000)]
Make DIBuilder::createClassType more type safe by returning DICompositeType rather than DIType

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

11 years agoDebugInfo: more support for mutating DICompositeType to reduce magic number usage...
David Blaikie [Tue, 26 Mar 2013 23:46:36 +0000 (23:46 +0000)]
DebugInfo: more support for mutating DICompositeType to reduce magic number usage in Clang

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

11 years agoAdd a boolean parameter to the ExecuteAndWait static function to indicated
Chad Rosier [Tue, 26 Mar 2013 23:35:00 +0000 (23:35 +0000)]
Add a boolean parameter to the ExecuteAndWait static function to indicated
if execution failed.  ExecuteAndWait returns -1 upon an execution failure, but
checking the return value isn't sufficient because the wait command may
return -1 as well.  This new parameter is to be used by the clang driver in a
subsequent commit.
Part of rdar://13362359

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

11 years agoUse the full path when outputting the `.gcda' file.
Bill Wendling [Tue, 26 Mar 2013 22:47:50 +0000 (22:47 +0000)]
Use the full path when outputting the `.gcda' file.

If we compile a single source program, the `.gcda' file will be generated where
the program was executed. This isn't desirable, because that place may be at an
unpredictable place (the program could call `chdir' for instance).

Instead, we will output the `.gcda' file in the same place we output the `.gcno'
file. I.e., the directory where the executable was generated. This matches GCC's
behavior.

<rdar://problem/13061072> & PR11809

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

11 years agoAdd XTEST codegen support
Michael Liao [Tue, 26 Mar 2013 22:47:01 +0000 (22:47 +0000)]
Add XTEST codegen support

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

11 years agoAdd HLE target feature
Michael Liao [Tue, 26 Mar 2013 22:46:02 +0000 (22:46 +0000)]
Add HLE target feature

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

11 years agoEnable SandyBridgeModel for all modern Intel P6 descendants.
Jakob Stoklund Olesen [Tue, 26 Mar 2013 22:19:12 +0000 (22:19 +0000)]
Enable SandyBridgeModel for all modern Intel P6 descendants.

All Intel CPUs since Yonah look a lot alike, at least at the granularity
of the scheduling models. We can add more accurate models for
processors that aren't Sandy Bridge if required. Haswell will probably
need its own.

The Atom processor and anything based on NetBurst is completely
different. So are the non-Intel chips.

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

11 years agoDebug Info: Provide a means to update the members of a composite type
David Blaikie [Tue, 26 Mar 2013 21:59:17 +0000 (21:59 +0000)]
Debug Info: Provide a means to update the members of a composite type

This will be used to factor out some uses of magic number operand offsets
inside Clang where these fields were updated in an effort to resolve forward
declarations/circular references.

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

11 years agoRestore real bit lengths on PPC register numbers
Hal Finkel [Tue, 26 Mar 2013 21:50:26 +0000 (21:50 +0000)]
Restore real bit lengths on PPC register numbers

As suggested by Bill Schmidt (in reviewing r178067), use the real register
number bit lengths (which is self-documenting, and prevents using illegal
numbers), and set only the relevant bits in HWEncoding (which defaults to 0).

No functionality change intended.

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

11 years agoTableGen SubtargetEmitter fix to allow A9 and Swift to coexist.
Andrew Trick [Tue, 26 Mar 2013 21:36:39 +0000 (21:36 +0000)]
TableGen SubtargetEmitter fix to allow A9 and Swift to coexist.

Allow variants to be defined only for some processors on a target.

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

11 years agoFix the register scavenger for targets that provide custom spilling
Hal Finkel [Tue, 26 Mar 2013 21:20:15 +0000 (21:20 +0000)]
Fix the register scavenger for targets that provide custom spilling

As pointed out by Richard Sandiford, my recent updates to the register
scavenger broke targets that use custom spilling (because the new code assumed
that if there were no valid spill slots, than spilling would be impossible).

I don't have a test case, but it should be possible to create one for Thumb 1,
Mips 16, etc.

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

11 years agoPPC: Use HWEncoding and TRI->getEncodingValue
Hal Finkel [Tue, 26 Mar 2013 20:08:20 +0000 (20:08 +0000)]
PPC: Use HWEncoding and TRI->getEncodingValue

As pointed out by Jakob, we don't need to maintain a separate
register-numbering table. Instead we should let TableGen generate the table for
us from the information (already present) in PPCRegisterInfo.td.
TRI->getEncodingValue is now used to access register-encoding values.

No functionality change intended.

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

11 years agoR600/SIMCCodeEmitter.cpp: Prune a couple of unused members, STI and Ctx. [-Wunused...
NAKAMURA Takumi [Tue, 26 Mar 2013 19:42:48 +0000 (19:42 +0000)]
R600/SIMCCodeEmitter.cpp: Prune a couple of unused members, STI and Ctx. [-Wunused-private-field]

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

11 years agoUse multiple virtual registers in PPC CR spilling
Hal Finkel [Tue, 26 Mar 2013 18:57:22 +0000 (18:57 +0000)]
Use multiple virtual registers in PPC CR spilling

Now that the register scavenger can support multiple spill slots, and PEI can
use virtual-register-based scavenging for multiple simultaneous registers, we
can use a virtual register for the transfer register in the CR spilling code.

This should eliminate the last place (outside of the prologue/epilogue) where
we depend on the unconditional availability of the r0 register. We will soon be
able to allocate it (in a somewhat restricted sense) as a GPR.

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

11 years agoUpdate PPCRegisterInfo's use of virtual registers to be SSA
Hal Finkel [Tue, 26 Mar 2013 18:57:20 +0000 (18:57 +0000)]
Update PPCRegisterInfo's use of virtual registers to be SSA

PPC's use of PEI's virtual-register-based scavenging functionality had
redefined the virtual registers (it was non-SSA). Now that PEI supports
dealing with instructions with multiple virtual registers, this can be
cleanup up to use multiple virtual registers and keep SSA form.

No functionality change intended.

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

11 years agoUpdate PEI's virtual-register-based scavenging to support multiple simultaneous mappings
Hal Finkel [Tue, 26 Mar 2013 18:56:54 +0000 (18:56 +0000)]
Update PEI's virtual-register-based scavenging to support multiple simultaneous mappings

The previous algorithm could not deal properly with scavenging multiple virtual
registers because it kept only one live virtual -> physical mapping (and
iterated through operands in order). Now we don't maintain a current mapping,
but rather use replaceRegWith to completely remove the virtual register as
soon as the mapping is established.

In order to allow the register scavenger to return a physical register killed
by an instruction for definition by that same instruction, we now call
RS->forward(I) prior to eliminating virtual registers defined in I. This
requires a minor update to forward to ignore virtual registers.

These new features will be tested in forthcoming commits.

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

11 years agoAnnotate the remaining x86 instructions with SchedRW lists.
Jakob Stoklund Olesen [Tue, 26 Mar 2013 18:24:22 +0000 (18:24 +0000)]
Annotate the remaining x86 instructions with SchedRW lists.

Now all x86 instructions that have itinerary classes also have SchedRW
lists. This is required before the new scheduling models can be used.

There are still unannotated instructions remaining, but they don't have
itinerary classes either.

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

11 years agoAnnotate x87 and mmx instructions with SchedRW lists.
Jakob Stoklund Olesen [Tue, 26 Mar 2013 18:24:20 +0000 (18:24 +0000)]
Annotate x87 and mmx instructions with SchedRW lists.

This only covers the instructions that were given itinerary classes for
the Atom model.

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

11 years agoAnnotate control instructions with SchedRW lists.
Jakob Stoklund Olesen [Tue, 26 Mar 2013 18:24:17 +0000 (18:24 +0000)]
Annotate control instructions with SchedRW lists.

This could definitely be more granular. I am not sure if it makes a
difference.

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

11 years agoAnnotate the rest of X86InstrInfo.td with SchedRW lists.
Jakob Stoklund Olesen [Tue, 26 Mar 2013 18:24:15 +0000 (18:24 +0000)]
Annotate the rest of X86InstrInfo.td with SchedRW lists.

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

11 years agoFix PRFCHW test on non-x86 builds
Michael Liao [Tue, 26 Mar 2013 18:15:45 +0000 (18:15 +0000)]
Fix PRFCHW test on non-x86 builds

- 'prefetch' intrinsics are only lowered when SSE is available. On non-X86
  builds, 'generic' CPU is used and stops lowering any prefetch intrinsics.

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

11 years agoBasicAA: Only query twice if the result of the more general query was MayAlias
Arnold Schwaighofer [Tue, 26 Mar 2013 18:07:53 +0000 (18:07 +0000)]
BasicAA: Only query twice if the result of the more general query was MayAlias

This is a compile time optimization. Before the patch we would do two traversals
on each call to aliasGEP - one with a set size parameter one with UnknownSize.
We can do better by first checking the result of the alias query with
UnknownSize.
Only if this one returns MayAlias do we query a second time using size and type.

This recovers an about 7% compile time regression on spec/ammp.

radar://12349960

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

11 years agoAdd PREFETCHW codegen support
Michael Liao [Tue, 26 Mar 2013 17:47:11 +0000 (17:47 +0000)]
Add PREFETCHW codegen support

- Add 'PRFCHW' feature defined in AVX2 ISA extension

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

11 years agoAdd test case for commit r178031.
Ulrich Weigand [Tue, 26 Mar 2013 17:30:02 +0000 (17:30 +0000)]
Add test case for commit r178031.

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