Skip to content

Commit deb3ecf

Browse files
committed
[SLP][NFC]Add a test with the reduction of strided load, NFC.
1 parent 1525abb commit deb3ecf

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

llvm/test/Transforms/SLPVectorizer/RISCV/reductions.ll

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,108 @@ entry:
142142
ret i64 %add.15
143143
}
144144

145+
146+
define i64 @red_strided_ld_16xi64(ptr %ptr) {
147+
; CHECK-LABEL: @red_strided_ld_16xi64(
148+
; CHECK-NEXT: entry:
149+
; CHECK-NEXT: [[LD0:%.*]] = load i64, ptr [[PTR:%.*]], align 8
150+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 2
151+
; CHECK-NEXT: [[LD1:%.*]] = load i64, ptr [[GEP]], align 8
152+
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i64 [[LD0]], [[LD1]]
153+
; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 4
154+
; CHECK-NEXT: [[LD2:%.*]] = load i64, ptr [[GEP_1]], align 8
155+
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i64 [[ADD_1]], [[LD2]]
156+
; CHECK-NEXT: [[GEP_2:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 6
157+
; CHECK-NEXT: [[LD3:%.*]] = load i64, ptr [[GEP_2]], align 8
158+
; CHECK-NEXT: [[ADD_3:%.*]] = add nuw nsw i64 [[ADD_2]], [[LD3]]
159+
; CHECK-NEXT: [[GEP_3:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 8
160+
; CHECK-NEXT: [[LD4:%.*]] = load i64, ptr [[GEP_3]], align 8
161+
; CHECK-NEXT: [[ADD_4:%.*]] = add nuw nsw i64 [[ADD_3]], [[LD4]]
162+
; CHECK-NEXT: [[GEP_4:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 10
163+
; CHECK-NEXT: [[LD5:%.*]] = load i64, ptr [[GEP_4]], align 8
164+
; CHECK-NEXT: [[ADD_5:%.*]] = add nuw nsw i64 [[ADD_4]], [[LD5]]
165+
; CHECK-NEXT: [[GEP_5:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 12
166+
; CHECK-NEXT: [[LD6:%.*]] = load i64, ptr [[GEP_5]], align 8
167+
; CHECK-NEXT: [[ADD_6:%.*]] = add nuw nsw i64 [[ADD_5]], [[LD6]]
168+
; CHECK-NEXT: [[GEP_6:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 14
169+
; CHECK-NEXT: [[LD7:%.*]] = load i64, ptr [[GEP_6]], align 8
170+
; CHECK-NEXT: [[ADD_7:%.*]] = add nuw nsw i64 [[ADD_6]], [[LD7]]
171+
; CHECK-NEXT: [[GEP_7:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 16
172+
; CHECK-NEXT: [[LD8:%.*]] = load i64, ptr [[GEP_7]], align 8
173+
; CHECK-NEXT: [[ADD_8:%.*]] = add nuw nsw i64 [[ADD_7]], [[LD8]]
174+
; CHECK-NEXT: [[GEP_8:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 18
175+
; CHECK-NEXT: [[LD9:%.*]] = load i64, ptr [[GEP_8]], align 8
176+
; CHECK-NEXT: [[ADD_9:%.*]] = add nuw nsw i64 [[ADD_8]], [[LD9]]
177+
; CHECK-NEXT: [[GEP_9:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 20
178+
; CHECK-NEXT: [[LD10:%.*]] = load i64, ptr [[GEP_9]], align 8
179+
; CHECK-NEXT: [[ADD_10:%.*]] = add nuw nsw i64 [[ADD_9]], [[LD10]]
180+
; CHECK-NEXT: [[GEP_10:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 22
181+
; CHECK-NEXT: [[LD11:%.*]] = load i64, ptr [[GEP_10]], align 8
182+
; CHECK-NEXT: [[ADD_11:%.*]] = add nuw nsw i64 [[ADD_10]], [[LD11]]
183+
; CHECK-NEXT: [[GEP_11:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 24
184+
; CHECK-NEXT: [[LD12:%.*]] = load i64, ptr [[GEP_11]], align 8
185+
; CHECK-NEXT: [[ADD_12:%.*]] = add nuw nsw i64 [[ADD_11]], [[LD12]]
186+
; CHECK-NEXT: [[GEP_12:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 26
187+
; CHECK-NEXT: [[LD13:%.*]] = load i64, ptr [[GEP_12]], align 8
188+
; CHECK-NEXT: [[ADD_13:%.*]] = add nuw nsw i64 [[ADD_12]], [[LD13]]
189+
; CHECK-NEXT: [[GEP_13:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 28
190+
; CHECK-NEXT: [[LD14:%.*]] = load i64, ptr [[GEP_13]], align 8
191+
; CHECK-NEXT: [[ADD_14:%.*]] = add nuw nsw i64 [[ADD_13]], [[LD14]]
192+
; CHECK-NEXT: [[GEP_14:%.*]] = getelementptr inbounds i64, ptr [[PTR]], i64 30
193+
; CHECK-NEXT: [[LD15:%.*]] = load i64, ptr [[GEP_14]], align 8
194+
; CHECK-NEXT: [[ADD_15:%.*]] = add nuw nsw i64 [[ADD_14]], [[LD15]]
195+
; CHECK-NEXT: ret i64 [[ADD_15]]
196+
;
197+
entry:
198+
%ld0 = load i64, ptr %ptr
199+
%gep = getelementptr inbounds i64, ptr %ptr, i64 2
200+
%ld1 = load i64, ptr %gep
201+
%add.1 = add nuw nsw i64 %ld0, %ld1
202+
%gep.1 = getelementptr inbounds i64, ptr %ptr, i64 4
203+
%ld2 = load i64, ptr %gep.1
204+
%add.2 = add nuw nsw i64 %add.1, %ld2
205+
%gep.2 = getelementptr inbounds i64, ptr %ptr, i64 6
206+
%ld3 = load i64, ptr %gep.2
207+
%add.3 = add nuw nsw i64 %add.2, %ld3
208+
%gep.3 = getelementptr inbounds i64, ptr %ptr, i64 8
209+
%ld4 = load i64, ptr %gep.3
210+
%add.4 = add nuw nsw i64 %add.3, %ld4
211+
%gep.4 = getelementptr inbounds i64, ptr %ptr, i64 10
212+
%ld5 = load i64, ptr %gep.4
213+
%add.5 = add nuw nsw i64 %add.4, %ld5
214+
%gep.5 = getelementptr inbounds i64, ptr %ptr, i64 12
215+
%ld6 = load i64, ptr %gep.5
216+
%add.6 = add nuw nsw i64 %add.5, %ld6
217+
%gep.6 = getelementptr inbounds i64, ptr %ptr, i64 14
218+
%ld7 = load i64, ptr %gep.6
219+
%add.7 = add nuw nsw i64 %add.6, %ld7
220+
%gep.7 = getelementptr inbounds i64, ptr %ptr, i64 16
221+
%ld8 = load i64, ptr %gep.7
222+
%add.8 = add nuw nsw i64 %add.7, %ld8
223+
%gep.8 = getelementptr inbounds i64, ptr %ptr, i64 18
224+
%ld9 = load i64, ptr %gep.8
225+
%add.9 = add nuw nsw i64 %add.8, %ld9
226+
%gep.9 = getelementptr inbounds i64, ptr %ptr, i64 20
227+
%ld10 = load i64, ptr %gep.9
228+
%add.10 = add nuw nsw i64 %add.9, %ld10
229+
%gep.10 = getelementptr inbounds i64, ptr %ptr, i64 22
230+
%ld11 = load i64, ptr %gep.10
231+
%add.11 = add nuw nsw i64 %add.10, %ld11
232+
%gep.11 = getelementptr inbounds i64, ptr %ptr, i64 24
233+
%ld12 = load i64, ptr %gep.11
234+
%add.12 = add nuw nsw i64 %add.11, %ld12
235+
%gep.12 = getelementptr inbounds i64, ptr %ptr, i64 26
236+
%ld13 = load i64, ptr %gep.12
237+
%add.13 = add nuw nsw i64 %add.12, %ld13
238+
%gep.13 = getelementptr inbounds i64, ptr %ptr, i64 28
239+
%ld14 = load i64, ptr %gep.13
240+
%add.14 = add nuw nsw i64 %add.13, %ld14
241+
%gep.14 = getelementptr inbounds i64, ptr %ptr, i64 30
242+
%ld15 = load i64, ptr %gep.14
243+
%add.15 = add nuw nsw i64 %add.14, %ld15
244+
ret i64 %add.15
245+
}
246+
145247
; Next batch test differen reductions kinds
146248

147249
%struct.buf = type { [8 x i8] }

0 commit comments

Comments
 (0)