diff options
Diffstat (limited to 'contrib/llvm-project/llvm/include/llvm/IR/IntrinsicInst.h')
-rw-r--r-- | contrib/llvm-project/llvm/include/llvm/IR/IntrinsicInst.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/include/llvm/IR/IntrinsicInst.h b/contrib/llvm-project/llvm/include/llvm/IR/IntrinsicInst.h index 8940bebd2c9a..b8d578d0fee0 100644 --- a/contrib/llvm-project/llvm/include/llvm/IR/IntrinsicInst.h +++ b/contrib/llvm-project/llvm/include/llvm/IR/IntrinsicInst.h @@ -1724,6 +1724,30 @@ public: } }; +/// Check if \p ID corresponds to a convergence control intrinsic. +static inline bool isConvergenceControlIntrinsic(unsigned IntrinsicID) { + switch (IntrinsicID) { + default: + return false; + case Intrinsic::experimental_convergence_anchor: + case Intrinsic::experimental_convergence_entry: + case Intrinsic::experimental_convergence_loop: + return true; + } +} + +/// Represents calls to the llvm.experimintal.convergence.* intrinsics. +class ConvergenceControlInst : public IntrinsicInst { +public: + static bool classof(const IntrinsicInst *I) { + return isConvergenceControlIntrinsic(I->getIntrinsicID()); + } + + static bool classof(const Value *V) { + return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V)); + } +}; + } // end namespace llvm #endif // LLVM_IR_INTRINSICINST_H |