summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/FastISelEmitter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Hack around extracts that aren't easy to process.Eric Christopher2010-07-211-0/+4
| | | | llvm-svn: 109043
* Replace copyRegToReg with COPY in FastISelEmitter.Jakob Stoklund Olesen2010-07-111-13/+9
| | | | llvm-svn: 108071
* Reapply bottom-up fast-isel, with several fixes for x86-32:Dan Gohman2010-07-101-2/+2
| | | | | | | | | - Check getBytesToPopOnReturn(). - Eschew ST0 and ST1 for return values. - Fix the PIC base register initialization so that it doesn't ever fail to end up the top of the entry block. llvm-svn: 108039
* --- Reverse-merging r107947 into '.':Bob Wilson2010-07-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | U utils/TableGen/FastISelEmitter.cpp --- Reverse-merging r107943 into '.': U test/CodeGen/X86/fast-isel.ll U test/CodeGen/X86/fast-isel-loads.ll U include/llvm/Target/TargetLowering.h U include/llvm/Support/PassNameParser.h U include/llvm/CodeGen/FunctionLoweringInfo.h U include/llvm/CodeGen/CallingConvLower.h U include/llvm/CodeGen/FastISel.h U include/llvm/CodeGen/SelectionDAGISel.h U lib/CodeGen/LLVMTargetMachine.cpp U lib/CodeGen/CallingConvLower.cpp U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp U lib/CodeGen/SelectionDAG/FastISel.cpp U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp U lib/CodeGen/SelectionDAG/InstrEmitter.cpp U lib/CodeGen/SelectionDAG/TargetLowering.cpp U lib/Target/XCore/XCoreISelLowering.cpp U lib/Target/XCore/XCoreISelLowering.h U lib/Target/X86/X86ISelLowering.cpp U lib/Target/X86/X86FastISel.cpp U lib/Target/X86/X86ISelLowering.h llvm-svn: 107987
* These changes should have accompanied r107943.Dan Gohman2010-07-091-2/+2
| | | | llvm-svn: 107947
* Revert 107840 107839 107813 107804 107800 107797 107791.Dan Gohman2010-07-081-2/+2
| | | | | | Debug info intrinsics win for now. llvm-svn: 107850
* Give FunctionLoweringInfo an MBB member, avoiding the need to pass itDan Gohman2010-07-071-2/+2
| | | | | | | | around everywhere, and also give it an InsertPt member, to enable isel to operate at an arbitrary position within a block, rather than just appending to a block. llvm-svn: 107791
* Minor code simplification.Dan Gohman2010-05-271-9/+9
| | | | llvm-svn: 104845
* Add the SubRegIndex TableGen class.Jakob Stoklund Olesen2010-05-241-8/+11
| | | | | | | This is the beginning of purely symbolic subregister indices, but we need a bit of jiggling before the explicit numeric indices can be completely removed. llvm-svn: 104492
* Add initial kill flag support to FastISel.Dan Gohman2010-05-111-5/+5
| | | | llvm-svn: 103529
* Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that itDan Gohman2010-05-061-2/+2
| | | | | | doesn't have to guess. llvm-svn: 103194
* add plumbing for handling multiple result nodes Chris Lattner2010-03-241-1/+3
| | | | | | in some more places. llvm-svn: 99366
* major surgery on tblgen: generalize TreePatternNodeChris Lattner2010-03-191-7/+14
| | | | | | | | | to maintain a list of types (one for each result of the node) instead of a single type. There are liberal hacks added to emulate the old behavior in various situations, but they can start disolving now. llvm-svn: 98999
* look up instructions by record, not by name.Chris Lattner2010-03-191-1/+1
| | | | llvm-svn: 98904
* Completely rewrite tblgen's type inference mechanism,Chris Lattner2010-03-151-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | changing the primary datastructure from being a "std::vector<unsigned char>" to being a new TypeSet class that actually has (gasp) invariants! This changes more things than I remember, but one major innovation here is that it enforces that named input values agree in type with their output values. This also eliminates code that transparently assumes (in some cases) that SDNodeXForm input/output types are the same, because this is wrong in many case. This also eliminates a bug which caused a lot of ambiguous patterns to go undetected, where a register class would sometimes pick the first possible type, causing an ambiguous pattern to get arbitrary results. With all the recent target changes, this causes no functionality change! llvm-svn: 98534
* Don't use the ISD::NodeType enum for SDNode opcodes, as CodeGenDan Gohman2010-01-051-1/+1
| | | | | | | uses several kinds of opcode values which are not declared within that enum. This fixes PR5946. llvm-svn: 92794
* Remove some unused variables and methods warned about byDuncan Sands2009-09-061-1/+0
| | | | | | icc (#177, partial). Patch by Erick Tryzelaar. llvm-svn: 81106
* Split EVT into MVT and EVT, the former representing _just_ a primitive type, ↵Owen Anderson2009-08-111-16/+16
| | | | | | | | while the latter is capable of representing either a primitive or an extended type. llvm-svn: 78713
* Rename MVT to EVT, in preparation for splitting SimpleValueType out into its ↵Owen Anderson2009-08-101-13/+13
| | | | | | own struct type. llvm-svn: 78610
* Replace std::iostreams with raw_ostream in TableGen.Daniel Dunbar2009-07-031-10/+9
| | | | | | | | - Sorry, I can't help myself. - No intended functionality change. llvm-svn: 74742
* TableGen for fast isel seems to assume an 'imm'Dale Johannesen2009-05-211-2/+2
| | | | | | | | operand is the last in a pattern. There is no reason this should be true (although apparently it always is right now). llvm-svn: 72232
* Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and ↵Evan Cheng2009-01-221-2/+3
| | | | | | SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead. llvm-svn: 62762
* Add support for having multiple predicates on a TreePatternNode.Dan Gohman2008-10-151-2/+2
| | | | | | | | This will allow predicates to be composed, which will allow the predicate definitions to become less redundant, and eventually will allow DAGISelEmitter.cpp to emit less redundant code. llvm-svn: 57562
* Move the primary fast-isel top-level comments to FastISel.cpp, whereDan Gohman2008-09-301-24/+6
| | | | | | they'll be a little more visible. Also, update and reword them a bit. llvm-svn: 56877
* Correctly handle physical register inputs. They are not explicit input ↵Evan Cheng2008-09-081-9/+30
| | | | | | operands in the resulting machine instrs. llvm-svn: 55893
* Fix indentation of generated code.Evan Cheng2008-09-071-1/+1
| | | | llvm-svn: 55876
* Ignore multi-instruction patterns. e.g.Evan Cheng2008-09-071-0/+14
| | | | | | | def : Pat<(i8 (trunc GR32:$src)), (i8 (EXTRACT_SUBREG (MOV32to32_ GR32:$src), x86_subreg_8bit))> llvm-svn: 55875
* Let tblgen only generate fastisel routines, not the class definition. This ↵Evan Cheng2008-09-031-106/+5
| | | | | | 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-19/+107
| | | | | | physical registers. llvm-svn: 55545
* Add a target callback for FastISel.Dan Gohman2008-08-281-0/+8
| | | | llvm-svn: 55512
* Add support for fast-isel of opcodes that require use of extract_subreg. ↵Owen Anderson2008-08-281-21/+43
| | | | | | Because of how extract_subreg is treated, it requires special case handling. llvm-svn: 55480
* Update a comment to reflect recent changes.Dan Gohman2008-08-271-1/+1
| | | | llvm-svn: 55418
* Basic FastISel support for floating-point constants.Dan Gohman2008-08-271-0/+13
| | | | llvm-svn: 55401
* Refactor a bunch of FastISelEmitter code into a helper class, andDan Gohman2008-08-261-27/+63
| | | | | | | put each major step in a separate function. This makes the high level sequence of events easier to follow. llvm-svn: 55385
* We need to check that the return type is correct, even in cases where we don'tOwen Anderson2008-08-261-0/+3
| | | | | | have a return type that differs from the operand types. llvm-svn: 55376
* Throw the switch to allow FastISel to emit instructions whose return types ↵Owen Anderson2008-08-261-9/+16
| | | | | | different from their inputs. Next step: adding lowering pattens in FastISel that actually use these newly available opcodes. llvm-svn: 55349
* Enhance TableGen to emit code for FastISel of opcodes with variadic return ↵Owen Anderson2008-08-261-13/+97
| | | | | | 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. llvm-svn: 55347
* Add a RetVT parameter to emitted FastISel methods, so that we will be able ↵Owen Anderson2008-08-251-8/+14
| | | | | | | | to pass the desired return type down. This is not currently used. llvm-svn: 55345
* Deepen the map structure tablegen uses to compute FastISel patterns, in ↵Owen Anderson2008-08-251-54/+61
| | | | | | | | preparation for having patterns with return types that differ from their input types. This is not yet used. llvm-svn: 55344
* Add support for fast isel of (integer) immediate materialization pattens, ↵Owen Anderson2008-08-251-3/+6
| | | | | | | | and use them to support bitcast of constants in fast isel. llvm-svn: 55325
* Add a few comments.Dan Gohman2008-08-221-0/+4
| | | | llvm-svn: 55157
* Factor out the predicate check code from DAGISelEmitter.cppDan Gohman2008-08-221-28/+66
| | | | | | | | | 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
* Basic fast-isel support for instructions with constant int operands.Dan Gohman2008-08-211-13/+40
| | | | llvm-svn: 55099
* Remove the code that limited FastISel to certain fixed signatures.Dan Gohman2008-08-211-19/+5
| | | | llvm-svn: 55096
* Begin making more use of the FastISelEmitter class.Dan Gohman2008-08-211-27/+23
| | | | llvm-svn: 55093
* Remove an obsolete todo comment.Dan Gohman2008-08-201-2/+0
| | | | llvm-svn: 55080
* Factor the code for determining the target-specific instructionDan Gohman2008-08-201-7/+1
| | | | | | namespace out of the isel emitters and into common code. llvm-svn: 55079
* Simplify FastISel's constructor argument list, make the FastISelDan Gohman2008-08-201-5/+3
| | | | | | | | class hold a MachineRegisterInfo member, and make the MachineBasicBlock be passed in to SelectInstructions rather than the FastISel constructor. llvm-svn: 55076
* For now, restrict FastISel to instructions that only involve oneDan Gohman2008-08-191-2/+6
| | | | | | register class. llvm-svn: 55008
* Factor out the code to scan an instruction's operands into aDan Gohman2008-08-191-26/+36
| | | | | | helper function. llvm-svn: 55007
OpenPOWER on IntegriCloud