1111
1212include "mlir/Dialect/Ptr/IR/PtrDialect.td"
1313include "mlir/Dialect/Ptr/IR/PtrAttrDefs.td"
14+ include "mlir/Dialect/Ptr/IR/PtrEnums.td"
1415include "mlir/Dialect/Ptr/IR/MemorySpaceInterfaces.td"
1516include "mlir/Interfaces/SideEffectInterfaces.td"
17+ include "mlir/Interfaces/ViewLikeInterface.td"
1618include "mlir/IR/OpAsmInterface.td"
1719
1820//===----------------------------------------------------------------------===//
1921// PtrAddOp
2022//===----------------------------------------------------------------------===//
2123
2224def Ptr_PtrAddOp : Pointer_Op<"ptradd", [
23- Pure, AllTypesMatch<["base", "result"]>
25+ Pure, AllTypesMatch<["base", "result"]>,
26+ DeclareOpInterfaceMethods<ViewLikeOpInterface>
2427 ]> {
2528 let summary = "Pointer add operation";
2629 let description = [{
@@ -30,14 +33,19 @@ def Ptr_PtrAddOp : Pointer_Op<"ptradd", [
3033 Example:
3134
3235 ```mlir
33- %x_off = ptr.ptradd %x, %off : !ptr.ptr<0>, i32
36+ %x_off = ptr.ptradd %x, %off : !ptr.ptr<0>, i32
37+ %x_off0 = ptr.ptradd nusw %x, %off : !ptr.ptr<0>, i32
3438 ```
3539 }];
3640
37- let arguments = (ins Ptr_PtrType:$base, AnySignlessIntegerOrIndex:$offset);
41+ let arguments = (ins
42+ Ptr_PtrType:$base,
43+ AnySignlessIntegerOrIndex:$offset,
44+ DefaultValuedAttr<Ptr_PtrAddFlags,
45+ "::mlir::ptr::PtrAddFlags::none">:$flags);
3846 let results = (outs Ptr_PtrType:$result);
3947 let assemblyFormat = [{
40- $base `,` $offset attr-dict `:` type($base) `,` type($offset)
48+ ($flags^)? $base `,` $offset attr-dict `:` type($base) `,` type($offset)
4149 }];
4250 let hasFolder = 1;
4351}
0 commit comments