@@ -277,8 +277,7 @@ def XeGPU_PrefetchNdOp : XeGPU_Op<"prefetch_nd", []> {
277277
278278
279279def XeGPU_LoadNdOp : XeGPU_Op<"load_nd", [
280- AllElementTypesMatch<["value", "TensorDesc"]>,
281- DeclareOpInterfaceMethods<MemoryEffectsOpInterface>
280+ AllElementTypesMatch<["value", "TensorDesc"]>, MemoryEffects<[MemRead]>
282281 ]> {
283282 let summary = "loads a n-D block from memory (represented by TensorDesc)"
284283 "to registers (represented by vector)";
@@ -331,7 +330,7 @@ def XeGPU_LoadNdOp : XeGPU_Op<"load_nd", [
331330}
332331
333332def XeGPU_StoreNdOp : XeGPU_Op<"store_nd", [
334- AllElementTypesMatch<["value", "TensorDesc"]>, DeclareOpInterfaceMethods<MemoryEffectsOpInterface>,
333+ AllElementTypesMatch<["value", "TensorDesc"]>, MemoryEffects<[MemWrite]>
335334 ]> {
336335 let summary = "stores a n-D block register region back to memory, currently only supports 2D";
337336
@@ -554,8 +553,7 @@ def XeGPU_PrefetchOp : XeGPU_Op<"prefetch", []> {
554553}
555554
556555def XeGPU_LoadGatherOp : XeGPU_Op<"load", [
557- AllElementTypesMatch<["value", "TensorDesc"]>,
558- DeclareOpInterfaceMethods<MemoryEffectsOpInterface>
556+ AllElementTypesMatch<["value", "TensorDesc"]>, MemoryEffects<[MemRead]>
559557 ]> {
560558 let summary = "load a set of scattered data points from memory.";
561559
@@ -627,7 +625,8 @@ def XeGPU_LoadGatherOp : XeGPU_Op<"load", [
627625}
628626
629627def XeGPU_StoreScatterOp : XeGPU_Op<"store", [
630- AllElementTypesMatch<["value", "TensorDesc"]>, DeclareOpInterfaceMethods<MemoryEffectsOpInterface>]> {
628+ AllElementTypesMatch<["value", "TensorDesc"]>, MemoryEffects<[MemWrite]>
629+ ]> {
631630 let summary = "store data to scattered memory locations.";
632631 let description = [{ It (aka. store) stores data to scattered memory locations. The value is
633632 typically a 1D vector. But when the chunk size of the TensorDesc is larger than 1, it will be
0 commit comments