[Mlir-commits] [mlir] [MLIR][SideEffects][MemoryEffects] Modified LICM to be more aggressive when checking movability of ops with MemWrite effects (PR #155344)
Mo Bagherbeik
llvmlistbot at llvm.org
Wed Oct 8 14:13:11 PDT 2025
================
@@ -2977,6 +2977,88 @@ def TestEffectsResult : TEST_Op<"test_effects_result"> {
let results = (outs Res<I32, "", [MemAlloc, MemWrite]>);
}
+//===----------------------------------------------------------------------===//
+// Test Ops with multiple effects for Loop Invariant Code Motion.
+//===----------------------------------------------------------------------===//
+
+def TestResourceA : Resource<"TestResourceA">;
+def TestResourceB : Resource<"TestResourceB">;
+def TestResourceC : Resource<"TestResourceC">;
+def TestResourceD : Resource<"TestResourceD">;
+def TestResourceE : Resource<"TestResourceE">;
+def TestResourceF : Resource<"TestResourceF">;
+
+def TestEffectsWriteA : TEST_Op<"test_effects_write_A",
+ [MemoryEffects<[MemWrite<TestResourceA>]>,
+ AlwaysSpeculatable]>;
+
+def TestEffectsWriteAWithInput : TEST_Op<"test_effects_write_A_with_input",
+ [MemoryEffects<[MemWrite<TestResourceA>]>,
+ AlwaysSpeculatable]> {
+
+ let arguments = (ins AnyType:$arg);
+}
+
+def TestEffectsReadA : TEST_Op<"test_effects_read_A",
+ [MemoryEffects<[MemRead<TestResourceA>]>,
+ AlwaysSpeculatable]>;
+
+def TestEffectsReadAWriteB : TEST_Op<"test_effects_read_A_write_B",
+ [MemoryEffects<[MemRead<TestResourceA>,
+ MemWrite<TestResourceB>]>,
+ AlwaysSpeculatable]>;
----------------
mbagherbeikTT wrote:
major misunderstanding on my part from how the pass was originally structured when I first started tinkering with it.
Speculatable trait has been removed from all of the new test ops
https://github.com/llvm/llvm-project/pull/155344
More information about the Mlir-commits
mailing list