You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/vp-vector-interleaved-access.ll
+11-16Lines changed: 11 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ define {<vscale x 2 x i32>, <vscale x 2 x i32>} @load_factor2_v2(ptr %ptr, i32 %
16
16
; RV64-NEXT: vsetvli zero, a1, e32, m1, ta, ma
17
17
; RV64-NEXT: vlseg2e32.v v8, (a0)
18
18
; RV64-NEXT: ret
19
-
%wide.masked.load = call <vscale x 4 x i32> @llvm.vp.load.nxv4i32.p0(ptr%ptr, <vscale x 4 x i1> shufflevector (<vscale x 4 x i1> insertelement (<vscale x 4 x i1> poison, i1true, i320), <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer), i32%rvl)
19
+
%wide.masked.load = call <vscale x 4 x i32> @llvm.vp.load.nxv4i32.p0(ptr%ptr, <vscale x 4 x i1> splat (i1true), i32%rvl)
20
20
%deinterleaved.results = call { <vscale x 2 x i32>, <vscale x 2 x i32> } @llvm.vector.deinterleave2.nxv4i32(<vscale x 4 x i32> %wide.masked.load)
21
21
%t0 = extractvalue { <vscale x 2 x i32>, <vscale x 2 x i32> } %deinterleaved.results, 0
22
22
%t1 = extractvalue { <vscale x 2 x i32>, <vscale x 2 x i32> } %deinterleaved.results, 1
@@ -39,7 +39,7 @@ define {<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2
39
39
; RV64-NEXT: vsetvli zero, a1, e32, m1, ta, ma
40
40
; RV64-NEXT: vlseg4e32.v v8, (a0)
41
41
; RV64-NEXT: ret
42
-
%wide.masked.load = call <vscale x 8 x i32> @llvm.vp.load.nxv8i32.p0(ptr%ptr, <vscale x 8 x i1> shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1true, i320), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer), i32%rvl)
42
+
%wide.masked.load = call <vscale x 8 x i32> @llvm.vp.load.nxv8i32.p0(ptr%ptr, <vscale x 8 x i1> splat (i1true), i32%rvl)
43
43
%d0 = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.vector.deinterleave2.nxv8i32(<vscale x 8 x i32> %wide.masked.load)
44
44
%d0.0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %d0, 0
45
45
%d0.1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %d0, 1
@@ -71,7 +71,7 @@ define {<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2
71
71
; RV64-NEXT: vsetvli zero, a1, e32, m1, ta, ma
72
72
; RV64-NEXT: vlseg8e32.v v8, (a0)
73
73
; RV64-NEXT: ret
74
-
%wide.masked.load = call <vscale x 16 x i32> @llvm.vp.load.nxv16i32.p0(ptr%ptr, <vscale x 16 x i1> shufflevector (<vscale x 16 x i1> insertelement (<vscale x 16 x i1> poison, i1true, i320), <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer), i32%rvl)
74
+
%wide.masked.load = call <vscale x 16 x i32> @llvm.vp.load.nxv16i32.p0(ptr%ptr, <vscale x 16 x i1> splat (i1true), i32%rvl)
75
75
%d0 = call { <vscale x 8 x i32>, <vscale x 8 x i32> } @llvm.vector.deinterleave2.nxv16i32(<vscale x 16 x i32> %wide.masked.load)
76
76
%d0.0 = extractvalue { <vscale x 8 x i32>, <vscale x 8 x i32> } %d0, 0
77
77
%d0.1 = extractvalue { <vscale x 8 x i32>, <vscale x 8 x i32> } %d0, 1
@@ -121,7 +121,7 @@ define void @store_factor2_v2(<vscale x 1 x i32> %v0, <vscale x 1 x i32> %v1, pt
121
121
; RV64-NEXT: vsseg2e32.v v8, (a0)
122
122
; RV64-NEXT: ret
123
123
%interleaved.vec = call <vscale x 2 x i32> @llvm.vector.interleave2.nxv2i32(<vscale x 1 x i32> %v0, <vscale x 1 x i32> %v1)
124
-
callvoid@llvm.vp.store.nxv2i32.p0(<vscale x 2 x i32> %interleaved.vec, ptr%ptr, <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1true, i320), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer), i32%rvl)
124
+
callvoid@llvm.vp.store.nxv2i32.p0(<vscale x 2 x i32> %interleaved.vec, ptr%ptr, <vscale x 2 x i1> splat (i1true), i32%rvl)
%interleave2 = call <vscale x 16 x i32> @llvm.vector.interleave2.nxv16i32(
160
-
<vscale x 8 x i32> shufflevector (<vscale x 8 x i32> insertelement (<vscale x 8 x i32> poison, i32666, i640), <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer),
161
-
<vscale x 8 x i32> shufflevector (<vscale x 8 x i32> insertelement (<vscale x 8 x i32> poison, i32777, i640), <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer)
162
-
)
163
-
callvoid@llvm.vp.store.nxv16i32.p0(<vscale x 16 x i32> %interleave2, ptr%dst,
164
-
<vscale x 16 x i1> shufflevector (<vscale x 16 x i1> insertelement (<vscale x 16 x i1> poison, i11, i640), <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer),
165
-
i3287)
159
+
%interleave2 = call <vscale x 16 x i32> @llvm.vector.interleave2.nxv16i32(<vscale x 8 x i32> splat (i32666), <vscale x 8 x i32> splat (i32777))
160
+
callvoid@llvm.vp.store.nxv16i32.p0(<vscale x 16 x i32> %interleave2, ptr%dst, <vscale x 16 x i1> splat (i1true), i3287)
166
161
retvoid
167
162
}
168
163
@@ -187,7 +182,7 @@ define void @store_factor4_v2(<vscale x 1 x i32> %v0, <vscale x 1 x i32> %v1, pt
187
182
%interleaved.vec0 = call <vscale x 2 x i32> @llvm.vector.interleave2.nxv2i32(<vscale x 1 x i32> %v0, <vscale x 1 x i32> %v0)
188
183
%interleaved.vec1 = call <vscale x 2 x i32> @llvm.vector.interleave2.nxv2i32(<vscale x 1 x i32> %v1, <vscale x 1 x i32> %v1)
189
184
%interleaved.vec2 = call <vscale x 4 x i32> @llvm.vector.interleave2.nxv4i32(<vscale x 2 x i32> %interleaved.vec0, <vscale x 2 x i32> %interleaved.vec1)
190
-
callvoid@llvm.vp.store.nxv4i32.p0(<vscale x 4 x i32> %interleaved.vec2, ptr%ptr, <vscale x 4 x i1> shufflevector (<vscale x 4 x i1> insertelement (<vscale x 4 x i1> poison, i1true, i320), <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer), i32%rvl)
185
+
callvoid@llvm.vp.store.nxv4i32.p0(<vscale x 4 x i32> %interleaved.vec2, ptr%ptr, <vscale x 4 x i1> splat (i1true), i32%rvl)
191
186
retvoid
192
187
}
193
188
@@ -224,7 +219,7 @@ define void @store_factor8_v2(<vscale x 1 x i32> %v0, <vscale x 1 x i32> %v1, pt
224
219
%interleaved.vec4 = call <vscale x 2 x i32> @llvm.vector.interleave2.nxv2i32(<vscale x 1 x i32> %v1, <vscale x 1 x i32> %v1)
225
220
%interleaved.vec5 = call <vscale x 4 x i32> @llvm.vector.interleave2.nxv4i32(<vscale x 2 x i32> %interleaved.vec3, <vscale x 2 x i32> %interleaved.vec4)
226
221
%interleaved.vec6 = call <vscale x 8 x i32> @llvm.vector.interleave2.nxv8i32(<vscale x 4 x i32> %interleaved.vec2, <vscale x 4 x i32> %interleaved.vec5)
227
-
callvoid@llvm.vp.store.nxv8i32.p0(<vscale x 8 x i32> %interleaved.vec6, ptr%ptr, <vscale x 8 x i1> shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1true, i320), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer), i32%rvl)
222
+
callvoid@llvm.vp.store.nxv8i32.p0(<vscale x 8 x i32> %interleaved.vec6, ptr%ptr, <vscale x 8 x i1> splat (i1true), i32%rvl)
228
223
retvoid
229
224
}
230
225
@@ -489,7 +484,7 @@ define {<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2
489
484
; RV64-NEXT: vmv.v.v v10, v9
490
485
; RV64-NEXT: vmv.v.v v11, v9
491
486
; RV64-NEXT: ret
492
-
%wide.masked.load = call <vscale x 8 x i32> @llvm.vp.load.nxv8i32.p0(ptr%ptr, <vscale x 8 x i1> shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1true, i320), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer), i32%rvl)
487
+
%wide.masked.load = call <vscale x 8 x i32> @llvm.vp.load.nxv8i32.p0(ptr%ptr, <vscale x 8 x i1> splat (i1true), i32%rvl)
493
488
%d0 = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.vector.deinterleave2.nxv8i32(<vscale x 8 x i32> %wide.masked.load)
494
489
%d0.0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %d0, 0
495
490
%d0.1 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %d0, 0
@@ -542,7 +537,7 @@ define {<vscale x 4 x i32>, <vscale x 2 x i32>, <vscale x 1 x i32>, <vscale x 1
542
537
; RV64-NEXT: vnsrl.wx v12, v11, a0
543
538
; RV64-NEXT: vnsrl.wi v11, v11, 0
544
539
; RV64-NEXT: ret
545
-
%wide.masked.load = call <vscale x 8 x i32> @llvm.vp.load.nxv8i32.p0(ptr%ptr, <vscale x 8 x i1> shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1true, i320), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer), i32%rvl)
540
+
%wide.masked.load = call <vscale x 8 x i32> @llvm.vp.load.nxv8i32.p0(ptr%ptr, <vscale x 8 x i1> splat (i1true), i32%rvl)
546
541
%d0 = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.vector.deinterleave2.nxv8i32(<vscale x 8 x i32> %wide.masked.load)
547
542
%d0.0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %d0, 0
548
543
%t0 = extractvalue { <vscale x 4 x i32>, <vscale x 4 x i32> } %d0, 1
@@ -611,7 +606,7 @@ define void @not_balanced_store_tree(<vscale x 1 x i32> %v0, <vscale x 2 x i32>
611
606
%interleaved.vec0 = call <vscale x 2 x i32> @llvm.vector.interleave2.nxv2i32(<vscale x 1 x i32> %v0, <vscale x 1 x i32> %v0)
612
607
%interleaved.vec1 = call <vscale x 4 x i32> @llvm.vector.interleave2.nxv2i32(<vscale x 2 x i32> %interleaved.vec0, <vscale x 2 x i32> %v1)
613
608
%interleaved.vec2 = call <vscale x 8 x i32> @llvm.vector.interleave2.nxv4i32(<vscale x 4 x i32> %interleaved.vec1, <vscale x 4 x i32> %v2)
614
-
callvoid@llvm.vp.store.nxv8i32.p0(<vscale x 8 x i32> %interleaved.vec2, ptr%ptr, <vscale x 8 x i1> shufflevector (<vscale x 8 x i1> insertelement (<vscale x 8 x i1> poison, i1true, i320), <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer), i32%rvl)
609
+
callvoid@llvm.vp.store.nxv8i32.p0(<vscale x 8 x i32> %interleaved.vec2, ptr%ptr, <vscale x 8 x i1> splat (i1true), i32%rvl)
0 commit comments