diff options
Diffstat (limited to 'include/llvm/CodeGen/TargetOpcodes.h')
-rw-r--r-- | include/llvm/CodeGen/TargetOpcodes.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/TargetOpcodes.h b/include/llvm/CodeGen/TargetOpcodes.h new file mode 100644 index 0000000000000..3ca31a9709446 --- /dev/null +++ b/include/llvm/CodeGen/TargetOpcodes.h @@ -0,0 +1,42 @@ +//===-- llvm/CodeGen/TargetOpcodes.h - Target Indep Opcodes -----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the target independent instruction opcodes. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CODEGEN_TARGETOPCODES_H +#define LLVM_CODEGEN_TARGETOPCODES_H + +namespace llvm { + +/// Invariant opcodes: All instruction sets have these as their low opcodes. +/// +namespace TargetOpcode { +enum { +#define HANDLE_TARGET_OPCODE(OPC) OPC, +#define HANDLE_TARGET_OPCODE_MARKER(IDENT, OPC) IDENT = OPC, +#include "llvm/CodeGen/TargetOpcodes.def" +}; +} // end namespace TargetOpcode + +/// Check whether the given Opcode is a generic opcode that is not supposed +/// to appear after ISel. +inline bool isPreISelGenericOpcode(unsigned Opcode) { + return Opcode >= TargetOpcode::PRE_ISEL_GENERIC_OPCODE_START && + Opcode <= TargetOpcode::PRE_ISEL_GENERIC_OPCODE_END; +} + +/// Check whether the given Opcode is a target-specific opcode. +inline bool isTargetSpecificOpcode(unsigned Opcode) { + return Opcode > TargetOpcode::PRE_ISEL_GENERIC_OPCODE_END; +} +} // end namespace llvm + +#endif |