Add a TargetInstrDescriptor flag to mark an instruction as "re-materializable".
authorEvan Cheng <evan.cheng@apple.com>
Mon, 19 Mar 2007 06:19:16 +0000 (06:19 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 19 Mar 2007 06:19:16 +0000 (06:19 +0000)
It means the instruction can be easily re-materialized at any point. e.g.
constant generation, load from constantpool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35158 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetInstrInfo.h

index 1cb7e6817b2b0a8c480f5a57d0b3840fc64e2a3b..aef9093d49e37801501aeebb63a973023a054d11 100644 (file)
@@ -78,6 +78,10 @@ const unsigned M_VARIABLE_OPS = 1 << 11;
 // execution.
 const unsigned M_PREDICATED = 1 << 12;
 
+// M_REMATERIALIZIBLE - Set if this instruction can be trivally re-materialized
+// at any time, e.g. constant generation, load from constant pool.
+const unsigned M_REMATERIALIZIBLE = 1 << 13;
+
 
 // Machine operand flags
 // M_LOOK_UP_PTR_REG_CLASS - Set if this operand is a pointer value and it
@@ -207,6 +211,9 @@ public:
   bool isPredicated(MachineOpCode Opcode) const {
     return get(Opcode).Flags & M_PREDICATED;
   }
+  bool isReMaterializable(MachineOpCode Opcode) const {
+    return get(Opcode).Flags & M_REMATERIALIZIBLE;
+  }
   bool isCommutableInstr(MachineOpCode Opcode) const {
     return get(Opcode).Flags & M_COMMUTABLE;
   }