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 AtomicIAddOp::verify() {
72LogicalResult EXTAtomicFAddOp::verify() {
80LogicalResult AtomicIDecrementOp::verify() {
88LogicalResult AtomicIIncrementOp::verify() {
96LogicalResult AtomicISubOp::verify() {
104LogicalResult AtomicOrOp::verify() {
112LogicalResult AtomicSMaxOp::verify() {
120LogicalResult AtomicSMinOp::verify() {
128LogicalResult AtomicUMaxOp::verify() {
136LogicalResult AtomicUMinOp::verify() {
144LogicalResult 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)