Skip to content

Commit fc28f83

Browse files
authored
[SLP] Precommit test (#131236)
Precommit test for #131229
1 parent ab58a3c commit fc28f83

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -passes=slp-vectorizer -S | FileCheck %s --check-prefix=GFX9
3+
4+
define protected amdgpu_kernel void @myfun(i32 %in, ptr addrspace(1) %aptr1, ptr addrspace(1) %bptr1, ptr addrspace(1) %aptr2, ptr addrspace(1) %bptr2) {
5+
; GFX9-LABEL: define protected amdgpu_kernel void @myfun(
6+
; GFX9-SAME: i32 [[IN:%.*]], ptr addrspace(1) [[APTR1:%.*]], ptr addrspace(1) [[BPTR1:%.*]], ptr addrspace(1) [[APTR2:%.*]], ptr addrspace(1) [[BPTR2:%.*]]) #[[ATTR0:[0-9]+]] {
7+
; GFX9-NEXT: [[ENTRY:.*]]:
8+
; GFX9-NEXT: [[VEC1:%.*]] = load <8 x i16>, ptr addrspace(1) [[APTR1]], align 16
9+
; GFX9-NEXT: [[EL0:%.*]] = extractelement <8 x i16> [[VEC1]], i64 0
10+
; GFX9-NEXT: [[EL3:%.*]] = extractelement <8 x i16> [[VEC1]], i64 3
11+
; GFX9-NEXT: [[BVEC1:%.*]] = load <8 x i16>, ptr addrspace(1) [[BPTR1]], align 16
12+
; GFX9-NEXT: [[BEL0:%.*]] = extractelement <8 x i16> [[BVEC1]], i64 0
13+
; GFX9-NEXT: [[BEL3:%.*]] = extractelement <8 x i16> [[BVEC1]], i64 3
14+
; GFX9-NEXT: [[TMP0:%.*]] = shufflevector <8 x i16> [[VEC1]], <8 x i16> poison, <2 x i32> <i32 1, i32 2>
15+
; GFX9-NEXT: [[TMP2:%.*]] = shufflevector <8 x i16> [[VEC1]], <8 x i16> poison, <2 x i32> <i32 4, i32 5>
16+
; GFX9-NEXT: [[TMP3:%.*]] = shufflevector <8 x i16> [[VEC1]], <8 x i16> poison, <2 x i32> <i32 6, i32 7>
17+
; GFX9-NEXT: [[TMP4:%.*]] = shufflevector <8 x i16> [[BVEC1]], <8 x i16> poison, <2 x i32> <i32 1, i32 2>
18+
; GFX9-NEXT: [[TMP6:%.*]] = shufflevector <8 x i16> [[BVEC1]], <8 x i16> poison, <2 x i32> <i32 4, i32 5>
19+
; GFX9-NEXT: [[TMP7:%.*]] = shufflevector <8 x i16> [[BVEC1]], <8 x i16> poison, <2 x i32> <i32 6, i32 7>
20+
; GFX9-NEXT: br label %[[DO_BODY:.*]]
21+
; GFX9: [[DO_BODY]]:
22+
; GFX9-NEXT: [[A_THREAD_BUF3:%.*]] = phi i16 [ [[EL3]], %[[ENTRY]] ], [ [[NEWEL3:%.*]], %[[DO_BODY]] ]
23+
; GFX9-NEXT: [[B_THREAD_BUF3:%.*]] = phi i16 [ [[BEL3]], %[[ENTRY]] ], [ [[BNEWEL3:%.*]], %[[DO_BODY]] ]
24+
; GFX9-NEXT: [[ADD:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[NEWADD:%.*]], %[[DO_BODY]] ]
25+
; GFX9-NEXT: [[A_THREAD_BUF0:%.*]] = phi i16 [ [[EL0]], %[[ENTRY]] ], [ [[NEWEL0:%.*]], %[[DO_BODY]] ]
26+
; GFX9-NEXT: [[B_THREAD_BUF0:%.*]] = phi i16 [ [[BEL0]], %[[ENTRY]] ], [ [[BNEWEL0:%.*]], %[[DO_BODY]] ]
27+
; GFX9-NEXT: [[TMP9:%.*]] = phi <2 x i16> [ [[TMP0]], %[[ENTRY]] ], [ [[TMP25:%.*]], %[[DO_BODY]] ]
28+
; GFX9-NEXT: [[TMP10:%.*]] = phi <2 x i16> [ [[TMP2]], %[[ENTRY]] ], [ [[TMP32:%.*]], %[[DO_BODY]] ]
29+
; GFX9-NEXT: [[TMP11:%.*]] = phi <2 x i16> [ [[TMP3]], %[[ENTRY]] ], [ [[TMP33:%.*]], %[[DO_BODY]] ]
30+
; GFX9-NEXT: [[TMP13:%.*]] = phi <2 x i16> [ [[TMP4]], %[[ENTRY]] ], [ [[TMP30:%.*]], %[[DO_BODY]] ]
31+
; GFX9-NEXT: [[TMP14:%.*]] = phi <2 x i16> [ [[TMP6]], %[[ENTRY]] ], [ [[TMP36:%.*]], %[[DO_BODY]] ]
32+
; GFX9-NEXT: [[TMP15:%.*]] = phi <2 x i16> [ [[TMP7]], %[[ENTRY]] ], [ [[TMP37:%.*]], %[[DO_BODY]] ]
33+
; GFX9-NEXT: [[A_THREAD_VEC0:%.*]] = insertelement <8 x i16> poison, i16 [[A_THREAD_BUF0]], i64 0
34+
; GFX9-NEXT: [[TMP17:%.*]] = shufflevector <2 x i16> [[TMP9]], <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
35+
; GFX9-NEXT: [[TMP16:%.*]] = shufflevector <8 x i16> [[A_THREAD_VEC0]], <8 x i16> [[TMP17]], <8 x i32> <i32 0, i32 8, i32 9, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
36+
; GFX9-NEXT: [[A_THREAD_VEC3:%.*]] = insertelement <8 x i16> [[TMP16]], i16 [[A_THREAD_BUF3]], i64 3
37+
; GFX9-NEXT: [[TMP19:%.*]] = shufflevector <2 x i16> [[TMP10]], <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
38+
; GFX9-NEXT: [[TMP20:%.*]] = shufflevector <8 x i16> [[A_THREAD_VEC3]], <8 x i16> [[TMP19]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 6, i32 7>
39+
; GFX9-NEXT: [[TMP21:%.*]] = shufflevector <2 x i16> [[TMP11]], <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
40+
; GFX9-NEXT: [[TMP22:%.*]] = shufflevector <8 x i16> [[TMP20]], <8 x i16> [[TMP21]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
41+
; GFX9-NEXT: [[B_THREAD_VEC0:%.*]] = insertelement <8 x i16> poison, i16 [[B_THREAD_BUF0]], i64 0
42+
; GFX9-NEXT: [[TMP24:%.*]] = shufflevector <2 x i16> [[TMP13]], <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
43+
; GFX9-NEXT: [[TMP23:%.*]] = shufflevector <8 x i16> [[B_THREAD_VEC0]], <8 x i16> [[TMP24]], <8 x i32> <i32 0, i32 8, i32 9, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
44+
; GFX9-NEXT: [[B_THREAD_VEC3:%.*]] = insertelement <8 x i16> [[TMP23]], i16 [[B_THREAD_BUF3]], i64 3
45+
; GFX9-NEXT: [[TMP26:%.*]] = shufflevector <2 x i16> [[TMP14]], <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
46+
; GFX9-NEXT: [[TMP27:%.*]] = shufflevector <8 x i16> [[B_THREAD_VEC3]], <8 x i16> [[TMP26]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 6, i32 7>
47+
; GFX9-NEXT: [[TMP28:%.*]] = shufflevector <2 x i16> [[TMP15]], <2 x i16> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
48+
; GFX9-NEXT: [[TMP29:%.*]] = shufflevector <8 x i16> [[TMP27]], <8 x i16> [[TMP28]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
49+
; GFX9-NEXT: [[RES:%.*]] = add <8 x i16> [[TMP22]], [[TMP29]]
50+
; GFX9-NEXT: [[VEC2:%.*]] = load <8 x i16>, ptr addrspace(1) [[APTR2]], align 16
51+
; GFX9-NEXT: [[NEWEL0]] = extractelement <8 x i16> [[VEC2]], i64 0
52+
; GFX9-NEXT: [[NEWEL3]] = extractelement <8 x i16> [[VEC2]], i64 3
53+
; GFX9-NEXT: [[BVEC2:%.*]] = load <8 x i16>, ptr addrspace(1) [[BPTR2]], align 16
54+
; GFX9-NEXT: [[BNEWEL0]] = extractelement <8 x i16> [[BVEC2]], i64 0
55+
; GFX9-NEXT: [[BNEWEL3]] = extractelement <8 x i16> [[BVEC2]], i64 3
56+
; GFX9-NEXT: [[NEWADD]] = add i32 [[ADD]], 1
57+
; GFX9-NEXT: [[COND:%.*]] = icmp sgt i32 [[NEWADD]], [[IN]]
58+
; GFX9-NEXT: [[TMP25]] = shufflevector <8 x i16> [[VEC2]], <8 x i16> poison, <2 x i32> <i32 1, i32 2>
59+
; GFX9-NEXT: [[TMP32]] = shufflevector <8 x i16> [[VEC2]], <8 x i16> poison, <2 x i32> <i32 4, i32 5>
60+
; GFX9-NEXT: [[TMP33]] = shufflevector <8 x i16> [[VEC2]], <8 x i16> poison, <2 x i32> <i32 6, i32 7>
61+
; GFX9-NEXT: [[TMP30]] = shufflevector <8 x i16> [[BVEC2]], <8 x i16> poison, <2 x i32> <i32 1, i32 2>
62+
; GFX9-NEXT: [[TMP36]] = shufflevector <8 x i16> [[BVEC2]], <8 x i16> poison, <2 x i32> <i32 4, i32 5>
63+
; GFX9-NEXT: [[TMP37]] = shufflevector <8 x i16> [[BVEC2]], <8 x i16> poison, <2 x i32> <i32 6, i32 7>
64+
; GFX9-NEXT: br i1 [[COND]], label %[[DO_BODY]], label %[[END:.*]]
65+
; GFX9: [[END]]:
66+
; GFX9-NEXT: ret void
67+
;
68+
entry:
69+
%vec1 = load <8 x i16>, ptr addrspace(1) %aptr1
70+
%el0 = extractelement <8 x i16> %vec1, i64 0
71+
%el1 = extractelement <8 x i16> %vec1, i64 1
72+
%el2 = extractelement <8 x i16> %vec1, i64 2
73+
%el3 = extractelement <8 x i16> %vec1, i64 3
74+
%el4 = extractelement <8 x i16> %vec1, i64 4
75+
%el5 = extractelement <8 x i16> %vec1, i64 5
76+
%el6 = extractelement <8 x i16> %vec1, i64 6
77+
%el7 = extractelement <8 x i16> %vec1, i64 7
78+
%bvec1 = load <8 x i16>, ptr addrspace(1) %bptr1
79+
%bel0 = extractelement <8 x i16> %bvec1, i64 0
80+
%bel1 = extractelement <8 x i16> %bvec1, i64 1
81+
%bel2 = extractelement <8 x i16> %bvec1, i64 2
82+
%bel3 = extractelement <8 x i16> %bvec1, i64 3
83+
%bel4 = extractelement <8 x i16> %bvec1, i64 4
84+
%bel5 = extractelement <8 x i16> %bvec1, i64 5
85+
%bel6 = extractelement <8 x i16> %bvec1, i64 6
86+
%bel7 = extractelement <8 x i16> %bvec1, i64 7
87+
br label %do.body
88+
89+
do.body:
90+
%a_thread_buf1 = phi i16 [%el1, %entry], [%newel1, %do.body]
91+
%a_thread_buf2 = phi i16 [%el2, %entry], [%newel2, %do.body]
92+
%a_thread_buf3 = phi i16 [%el3, %entry], [%newel3, %do.body]
93+
%a_thread_buf4 = phi i16 [%el4, %entry], [%newel4, %do.body]
94+
%a_thread_buf5 = phi i16 [%el5, %entry], [%newel5, %do.body]
95+
%a_thread_buf6 = phi i16 [%el6, %entry], [%newel6, %do.body]
96+
%a_thread_buf7 = phi i16 [%el7, %entry], [%newel7, %do.body]
97+
%b_thread_buf1 = phi i16 [%bel1, %entry], [%bnewel1, %do.body]
98+
%b_thread_buf2 = phi i16 [%bel2, %entry], [%bnewel2, %do.body]
99+
%b_thread_buf3 = phi i16 [%bel3, %entry], [%bnewel3, %do.body]
100+
%b_thread_buf4 = phi i16 [%bel4, %entry], [%bnewel4, %do.body]
101+
%b_thread_buf5 = phi i16 [%bel5, %entry], [%bnewel5, %do.body]
102+
%b_thread_buf6 = phi i16 [%bel6, %entry], [%bnewel6, %do.body]
103+
%b_thread_buf7 = phi i16 [%bel7, %entry], [%bnewel7, %do.body]
104+
%add = phi i32 [0, %entry], [%newadd, %do.body]
105+
%a_thread_buf0 = phi i16 [%el0, %entry], [%newel0, %do.body]
106+
%b_thread_buf0 = phi i16 [%bel0, %entry], [%bnewel0, %do.body]
107+
%a_thread_vec0 = insertelement <8 x i16> poison, i16 %a_thread_buf0, i64 0
108+
%a_thread_vec1 = insertelement <8 x i16> %a_thread_vec0, i16 %a_thread_buf1, i64 1
109+
%a_thread_vec2 = insertelement <8 x i16> %a_thread_vec1, i16 %a_thread_buf2, i64 2
110+
%a_thread_vec3 = insertelement <8 x i16> %a_thread_vec2, i16 %a_thread_buf3, i64 3
111+
%a_thread_vec4 = insertelement <8 x i16> %a_thread_vec3, i16 %a_thread_buf4, i64 4
112+
%a_thread_vec5 = insertelement <8 x i16> %a_thread_vec4, i16 %a_thread_buf5, i64 5
113+
%a_thread_vec6 = insertelement <8 x i16> %a_thread_vec5, i16 %a_thread_buf6, i64 6
114+
%a_thread_vec7 = insertelement <8 x i16> %a_thread_vec6, i16 %a_thread_buf7, i64 7
115+
%b_thread_vec0 = insertelement <8 x i16> poison, i16 %b_thread_buf0, i64 0
116+
%b_thread_vec1 = insertelement <8 x i16> %b_thread_vec0, i16 %b_thread_buf1, i64 1
117+
%b_thread_vec2 = insertelement <8 x i16> %b_thread_vec1, i16 %b_thread_buf2, i64 2
118+
%b_thread_vec3 = insertelement <8 x i16> %b_thread_vec2, i16 %b_thread_buf3, i64 3
119+
%b_thread_vec4 = insertelement <8 x i16> %b_thread_vec3, i16 %b_thread_buf4, i64 4
120+
%b_thread_vec5 = insertelement <8 x i16> %b_thread_vec4, i16 %b_thread_buf5, i64 5
121+
%b_thread_vec6 = insertelement <8 x i16> %b_thread_vec5, i16 %b_thread_buf6, i64 6
122+
%b_thread_vec7 = insertelement <8 x i16> %b_thread_vec6, i16 %b_thread_buf7, i64 7
123+
%res = add <8 x i16> %a_thread_vec7, %b_thread_vec7
124+
%vec2 = load <8 x i16>, ptr addrspace(1) %aptr2
125+
%newel0 = extractelement <8 x i16> %vec2, i64 0
126+
%newel1 = extractelement <8 x i16> %vec2, i64 1
127+
%newel2 = extractelement <8 x i16> %vec2, i64 2
128+
%newel3 = extractelement <8 x i16> %vec2, i64 3
129+
%newel4 = extractelement <8 x i16> %vec2, i64 4
130+
%newel5 = extractelement <8 x i16> %vec2, i64 5
131+
%newel6 = extractelement <8 x i16> %vec2, i64 6
132+
%newel7 = extractelement <8 x i16> %vec2, i64 7
133+
%bvec2 = load <8 x i16>, ptr addrspace(1) %bptr2
134+
%bnewel0 = extractelement <8 x i16> %bvec2, i64 0
135+
%bnewel1 = extractelement <8 x i16> %bvec2, i64 1
136+
%bnewel2 = extractelement <8 x i16> %bvec2, i64 2
137+
%bnewel3 = extractelement <8 x i16> %bvec2, i64 3
138+
%bnewel4 = extractelement <8 x i16> %bvec2, i64 4
139+
%bnewel5 = extractelement <8 x i16> %bvec2, i64 5
140+
%bnewel6 = extractelement <8 x i16> %bvec2, i64 6
141+
%bnewel7 = extractelement <8 x i16> %bvec2, i64 7
142+
%newadd = add i32 %add, 1
143+
%cond = icmp sgt i32 %newadd, %in
144+
br i1 %cond, label %do.body, label %end
145+
146+
end:
147+
ret void
148+
}
149+
150+

0 commit comments

Comments
 (0)