summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86FastISel.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Simplify this code. The FastISel class has its own TD member.Dan Gohman2008-09-181-4/+3
| | | | llvm-svn: 56311
* FastISel: For calls, prefer using the callee's address as a constantDan Gohman2008-09-171-10/+13
| | | | | | | | | | | | over having it in a register. And wait until after checking type legality before requesting that the callee address be placed in a register. Also, fix support for calls with void return type. This speeds up fast-isel isel time by about 15% and reduces instruction counts by about 3% overall on certain testcases. It also changes many indirect calls to direct calls. llvm-svn: 56292
* Fix a bug in ANY_EXTEND handling that was breaking 403.gcc on X86-64 in fast ↵Owen Anderson2008-09-111-2/+7
| | | | | | isel. llvm-svn: 56117
* If ISD::ANY_EXTEND fails, try ISD::ZERO_EXTEND and ISD::SIGN_EXTEND before ↵Owen Anderson2008-09-111-0/+7
| | | | | | | | giving up. This fixes 445.gobmk on X86-64 in fast isel. llvm-svn: 56088
* X86FastISel support for double->float and float->double casts.Dan Gohman2008-09-101-0/+43
| | | | llvm-svn: 56070
* Add X86FastISel support for static allocas, and refencesDan Gohman2008-09-101-59/+74
| | | | | | | to static allocas. As part of this change, refactor the address mode code for laods and stores. llvm-svn: 56066
* Fix a constant lowering bug. Now we can do load and store instructions with ↵Evan Cheng2008-09-091-28/+43
| | | | | | funky getelementptr embedded in the address operand. llvm-svn: 55975
* Handle calls which produce i1 results: promote to i8 but and it with 1 to ↵Evan Cheng2008-09-081-3/+18
| | | | | | get the low bit. llvm-svn: 55925
* Fix copy+pastos in comments.Dan Gohman2008-09-081-2/+2
| | | | llvm-svn: 55918
* Add support to extend call operands when needed. Enable x86 fastisel call ↵Evan Cheng2008-09-081-24/+33
| | | | | | support. llvm-svn: 55891
* Initial fastisel call support for C, Fast, and X86_FastCall calling ↵Evan Cheng2008-09-071-42/+308
| | | | | | | | conventions. It's meant to handle "simple" calls, i.e. no byval, structret, etc. It doesn't support multi-result returns either. Not yet turned on, it needs to support sext / zext of arguments and result. llvm-svn: 55882
* Handle x86 truncate to i8 with target hook for now.Evan Cheng2008-09-071-0/+38
| | | | llvm-svn: 55877
* Fix constant pool loads, and remove broken versions of addConstantPoolReference.Owen Anderson2008-09-061-6/+9
| | | | llvm-svn: 55868
* Fix X86FastISel's shift and select code to reject illegal types.Dan Gohman2008-09-051-1/+9
| | | | llvm-svn: 55857
* Fix the opcodes used by X86FastISel for shifts and conditional moves.Dan Gohman2008-09-051-11/+11
| | | | llvm-svn: 55855
* Factor out code that emits load and store instructions.Evan Cheng2008-09-051-111/+138
| | | | llvm-svn: 55854
* Rename method.Owen Anderson2008-09-051-3/+3
| | | | llvm-svn: 55853
* X86FastISel support for shifts and conditional moves.Dan Gohman2008-09-051-0/+99
| | | | llvm-svn: 55844
* Check a comparion's operand type for legality beforeDan Gohman2008-09-051-4/+4
| | | | | | expanding its operands. llvm-svn: 55820
* Fix X86FastISel code for comparisons and conditional branchesDan Gohman2008-09-051-1/+9
| | | | | | | to check the result of getRegForValue before using it, and to check for illegal operand types. llvm-svn: 55819
* X86FastISel support for conditional branches.Dan Gohman2008-09-051-1/+39
| | | | llvm-svn: 55816
* Add initial support for selecting constant materializations that require ↵Owen Anderson2008-09-051-0/+88
| | | | | | | | constant pool loads on X86 in fast isel. This isn't actually used yet. llvm-svn: 55814
* X86FastISel support for ICmpInst and FCmpInst.Dan Gohman2008-09-041-0/+139
| | | | llvm-svn: 55811
* Fix the ordering of operands to the store (inverted relative to LLVM IR), ↵Owen Anderson2008-09-041-2/+4
| | | | | | and fix the testcase. llvm-svn: 55777
* Add a first attempt at implementing stores for X86 fast isel using target hooks.Owen Anderson2008-09-041-0/+87
| | | | | | Dan or Evan, please review. llvm-svn: 55764
* Load from GV stub should be locally CSE'd.Evan Cheng2008-09-041-0/+2
| | | | llvm-svn: 55763
* Create HandlePHINodesInSuccessorBlocksFast, a version ofDan Gohman2008-09-031-28/+18
| | | | | | | | | | | | | HandlePHINodesInSuccessorBlocks that works FastISel-style. This allows PHI nodes to be updated correctly while using FastISel. This also involves some code reorganization; ValueMap and MBBMap are now members of the FastISel class, so they needn't be passed around explicitly anymore. Also, SelectInstructions is changed to SelectInstruction, and only does one instruction at a time. llvm-svn: 55746
* Add X86 target hook to implement load (even from GlobalAddress).Evan Cheng2008-09-031-1/+130
| | | | llvm-svn: 55693
* Unbreak fast isel.Evan Cheng2008-09-031-2/+5
| | | | llvm-svn: 55685
* Let tblgen only generate fastisel routines, not the class definition. This ↵Evan Cheng2008-09-031-7/+23
| | | | | | makes it easier for targets to define its own fastisel class. llvm-svn: 55679
* Add initial support for fast isel of instructions that have inputs pinned to ↵Owen Anderson2008-08-291-0/+1
| | | | | | physical registers. llvm-svn: 55545
* Add a target callback for FastISel.Dan Gohman2008-08-281-0/+20
| | | | llvm-svn: 55512
* Factor out the predicate check code from DAGISelEmitter.cppDan Gohman2008-08-221-0/+1
| | | | | | | | | and use it in FastISelEmitter.cpp, and make FastISel subtarget aware. Among other things, this lets it work properly on x86 targets that don't have SSE, where it successfully selects x87 instructions. llvm-svn: 55156
* Instantiate FastISel for X86.Dan Gohman2008-08-191-0/+20
llvm-svn: 55011
OpenPOWER on IntegriCloud