aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/X86
Commit message (Collapse)AuthorAgeFilesLines
* Linear scan is going away.Jakob Stoklund Olesen2011-11-122-2/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144472 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove obsolete test.Jakob Stoklund Olesen2011-11-121-51/+0
| | | | | | | This test was committed with a bugfix to RemoveCopyByCommutingDef, but that optimization is no longer triggered by this test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144470 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove obsolete test.Jakob Stoklund Olesen2011-11-121-167/+0
| | | | | | | This test is for a very specific LocalRewriter bug. LocalRewriter is going away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144469 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove obsolete test.Jakob Stoklund Olesen2011-11-121-54/+0
| | | | | | | I don't think this test does what is was supposed to do, and LocalRewriter is going away anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144463 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate more linear scan tests.Jakob Stoklund Olesen2011-11-123-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144462 91177308-0d34-0410-b5e6-96231b3b80d8
* Switch a couple -O0 tests to RABasic.Jakob Stoklund Olesen2011-11-123-5/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144461 91177308-0d34-0410-b5e6-96231b3b80d8
* Delete old test of a VirtRegRewriter feature.Jakob Stoklund Olesen2011-11-121-49/+0
| | | | | | | | This test doesn't expose the issue with RAGreedy. I filed PR11363 to track the missing InlineSpiller feature. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144459 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove old test that doesn't make sense.Jakob Stoklund Olesen2011-11-121-13/+0
| | | | | | | The test is checking that the output doesn't contains any 'mov ' strings. It does contain movl, though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144458 91177308-0d34-0410-b5e6-96231b3b80d8
* Add more AVX2 shift lowering support. Move AVX2 variable shift to use ↵Craig Topper2011-11-121-0/+39
| | | | | | patterns instead of custom lowering code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144457 91177308-0d34-0410-b5e6-96231b3b80d8
* Add lowering for AVX2 shift instructions.Craig Topper2011-11-112-73/+210
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144380 91177308-0d34-0410-b5e6-96231b3b80d8
* test/CodeGen/X86/lsr-loop-exit-cond.ll: Try to appease linux and freebsd ↵NAKAMURA Takumi2011-11-101-1/+1
| | | | | | | | bots to specify explicit -mtriple=x86_64-darwin. I guess it expects -relocation-model=pic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144290 91177308-0d34-0410-b5e6-96231b3b80d8
* Use a bigger hammer to fix PR11314 by disabling the "forcing two-addressEvan Cheng2011-11-1011-20/+31
| | | | | | | | | | | | | | | | | instruction lower optimization" in the pre-RA scheduler. The optimization, rather the hack, was done before MI use-list was available. Now we should be able to implement it in a better way, perhaps in the two-address pass until a MI scheduler is available. Now that the scheduler has to backtrack to handle call sequences. Adding artificial scheduling constraints is just not safe. Furthermore, the hack is not taking all the other scheduling decisions into consideration so it's just as likely to pessimize code. So I view disabling this optimization goodness regardless of PR11314. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144267 91177308-0d34-0410-b5e6-96231b3b80d8
* Strip old implicit operands after foldMemoryOperand.Jakob Stoklund Olesen2011-11-101-0/+105
| | | | | | | | | | | | The TII.foldMemoryOperand hook preserves implicit operands from the original instruction. This is not what we want when those implicit operands refer to the register being spilled. Implicit operands referring to other registers are preserved. This fixes PR11347. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144247 91177308-0d34-0410-b5e6-96231b3b80d8
* AVX2: Add patterns for variable shift operationsNadav Rotem2011-11-091-2/+73
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144212 91177308-0d34-0410-b5e6-96231b3b80d8
* Speculatively revert commit 144124 (djg) in the hope that the 32 bitDuncan Sands2011-11-092-17/+7
| | | | | | | | | | | | | | | dragonegg self-host buildbot will recover (it is complaining about object files differing between different build stages). Original commit message: Add a hack to the scheduler to disable pseudo-two-address dependencies in basic blocks containing calls. This works around a problem in which these artificial dependencies can get tied up in calling seqeunce scheduling in a way that makes the graph unschedulable with the current approach of using artificial physical register dependencies for calling sequences. This fixes PR11314. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144188 91177308-0d34-0410-b5e6-96231b3b80d8
* Add AVX2 support for vselect of v32i8Nadav Rotem2011-11-091-0/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144187 91177308-0d34-0410-b5e6-96231b3b80d8
* Enable execution dependency fix pass for YMM registers when AVX2 is enabled. ↵Craig Topper2011-11-091-0/+38
| | | | | | Add AVX2 logical operations to list of replaceable instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144179 91177308-0d34-0410-b5e6-96231b3b80d8
* Add instruction selection for AVX2 integer comparisons.Craig Topper2011-11-091-0/+58
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144176 91177308-0d34-0410-b5e6-96231b3b80d8
* Add AVX2 instruction lowering for add, sub, and mul.Craig Topper2011-11-091-0/+76
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144174 91177308-0d34-0410-b5e6-96231b3b80d8
* Collapse DomainValues across loop back-edges.Jakob Stoklund Olesen2011-11-091-0/+45
| | | | | | | | | | | | | | During the initial RPO traversal of the basic blocks, remember the ones that are incomplete because of back-edges from predecessors that haven't been visited yet. After the initial RPO, revisit all those loop headers so the incoming DomainValues on the back-edges can be properly collapsed. This will properly fix execution domains on software pipelined code, like the included test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144151 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a hack to the scheduler to disable pseudo-two-address dependencies inDan Gohman2011-11-082-7/+17
| | | | | | | | | | | basic blocks containing calls. This works around a problem in which these artificial dependencies can get tied up in calling seqeunce scheduling in a way that makes the graph unschedulable with the current approach of using artificial physical register dependencies for calling sequences. This fixes PR11314. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144124 91177308-0d34-0410-b5e6-96231b3b80d8
* Adding test for machine-licm operating on invariant load instructionsPete Cooper2011-11-081-0/+29
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144104 91177308-0d34-0410-b5e6-96231b3b80d8
* test/CodeGen/X86/vec_shuffle-39.ll: Add explicit -mtriple=x86_64-linux. ↵NAKAMURA Takumi2011-11-081-1/+1
| | | | | | Passing packed value is not compatible on Win32 x64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144068 91177308-0d34-0410-b5e6-96231b3b80d8
* test/CodeGen/X86/vec_shuffle-38.ll: Relax expression for Win32 x64.NAKAMURA Takumi2011-11-081-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144067 91177308-0d34-0410-b5e6-96231b3b80d8
* test/CodeGen/X86/vec_shuffle.ll: Add explicit -mtriple=i686-linux. We may ↵NAKAMURA Takumi2011-11-081-1/+1
| | | | | | see some suboptimal frame (%ebp) emission on certain hosts. Possible [PR11031] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144066 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization ↵Eli Friedman2011-11-081-0/+14
| | | | | | | | | | doesn't get confused by CSE later on. Fixes PR11318. Re-commit of r144034, with an extra fix so that RemoveDeadNode doesn't blow up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144055 91177308-0d34-0410-b5e6-96231b3b80d8
* Add x86 isel logic and patterns to match movlps from clang generated IR for ↵Evan Cheng2011-11-082-2/+52
| | | | | | _mm_loadl_pi(). rdar://10134392, rdar://10050222 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144052 91177308-0d34-0410-b5e6-96231b3b80d8
* Convert to the new EH model.Bill Wendling2011-11-083-28/+20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144049 91177308-0d34-0410-b5e6-96231b3b80d8
* Convert tests to the new EH model.Bill Wendling2011-11-081-6/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144048 91177308-0d34-0410-b5e6-96231b3b80d8
* Added missing newlinePete Cooper2011-11-081-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144046 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r144034 while I try to track down a crash.Eli Friedman2011-11-071-14/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144044 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix test for Windows as well.Jakob Stoklund Olesen2011-11-071-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144038 91177308-0d34-0410-b5e6-96231b3b80d8
* Kill and collapse outstanding DomainValues.Jakob Stoklund Olesen2011-11-077-23/+44
| | | | | | | | | | | | DomainValues that are only used by "don't care" instructions are now collapsed to the first possible execution domain after all basic blocks have been processed. This typically means the PS domain on x86. For example, the vsel_i64 and vsel_double functions in sse2-blend.ll are completely collapsed to the PS domain instead of containing a mix of execution domains created by isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144037 91177308-0d34-0410-b5e6-96231b3b80d8
* InstCombine now optimizes vector udiv by power of 2 to shiftsPete Cooper2011-11-071-0/+15
| | | | | | | Fixes r8429 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144036 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization ↵Eli Friedman2011-11-071-0/+14
| | | | | | doesn't get confused by CSE later on. Fixes PR11318. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144034 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix test for Linux.Jakob Stoklund Olesen2011-11-071-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144003 91177308-0d34-0410-b5e6-96231b3b80d8
* Expand V_SET0 to xorps by default.Jakob Stoklund Olesen2011-11-077-10/+31
| | | | | | | | | The xorps instruction is smaller than pxor, so prefer that encoding. The ExecutionDepsFix pass will switch the encoding to pxor and xorpd when appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143996 91177308-0d34-0410-b5e6-96231b3b80d8
* Add AVX2 variable shift instructions and intrinsics.Craig Topper2011-11-071-0/+80
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143915 91177308-0d34-0410-b5e6-96231b3b80d8
* Add AVX2 VPMOVMASK instructions and intrinsics.Craig Topper2011-11-071-0/+64
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143904 91177308-0d34-0410-b5e6-96231b3b80d8
* Add AVX2 VEXTRACTI128 and VINSERTI128 instructions. Fix VPERM2I128 to be ↵Craig Topper2011-11-071-0/+16
| | | | | | qualified with HasAVX2 instead of HasAVX. Mark VINSERTF128 and VEXTRACTF128 as never having side effects. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143902 91177308-0d34-0410-b5e6-96231b3b80d8
* More AVX2 instructions and their intrinsics.Craig Topper2011-11-061-0/+40
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143895 91177308-0d34-0410-b5e6-96231b3b80d8
* Add more AVX2 instructions and intrinsics.Craig Topper2011-11-061-0/+80
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143861 91177308-0d34-0410-b5e6-96231b3b80d8
* Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 ↵Benjamin Kramer2011-11-051-1/+1
| | | | | | | | encoding from the DWARF asm printer. As a side effect we now print dwarf ulebs with .ascii directives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143809 91177308-0d34-0410-b5e6-96231b3b80d8
* Enhanced vzeroupper insertion pass that avoids inserting vzeroupper where it ↵Eli Friedman2011-11-041-13/+70
| | | | | | | | | | is unnecessary through local analysis. Patch from Bruno Cardoso Lopes, with some additional changes. I'm going to wait for any review comments and perform some additional testing before turning this on by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143750 91177308-0d34-0410-b5e6-96231b3b80d8
* Add intrinsics for X86 vcvtps2ph and vcvtph2ps instructionsCraig Topper2011-11-041-0/+32
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143682 91177308-0d34-0410-b5e6-96231b3b80d8
* Reapply r143206, with fixes. Disallow physical register lifetimesDan Gohman2011-11-032-14/+45
| | | | | | | | across calls, and only check for nested dependences on the special call-sequence-resource register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143660 91177308-0d34-0410-b5e6-96231b3b80d8
* Reverted r143600 - selector reference changePete Cooper2011-11-031-30/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143646 91177308-0d34-0410-b5e6-96231b3b80d8
* Add new X86 AVX2 VBROADCAST instructions.Craig Topper2011-11-032-6/+29
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143612 91177308-0d34-0410-b5e6-96231b3b80d8
* Treat objc selector reference globals as invariant so that MachineLICM can ↵Pete Cooper2011-11-031-0/+30
| | | | | | hoist them out of loops. Fixes <rdar://problem/6027699> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143600 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't emit a directory entry for the value in DW_AT_comp_dir, that is alwaysNick Lewycky2011-11-022-1/+17
| | | | | | | implied by directory index zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143570 91177308-0d34-0410-b5e6-96231b3b80d8