summaryrefslogtreecommitdiff
path: root/utils/TableGen/FastISelEmitter.cpp
Commit message (Collapse)AuthorAge
* Correctly handle physical register inputs. They are not explicit input ↵Evan Cheng2008-09-08
| | | | | | operands in the resulting machine instrs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55893 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix indentation of generated code.Evan Cheng2008-09-07
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55876 91177308-0d34-0410-b5e6-96231b3b80d8
* Ignore multi-instruction patterns. e.g.Evan Cheng2008-09-07
| | | | | | | | def : Pat<(i8 (trunc GR32:$src)), (i8 (EXTRACT_SUBREG (MOV32to32_ GR32:$src), x86_subreg_8bit))> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55875 91177308-0d34-0410-b5e6-96231b3b80d8
* Let tblgen only generate fastisel routines, not the class definition. This ↵Evan Cheng2008-09-03
| | | | | | makes it easier for targets to define its own fastisel class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55679 91177308-0d34-0410-b5e6-96231b3b80d8
* Add initial support for fast isel of instructions that have inputs pinned to ↵Owen Anderson2008-08-29
| | | | | | physical registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55545 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a target callback for FastISel.Dan Gohman2008-08-28
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55512 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for fast-isel of opcodes that require use of extract_subreg. ↵Owen Anderson2008-08-28
| | | | | | Because of how extract_subreg is treated, it requires special case handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55480 91177308-0d34-0410-b5e6-96231b3b80d8
* Update a comment to reflect recent changes.Dan Gohman2008-08-27
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55418 91177308-0d34-0410-b5e6-96231b3b80d8
* Basic FastISel support for floating-point constants.Dan Gohman2008-08-27
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55401 91177308-0d34-0410-b5e6-96231b3b80d8
* Refactor a bunch of FastISelEmitter code into a helper class, andDan Gohman2008-08-26
| | | | | | | | put each major step in a separate function. This makes the high level sequence of events easier to follow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55385 91177308-0d34-0410-b5e6-96231b3b80d8
* We need to check that the return type is correct, even in cases where we don'tOwen Anderson2008-08-26
| | | | | | | have a return type that differs from the operand types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55376 91177308-0d34-0410-b5e6-96231b3b80d8
* Throw the switch to allow FastISel to emit instructions whose return types ↵Owen Anderson2008-08-26
| | | | | | different from their inputs. Next step: adding lowering pattens in FastISel that actually use these newly available opcodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55349 91177308-0d34-0410-b5e6-96231b3b80d8
* Enhance TableGen to emit code for FastISel of opcodes with variadic return ↵Owen Anderson2008-08-26
| | | | | | types without slowing down opcodes that are not variadic. No such opcodes are currently generated, but in theory it should be a matter of just hitting the switch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55347 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a RetVT parameter to emitted FastISel methods, so that we will be able ↵Owen Anderson2008-08-25
| | | | | | | | | to pass the desired return type down. This is not currently used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55345 91177308-0d34-0410-b5e6-96231b3b80d8
* Deepen the map structure tablegen uses to compute FastISel patterns, in ↵Owen Anderson2008-08-25
| | | | | | | | | preparation for having patterns with return types that differ from their input types. This is not yet used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55344 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for fast isel of (integer) immediate materialization pattens, ↵Owen Anderson2008-08-25
| | | | | | | | | and use them to support bitcast of constants in fast isel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55325 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a few comments.Dan Gohman2008-08-22
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55157 91177308-0d34-0410-b5e6-96231b3b80d8
* Factor out the predicate check code from DAGISelEmitter.cppDan Gohman2008-08-22
| | | | | | | | | | 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156 91177308-0d34-0410-b5e6-96231b3b80d8
* Basic fast-isel support for instructions with constant int operands.Dan Gohman2008-08-21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55099 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the code that limited FastISel to certain fixed signatures.Dan Gohman2008-08-21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55096 91177308-0d34-0410-b5e6-96231b3b80d8
* Begin making more use of the FastISelEmitter class.Dan Gohman2008-08-21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55093 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove an obsolete todo comment.Dan Gohman2008-08-20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55080 91177308-0d34-0410-b5e6-96231b3b80d8
* Factor the code for determining the target-specific instructionDan Gohman2008-08-20
| | | | | | | namespace out of the isel emitters and into common code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55079 91177308-0d34-0410-b5e6-96231b3b80d8
* Simplify FastISel's constructor argument list, make the FastISelDan Gohman2008-08-20
| | | | | | | | | class hold a MachineRegisterInfo member, and make the MachineBasicBlock be passed in to SelectInstructions rather than the FastISel constructor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55076 91177308-0d34-0410-b5e6-96231b3b80d8
* For now, restrict FastISel to instructions that only involve oneDan Gohman2008-08-19
| | | | | | | register class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55008 91177308-0d34-0410-b5e6-96231b3b80d8
* Factor out the code to scan an instruction's operands into aDan Gohman2008-08-19
| | | | | | | helper function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55007 91177308-0d34-0410-b5e6-96231b3b80d8
* Add more comments.Dan Gohman2008-08-19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55004 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix indentation in FastISel tablegen-emitted code.Dan Gohman2008-08-19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55003 91177308-0d34-0410-b5e6-96231b3b80d8
* Add more checking to filter out more kinds of things thatDan Gohman2008-08-19
| | | | | | | FastISel doesn't support yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55002 91177308-0d34-0410-b5e6-96231b3b80d8
* 80 columns.Dan Gohman2008-08-19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54998 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a few doxygen comments.Dan Gohman2008-08-19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54997 91177308-0d34-0410-b5e6-96231b3b80d8
* Initial checkin of the new "fast" instruction selection support. SeeDan Gohman2008-08-13
the comments in FastISelEmitter.cpp for details on what this is. This is currently experimental and unusable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54751 91177308-0d34-0410-b5e6-96231b3b80d8