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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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