@@ -96,6 +96,16 @@ define void @strided_vpstore_nxv8i8(<vscale x 8 x i8> %val, ptr %ptr, i32 signex
96
96
ret void
97
97
}
98
98
99
+ define void @strided_vpstore_nxv8i8_unit_stride (<vscale x 8 x i8 > %val , ptr %ptr , <vscale x 8 x i1 > %m , i32 zeroext %evl ) {
100
+ ; CHECK-LABEL: strided_vpstore_nxv8i8_unit_stride:
101
+ ; CHECK: # %bb.0:
102
+ ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
103
+ ; CHECK-NEXT: vse8.v v8, (a0), v0.t
104
+ ; CHECK-NEXT: ret
105
+ call void @llvm.experimental.vp.strided.store.nxv8i8.p0.i32 (<vscale x 8 x i8 > %val , ptr %ptr , i32 1 , <vscale x 8 x i1 > %m , i32 %evl )
106
+ ret void
107
+ }
108
+
99
109
declare void @llvm.experimental.vp.strided.store.nxv1i16.p0.i32 (<vscale x 1 x i16 >, ptr , i32 , <vscale x 1 x i1 >, i32 )
100
110
101
111
define void @strided_vpstore_nxv1i16 (<vscale x 1 x i16 > %val , ptr %ptr , i32 signext %strided , <vscale x 1 x i1 > %m , i32 zeroext %evl ) {
@@ -132,6 +142,16 @@ define void @strided_vpstore_nxv4i16(<vscale x 4 x i16> %val, ptr %ptr, i32 sign
132
142
ret void
133
143
}
134
144
145
+ define void @strided_vpstore_nxv4i16_unit_stride (<vscale x 4 x i16 > %val , ptr %ptr , <vscale x 4 x i1 > %m , i32 zeroext %evl ) {
146
+ ; CHECK-LABEL: strided_vpstore_nxv4i16_unit_stride:
147
+ ; CHECK: # %bb.0:
148
+ ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
149
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
150
+ ; CHECK-NEXT: ret
151
+ call void @llvm.experimental.vp.strided.store.nxv4i16.p0.i32 (<vscale x 4 x i16 > %val , ptr %ptr , i32 2 , <vscale x 4 x i1 > %m , i32 %evl )
152
+ ret void
153
+ }
154
+
135
155
declare void @llvm.experimental.vp.strided.store.nxv8i16.p0.i32 (<vscale x 8 x i16 >, ptr , i32 , <vscale x 8 x i1 >, i32 )
136
156
137
157
define void @strided_vpstore_nxv8i16 (<vscale x 8 x i16 > %val , ptr %ptr , i32 signext %strided , <vscale x 8 x i1 > %m , i32 zeroext %evl ) {
@@ -180,6 +200,16 @@ define void @strided_vpstore_nxv4i32(<vscale x 4 x i32> %val, ptr %ptr, i32 sign
180
200
ret void
181
201
}
182
202
203
+ define void @strided_vpstore_nxv4i32_unit_stride (<vscale x 4 x i32 > %val , ptr %ptr , <vscale x 4 x i1 > %m , i32 zeroext %evl ) {
204
+ ; CHECK-LABEL: strided_vpstore_nxv4i32_unit_stride:
205
+ ; CHECK: # %bb.0:
206
+ ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
207
+ ; CHECK-NEXT: vse32.v v8, (a0), v0.t
208
+ ; CHECK-NEXT: ret
209
+ call void @llvm.experimental.vp.strided.store.nxv4i32.p0.i32 (<vscale x 4 x i32 > %val , ptr %ptr , i32 4 , <vscale x 4 x i1 > %m , i32 %evl )
210
+ ret void
211
+ }
212
+
183
213
declare void @llvm.experimental.vp.strided.store.nxv8i32.p0.i32 (<vscale x 8 x i32 >, ptr , i32 , <vscale x 8 x i1 >, i32 )
184
214
185
215
define void @strided_vpstore_nxv8i32 (<vscale x 8 x i32 > %val , ptr %ptr , i32 signext %strided , <vscale x 8 x i1 > %m , i32 zeroext %evl ) {
@@ -204,6 +234,16 @@ define void @strided_vpstore_nxv1i64(<vscale x 1 x i64> %val, ptr %ptr, i32 sign
204
234
ret void
205
235
}
206
236
237
+ define void @strided_vpstore_nxv1i64_unit_stride (<vscale x 1 x i64 > %val , ptr %ptr , <vscale x 1 x i1 > %m , i32 zeroext %evl ) {
238
+ ; CHECK-LABEL: strided_vpstore_nxv1i64_unit_stride:
239
+ ; CHECK: # %bb.0:
240
+ ; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma
241
+ ; CHECK-NEXT: vse64.v v8, (a0), v0.t
242
+ ; CHECK-NEXT: ret
243
+ call void @llvm.experimental.vp.strided.store.nxv1i64.p0.i32 (<vscale x 1 x i64 > %val , ptr %ptr , i32 8 , <vscale x 1 x i1 > %m , i32 %evl )
244
+ ret void
245
+ }
246
+
207
247
declare void @llvm.experimental.vp.strided.store.nxv2i64.p0.i32 (<vscale x 2 x i64 >, ptr , i32 , <vscale x 2 x i1 >, i32 )
208
248
209
249
define void @strided_vpstore_nxv2i64 (<vscale x 2 x i64 > %val , ptr %ptr , i32 signext %strided , <vscale x 2 x i1 > %m , i32 zeroext %evl ) {
@@ -276,6 +316,16 @@ define void @strided_vpstore_nxv4f16(<vscale x 4 x half> %val, ptr %ptr, i32 sig
276
316
ret void
277
317
}
278
318
319
+ define void @strided_vpstore_nxv4f16_unit_stride (<vscale x 4 x half > %val , ptr %ptr , <vscale x 4 x i1 > %m , i32 zeroext %evl ) {
320
+ ; CHECK-LABEL: strided_vpstore_nxv4f16_unit_stride:
321
+ ; CHECK: # %bb.0:
322
+ ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
323
+ ; CHECK-NEXT: vse16.v v8, (a0), v0.t
324
+ ; CHECK-NEXT: ret
325
+ call void @llvm.experimental.vp.strided.store.nxv4f16.p0.i32 (<vscale x 4 x half > %val , ptr %ptr , i32 2 , <vscale x 4 x i1 > %m , i32 %evl )
326
+ ret void
327
+ }
328
+
279
329
declare void @llvm.experimental.vp.strided.store.nxv8f16.p0.i32 (<vscale x 8 x half >, ptr , i32 , <vscale x 8 x i1 >, i32 )
280
330
281
331
define void @strided_vpstore_nxv8f16 (<vscale x 8 x half > %val , ptr %ptr , i32 signext %strided , <vscale x 8 x i1 > %m , i32 zeroext %evl ) {
@@ -324,6 +374,16 @@ define void @strided_vpstore_nxv4f32(<vscale x 4 x float> %val, ptr %ptr, i32 si
324
374
ret void
325
375
}
326
376
377
+ define void @strided_vpstore_nxv4f32_unit_stride (<vscale x 4 x float > %val , ptr %ptr , <vscale x 4 x i1 > %m , i32 zeroext %evl ) {
378
+ ; CHECK-LABEL: strided_vpstore_nxv4f32_unit_stride:
379
+ ; CHECK: # %bb.0:
380
+ ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
381
+ ; CHECK-NEXT: vse32.v v8, (a0), v0.t
382
+ ; CHECK-NEXT: ret
383
+ call void @llvm.experimental.vp.strided.store.nxv4f32.p0.i32 (<vscale x 4 x float > %val , ptr %ptr , i32 4 , <vscale x 4 x i1 > %m , i32 %evl )
384
+ ret void
385
+ }
386
+
327
387
declare void @llvm.experimental.vp.strided.store.nxv8f32.p0.i32 (<vscale x 8 x float >, ptr , i32 , <vscale x 8 x i1 >, i32 )
328
388
329
389
define void @strided_vpstore_nxv8f32 (<vscale x 8 x float > %val , ptr %ptr , i32 signext %strided , <vscale x 8 x i1 > %m , i32 zeroext %evl ) {
@@ -348,6 +408,16 @@ define void @strided_vpstore_nxv1f64(<vscale x 1 x double> %val, ptr %ptr, i32 s
348
408
ret void
349
409
}
350
410
411
+ define void @strided_vpstore_nxv1f64_unit_stride (<vscale x 1 x double > %val , ptr %ptr , <vscale x 1 x i1 > %m , i32 zeroext %evl ) {
412
+ ; CHECK-LABEL: strided_vpstore_nxv1f64_unit_stride:
413
+ ; CHECK: # %bb.0:
414
+ ; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma
415
+ ; CHECK-NEXT: vse64.v v8, (a0), v0.t
416
+ ; CHECK-NEXT: ret
417
+ call void @llvm.experimental.vp.strided.store.nxv1f64.p0.i32 (<vscale x 1 x double > %val , ptr %ptr , i32 8 , <vscale x 1 x i1 > %m , i32 %evl )
418
+ ret void
419
+ }
420
+
351
421
declare void @llvm.experimental.vp.strided.store.nxv2f64.p0.i32 (<vscale x 2 x double >, ptr , i32 , <vscale x 2 x i1 >, i32 )
352
422
353
423
define void @strided_vpstore_nxv2f64 (<vscale x 2 x double > %val , ptr %ptr , i32 signext %strided , <vscale x 2 x i1 > %m , i32 zeroext %evl ) {
@@ -427,10 +497,10 @@ define void @strided_store_nxv16f64(<vscale x 16 x double> %v, ptr %ptr, i32 sig
427
497
; CHECK: # %bb.0:
428
498
; CHECK-NEXT: csrr a3, vlenb
429
499
; CHECK-NEXT: mv a4, a2
430
- ; CHECK-NEXT: bltu a2, a3, .LBB34_2
500
+ ; CHECK-NEXT: bltu a2, a3, .LBB41_2
431
501
; CHECK-NEXT: # %bb.1:
432
502
; CHECK-NEXT: mv a4, a3
433
- ; CHECK-NEXT: .LBB34_2 :
503
+ ; CHECK-NEXT: .LBB41_2 :
434
504
; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma
435
505
; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t
436
506
; CHECK-NEXT: sub a5, a2, a3
@@ -454,10 +524,10 @@ define void @strided_store_nxv16f64_allones_mask(<vscale x 16 x double> %v, ptr
454
524
; CHECK: # %bb.0:
455
525
; CHECK-NEXT: csrr a3, vlenb
456
526
; CHECK-NEXT: mv a4, a2
457
- ; CHECK-NEXT: bltu a2, a3, .LBB35_2
527
+ ; CHECK-NEXT: bltu a2, a3, .LBB42_2
458
528
; CHECK-NEXT: # %bb.1:
459
529
; CHECK-NEXT: mv a4, a3
460
- ; CHECK-NEXT: .LBB35_2 :
530
+ ; CHECK-NEXT: .LBB42_2 :
461
531
; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma
462
532
; CHECK-NEXT: vsse64.v v8, (a0), a1
463
533
; CHECK-NEXT: sub a3, a2, a3
@@ -485,15 +555,15 @@ define void @strided_store_nxv17f64(<vscale x 17 x double> %v, ptr %ptr, i32 sig
485
555
; CHECK-NEXT: slli a6, a4, 1
486
556
; CHECK-NEXT: vmv1r.v v24, v0
487
557
; CHECK-NEXT: mv a5, a3
488
- ; CHECK-NEXT: bltu a3, a6, .LBB36_2
558
+ ; CHECK-NEXT: bltu a3, a6, .LBB43_2
489
559
; CHECK-NEXT: # %bb.1:
490
560
; CHECK-NEXT: mv a5, a6
491
- ; CHECK-NEXT: .LBB36_2 :
561
+ ; CHECK-NEXT: .LBB43_2 :
492
562
; CHECK-NEXT: mv a7, a5
493
- ; CHECK-NEXT: bltu a5, a4, .LBB36_4
563
+ ; CHECK-NEXT: bltu a5, a4, .LBB43_4
494
564
; CHECK-NEXT: # %bb.3:
495
565
; CHECK-NEXT: mv a7, a4
496
- ; CHECK-NEXT: .LBB36_4 :
566
+ ; CHECK-NEXT: .LBB43_4 :
497
567
; CHECK-NEXT: addi sp, sp, -16
498
568
; CHECK-NEXT: .cfi_def_cfa_offset 16
499
569
; CHECK-NEXT: csrr t0, vlenb
@@ -521,10 +591,10 @@ define void @strided_store_nxv17f64(<vscale x 17 x double> %v, ptr %ptr, i32 sig
521
591
; CHECK-NEXT: addi a3, a3, -1
522
592
; CHECK-NEXT: and a0, a3, a0
523
593
; CHECK-NEXT: vsse64.v v16, (a7), a2, v0.t
524
- ; CHECK-NEXT: bltu a0, a4, .LBB36_6
594
+ ; CHECK-NEXT: bltu a0, a4, .LBB43_6
525
595
; CHECK-NEXT: # %bb.5:
526
596
; CHECK-NEXT: mv a0, a4
527
- ; CHECK-NEXT: .LBB36_6 :
597
+ ; CHECK-NEXT: .LBB43_6 :
528
598
; CHECK-NEXT: mul a3, a5, a2
529
599
; CHECK-NEXT: add a1, a1, a3
530
600
; CHECK-NEXT: srli a4, a4, 2
0 commit comments