[llvm] [SLP][NFC]Add an extra test with altop nodes reordering, NFC (PR #215367)
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 10 12:03:37 PDT 2026
https://github.com/alexey-bataev created https://github.com/llvm/llvm-project/pull/215367
None
>From 9c39207256234e595298f5e4040f5b540af1af93 Mon Sep 17 00:00:00 2001
From: Alexey Bataev <a.bataev at outlook.com>
Date: Mon, 10 Aug 2026 12:03:23 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
=?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.7
---
.../Transforms/SLPVectorizer/X86/supernode.ll | 55 +++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/supernode.ll b/llvm/test/Transforms/SLPVectorizer/X86/supernode.ll
index 8c3aac2d59c11..468e5c247e11b 100644
--- a/llvm/test/Transforms/SLPVectorizer/X86/supernode.ll
+++ b/llvm/test/Transforms/SLPVectorizer/X86/supernode.ll
@@ -124,6 +124,61 @@ entry:
ret void
}
+; S[0] = ((A[0] - B[0]) - D[0]) - C[0]
+; S[1] = ((B[1] + C[1]) + D[1]) + A[1]
+define void @test_addsub_alt_commuted(ptr %Aarray, ptr %Barray, ptr %Carray, ptr %Darray, ptr %Sarray) {
+; ENABLED-LABEL: @test_addsub_alt_commuted(
+; ENABLED-NEXT: entry:
+; ENABLED-NEXT: [[TMP0:%.*]] = load <2 x double>, ptr [[AARRAY:%.*]], align 8
+; ENABLED-NEXT: [[TMP1:%.*]] = load <2 x double>, ptr [[BARRAY:%.*]], align 8
+; ENABLED-NEXT: [[TMP2:%.*]] = load <2 x double>, ptr [[CARRAY:%.*]], align 8
+; ENABLED-NEXT: [[TMP3:%.*]] = load <2 x double>, ptr [[DARRAY:%.*]], align 8
+; ENABLED-NEXT: [[TMP4:%.*]] = shufflevector <2 x double> [[TMP0]], <2 x double> [[TMP2]], <2 x i32> <i32 0, i32 3>
+; ENABLED-NEXT: [[TMP5:%.*]] = fsub fast <2 x double> [[TMP4]], [[TMP1]]
+; ENABLED-NEXT: [[TMP12:%.*]] = fadd fast <2 x double> [[TMP4]], [[TMP1]]
+; ENABLED-NEXT: [[TMP7:%.*]] = shufflevector <2 x double> [[TMP5]], <2 x double> [[TMP12]], <2 x i32> <i32 0, i32 3>
+; ENABLED-NEXT: [[TMP8:%.*]] = fsub fast <2 x double> [[TMP7]], [[TMP3]]
+; ENABLED-NEXT: [[TMP13:%.*]] = fadd fast <2 x double> [[TMP7]], [[TMP3]]
+; ENABLED-NEXT: [[TMP14:%.*]] = shufflevector <2 x double> [[TMP8]], <2 x double> [[TMP13]], <2 x i32> <i32 0, i32 3>
+; ENABLED-NEXT: [[TMP11:%.*]] = shufflevector <2 x double> [[TMP2]], <2 x double> [[TMP0]], <2 x i32> <i32 0, i32 3>
+; ENABLED-NEXT: [[TMP6:%.*]] = fsub fast <2 x double> [[TMP14]], [[TMP11]]
+; ENABLED-NEXT: [[TMP9:%.*]] = fadd fast <2 x double> [[TMP14]], [[TMP11]]
+; ENABLED-NEXT: [[TMP10:%.*]] = shufflevector <2 x double> [[TMP6]], <2 x double> [[TMP9]], <2 x i32> <i32 0, i32 3>
+; ENABLED-NEXT: store <2 x double> [[TMP10]], ptr [[SARRAY:%.*]], align 8
+; ENABLED-NEXT: ret void
+;
+entry:
+ %idxA1 = getelementptr inbounds double, ptr %Aarray, i64 1
+ %idxB1 = getelementptr inbounds double, ptr %Barray, i64 1
+ %idxC1 = getelementptr inbounds double, ptr %Carray, i64 1
+ %idxD1 = getelementptr inbounds double, ptr %Darray, i64 1
+ %idxS1 = getelementptr inbounds double, ptr %Sarray, i64 1
+
+ %A0 = load double, ptr %Aarray, align 8
+ %A1 = load double, ptr %idxA1, align 8
+
+ %B0 = load double, ptr %Barray, align 8
+ %B1 = load double, ptr %idxB1, align 8
+
+ %C0 = load double, ptr %Carray, align 8
+ %C1 = load double, ptr %idxC1, align 8
+
+ %D0 = load double, ptr %Darray, align 8
+ %D1 = load double, ptr %idxD1, align 8
+
+ %subA0B0 = fsub fast double %A0, %B0
+ %addB1C1 = fadd fast double %B1, %C1
+
+ %subA0B0D0 = fsub fast double %subA0B0, %D0
+ %addB1C1D1 = fadd fast double %D1, %addB1C1
+
+ %sub0 = fsub fast double %subA0B0D0, %C0
+ %add1 = fadd fast double %addB1C1D1, %A1
+ store double %sub0, ptr %Sarray, align 8
+ store double %add1, ptr %idxS1, align 8
+ ret void
+}
+
; This checks that vectorizeTree() works correctly with the supernode
; and does not generate uses before defs.
; If all of the operands of the supernode are vectorizable, then the scheduler
More information about the llvm-commits
mailing list