[llvm] 983ed87 - [slp,tests] Consolidate two test files into one
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 19 18:25:38 PDT 2022
Author: Philip Reames
Date: 2022-03-19T18:24:35-07:00
New Revision: 983ed87c6175dcb270c33b3d65f5454c1f014499
URL: https://github.com/llvm/llvm-project/commit/983ed87c6175dcb270c33b3d65f5454c1f014499
DIFF: https://github.com/llvm/llvm-project/commit/983ed87c6175dcb270c33b3d65f5454c1f014499.diff
LOG: [slp,tests] Consolidate two test files into one
There are some slight changes to the test lines due to different cost threshold choices in the two command lines, but I don't believe these to be interesting the purpose of the tests.
Added:
Modified:
llvm/test/Transforms/SLPVectorizer/X86/stacksave-dependence.ll
Removed:
llvm/test/Transforms/SLPVectorizer/X86/store_alloca.ll
################################################################################
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/stacksave-dependence.ll b/llvm/test/Transforms/SLPVectorizer/X86/stacksave-dependence.ll
index 7c89e165b8c60..1d36e8906125a 100644
--- a/llvm/test/Transforms/SLPVectorizer/X86/stacksave-dependence.ll
+++ b/llvm/test/Transforms/SLPVectorizer/X86/stacksave-dependence.ll
@@ -100,7 +100,7 @@ define void @stacksave(i8** %a, i8** %b, i8** %c) {
; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x i8*> [[TMP3]], i32 0
; CHECK-NEXT: store i8* [[TMP4]], i8** [[A:%.*]], align 8
; CHECK-NEXT: [[STACK:%.*]] = call i8* @llvm.stacksave()
-; CHECK-NEXT: call void @use(i8* inalloca(i8) [[V2]]) #[[ATTR3:[0-9]+]]
+; CHECK-NEXT: call void @use(i8* inalloca(i8) [[V2]]) #[[ATTR4:[0-9]+]]
; CHECK-NEXT: call void @llvm.stackrestore(i8* [[STACK]])
; CHECK-NEXT: [[B2:%.*]] = getelementptr i8*, i8** [[B:%.*]], i32 1
; CHECK-NEXT: [[TMP5:%.*]] = bitcast i8** [[B]] to <2 x i8*>*
@@ -135,7 +135,7 @@ define void @stacksave2(i8** %a, i8** %b, i8** %c) {
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, <2 x i8*> [[TMP2]], <2 x i32> <i32 1, i32 1>
; CHECK-NEXT: [[TMP4:%.*]] = extractelement <2 x i8*> [[TMP3]], i32 0
; CHECK-NEXT: store i8* [[TMP4]], i8** [[A:%.*]], align 8
-; CHECK-NEXT: call void @use(i8* inalloca(i8) [[V2]]) #[[ATTR4:[0-9]+]]
+; CHECK-NEXT: call void @use(i8* inalloca(i8) [[V2]]) #[[ATTR5:[0-9]+]]
; CHECK-NEXT: call void @llvm.stackrestore(i8* [[STACK]])
; CHECK-NEXT: [[B2:%.*]] = getelementptr i8*, i8** [[B:%.*]], i32 1
; CHECK-NEXT: [[TMP5:%.*]] = bitcast i8** [[B]] to <2 x i8*>*
@@ -165,7 +165,7 @@ define void @stacksave3(i8** %a, i8** %b, i8** %c) {
; CHECK-NEXT: [[STACK:%.*]] = call i8* @llvm.stacksave()
; CHECK-NEXT: [[V1:%.*]] = alloca i8, align 1
; CHECK-NEXT: [[V2:%.*]] = alloca inalloca i8, align 1
-; CHECK-NEXT: call void @use(i8* inalloca(i8) [[V2]]) #[[ATTR3]]
+; CHECK-NEXT: call void @use(i8* inalloca(i8) [[V2]]) #[[ATTR4]]
; CHECK-NEXT: call void @llvm.stackrestore(i8* [[STACK]])
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x i8*> poison, i8* [[V1]], i32 0
; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x i8*> [[TMP1]], i8* [[V2]], i32 1
@@ -203,7 +203,7 @@ define void @stacksave4(i8** %a, i8** %b, i8** %c) {
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, <2 x i8*> [[TMP2]], <2 x i32> <i32 1, i32 1>
; CHECK-NEXT: [[STACK:%.*]] = call i8* @llvm.stacksave()
; CHECK-NEXT: [[X:%.*]] = alloca inalloca i8, align 1
-; CHECK-NEXT: call void @use(i8* inalloca(i8) [[X]]) #[[ATTR3]]
+; CHECK-NEXT: call void @use(i8* inalloca(i8) [[X]]) #[[ATTR4]]
; CHECK-NEXT: call void @llvm.stackrestore(i8* [[STACK]])
; CHECK-NEXT: [[B2:%.*]] = getelementptr i8*, i8** [[B:%.*]], i32 1
; CHECK-NEXT: [[TMP4:%.*]] = bitcast i8** [[B]] to <2 x i8*>*
@@ -237,7 +237,7 @@ define void @stacksave5(i8** %a, i8** %b, i8** %c) {
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, <2 x i8*> [[TMP2]], <2 x i32> <i32 1, i32 1>
; CHECK-NEXT: [[STACK:%.*]] = call i8* @llvm.stacksave()
; CHECK-NEXT: [[X:%.*]] = alloca inalloca i8, align 1
-; CHECK-NEXT: call void @use(i8* inalloca(i8) [[X]]) #[[ATTR3]]
+; CHECK-NEXT: call void @use(i8* inalloca(i8) [[X]]) #[[ATTR4]]
; CHECK-NEXT: call void @llvm.stackrestore(i8* [[STACK]])
; CHECK-NEXT: [[B2:%.*]] = getelementptr i8*, i8** [[B:%.*]], i32 1
; CHECK-NEXT: [[TMP4:%.*]] = bitcast i8** [[B]] to <2 x i8*>*
@@ -266,3 +266,107 @@ define void @stacksave5(i8** %a, i8** %b, i8** %c) {
declare void @use(i8* inalloca(i8))
declare i8* @llvm.stacksave()
declare void @llvm.stackrestore(i8*)
+
+; The next set are reduced from previous regressions.
+
+declare i8* @wibble(i8*)
+declare void @quux(i32* inalloca(i32))
+
+define void @ham() #1 {
+; CHECK-LABEL: @ham(
+; CHECK-NEXT: [[VAR2:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[VAR3:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[VAR4:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[VAR5:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[VAR12:%.*]] = alloca [12 x i8*], align 8
+; CHECK-NEXT: [[VAR15:%.*]] = call i8* @wibble(i8* [[VAR2]])
+; CHECK-NEXT: [[VAR16:%.*]] = call i8* @wibble(i8* [[VAR3]])
+; CHECK-NEXT: [[VAR17:%.*]] = call i8* @wibble(i8* [[VAR4]])
+; CHECK-NEXT: [[VAR23:%.*]] = call i8* @llvm.stacksave()
+; CHECK-NEXT: [[VAR24:%.*]] = alloca inalloca i32, align 4
+; CHECK-NEXT: call void @quux(i32* inalloca(i32) [[VAR24]])
+; CHECK-NEXT: call void @llvm.stackrestore(i8* [[VAR23]])
+; CHECK-NEXT: [[VAR32:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 0
+; CHECK-NEXT: [[VAR33:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 1
+; CHECK-NEXT: [[VAR34:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 2
+; CHECK-NEXT: [[VAR35:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 3
+; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i8*> poison, i8* [[VAR4]], i32 0
+; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i8*> [[TMP1]], <4 x i8*> poison, <4 x i32> zeroinitializer
+; CHECK-NEXT: [[TMP2:%.*]] = bitcast i8** [[VAR32]] to <4 x i8*>*
+; CHECK-NEXT: store <4 x i8*> [[SHUFFLE]], <4 x i8*>* [[TMP2]], align 8
+; CHECK-NEXT: [[VAR36:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 4
+; CHECK-NEXT: store i8* [[VAR4]], i8** [[VAR36]], align 8
+; CHECK-NEXT: [[VAR37:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 5
+; CHECK-NEXT: [[VAR38:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 6
+; CHECK-NEXT: [[TMP3:%.*]] = insertelement <2 x i8*> poison, i8* [[VAR5]], i32 0
+; CHECK-NEXT: [[TMP4:%.*]] = insertelement <2 x i8*> [[TMP3]], i8* [[VAR5]], i32 1
+; CHECK-NEXT: [[TMP5:%.*]] = bitcast i8** [[VAR37]] to <2 x i8*>*
+; CHECK-NEXT: store <2 x i8*> [[TMP4]], <2 x i8*>* [[TMP5]], align 8
+; CHECK-NEXT: [[VAR39:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 7
+; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR39]], align 8
+; CHECK-NEXT: ret void
+;
+ %var2 = alloca i8
+ %var3 = alloca i8
+ %var4 = alloca i8
+ %var5 = alloca i8
+ %var12 = alloca [12 x i8*]
+ %var15 = call i8* @wibble(i8* %var2)
+ %var16 = call i8* @wibble(i8* %var3)
+ %var17 = call i8* @wibble(i8* %var4)
+ %var23 = call i8* @llvm.stacksave()
+ %var24 = alloca inalloca i32
+ call void @quux(i32* inalloca(i32) %var24)
+ call void @llvm.stackrestore(i8* %var23)
+ %var32 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 0
+ store i8* %var4, i8** %var32
+ %var33 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 1
+ store i8* %var4, i8** %var33
+ %var34 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 2
+ store i8* %var4, i8** %var34
+ %var35 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 3
+ store i8* %var4, i8** %var35
+ %var36 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 4
+ store i8* %var4, i8** %var36
+ %var37 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 5
+ store i8* %var5, i8** %var37
+ %var38 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 6
+ store i8* %var5, i8** %var38
+ %var39 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 7
+ store i8* %var5, i8** %var39
+ ret void
+}
+
+define void @spam() #1 {
+; CHECK-LABEL: @spam(
+; CHECK-NEXT: [[VAR4:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[VAR5:%.*]] = alloca i8, align 1
+; CHECK-NEXT: [[VAR12:%.*]] = alloca [12 x i8*], align 8
+; CHECK-NEXT: [[VAR36:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 4
+; CHECK-NEXT: store i8* [[VAR4]], i8** [[VAR36]], align 8
+; CHECK-NEXT: [[VAR37:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 5
+; CHECK-NEXT: [[VAR38:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 6
+; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x i8*> poison, i8* [[VAR5]], i32 0
+; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x i8*> [[TMP1]], i8* [[VAR5]], i32 1
+; CHECK-NEXT: [[TMP3:%.*]] = bitcast i8** [[VAR37]] to <2 x i8*>*
+; CHECK-NEXT: store <2 x i8*> [[TMP2]], <2 x i8*>* [[TMP3]], align 8
+; CHECK-NEXT: [[VAR39:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 7
+; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR39]], align 8
+; CHECK-NEXT: ret void
+;
+ %var4 = alloca i8
+ %var5 = alloca i8
+ %var12 = alloca [12 x i8*]
+ %var36 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 4
+ store i8* %var4, i8** %var36
+ %var37 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 5
+ store i8* %var5, i8** %var37
+ %var38 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 6
+ store i8* %var5, i8** %var38
+ %var39 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 7
+ store i8* %var5, i8** %var39
+ ret void
+}
+
+attributes #0 = { nofree nosync nounwind willreturn }
+attributes #1 = { "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" }
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/store_alloca.ll b/llvm/test/Transforms/SLPVectorizer/X86/store_alloca.ll
deleted file mode 100644
index 944a7028c80da..0000000000000
--- a/llvm/test/Transforms/SLPVectorizer/X86/store_alloca.ll
+++ /dev/null
@@ -1,107 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -S -slp-vectorizer -slp-max-vf=4 < %s | FileCheck %s
-
-target datalayout = "e-m:x-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32-a:0:32-S32"
-target triple = "i386-pc-windows-msvc19.16.0"
-
-declare i8* @llvm.stacksave()
-declare void @llvm.stackrestore(i8*)
-declare i8* @wibble(i8*)
-declare void @quux(i32* inalloca(i32))
-
-define void @ham() #1 {
-; CHECK-LABEL: @ham(
-; CHECK-NEXT: [[VAR2:%.*]] = alloca i8, align 1
-; CHECK-NEXT: [[VAR3:%.*]] = alloca i8, align 1
-; CHECK-NEXT: [[VAR4:%.*]] = alloca i8, align 1
-; CHECK-NEXT: [[VAR5:%.*]] = alloca i8, align 1
-; CHECK-NEXT: [[VAR12:%.*]] = alloca [12 x i8*], align 4
-; CHECK-NEXT: [[VAR15:%.*]] = call i8* @wibble(i8* [[VAR2]])
-; CHECK-NEXT: [[VAR16:%.*]] = call i8* @wibble(i8* [[VAR3]])
-; CHECK-NEXT: [[VAR17:%.*]] = call i8* @wibble(i8* [[VAR4]])
-; CHECK-NEXT: [[VAR23:%.*]] = call i8* @llvm.stacksave()
-; CHECK-NEXT: [[VAR24:%.*]] = alloca inalloca i32, align 4
-; CHECK-NEXT: call void @quux(i32* inalloca(i32) [[VAR24]])
-; CHECK-NEXT: call void @llvm.stackrestore(i8* [[VAR23]])
-; CHECK-NEXT: [[VAR32:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 0
-; CHECK-NEXT: [[VAR33:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 1
-; CHECK-NEXT: [[VAR34:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 2
-; CHECK-NEXT: [[VAR35:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 3
-; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i8*> poison, i8* [[VAR4]], i32 0
-; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i8*> [[TMP1]], <4 x i8*> poison, <4 x i32> zeroinitializer
-; CHECK-NEXT: [[TMP2:%.*]] = bitcast i8** [[VAR32]] to <4 x i8*>*
-; CHECK-NEXT: store <4 x i8*> [[SHUFFLE]], <4 x i8*>* [[TMP2]], align 4
-; CHECK-NEXT: [[VAR36:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 4
-; CHECK-NEXT: store i8* [[VAR4]], i8** [[VAR36]], align 4
-; CHECK-NEXT: [[VAR37:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 5
-; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR37]], align 4
-; CHECK-NEXT: [[VAR38:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 6
-; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR38]], align 4
-; CHECK-NEXT: [[VAR39:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 7
-; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR39]], align 4
-; CHECK-NEXT: ret void
-;
- %var2 = alloca i8
- %var3 = alloca i8
- %var4 = alloca i8
- %var5 = alloca i8
- %var12 = alloca [12 x i8*]
- %var15 = call i8* @wibble(i8* %var2)
- %var16 = call i8* @wibble(i8* %var3)
- %var17 = call i8* @wibble(i8* %var4)
- %var23 = call i8* @llvm.stacksave()
- %var24 = alloca inalloca i32
- call void @quux(i32* inalloca(i32) %var24)
- call void @llvm.stackrestore(i8* %var23)
- %var32 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 0
- store i8* %var4, i8** %var32
- %var33 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 1
- store i8* %var4, i8** %var33
- %var34 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 2
- store i8* %var4, i8** %var34
- %var35 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 3
- store i8* %var4, i8** %var35
- %var36 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 4
- store i8* %var4, i8** %var36
- %var37 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 5
- store i8* %var5, i8** %var37
- %var38 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 6
- store i8* %var5, i8** %var38
- %var39 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 7
- store i8* %var5, i8** %var39
- ret void
-}
-
-define void @spam() #1 {
-; CHECK-LABEL: @spam(
-; CHECK-NEXT: [[VAR4:%.*]] = alloca i8, align 1
-; CHECK-NEXT: [[VAR5:%.*]] = alloca i8, align 1
-; CHECK-NEXT: [[VAR12:%.*]] = alloca [12 x i8*], align 4
-; CHECK-NEXT: [[VAR36:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 4
-; CHECK-NEXT: store i8* [[VAR4]], i8** [[VAR36]], align 4
-; CHECK-NEXT: [[VAR37:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 5
-; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR37]], align 4
-; CHECK-NEXT: [[VAR38:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 6
-; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR38]], align 4
-; CHECK-NEXT: [[VAR39:%.*]] = getelementptr inbounds [12 x i8*], [12 x i8*]* [[VAR12]], i32 0, i32 7
-; CHECK-NEXT: store i8* [[VAR5]], i8** [[VAR39]], align 4
-; CHECK-NEXT: ret void
-;
- %var4 = alloca i8
- %var5 = alloca i8
- %var12 = alloca [12 x i8*]
- %var36 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 4
- store i8* %var4, i8** %var36
- %var37 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 5
- store i8* %var5, i8** %var37
- %var38 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 6
- store i8* %var5, i8** %var38
- %var39 = getelementptr inbounds [12 x i8*], [12 x i8*]* %var12, i32 0, i32 7
- store i8* %var5, i8** %var39
- ret void
-}
-
-
-
-attributes #0 = { nofree nosync nounwind willreturn }
-attributes #1 = { "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" }
More information about the llvm-commits
mailing list