summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Fix test for Linux.Jakob Stoklund Olesen2011-11-071-1/+1
| | | | llvm-svn: 144003
* 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. llvm-svn: 143996
* Add AVX2 variable shift instructions and intrinsics.Craig Topper2011-11-071-0/+80
| | | | llvm-svn: 143915
* Add AVX2 VPMOVMASK instructions and intrinsics.Craig Topper2011-11-071-0/+64
| | | | llvm-svn: 143904
* 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. llvm-svn: 143902
* More AVX2 instructions and their intrinsics.Craig Topper2011-11-061-0/+40
| | | | llvm-svn: 143895
* Add more AVX2 instructions and intrinsics.Craig Topper2011-11-061-0/+80
| | | | llvm-svn: 143861
* Add support for passing i1, i8, and i16 call parameters. Also, be sure toChad Rosier2011-11-051-0/+67
| | | | | | | zero-extend the constant integer encoding. Test case provides testing for both call parameters and materialization of i1, i8, and i16 types. llvm-svn: 143821
* Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 ↵Benjamin Kramer2011-11-053-7/+4
| | | | | | | | encoding from the DWARF asm printer. As a side effect we now print dwarf ulebs with .ascii directives. llvm-svn: 143809
* 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. llvm-svn: 143750
* Add intrinsics for X86 vcvtps2ph and vcvtph2ps instructionsCraig Topper2011-11-041-0/+32
| | | | llvm-svn: 143682
* Add fast-isel support for returning i1, i8, and i16.Chad Rosier2011-11-041-0/+48
| | | | llvm-svn: 143669
* Reapply r143206, with fixes. Disallow physical register lifetimesDan Gohman2011-11-0311-29/+67
| | | | | | | across calls, and only check for nested dependences on the special call-sequence-resource register. llvm-svn: 143660
* Reverted r143600 - selector reference changePete Cooper2011-11-031-30/+0
| | | | llvm-svn: 143646
* fixed global array handling for ptx to use the correct bit widthsDan Bailey2011-11-032-30/+30
| | | | llvm-svn: 143640
* Add new X86 AVX2 VBROADCAST instructions.Craig Topper2011-11-032-6/+29
| | | | llvm-svn: 143612
* Add support for sign-extending non-legal types in SelectSIToFP().Chad Rosier2011-11-031-0/+96
| | | | llvm-svn: 143603
* 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> llvm-svn: 143600
* Try to lower memset/memcpy/memmove to vector instructions on ARM where the ↵Lang Hames2011-11-021-0/+20
| | | | | | alignment permits. llvm-svn: 143582
* 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. llvm-svn: 143570
* Add support for comparing integer non-legal types.Chad Rosier2011-11-021-0/+47
| | | | llvm-svn: 143559
* More AVX2 instructions and intrinsics.Craig Topper2011-11-021-0/+137
| | | | llvm-svn: 143536
* Add a bunch more X86 AVX2 instructions and their corresponding intrinsics.Craig Topper2011-11-021-0/+224
| | | | llvm-svn: 143529
* Teach the x86 backend a couple tricks for dealing with v16i8 sra by a ↵Eli Friedman2011-11-011-0/+20
| | | | | | constant splat value. Fixes PR11289. llvm-svn: 143498
* Don't fold negative offsets into cp / dp accesses to avoid relocation errors.Richard Osborne2011-11-011-0/+25
| | | | | | This can happen if the address + addend is less than the start of the cp / dp. llvm-svn: 143459
* Combine various XCore tests for floating point intrinsic support into a ↵Richard Osborne2011-11-0111-180/+171
| | | | | | single test. llvm-svn: 143458
* Move various XCore tests to FileCheckRichard Osborne2011-11-0117-60/+92
| | | | llvm-svn: 143457
* Fix operand type for x86 pmadd_ub_sw intrinsic.Craig Topper2011-11-011-3/+3
| | | | llvm-svn: 143455
* Fix operand type for int_x86_ssse3_phadd_sw_128 intrinsicCraig Topper2011-10-311-4/+4
| | | | llvm-svn: 143336
* Test case for X86 FS/GS Base intrinsicsCraig Topper2011-10-311-0/+57
| | | | llvm-svn: 143332
* Begin adding AVX2 instructions. No selection support yet other than intrinsics.Craig Topper2011-10-311-0/+384
| | | | llvm-svn: 143331
* Switch new .file directive emission off by default, change llc's flag for it toNick Lewycky2011-10-311-1/+1
| | | | | | -enable-dwarf-directory. llvm-svn: 143326
* X86: Emit logical shift by constant splat of <16 x i8> as a <8 x i16> shift ↵Benjamin Kramer2011-10-301-0/+18
| | | | | | and zero out the bits where zeros should've been shifted in. llvm-svn: 143315
* Fix return type for X86 mpsadbw instrinsic. The instruction takes in a ↵Craig Topper2011-10-301-4/+4
| | | | | | vector of 8-bit integers, but produces a vector of 16-bit integers. llvm-svn: 143313
* Fix pr11266.Nadav Rotem2011-10-302-2/+34
| | | | | | | | | On x86: (shl V, 1) -> add V,V Hardware support for vector-shift is sparse and in many cases we scalarize the result. Additionally, on sandybridge padd is faster than shl. llvm-svn: 143311
* Stabilize the test by specifying an exact cpu targetNadav Rotem2011-10-301-1/+1
| | | | llvm-svn: 143307
* Add a new DAGCombine optimization for BUILD_VECTOR.Nadav Rotem2011-10-293-5/+23
| | | | | | | If all of the inputs are zero/any_extended, create a new simple BV which can be further optimized by other BV optimizations. llvm-svn: 143297
* Force SSE for this test.Benjamin Kramer2011-10-291-1/+1
| | | | llvm-svn: 143291
* Revert r143206, as there are still some failing tests.Dan Gohman2011-10-2911-51/+29
| | | | llvm-svn: 143262
* test/CodeGen/PowerPC/2008-10-17-AsmMatchingOperands.ll: [PR11218] Mark ↵NAKAMURA Takumi2011-10-281-0/+4
| | | | | | "REQUIRES: asserts" for now. llvm-svn: 143247
* Reapply r143177 and r143179 (reverting r143188), with schedulerDan Gohman2011-10-2811-29/+51
| | | | | | | | | fixes: Use a separate register, instead of SP, as the calling-convention resource, to avoid spurious conflicts with actual uses of SP. Also, fix unscheduling of calling sequences, which can be triggered by pseudo-two-address dependencies. llvm-svn: 143206
* Dwarf: [PR11022] Fix emitting DW_AT_const_value(>i64), to be ↵NAKAMURA Takumi2011-10-281-1/+1
| | | | | | | | | | | host-endian-neutral. Don't assume APInt::getRawData() would hold target-aware endianness nor host-compliant endianness. rawdata[0] holds most lower i64, even on big endian host. FIXME: Add a testcase for big endian target. FIXME: Ditto on CompileUnit::addConstantFPValue() ? llvm-svn: 143194
* test/CodeGen/X86/2010-08-10-DbgConstant.ll: Add explicit ↵NAKAMURA Takumi2011-10-281-1/+1
| | | | | | -mtriple=i686-linux. It must be for elf! llvm-svn: 143189
* Speculatively disable Dan's commits 143177 and 143179 to see ifDuncan Sands2011-10-2810-32/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it fixes the dragonegg self-host (it looks like gcc is miscompiled). Original commit messages: Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. Delete #if 0 code accidentally left in. llvm-svn: 143188
* Always use the string pool, even when it makes the .o larger. This may helpNick Lewycky2011-10-286-10/+6
| | | | | | | tools that read the debug info in the .o files by making the DIE sizes more consistent. llvm-svn: 143186
* Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUWDan Gohman2011-10-2812-183/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. llvm-svn: 143177
* Remove the Alpha backend.Dan Gohman2011-10-2742-860/+0
| | | | llvm-svn: 143164
* Also set addrmode6 alignment when align==size.Jakob Stoklund Olesen2011-10-273-5/+15
| | | | | | | Previously, we were only setting the alignment bits on over-aligned loads and stores. llvm-svn: 143160
* Avoid partial CPSR dependency from loop backedges. rdar://10357570Evan Cheng2011-10-271-2/+36
| | | | llvm-svn: 143145
* Changed test to check for correct load size instead of shift as the shift ↵Pete Cooper2011-10-271-1/+1
| | | | | | might change if optimised llvm-svn: 143116
OpenPOWER on IntegriCloud