summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-08-25 20:20:32 +0000
committerOwen Anderson <resistor@mac.com>2008-08-25 20:20:32 +0000
commit6d0c25ec3a7ca822e68f73a4481eee43eb5c9485 (patch)
treeedb7eea69dd0aa4821bdd7df28cf982b6eea9c24 /include
parent8bb2ef4760560196a5731b43b2d99dc4d53ba662 (diff)
downloadllvm-6d0c25ec3a7ca822e68f73a4481eee43eb5c9485.tar.gz
llvm-6d0c25ec3a7ca822e68f73a4481eee43eb5c9485.tar.bz2
llvm-6d0c25ec3a7ca822e68f73a4481eee43eb5c9485.tar.xz
Add support for fast isel of (integer) immediate materialization pattens, 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
Diffstat (limited to 'include')
-rw-r--r--include/llvm/CodeGen/FastISel.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/include/llvm/CodeGen/FastISel.h b/include/llvm/CodeGen/FastISel.h
index 636081f6b9..c5d5f61bf9 100644
--- a/include/llvm/CodeGen/FastISel.h
+++ b/include/llvm/CodeGen/FastISel.h
@@ -81,11 +81,6 @@ protected:
ISD::NodeType Opcode,
unsigned Op0, unsigned Op1);
- /// FastEmit_i - This method is called by target-independent code
- /// to request that an instruction with the given type which materialize
- /// the specified immediate value.
- virtual unsigned FastEmit_i(MVT::SimpleValueType VT, uint64_t Imm);
-
/// FastEmit_ri - This method is called by target-independent code
/// to request that an instruction with the given type, opcode, and
/// register and immediate operands be emitted.
@@ -110,6 +105,13 @@ protected:
ISD::NodeType Opcode,
unsigned Op0, uint64_t Imm,
MVT::SimpleValueType ImmType);
+
+ /// FastEmit_i - This method is called by target-independent code
+ /// to request that an instruction with the given type, opcode, and
+ /// immediate operand be emitted.
+ virtual unsigned FastEmit_i(MVT::SimpleValueType VT,
+ ISD::NodeType Opcode,
+ uint64_t Imm);
/// FastEmitInst_ - Emit a MachineInstr with no operands and a
/// result register in the given register class.
@@ -144,6 +146,12 @@ protected:
unsigned FastEmitInst_rri(unsigned MachineInstOpcode,
const TargetRegisterClass *RC,
unsigned Op0, unsigned Op1, uint64_t Imm);
+
+ /// FastEmitInst_i - Emit a MachineInstr with a single immediate
+ /// operand, and a result register in the given register class.
+ unsigned FastEmitInst_i(unsigned MachineInstrOpcode,
+ const TargetRegisterClass *RC,
+ uint64_t Imm);
private:
unsigned createResultReg(const TargetRegisterClass *RC);