[llvm] [MachinePipeliner] Add validation for missed dependencies (PR #135148)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 18 10:04:36 PDT 2025
================
@@ -0,0 +1,88 @@
+# RUN: llc -mtriple=hexagon -run-pass pipeliner -debug-only=pipeliner %s -o /dev/null 2>&1 | FileCheck %s
+# REQUIRES: asserts
+
+# CHECK: Loop Carried Edges:
+# CHECK-NEXT: calculateResMII:
+
+--- |
+ define void @foo(ptr noundef readonly captures(none) %in, ptr noalias noundef writeonly captures(none) %out, i32 noundef %width) local_unnamed_addr #0 {
+ entry:
+ %cmp7 = icmp sgt i32 %width, 0
+ br i1 %cmp7, label %for.body.preheader, label %for.end
+
+ for.body.preheader: ; preds = %entry
+ %0 = add i32 %width, 128
+ br label %for.body
+
+ for.body: ; preds = %for.body.preheader, %for.body
+ %lsr.iv = phi i32 [ %0, %for.body.preheader ], [ %lsr.iv.next, %for.body ]
+ %optr.010 = phi ptr [ %cgep4, %for.body ], [ %out, %for.body.preheader ]
+ %iptr.09 = phi ptr [ %cgep5, %for.body ], [ %in, %for.body.preheader ]
+ %ald = load <128 x i8>, ptr %iptr.09, align 128, !tbaa !4
+ %cst = bitcast <128 x i8> %ald to <32 x i32>
+ store <32 x i32> %cst, ptr %optr.010, align 128, !tbaa !4
+ %cgep = getelementptr i8, ptr %iptr.09, i32 128
+ %ald1 = load <128 x i8>, ptr %cgep, align 128, !tbaa !4
+ %cst2 = bitcast <128 x i8> %ald1 to <32 x i32>
+ %cgep3 = getelementptr i8, ptr %optr.010, i32 128
+ store <32 x i32> %cst2, ptr %cgep3, align 128, !tbaa !4
+ %lsr.iv.next = add i32 %lsr.iv, -128
+ %cmp = icmp samesign ugt i32 %lsr.iv.next, 128
+ %cgep4 = getelementptr i8, ptr %optr.010, i32 256
+ %cgep5 = getelementptr i8, ptr %iptr.09, i32 256
+ br i1 %cmp, label %for.body, label %for.end, !llvm.loop !7
+
+ for.end: ; preds = %for.body, %entry
+ ret void
+ }
+
+ attributes #0 = { "target-cpu"="hexagonv60" "target-features"="+hvx-length128b,+hvxv69,+v66,-long-calls" }
----------------
aankit-ca wrote:
Correct!
https://github.com/llvm/llvm-project/pull/135148
More information about the llvm-commits
mailing list