1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2022 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#ifndef IGCLLVM_IR_OPERATOR_H
#define IGCLLVM_IR_OPERATOR_H
#include <llvm/IR/Instructions.h>
#include <llvm/IR/Operator.h>
namespace IGCLLVM {
#if LLVM_VERSION_MAJOR < 11
class AddrSpaceCastOperator
: public llvm::ConcreteOperator<llvm::Operator, llvm::Instruction::AddrSpaceCast> {
friend class llvm::AddrSpaceCastInst;
friend class llvm::ConstantExpr;
public:
llvm::Value *getPointerOperand() { return getOperand(0); }
const llvm::Value *getPointerOperand() const { return getOperand(0); }
unsigned getSrcAddressSpace() const {
return getPointerOperand()->getType()->getPointerAddressSpace();
}
unsigned getDestAddressSpace() const {
return getType()->getPointerAddressSpace();
}
};
#else
using llvm::AddrSpaceCastOperator;
#endif
} // namespace IGCLLVM
#endif // IGCLLVM_IR_OPERATOR_H
|