Index: mlir/include/mlir/Dialect/Vector/VectorOps.td =================================================================== --- mlir/include/mlir/Dialect/Vector/VectorOps.td +++ mlir/include/mlir/Dialect/Vector/VectorOps.td @@ -1318,7 +1318,7 @@ def Vector_MaskedLoadOp : Vector_Op<"maskedload">, - Arguments<(ins AnyMemRef:$base, + Arguments<(ins Arg]>:$base, Variadic:$indices, VectorOfRankAndType<[1], [I1]>:$mask, VectorOfRank<[1]>:$pass_thru)>, @@ -1370,7 +1370,7 @@ def Vector_MaskedStoreOp : Vector_Op<"maskedstore">, - Arguments<(ins AnyMemRef:$base, + Arguments<(ins Arg]>:$base, Variadic:$indices, VectorOfRankAndType<[1], [I1]>:$mask, VectorOfRank<[1]>:$value)> { @@ -1418,7 +1418,7 @@ def Vector_GatherOp : Vector_Op<"gather">, - Arguments<(ins AnyMemRef:$base, + Arguments<(ins Arg]>:$base, VectorOfRankAndType<[1], [AnyInteger]>:$indices, VectorOfRankAndType<[1], [I1]>:$mask, VectorOfRank<[1]>:$pass_thru)>, @@ -1475,7 +1475,7 @@ def Vector_ScatterOp : Vector_Op<"scatter">, - Arguments<(ins AnyMemRef:$base, + Arguments<(ins Arg]>:$base, VectorOfRankAndType<[1], [AnyInteger]>:$indices, VectorOfRankAndType<[1], [I1]>:$mask, VectorOfRank<[1]>:$value)> { @@ -1531,7 +1531,7 @@ def Vector_ExpandLoadOp : Vector_Op<"expandload">, - Arguments<(ins AnyMemRef:$base, + Arguments<(ins Arg]>:$base, Variadic:$indices, VectorOfRankAndType<[1], [I1]>:$mask, VectorOfRank<[1]>:$pass_thru)>, @@ -1586,7 +1586,7 @@ def Vector_CompressStoreOp : Vector_Op<"compressstore">, - Arguments<(ins AnyMemRef:$base, + Arguments<(ins Arg]>:$base, Variadic:$indices, VectorOfRankAndType<[1], [I1]>:$mask, VectorOfRank<[1]>:$value)> { Index: mlir/test/Dialect/Vector/canonicalize.mlir =================================================================== --- mlir/test/Dialect/Vector/canonicalize.mlir +++ mlir/test/Dialect/Vector/canonicalize.mlir @@ -677,3 +677,22 @@ vector<1x4xf32>, tensor<4x4xf32> return } + +// ----- + +// CHECK-LABEL: func @dead_load_gather_op +// CHECK-NOT: vector.maskedload +// CHECK-NOT: vector.gather +// CHECK-NOT: vector.expandload +// CHECK: return +func @dead_load_gather_op(%base: memref, %indices: vector<16xi32>, + %mask: vector<16xi1>, %passthru: vector<16xf32>) { + %c0 = constant 0 : index + %0 = vector.maskedload %base[%c0], %mask, %passthru : + memref, vector<16xi1>, vector<16xf32> into vector<16xf32> + %1 = vector.gather %base[%indices], %mask, %passthru : + memref, vector<16xi32>, vector<16xi1>, vector<16xf32> into vector<16xf32> + %2 = vector.expandload %base[%c0], %mask, %passthru : + memref, vector<16xi1>, vector<16xf32> into vector<16xf32> + return +}