https://github.com/pzread updated https://github.com/llvm/llvm-project/pull/80331
>From 70f54b51bef87bde5e3f5ee067c0f2414d34e915 Mon Sep 17 00:00:00 2001 From: Jerry Wu <che...@google.com> Date: Thu, 1 Feb 2024 19:57:26 +0000 Subject: [PATCH] Add replaceWithZeroTripCheck to LoopLikeOpInterface --- .../mlir/Interfaces/LoopLikeInterface.td | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mlir/include/mlir/Interfaces/LoopLikeInterface.td b/mlir/include/mlir/Interfaces/LoopLikeInterface.td index e2ac85a3f7725..77409cb3a8274 100644 --- a/mlir/include/mlir/Interfaces/LoopLikeInterface.td +++ b/mlir/include/mlir/Interfaces/LoopLikeInterface.td @@ -220,6 +220,28 @@ def LoopLikeOpInterface : OpInterface<"LoopLikeOpInterface"> { /*defaultImplementation=*/[{ return ::mlir::failure(); }] + >, + InterfaceMethod<[{ + Add a zero-trip-check around the loop to check if the loop body is ever + run and return the new loop inside the check. The loop body is moved + over to the new loop. Returns "failure" if the loop doesn't support + this transformation. + + After the transformation, the ops inserted to the parent region of the + loop are guaranteed to be run only if the loop body runs at least one + iteration. + + Note: Ops in the loop body might be rearranged because of loop rotating + to maintain the semantic. Terminators might be removed/added during this + transformation. + }], + /*retTy=*/"::mlir::FailureOr<::mlir::LoopLikeOpInterface>", + /*methodName=*/"replaceWithZeroTripCheck", + /*args=*/(ins "::mlir::RewriterBase &":$rewriter), + /*methodBody=*/"", + /*defaultImplementation=*/[{ + return ::mlir::failure(); + }] > ]; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits