summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86
Commit message (Collapse)AuthorAgeFilesLines
* Fix test.Eli Friedman2011-05-171-1/+3
| | | | llvm-svn: 131444
* Add target triple so test doesn't fail on Windows machines.Evan Cheng2011-05-171-1/+1
| | | | llvm-svn: 131439
* Add x86 fast-isel for calls returning first-class aggregates. rdar://9435872.Eli Friedman2011-05-171-1/+1
| | | | llvm-svn: 131438
* Teach LiveInterval::isZeroLength about null SlotIndexes.Jakob Stoklund Olesen2011-05-161-11/+0
| | | | | | | | | | | | When instructions are deleted, they leave tombstone SlotIndex entries. The isZeroLength method should ignore these null indexes. This causes RABasic to sometimes spill a callee-saved register in the abi-isel.ll test, so don't run that test with -regalloc=basic. Prioritizing register allocation according to spill weight can cause more registers to be used. llvm-svn: 131436
* Remove dead code. Fix associated test to use FileCheck.Eli Friedman2011-05-161-1/+14
| | | | llvm-svn: 131424
* Make fast-isel work correctly s/uadd.with.overflow intrinsics.Eli Friedman2011-05-161-0/+22
| | | | llvm-svn: 131420
* Basic fast-isel of extractvalue. Not too helpful on its own, given the IR ↵Eli Friedman2011-05-161-0/+26
| | | | | | clang generates for cases like this, but it should become more useful soon. llvm-svn: 131417
* Don't produce a vmovntdq if we don't have AVX support.Rafael Espindola2011-05-141-0/+12
| | | | llvm-svn: 131330
* Re-enable branchfolding common code hoisting optimization. Fixed a liveness ↵Evan Cheng2011-05-121-0/+28
| | | | | | test bug and also taught it to update liveins. llvm-svn: 131241
* Identify end of prologue (and beginning of function body) using ↵Devang Patel2011-05-111-0/+55
| | | | | | DW_LNS_set_prologue_end line table opcode. llvm-svn: 131194
* Fixes a bug in the DAGCombiner. LoadSDNodes have two values (data, chain).Nadav Rotem2011-05-113-7/+20
| | | | | | | | If there is a store after the load node, then there is a chain, which means that there is another user. Thus, asking hasOneUser would fail. Instead we ask hasNUsesOfValue on the 'data' value. llvm-svn: 131183
* Add custom lowering of X86 vector SRA/SRL/SHL when the shift amount is a ↵Nadav Rotem2011-05-111-0/+142
| | | | | | splat vector. llvm-svn: 131179
* Revert 131172 as it is causing clang to miscompile itself. I will tryRafael Espindola2011-05-111-28/+0
| | | | | | to provide a reduced testcase. llvm-svn: 131176
* Add a late optimization to BranchFolding that hoist common instruction sequencesEvan Cheng2011-05-111-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | at the start of basic blocks to their common predecessor. It's actually quite common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size benefit. e.g. pushq %rax testl %edi, %edi jne LBB0_2 ## BB#1: xorb %al, %al popq %rdx ret LBB0_2: xorb %al, %al callq _foo popq %rdx ret => pushq %rax xorb %al, %al testl %edi, %edi je LBB0_2 ## BB#1: callq _foo LBB0_2: popq %rdx ret rdar://9145558 llvm-svn: 131172
* X86: Add a bunch of peeps for add and sub of SETB.Benjamin Kramer2011-05-082-4/+85
| | | | | | | | | | | | | | | | "b + ((a < b) ? 1 : 0)" compiles into cmpl %esi, %edi adcl $0, %esi instead of cmpl %esi, %edi sbbl %eax, %eax andl $1, %eax addl %esi, %eax This saves a register, a false dependency on %eax (Intel's CPUs still don't ignore it) and it's shorter. llvm-svn: 131070
* Emit a proper error message when register allocators run out of registers.Jakob Stoklund Olesen2011-05-061-0/+17
| | | | | | | This can't be just an assertion, users can always write impossible inline assembly. Such an assembly statement should be included in the error message. llvm-svn: 131024
* Re-revert r130877; it's apparently causing a regression on 197.parser,Eli Friedman2011-05-061-43/+0
| | | | | | possibly related to cbnz formation. llvm-svn: 130977
* Don't produce a __debug_frame.Rafael Espindola2011-05-051-4/+18
| | | | | | | I tested both gdb on a bootstrapped clang and and the gdb testsuite on OS X (snow leopard) and both are happy using __eh_frame. llvm-svn: 130937
* Avoid extra vreg copies for arguments passed in registers. Specifically, ↵Eli Friedman2011-05-052-1/+22
| | | | | | this can make MachineCSE more effective in some cases (especially in small functions). PR8361 / part of rdar://problem/8259436 . llvm-svn: 130928
* Prepare remaining tests for -join-physreg going away.Jakob Stoklund Olesen2011-05-0415-34/+48
| | | | llvm-svn: 130893
* Fix a batch of x86 tests to be coalescer independent.Jakob Stoklund Olesen2011-05-047-29/+38
| | | | | | | | Most of these tests require a single mov instruction that can come either before or after a 2-addr instruction. -join-physregs changes the behavior, but the results are equivalent. llvm-svn: 130891
* Re-commit r130862 with a minor change to avoid an iterator running off the ↵Eli Friedman2011-05-041-0/+22
| | | | | | | | | | edge in some cases. Original message: Teach MachineCSE how to do simple cross-block CSE involving physregs. This allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 . llvm-svn: 130877
* Back out r130862; it appears to be breaking bootstrap.Eli Friedman2011-05-041-22/+0
| | | | llvm-svn: 130867
* Teach MachineCSE how to do simple cross-block CSE involving physregs. This ↵Eli Friedman2011-05-041-0/+22
| | | | | | allows, for example, eliminating duplicate cmpl's on x86. Part of rdar://problem/8259436 . llvm-svn: 130862
* Don't depend on the physreg coalescing order.Jakob Stoklund Olesen2011-05-042-5/+4
| | | | llvm-svn: 130818
* Replace the "movnt" intrinsics with a native store + nontemporal metadata bit.Bill Wendling2011-05-031-0/+19
| | | | | | <rdar://problem/8460511> llvm-svn: 130791
* Add r130623 back now that ELF has been fixed to work with -fno-dwarf2-cfi-asm.Rafael Espindola2011-05-015-15/+19
| | | | llvm-svn: 130658
* GCC uses a different encoding of pointers in the FDE when usingRafael Espindola2011-05-011-0/+38
| | | | | | -fno-dwarf2-cfi-asm. Implement the same behavior. llvm-svn: 130637
* Revert the previous patch while I figure out how to make llvm-gccRafael Espindola2011-04-305-19/+15
| | | | | | less agressive about disabling cfi on linux :-( llvm-svn: 130626
* Enable CFI on OS X.Rafael Espindola2011-04-305-15/+19
| | | | | | | | | | | | | | | Currently the output should be almost identical to the one produced by CodeGen to make the transition easier. The only two differences I know of are: * Some files get an extra advance loc of size 0. This will be fixed when relaxations are enabled. * The optimization of declaring an EH symbol as an external variable is not implemented. This is a subset of adding the nounwind attribute, so we if really this at -O0 we should probably do it at the IL level. llvm-svn: 130623
* Allow folded spills in test.Jakob Stoklund Olesen2011-04-301-2/+2
| | | | llvm-svn: 130599
* Weekly fix of register allocation dependent unit tests.Jakob Stoklund Olesen2011-04-301-1/+1
| | | | llvm-svn: 130567
* Change DwarfCFIException's member variables to track what it actuallyRafael Espindola2011-04-291-1/+1
| | | | | | emmits: .cfi_personality, .cfi_lsda and the moves. llvm-svn: 130503
* fast-isel sret calls, try 2. We actually do need to do something on x86-32. ↵Eli Friedman2011-04-282-0/+28
| | | | | | rdar://problem/9303592 . llvm-svn: 130429
* Actually revert r130348 correctly.Eli Friedman2011-04-281-27/+1
| | | | llvm-svn: 130418
* Revert r130348; causing buildbot issues on x86-32.Eli Friedman2011-04-281-0/+13
| | | | llvm-svn: 130412
* Teach dwarf writer to handle complex address expression for .debug_loc entries.Devang Patel2011-04-281-2/+2
| | | | | | | This fixes clang generated blocks' variables' debug info. Radar 9279956. llvm-svn: 130373
* Fix a silly mistake in r130338.Eli Friedman2011-04-281-0/+9
| | | | llvm-svn: 130360
* fast-isel sret. We actually don't need to do anything special on x86. :) ↵Eli Friedman2011-04-271-0/+13
| | | | | | rdar://problem/9303592 . llvm-svn: 130348
* Make the fast-isel code for literal 0.0 a bit shorter/faster, since 0.0 is ↵Eli Friedman2011-04-271-0/+13
| | | | | | common. rdar://problem/9303592 . llvm-svn: 130338
* Fix an edge case involving branches in fast-isel on x86.Eli Friedman2011-04-271-9/+30
| | | | | | rdar://problem/9303306 . llvm-svn: 130272
* Be careful about scheduling nodes above previous calls. It increase usages ofEvan Cheng2011-04-261-1/+1
| | | | | | | | | | | | more callee-saved registers and introduce copies. Only allows it if scheduling a node above calls would end up lessen register pressure. Call operands also has added ABI restrictions for register allocation, so be extra careful with hoisting them above calls. rdar://9329627 llvm-svn: 130245
* Force a triple on this test to unbreak windows buildbots.Benjamin Kramer2011-04-261-1/+1
| | | | llvm-svn: 130226
* Fast-isel support for simple inline asms.Dan Gohman2011-04-261-0/+1
| | | | llvm-svn: 130205
* Add test for PR9743.Rafael Espindola2011-04-261-0/+17
| | | | llvm-svn: 130198
* A dbg.declare may not be in entry block, even if it is referring to an ↵Devang Patel2011-04-251-0/+123
| | | | | | incoming argument. However, It is appropriate to emit DBG_VALUE referring to this incoming argument in entry block in MachineFunction. llvm-svn: 130129
* Make tests more useful.Benjamin Kramer2011-04-253-4/+4
| | | | | | lit needs a linter ... llvm-svn: 130126
* test/CodeGen/X86/shrink-compare.ll: Relax expressions for Win64.NAKAMURA Takumi2011-04-231-2/+2
| | | | llvm-svn: 130039
* Recommit the fix for rdar://9289512 with a couple tweaks toChris Lattner2011-04-222-0/+57
| | | | | | | | | | | fix bugs exposed by the gcc dejagnu testsuite: 1. The load may actually be used by a dead instruction, which would cause an assert. 2. The load may not be used by the current chain of instructions, and we could move it past a side-effecting instruction. Change how we process uses to define the problem away. llvm-svn: 130018
* DAGCombine: fold "(zext x) == C" into "x == (trunc C)" if the trunc is lossless.Benjamin Kramer2011-04-221-0/+36
| | | | | | | | | | | | On x86 this allows to fold a load into the cmp, greatly reducing register pressure. movzbl (%rdi), %eax cmpl $47, %eax -> cmpb $47, (%rdi) This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :) llvm-svn: 130005
OpenPOWER on IntegriCloud