summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86
Commit message (Collapse)AuthorAgeFilesLines
* Fix test on Linux.Eli Friedman2009-08-151-1/+1
| | | | llvm-svn: 79140
* implement support for CHECK-NEXT: in filecheck.Chris Lattner2009-08-151-10/+10
| | | | llvm-svn: 79123
* specify a target triple so global variable manglings are consistent etc.Chris Lattner2009-08-151-1/+2
| | | | llvm-svn: 79118
* convert to filecheck.Chris Lattner2009-08-151-3/+18
| | | | llvm-svn: 79117
* rename this test to sse2.llChris Lattner2009-08-151-0/+0
| | | | llvm-svn: 79116
* merge a bunch more sse3 tests into sse3.llChris Lattner2009-08-1511-174/+252
| | | | llvm-svn: 79115
* convert test to filecheck format.Chris Lattner2009-08-151-7/+17
| | | | llvm-svn: 79114
* rename testChris Lattner2009-08-151-0/+0
| | | | llvm-svn: 79113
* this is a test for sse3, simplify it.Chris Lattner2009-08-151-1/+1
| | | | llvm-svn: 79112
* On x86-64, for a varargs function, don't store the xmm registers toDan Gohman2009-08-151-0/+20
| | | | | | | the register save area if %al is 0. This avoids touching xmm regsiters when they aren't actually used. llvm-svn: 79061
* Properly handle indirect win64 args when they're passed in memoryAnton Korobeynikov2009-08-141-0/+57
| | | | llvm-svn: 79009
* Change MCSectionELF to represent a section semantically instead ofBruno Cardoso Lopes2009-08-131-0/+18
| | | | | | | syntactically as a string, very similiar to what Chris did with MachO. The parsing support and validation is not introduced yet. llvm-svn: 78890
* Various AsmWriter output cleanups. Use WriteAsOperand instead ofDan Gohman2009-08-131-2/+2
| | | | | | PrintUnmangledNameSafely. llvm-svn: 78878
* Use WriteAsOperand to print BasicBlock names.Dan Gohman2009-08-121-1/+1
| | | | llvm-svn: 78838
* Test for 78821, sort of. While that bug is nondeterministic,Dale Johannesen2009-08-121-0/+176
| | | | | | this test failed consistently on a Darwin build. llvm-svn: 78822
* one last (?) bad x86 triple test.Chris Lattner2009-08-121-1/+1
| | | | llvm-svn: 78801
* fix some pastos in triple lines.Chris Lattner2009-08-121-3/+3
| | | | llvm-svn: 78800
* another bogus tripleChris Lattner2009-08-121-1/+1
| | | | llvm-svn: 78798
* fix another broken target triple.Chris Lattner2009-08-121-1/+1
| | | | llvm-svn: 78796
* fix an incorrect target triple.Chris Lattner2009-08-121-1/+1
| | | | llvm-svn: 78795
* Fix a bug in the DAGCombiner's handling of multiple linkedDan Gohman2009-08-101-0/+24
| | | | | | | | | | | MERGE_VALUES nodes. Replacing the result values with the operands in one MERGE_VALUES node may cause another MERGE_VALUES node be CSE'd with the first one, and bring its uses along, so that the first one isn't dead, as this code expects. Fix this by iterating until the node is really dead. This fixes PR4699. llvm-svn: 78619
* Make the big switch: Change MCSectionMachO to represent a section *semantically*Chris Lattner2009-08-102-40/+9
| | | | | | | | | | | | | | | | instead of syntactically as a string. This means that it keeps track of the segment, section, flags, etc directly and asmprints them in the right format. This also includes parsing and validation support for llvm-mc and "attribute(section)", so we should now start getting errors about invalid section attributes from the compiler instead of the assembler on darwin. Still todo: 1) Uniquing of darwin mcsections 2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h] 3) there are a few FIXMEs, for example what is the syntax to get the S_GB_ZEROFILL segment type? llvm-svn: 78547
* Add crc32 instruction and intrinsics. Add a new class of prefixEric Christopher2009-08-081-0/+38
| | | | | | | | | bytes for F2 0F 38 and propagate. Add a FIXME for a set of possibilities which correspond to intrinsics already used. New test. llvm-svn: 78508
* Do not generate 32-bit call on win64 when imm does not fitAnton Korobeynikov2009-08-071-0/+9
| | | | llvm-svn: 78443
* rename testChris Lattner2009-08-071-0/+0
| | | | llvm-svn: 78441
* merge a bunch of tests together into one, convert to filecheck whichChris Lattner2009-08-075-64/+60
| | | | | | is more tolerant of whitespace differences. llvm-svn: 78439
* Add the testcase from PR 4668. This works at theDale Johannesen2009-08-071-0/+26
| | | | | | moment, but it's a fragile area. llvm-svn: 78358
* Fix PR 4626, a crash in branch folding after OptimizeBlockDale Johannesen2009-08-061-0/+90
| | | | | | produced a CFG it wasn't prepared for. llvm-svn: 78351
* Tidy up this testcase.Dan Gohman2009-08-061-49/+1
| | | | llvm-svn: 78322
* reduce testcase.Chris Lattner2009-08-061-39/+4
| | | | llvm-svn: 78315
* Remove an over-aggressive assert. Functions with empty struct returnDan Gohman2009-08-061-0/+50
| | | | | | | types don't have any return values, from CodeGen's perspective. This fixes PR4688. llvm-svn: 78311
* Add tests for X86-64 code model handling. Small and kernel for now.Anton Korobeynikov2009-08-061-0/+67
| | | | llvm-svn: 78300
* Fix a bug in x86's PreprocessForRMW logic that was exposedDan Gohman2009-08-061-0/+20
| | | | | | | | by aggressive chain operand optimization. UpdateNodeOperands does not modify the node in place if it would result in a node identical to an existing node. llvm-svn: 78297
* Fix a few places in DAGCombiner that were creating all-ones-bitsDan Gohman2009-08-061-0/+12
| | | | | | | | and high-bits values in ways that weren't correct for integer types wider than 64 bits. This fixes a miscompile in PPMacroExpansion.cpp in clang on x86-64. llvm-svn: 78295
* Enable the new no-SP register classes by default. This is to addressDan Gohman2009-08-053-3/+3
| | | | | | | PR4572. A few tests have some minor code regressions due to different coalescing. llvm-svn: 78217
* Change these tests to use function attributes rather than special llcDan Gohman2009-08-052-9/+21
| | | | | | command-line options. llvm-svn: 78204
* Revert changes accidentally committed along with r78163.Dan Gohman2009-08-052-2/+2
| | | | llvm-svn: 78165
* Teach X86FastISel how to handle CCValAssign::BCvt, which is used forDan Gohman2009-08-053-2/+21
| | | | | | MMX arguments. This fixes PR4684. llvm-svn: 78163
* Major calling convention code refactoring.Dan Gohman2009-08-051-8/+11
| | | | | | | | | | | | | | | | | | | Instead of awkwardly encoding calling-convention information with ISD::CALL, ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering provides three virtual functions for targets to override: LowerFormalArguments, LowerCall, and LowerRet, which replace the custom lowering done on the special nodes. They provide the same information, but in a more immediately usable format. This also reworks much of the target-independent tail call logic. The decision of whether or not to perform a tail call is now cleanly split between target-independent portions, and the target dependent portion in IsEligibleForTailCallOptimization. This also synchronizes all in-tree targets, to help enable future refactoring and feature work. llvm-svn: 78142
* LowerSubregsInstructionPass::LowerExtract should not extend the live range ↵Jakob Stoklund Olesen2009-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of registers. When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the kill flag to the place where the sub-register is killed. This can accidentally overlap with the use of a sibling sub-register, and we have trouble. In the test case we have this code: Live Ins: %R0 %R1 %R2 %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1 %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0] %R1L<def> = EXTRACT_SUBREG %R1<kill>, 1 %R0L<def> = EXTRACT_SUBREG %R0<kill>, 1 %R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def> subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1 subreg: eliminated! subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def> The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H: *** Bad machine code: Redefining a live physical register *** - function: f - basic block: 0x18358c0 (#0) - instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0] Register R2H was defined but already live. The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating it completely: subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1 subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill> Note that these IMPLICIT_DEF instructions survive to the asm output. It is necessary to fix the stack-color-with-reg test case because of that. llvm-svn: 78093
* enhance codegen to put 16-bit character strings into the Chris Lattner2009-08-041-2/+2
| | | | | | __TEXT,__ustring section on darwin. llvm-svn: 78068
* Add support emiting for 2/4 byte mergable strings to the ".rodata.str*"Chris Lattner2009-08-041-0/+36
| | | | | | section on ELF targets. llvm-svn: 78066
* Unbreak Win64 CC. Step one: honour register save area, fix some alignment ↵Anton Korobeynikov2009-08-032-4/+4
| | | | | | and provide a different set of call-clobberred registers. llvm-svn: 77962
* Use movd instead of movqRafael Espindola2009-08-031-1/+1
| | | | llvm-svn: 77956
* Pass target triple string in to TargetMachine constructor.Daniel Dunbar2009-08-032-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | This is not just a matter of passing in the target triple from the module; currently backends are making decisions based on the build and host architecture. The goal is to migrate to making these decisions based off of the triple (in conjunction with the feature string). Thus most clients pass in the target triple, or the host triple if that is empty. This has one important change in the way behavior of the JIT and llc. For the JIT, it was previously selecting the Target based on the host (naturally), but it was setting the target machine features based on the triple from the module. Now it is setting the target machine features based on the triple of the host. For LLC, -march was previously only used to select the target, the target machine features were initialized from the module's triple (which may have been empty). Now the target triple is taken from the module, or the host's triple is used if that is empty. Then the triple is adjusted to match -march. The take away is that -march for llc is now used in conjunction with the host triple to initialize the subtarget. If users want more deterministic behavior from llc, they should use -mtriple, or set the triple in the input module. llvm-svn: 77946
* Use movq to move 64 bits in and out of mmx registers.Rafael Espindola2009-08-032-1/+11
| | | | | | Fixes PR4669 llvm-svn: 77940
* fix a problem Eli noticed where we would compile the attached ptrtointChris Lattner2009-08-011-0/+8
| | | | | | | | | | | | | | | to: .quad X even on a 32-bit system, where X is not 64-bits. There isn't much that we can do here, so we just print: .quad ((X) & 4294967295) instead. llvm-svn: 77818
* Add nounwind to this test.Dan Gohman2009-08-011-1/+1
| | | | llvm-svn: 77792
* Simplify operand padding by keying off tabs in the asm stream. IfDavid Greene2009-07-315-13/+13
| | | | | | | | | | | | padding is disabled, tabs get replaced by spaces except in the case of the first operand, where the tab is output to line up the operands after the mnemonics. Add some better comments and eliminate redundant code. Fix some testcases to not assume tabs. llvm-svn: 77740
* fix PR4650: we only track sizes for certain objects, so only put somethingChris Lattner2009-07-311-0/+17
| | | | | | | | into the mergable section if it is one of our special cases. This could obviously be improved, but this is the minimal fix and restores us to the previous behavior. llvm-svn: 77679
OpenPOWER on IntegriCloud