OSDN Git Service

Add way to test for generic TargetOpcodes
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 2 Oct 2015 18:58:33 +0000 (18:58 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 2 Oct 2015 18:58:33 +0000 (18:58 +0000)
The alternative would be to add a bit to the target's
InstrFlags but that seems like a waste of a bit.

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

include/llvm/Target/TargetInstrInfo.h
include/llvm/Target/TargetOpcodes.h

index b9f85a1..0a35d41 100644 (file)
@@ -62,6 +62,10 @@ public:
 
   virtual ~TargetInstrInfo();
 
+  static bool isGenericOpcode(unsigned Opc) {
+    return Opc <= TargetOpcode::GENERIC_OP_END;
+  }
+
   /// Given a machine instruction descriptor, returns the register
   /// class constraint for OpNum, or NULL.
   const TargetRegisterClass *getRegClass(const MCInstrDesc &TID,
index a7e2aa8..db37bdb 100644 (file)
@@ -128,6 +128,10 @@ enum {
   /// "zero cost" null checks in managed languages by allowing LLVM to fold
   /// comparisons into existing memory operations.
   FAULTING_LOAD_OP = 22,
+
+  /// BUILTIN_OP_END - This must be the last enum value in this list.
+  /// The target-specific post-isel opcode values start here.
+  GENERIC_OP_END = FAULTING_LOAD_OP,
 };
 } // end namespace TargetOpcode
 } // end namespace llvm