summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
...
* More explicit keywords.Dan Gohman2007-09-257-9/+9
| | | | llvm-svn: 42316
* Fix a typo in a comment.Dan Gohman2007-09-251-1/+1
| | | | llvm-svn: 42313
* New style x87 cmp instructions.Evan Cheng2007-09-252-0/+24
| | | | llvm-svn: 42312
* When both x/y and x%y are needed (x and y both scalar integer), computeDan Gohman2007-09-253-25/+88
| | | | | | | | | both results with a single div or idiv instruction. This uses new X86ISD nodes for DIV and IDIV which are introduced during the legalize phase so that the SelectionDAG's CSE can automatically eliminate redundant computations. llvm-svn: 42308
* Move the setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand) andDan Gohman2007-09-251-7/+1
| | | | | | | the check to see if the assembler supports .loc from X86TargetLowering into the superclass TargetLowering. llvm-svn: 42297
* Added support for new condition code modeling scheme (i.e. physical register ↵Evan Cheng2007-09-259-45/+1409
| | | | | | | | dependency). These are a bunch of instructions that are duplicated so the x86 backend can support both the old and new schemes at the same time. They will be deleted after all the kinks are worked out. llvm-svn: 42285
* New temporary option -new-cc-modeling-scheme to test the new cc modeling scheme.Evan Cheng2007-09-251-0/+6
| | | | llvm-svn: 42283
* Rename keyword "modify" -> "implicit".Evan Cheng2007-09-251-1/+1
| | | | llvm-svn: 42282
* When mixing SSE and x87 codegen, it's possible toDale Johannesen2007-09-241-29/+31
| | | | | | | | | | | | have situations where an SSE instruction turns into multiple blocks, with the live range of an x87 register crossing them. To do this correctly make sure we examine all blocks when inserting FP_REG_KILL. PR 1697. (This was exposed by my fix for PR 1681, but the same thing could happen mixing x87 long double with SSE.) llvm-svn: 42281
* Add support on x86 for having Legalize lower ISD::LOCATION to ISD::DEBUG_LOCDan Gohman2007-09-241-2/+7
| | | | | | | instead of ISD::LABEL with a manual .debug_line entry when the assembler supports .file and .loc directives. llvm-svn: 42278
* Merge hasDotLoc and hasDotFile into hasDotLocAndDotFile since .loc and .fileDan Gohman2007-09-241-2/+1
| | | | | | aren't really usable without each other. llvm-svn: 42274
* Added "LoadEffective" pattern to handle stack locations.Bruno Cardoso Lopes2007-09-243-6/+25
| | | | | | Fixed some comments llvm-svn: 42271
* Fix the syntax for the .loc directive in preparation for using it.Dan Gohman2007-09-241-1/+1
| | | | llvm-svn: 42268
* The code that used the StartLabelId label was removed, so remove theDan Gohman2007-09-241-7/+1
| | | | | | code that creates the label too. llvm-svn: 42265
* claim that "st" is from the 80-bit register file. This causes x87-using inlineChris Lattner2007-09-241-1/+1
| | | | | | | | | | | | | asm to die with: ScheduleDAG.cpp:269: failed assertion `false && "Couldn't find the register class"' instead of: failed assertion `RegMap->getRegClass(VReg) == RC && "Register class of operand and regclass of use don't agree!"' yay. llvm-svn: 42259
* Fix PR 1681. When X86 target uses +sse -sse2,Dale Johannesen2007-09-237-87/+164
| | | | | | | | | | keep f32 in SSE registers and f64 in x87. This is effectively a new codegen mode. Change addLegalFPImmediate to permit float and double variants to do different things. Adjust callers. llvm-svn: 42246
* Fix PR1679, by printing GEP indices as signed values instead of unsigned.Chris Lattner2007-09-221-1/+2
| | | | llvm-svn: 42239
* Don't add a default STACK_ALIGN (use the generic ABI alignment)Rafael Espindola2007-09-212-8/+6
| | | | | | Implement calls to functions with byval arguments on X86 llvm-svn: 42192
* small cleanup: use LowerMemArgument in LowerFastCCArguments alsoRafael Espindola2007-09-211-6/+1
| | | | llvm-svn: 42189
* Honor user-defined section specification of a global, ignores whether its ↵Evan Cheng2007-09-213-8/+7
| | | | | | initializer is null. llvm-svn: 42182
* Do not override user specified section.Devang Patel2007-09-201-2/+2
| | | | llvm-svn: 42179
* Fix several more entries in the x86 reload/remat folding tables.Dan Gohman2007-09-201-18/+18
| | | | llvm-svn: 42162
* another long double bugletDale Johannesen2007-09-201-0/+1
| | | | llvm-svn: 42159
* Enable if-conversion for ARM by default.Evan Cheng2007-09-201-3/+3
| | | | llvm-svn: 42156
* More long double fixes. x86_64 should build now.Dale Johannesen2007-09-192-6/+14
| | | | llvm-svn: 42155
* Avoid referencing deleted instruction.Evan Cheng2007-09-191-5/+26
| | | | llvm-svn: 42153
* PSHUFDmi, etc. are actually folding a load, not a store.Evan Cheng2007-09-191-3/+3
| | | | llvm-svn: 42147
* Set CCR (EFLAGS) copy cost to -1, i.e. extremely expensive to copy.Evan Cheng2007-09-191-1/+3
| | | | llvm-svn: 42124
* Add CopyCost to TargetRegisterClass. This specifies the cost of copying a valueEvan Cheng2007-09-191-0/+6
| | | | | | between two registers in the specific class. llvm-svn: 42123
* Move the entries for 64-bit CMP, IMUL, and a few others into the correctDan Gohman2007-09-181-6/+11
| | | | | | | tables so that they are eligible for reload/remat folding. And add entries for JMP and CALL. llvm-svn: 42094
* Remove RSTRegClass case from loadRegFromStackSlotDale Johannesen2007-09-172-5/+3
| | | | | | | | | and storeRegToStackSlot. Evan and I concluded this should never be needed and it appears to be true. (It if is needed, adjustment would be needed for long double to work.) llvm-svn: 42049
* Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfoChris Lattner2007-09-171-2/+6
| | | | | | | Add a new DenseMapInfo::isEqual method to allow clients to redefine the equality predicate used when probing the hash table. llvm-svn: 42042
* X86ISD::TEST is dead.Evan Cheng2007-09-171-1/+1
| | | | llvm-svn: 42037
* Add 64-bit jmp instructions to the list of instructions thatDan Gohman2007-09-171-0/+2
| | | | | | can terminate a block with no fall-through. llvm-svn: 42029
* Use xorl instead of xorq to enter a zero into a 64-bit register.Dan Gohman2007-09-171-2/+4
| | | | llvm-svn: 42027
* Emit integer x<1 as x<=0, as comparisons with zero (now includeingDan Gohman2007-09-171-0/+5
| | | | | | 64-bit) can use test instead of cmp with an immediate. llvm-svn: 42026
* Use "test reg,reg" in place of "cmp reg,0" for 64-bit operands. This wasDan Gohman2007-09-171-0/+6
| | | | | | previously only done for 32-bit and smaller operands. llvm-svn: 42024
* Implement x86 long double (uses host long double,Dale Johannesen2007-09-171-5/+30
| | | | | | so only works on x86 target). llvm-svn: 42019
* Follow-up to patch r41999. Make the conditional that emits the personality stubBill Wendling2007-09-161-1/+1
| | | | | | | match the conditional that turns on exception handling emittion in the asm printer. llvm-svn: 42008
* Only emit the personality function as a global value if the backend actuallyBill Wendling2007-09-161-1/+1
| | | | | | | | | | | | | | | | | | | | supports it. This solves this error on the Darwin x86-64 platform: $ cat testcase.ii struct A { A(); }; A *bork() { return new A; } $ llvm-g++ -arch x86_64 -c testcase.ii /var/tmp//cc3U8fd8.s:52:unknown section type: non_lazy_symbol_pointers /var/tmp//cc3U8fd8.s:52:Rest of line ignored. 1st junk character valued 76 (L). /var/tmp//cc3U8fd8.s:53:Unknown pseudo-op: .indirect_symbol /var/tmp//cc3U8fd8.s:53:Rest of line ignored. 1st junk character valued 95 (_). llvm-svn: 41999
* Fix PR1666, SPASS with the CBE and 254.gap with the CBE.Chris Lattner2007-09-151-45/+27
| | | | | | | | GCC optimizes away things like ptr < NULL to false. To "fix" this, have the CBE emit casts of pointers to intptr_t when doing relational pointer comparisons. llvm-svn: 41983
* Add patterns for SHLD64* and SHRD64*.Dan Gohman2007-09-142-12/+28
| | | | llvm-svn: 41975
* Remove the assumption that FP's are either float orDale Johannesen2007-09-143-6/+37
| | | | | | | | | | | | | double from some of the many places in the optimizers it appears, and do something reasonable with x86 long double. Make APInt::dump() public, remove newline, use it to dump ConstantSDNode's. Allow APFloats in FoldingSet. Expand X86 backend handling of long doubles (conversions to/from int, mostly). llvm-svn: 41967
* Add implicit def of EFLAGS on those instructions that may modify flags.Evan Cheng2007-09-145-54/+85
| | | | llvm-svn: 41962
* Remove isReg, isImm, and isMBB, and change all their users to use Dan Gohman2007-09-147-16/+16
| | | | | | | isRegister, isImmediate, and isMachineBasicBlock, which are equivalent, and more popular. llvm-svn: 41958
* Add support for functions with byval arguments on x86Rafael Espindola2007-09-142-17/+23
| | | | llvm-svn: 41953
* Fix comments.Evan Cheng2007-09-141-4/+4
| | | | llvm-svn: 41947
* Initial support for multi-result patterns:Evan Cheng2007-09-121-0/+2
| | | | | | | | | | | | 1. [(set GR32:$dst, (add GR32:$src1, GR32:$src2)), (modify EFLAGS)] This indicates the source pattern expects the instruction would produce 2 values. The first is the result of the addition. The second is an implicit definition in register EFLAGS. 2. def : Pat<(parallel (addc GR32:$src1, GR32:$src2), (modify EFLAGS)), ()> Similar to #1 except this is used for def : Pat patterns. llvm-svn: 41897
* Revise previous patch per review comments.Dale Johannesen2007-09-122-7/+7
| | | | | | | Next round of x87 long double stuff. Getting close now, basically works. llvm-svn: 41875
* Enable indirect encoding for the personality functionBill Wendling2007-09-112-0/+2
| | | | llvm-svn: 41873
OpenPOWER on IntegriCloud