summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86
Commit message (Collapse)AuthorAgeFilesLines
...
* Change RET node to include signness information of the return values. i.e.Evan Cheng2006-05-261-3/+3
| | | | | | RET chain, value1, sign1, value2, sign2, ... llvm-svn: 28510
* Vector argument must be passed in memory location aligned on 16-byte boundary.Evan Cheng2006-05-261-2/+18
| | | | llvm-svn: 28505
* Mac OS X ABI document lied. The first four XMM registers are used to passEvan Cheng2006-05-261-10/+12
| | | | | | vector arguments, not three. llvm-svn: 28504
* Minor update to make the code more clearEvan Cheng2006-05-261-2/+2
| | | | llvm-svn: 28499
* Update more comments.Evan Cheng2006-05-261-2/+2
| | | | llvm-svn: 28498
* Fix some comments.Evan Cheng2006-05-261-2/+2
| | | | llvm-svn: 28497
* No need to handle illegal types.Evan Cheng2006-05-261-4/+0
| | | | llvm-svn: 28496
* Remove a couple of bogus casts.Evan Cheng2006-05-262-2/+2
| | | | llvm-svn: 28493
* Minor bug caught by Ashwin ChandraEvan Cheng2006-05-261-1/+1
| | | | llvm-svn: 28491
* ConsistencyEvan Cheng2006-05-251-0/+3
| | | | llvm-svn: 28488
* Some clean up.Evan Cheng2006-05-251-4/+3
| | | | llvm-svn: 28483
* Remove some dead code.Evan Cheng2006-05-251-21/+0
| | | | llvm-svn: 28481
* X86 / Cygwin asm / alignment fixes.Evan Cheng2006-05-254-30/+42
| | | | | | Patch contributed by Anton Korobeynikov! llvm-svn: 28480
* Build breakage.Evan Cheng2006-05-251-15/+11
| | | | llvm-svn: 28475
* Switch X86 over to a call-selection model where the lowering code createsEvan Cheng2006-05-252-422/+392
| | | | | | | the copyto/fromregs instead of making the X86ISD::CALL selection code create them. llvm-svn: 28463
* Assert if InflightSet is not cleared after instruction selecting a BB.Evan Cheng2006-05-251-0/+1
| | | | llvm-svn: 28459
* Clear HandleMap and ReplaceMap after instruction selection. Or it may causeEvan Cheng2006-05-241-0/+2
| | | | | | non-deterministic behavior. llvm-svn: 28454
* Patches to make the LLVM sources more -pedantic clean. Patch providedChris Lattner2006-05-246-6/+6
| | | | | | by Anton Korobeynikov! This is a step towards closing PR786. llvm-svn: 28447
* Fix file header commentChris Lattner2006-05-231-1/+1
| | | | llvm-svn: 28441
* Better way to check for vararg.Evan Cheng2006-05-231-1/+2
| | | | llvm-svn: 28440
* Remove PreprocessCCCArguments and PreprocessFastCCArguments now thatEvan Cheng2006-05-232-253/+124
| | | | | | FORMAL_ARGUMENTS nodes include a token operand. llvm-svn: 28439
* Implement an annoying part of the Darwin/X86 abi: the callee of a structChris Lattner2006-05-232-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | return argument pops the hidden struct pointer if present, not the caller. For example, in this testcase: struct X { int D, E, F, G; }; struct X bar() { struct X a; a.D = 0; a.E = 1; a.F = 2; a.G = 3; return a; } void foo(struct X *P) { *P = bar(); } We used to emit: _foo: subl $28, %esp movl 32(%esp), %eax movl %eax, (%esp) call _bar addl $28, %esp ret _bar: movl 4(%esp), %eax movl $0, (%eax) movl $1, 4(%eax) movl $2, 8(%eax) movl $3, 12(%eax) ret This is correct on Linux/X86 but not Darwin/X86. With this patch, we now emit: _foo: subl $28, %esp movl 32(%esp), %eax movl %eax, (%esp) call _bar *** addl $24, %esp ret _bar: movl 4(%esp), %eax movl $0, (%eax) movl $1, 4(%eax) movl $2, 8(%eax) movl $3, 12(%eax) *** ret $4 For the record, GCC emits (which is functionally equivalent to our new code): _bar: movl 4(%esp), %eax movl $3, 12(%eax) movl $2, 8(%eax) movl $1, 4(%eax) movl $0, (%eax) ret $4 _foo: pushl %esi subl $40, %esp movl 48(%esp), %esi leal 16(%esp), %eax movl %eax, (%esp) call _bar subl $4, %esp movl 16(%esp), %eax movl %eax, (%esi) movl 20(%esp), %eax movl %eax, 4(%esi) movl 24(%esp), %eax movl %eax, 8(%esi) movl 28(%esp), %eax movl %eax, 12(%esi) addl $40, %esp popl %esi ret This fixes SingleSource/Benchmarks/CoyoteBench/fftbench with LLC and the JIT, and fixes the X86-backend portion of PR729. The CBE still needs to be updated. llvm-svn: 28438
* A isel deficiency.Evan Cheng2006-05-221-0/+19
| | | | llvm-svn: 28427
* Back out indirect branch load folding hack. It broke some tests.Evan Cheng2006-05-211-63/+0
| | | | llvm-svn: 28425
* Make TargetData strings less redundant.Owen Anderson2006-05-201-1/+1
| | | | llvm-svn: 28423
* - Use of load's chain result should be redirected to load's chain operand.Evan Cheng2006-05-201-3/+13
| | | | | | | | | If it reads the chain result of the call, then the use, callseq_start, and call would form a cycle! - Don't forget handle node replacement! - There could also be a TokenFactor between the load and the callseq_start. llvm-svn: 28420
* A new entryEvan Cheng2006-05-201-0/+10
| | | | llvm-svn: 28419
* Missing break statements.Evan Cheng2006-05-201-0/+3
| | | | llvm-svn: 28418
* Remove unused patterns.Evan Cheng2006-05-202-7/+4
| | | | llvm-svn: 28417
* Handle indirect call which folds a load manually. This never matches byEvan Cheng2006-05-201-0/+58
| | | | | | | the TableGen generated code since the load's chain result is read by the callseq_start node. llvm-svn: 28416
* Make all of the TargetMachine subclasses use the new string TargetData methods.Owen Anderson2006-05-201-1/+1
| | | | | | This is part of the on-going work on PR 761. llvm-svn: 28414
* CSRet allows varargsChris Lattner2006-05-191-2/+3
| | | | llvm-svn: 28409
* Add a noteChris Lattner2006-05-191-0/+38
| | | | llvm-svn: 28401
* Split the SSE readme items out into their own README.Chris Lattner2006-05-192-582/+662
| | | | llvm-svn: 28400
* Split FP-stack notes out of the main readme. Next up: splitting out SSE.Chris Lattner2006-05-192-100/+99
| | | | llvm-svn: 28399
* Particularly ugly code.Chris Lattner2006-05-191-0/+14
| | | | llvm-svn: 28397
* These can be transformed into lea as well. Not that we use this featureEvan Cheng2006-05-191-0/+2
| | | | | | currently... llvm-svn: 28393
* - Use exact-width integer types, e.g. int32_t, to avoid confusion.Evan Cheng2006-05-191-8/+9
| | | | | | | - Fix a couple of minor bugs in i16immSExt8 and i16immZExt8. - Added loadiPTR fragment used for indirect jumps and calls. llvm-svn: 28392
* Explicitly specify MOV32mi can only be used store 32-bit GV, etc.Evan Cheng2006-05-191-2/+2
| | | | llvm-svn: 28390
* add a noteChris Lattner2006-05-181-0/+15
| | | | llvm-svn: 28383
* ImmMask should be 3 for a two-bit field; Compact X86IIEvan Cheng2006-05-182-4/+3
| | | | llvm-svn: 28381
* getCalleeSaveRegs and getCalleeSaveRegClasses are no long TableGen'd.Evan Cheng2006-05-183-7/+28
| | | | llvm-svn: 28378
* Use generic iPTR instead i32 to represent pointer type.Evan Cheng2006-05-171-3/+3
| | | | llvm-svn: 28371
* Another entryEvan Cheng2006-05-171-0/+9
| | | | llvm-svn: 28370
* Remove PointerType from class TargetEvan Cheng2006-05-171-3/+0
| | | | llvm-svn: 28368
* Should pass by reference.Evan Cheng2006-05-172-4/+4
| | | | llvm-svn: 28357
* Another entryEvan Cheng2006-05-171-0/+12
| | | | llvm-svn: 28356
* Implement the custom lowering hook right, returning values for all of theChris Lattner2006-05-161-1/+5
| | | | | | arguments at once. llvm-svn: 28327
* Fix a bug I introduced yesterday, which broke functions with *no* arguments.Chris Lattner2006-05-161-0/+7
| | | | llvm-svn: 28326
* X86 integer register classes naming changes. Make them consistent with FP, ↵Evan Cheng2006-05-1610-854/+854
| | | | | | vector classes. llvm-svn: 28324
OpenPOWER on IntegriCloud