36template <
typename AtomicOpTy,
typename ExpectedElementType>
39 auto elementType = ptrType.getPointeeType();
40 if (!isa<ExpectedElementType>(elementType))
41 return op->
emitOpError() <<
"pointer operand must point to an "
43 <<
" value, found " << elementType;
45 spirv::MemorySemantics memorySemantics = cast<AtomicOpTy>(op).getSemantics();
56LogicalResult AtomicAndOp::verify() {
64LogicalResult AtomicCompareExchangeOp::verify() {
74LogicalResult AtomicCompareExchangeWeakOp::verify() {
84LogicalResult AtomicExchangeOp::verify() {
92LogicalResult AtomicLoadOp::verify() {
100LogicalResult AtomicStoreOp::verify() {
108LogicalResult AtomicIAddOp::verify() {
116LogicalResult EXTAtomicFAddOp::verify() {
124LogicalResult AtomicIDecrementOp::verify() {
132LogicalResult AtomicIIncrementOp::verify() {
140LogicalResult AtomicISubOp::verify() {
148LogicalResult AtomicOrOp::verify() {
156LogicalResult AtomicSMaxOp::verify() {
164LogicalResult AtomicSMinOp::verify() {
172LogicalResult AtomicUMaxOp::verify() {
180LogicalResult AtomicUMinOp::verify() {
188LogicalResult AtomicXorOp::verify() {
Operation is the basic unit of execution within MLIR.
Value getOperand(unsigned idx)
InFlightDiagnostic emitOpError(const Twine &message={})
Emit an error with the op name prefixed, like "'dim' op " which is convenient for verifiers.
Type getType() const
Return the type of this value.
static StringRef stringifyTypeName()
LogicalResult verifyMemorySemantics(Operation *op, spirv::MemorySemantics memorySemantics)
StringRef stringifyTypeName< FloatType >()
StringRef stringifyTypeName< IntegerType >()
static LogicalResult verifyAtomicUpdateOp(Operation *op)