[llvm] [SLP][NFC]Add a test with rt checks in optsize function, NFC (PR #204646)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 18 10:48:28 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-transforms

Author: Alexey Bataev (alexey-bataev)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/204646.diff


1 Files Affected:

- (modified) llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll (+116) 


``````````diff
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll b/llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll
index 5a00e67487b8d..bd3a867f93077 100644
--- a/llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll
+++ b/llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll
@@ -455,3 +455,119 @@ body:
   store i32 %q4o, ptr %q, align 4
   ret void
 }
+
+define void @reject_optsize(ptr %dst, ptr %x, ptr %y) optsize {
+; CHECK-LABEL: define void @reject_optsize(
+; CHECK-SAME: ptr [[DST:%.*]], ptr [[X:%.*]], ptr [[Y:%.*]]) #[[ATTR2:[0-9]+]] {
+; CHECK-NEXT:  [[ENTRY:.*:]]
+; CHECK-NEXT:    [[X0:%.*]] = load double, ptr [[X]], align 8
+; CHECK-NEXT:    [[Y0:%.*]] = load double, ptr [[Y]], align 8
+; CHECK-NEXT:    [[D0:%.*]] = fdiv double [[X0]], [[Y0]]
+; CHECK-NEXT:    store double [[D0]], ptr [[DST]], align 8
+; CHECK-NEXT:    [[X1P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 1
+; CHECK-NEXT:    [[X1:%.*]] = load double, ptr [[X1P]], align 8
+; CHECK-NEXT:    [[Y1P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 1
+; CHECK-NEXT:    [[Y1:%.*]] = load double, ptr [[Y1P]], align 8
+; CHECK-NEXT:    [[D1:%.*]] = fdiv double [[X1]], [[Y1]]
+; CHECK-NEXT:    [[DST1:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 1
+; CHECK-NEXT:    store double [[D1]], ptr [[DST1]], align 8
+; CHECK-NEXT:    [[X2P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 2
+; CHECK-NEXT:    [[X2:%.*]] = load double, ptr [[X2P]], align 8
+; CHECK-NEXT:    [[Y2P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 2
+; CHECK-NEXT:    [[Y2:%.*]] = load double, ptr [[Y2P]], align 8
+; CHECK-NEXT:    [[D2:%.*]] = fdiv double [[X2]], [[Y2]]
+; CHECK-NEXT:    [[DST2:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 2
+; CHECK-NEXT:    store double [[D2]], ptr [[DST2]], align 8
+; CHECK-NEXT:    [[X3P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 3
+; CHECK-NEXT:    [[X3:%.*]] = load double, ptr [[X3P]], align 8
+; CHECK-NEXT:    [[Y3P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 3
+; CHECK-NEXT:    [[Y3:%.*]] = load double, ptr [[Y3P]], align 8
+; CHECK-NEXT:    [[D3:%.*]] = fdiv double [[X3]], [[Y3]]
+; CHECK-NEXT:    [[DST3:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 3
+; CHECK-NEXT:    store double [[D3]], ptr [[DST3]], align 8
+; CHECK-NEXT:    [[X4P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 4
+; CHECK-NEXT:    [[X4:%.*]] = load double, ptr [[X4P]], align 8
+; CHECK-NEXT:    [[Y4P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 4
+; CHECK-NEXT:    [[Y4:%.*]] = load double, ptr [[Y4P]], align 8
+; CHECK-NEXT:    [[D4:%.*]] = fdiv double [[X4]], [[Y4]]
+; CHECK-NEXT:    [[DST4:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 4
+; CHECK-NEXT:    store double [[D4]], ptr [[DST4]], align 8
+; CHECK-NEXT:    [[X5P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 5
+; CHECK-NEXT:    [[X5:%.*]] = load double, ptr [[X5P]], align 8
+; CHECK-NEXT:    [[Y5P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 5
+; CHECK-NEXT:    [[Y5:%.*]] = load double, ptr [[Y5P]], align 8
+; CHECK-NEXT:    [[D5:%.*]] = fdiv double [[X5]], [[Y5]]
+; CHECK-NEXT:    [[DST5:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 5
+; CHECK-NEXT:    store double [[D5]], ptr [[DST5]], align 8
+; CHECK-NEXT:    [[X6P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 6
+; CHECK-NEXT:    [[X6:%.*]] = load double, ptr [[X6P]], align 8
+; CHECK-NEXT:    [[Y6P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 6
+; CHECK-NEXT:    [[Y6:%.*]] = load double, ptr [[Y6P]], align 8
+; CHECK-NEXT:    [[D6:%.*]] = fdiv double [[X6]], [[Y6]]
+; CHECK-NEXT:    [[DST6:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 6
+; CHECK-NEXT:    store double [[D6]], ptr [[DST6]], align 8
+; CHECK-NEXT:    [[X7P:%.*]] = getelementptr inbounds double, ptr [[X]], i64 7
+; CHECK-NEXT:    [[X7:%.*]] = load double, ptr [[X7P]], align 8
+; CHECK-NEXT:    [[Y7P:%.*]] = getelementptr inbounds double, ptr [[Y]], i64 7
+; CHECK-NEXT:    [[Y7:%.*]] = load double, ptr [[Y7P]], align 8
+; CHECK-NEXT:    [[D7:%.*]] = fdiv double [[X7]], [[Y7]]
+; CHECK-NEXT:    [[DST7:%.*]] = getelementptr inbounds double, ptr [[DST]], i64 7
+; CHECK-NEXT:    store double [[D7]], ptr [[DST7]], align 8
+; CHECK-NEXT:    ret void
+;
+entry:
+  %x0 = load double, ptr %x, align 8
+  %y0 = load double, ptr %y, align 8
+  %d0 = fdiv double %x0, %y0
+  store double %d0, ptr %dst, align 8
+  %x1p = getelementptr inbounds double, ptr %x, i64 1
+  %x1 = load double, ptr %x1p, align 8
+  %y1p = getelementptr inbounds double, ptr %y, i64 1
+  %y1 = load double, ptr %y1p, align 8
+  %d1 = fdiv double %x1, %y1
+  %dst1 = getelementptr inbounds double, ptr %dst, i64 1
+  store double %d1, ptr %dst1, align 8
+  %x2p = getelementptr inbounds double, ptr %x, i64 2
+  %x2 = load double, ptr %x2p, align 8
+  %y2p = getelementptr inbounds double, ptr %y, i64 2
+  %y2 = load double, ptr %y2p, align 8
+  %d2 = fdiv double %x2, %y2
+  %dst2 = getelementptr inbounds double, ptr %dst, i64 2
+  store double %d2, ptr %dst2, align 8
+  %x3p = getelementptr inbounds double, ptr %x, i64 3
+  %x3 = load double, ptr %x3p, align 8
+  %y3p = getelementptr inbounds double, ptr %y, i64 3
+  %y3 = load double, ptr %y3p, align 8
+  %d3 = fdiv double %x3, %y3
+  %dst3 = getelementptr inbounds double, ptr %dst, i64 3
+  store double %d3, ptr %dst3, align 8
+  %x4p = getelementptr inbounds double, ptr %x, i64 4
+  %x4 = load double, ptr %x4p, align 8
+  %y4p = getelementptr inbounds double, ptr %y, i64 4
+  %y4 = load double, ptr %y4p, align 8
+  %d4 = fdiv double %x4, %y4
+  %dst4 = getelementptr inbounds double, ptr %dst, i64 4
+  store double %d4, ptr %dst4, align 8
+  %x5p = getelementptr inbounds double, ptr %x, i64 5
+  %x5 = load double, ptr %x5p, align 8
+  %y5p = getelementptr inbounds double, ptr %y, i64 5
+  %y5 = load double, ptr %y5p, align 8
+  %d5 = fdiv double %x5, %y5
+  %dst5 = getelementptr inbounds double, ptr %dst, i64 5
+  store double %d5, ptr %dst5, align 8
+  %x6p = getelementptr inbounds double, ptr %x, i64 6
+  %x6 = load double, ptr %x6p, align 8
+  %y6p = getelementptr inbounds double, ptr %y, i64 6
+  %y6 = load double, ptr %y6p, align 8
+  %d6 = fdiv double %x6, %y6
+  %dst6 = getelementptr inbounds double, ptr %dst, i64 6
+  store double %d6, ptr %dst6, align 8
+  %x7p = getelementptr inbounds double, ptr %x, i64 7
+  %x7 = load double, ptr %x7p, align 8
+  %y7p = getelementptr inbounds double, ptr %y, i64 7
+  %y7 = load double, ptr %y7p, align 8
+  %d7 = fdiv double %x7, %y7
+  %dst7 = getelementptr inbounds double, ptr %dst, i64 7
+  store double %d7, ptr %dst7, align 8
+  ret void
+}

``````````

</details>


https://github.com/llvm/llvm-project/pull/204646


More information about the llvm-commits mailing list