1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
5 define <vscale x 1 x i64> @vwsub_vv_nxv1i64(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb) {
6 ; CHECK-LABEL: vwsub_vv_nxv1i64:
8 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
9 ; CHECK-NEXT: vwsub.vv v10, v8, v9
10 ; CHECK-NEXT: vmv1r.v v8, v10
12 %vc = sext <vscale x 1 x i32> %va to <vscale x 1 x i64>
13 %vd = sext <vscale x 1 x i32> %vb to <vscale x 1 x i64>
14 %ve = sub <vscale x 1 x i64> %vc, %vd
15 ret <vscale x 1 x i64> %ve
18 define <vscale x 1 x i64> @vwsubu_vv_nxv1i64(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb) {
19 ; CHECK-LABEL: vwsubu_vv_nxv1i64:
21 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
22 ; CHECK-NEXT: vwsubu.vv v10, v8, v9
23 ; CHECK-NEXT: vmv1r.v v8, v10
25 %vc = zext <vscale x 1 x i32> %va to <vscale x 1 x i64>
26 %vd = zext <vscale x 1 x i32> %vb to <vscale x 1 x i64>
27 %ve = sub <vscale x 1 x i64> %vc, %vd
28 ret <vscale x 1 x i64> %ve
31 define <vscale x 1 x i64> @vwsub_vx_nxv1i64(<vscale x 1 x i32> %va, i32 %b) {
32 ; CHECK-LABEL: vwsub_vx_nxv1i64:
34 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
35 ; CHECK-NEXT: vwsub.vx v9, v8, a0
36 ; CHECK-NEXT: vmv1r.v v8, v9
38 %head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
39 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
40 %vc = sext <vscale x 1 x i32> %va to <vscale x 1 x i64>
41 %vd = sext <vscale x 1 x i32> %splat to <vscale x 1 x i64>
42 %ve = sub <vscale x 1 x i64> %vc, %vd
43 ret <vscale x 1 x i64> %ve
46 define <vscale x 1 x i64> @vwsubu_vx_nxv1i64(<vscale x 1 x i32> %va, i32 %b) {
47 ; CHECK-LABEL: vwsubu_vx_nxv1i64:
49 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
50 ; CHECK-NEXT: vwsubu.vx v9, v8, a0
51 ; CHECK-NEXT: vmv1r.v v8, v9
53 %head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
54 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
55 %vc = zext <vscale x 1 x i32> %va to <vscale x 1 x i64>
56 %vd = zext <vscale x 1 x i32> %splat to <vscale x 1 x i64>
57 %ve = sub <vscale x 1 x i64> %vc, %vd
58 ret <vscale x 1 x i64> %ve
61 define <vscale x 1 x i64> @vwsub_wv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i32> %vb) {
62 ; CHECK-LABEL: vwsub_wv_nxv1i64:
64 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
65 ; CHECK-NEXT: vwsub.wv v8, v8, v9
67 %vc = sext <vscale x 1 x i32> %vb to <vscale x 1 x i64>
68 %vd = sub <vscale x 1 x i64> %va, %vc
69 ret <vscale x 1 x i64> %vd
72 define <vscale x 1 x i64> @vwsubu_wv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i32> %vb) {
73 ; CHECK-LABEL: vwsubu_wv_nxv1i64:
75 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
76 ; CHECK-NEXT: vwsubu.wv v8, v8, v9
78 %vc = zext <vscale x 1 x i32> %vb to <vscale x 1 x i64>
79 %vd = sub <vscale x 1 x i64> %va, %vc
80 ret <vscale x 1 x i64> %vd
83 define <vscale x 1 x i64> @vwsub_wx_nxv1i64(<vscale x 1 x i64> %va, i32 %b) {
84 ; CHECK-LABEL: vwsub_wx_nxv1i64:
86 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
87 ; CHECK-NEXT: vwsub.wx v8, v8, a0
89 %head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
90 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
91 %vb = sext <vscale x 1 x i32> %splat to <vscale x 1 x i64>
92 %vc = sub <vscale x 1 x i64> %va, %vb
93 ret <vscale x 1 x i64> %vc
96 define <vscale x 1 x i64> @vwsubu_wx_nxv1i64(<vscale x 1 x i64> %va, i32 %b) {
97 ; CHECK-LABEL: vwsubu_wx_nxv1i64:
99 ; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, ma
100 ; CHECK-NEXT: vwsubu.wx v8, v8, a0
102 %head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
103 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
104 %vb = zext <vscale x 1 x i32> %splat to <vscale x 1 x i64>
105 %vc = sub <vscale x 1 x i64> %va, %vb
106 ret <vscale x 1 x i64> %vc
109 define <vscale x 2 x i64> @vwsub_vv_nxv2i64(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb) {
110 ; CHECK-LABEL: vwsub_vv_nxv2i64:
112 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
113 ; CHECK-NEXT: vwsub.vv v10, v8, v9
114 ; CHECK-NEXT: vmv2r.v v8, v10
116 %vc = sext <vscale x 2 x i32> %va to <vscale x 2 x i64>
117 %vd = sext <vscale x 2 x i32> %vb to <vscale x 2 x i64>
118 %ve = sub <vscale x 2 x i64> %vc, %vd
119 ret <vscale x 2 x i64> %ve
122 define <vscale x 2 x i64> @vwsubu_vv_nxv2i64(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb) {
123 ; CHECK-LABEL: vwsubu_vv_nxv2i64:
125 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
126 ; CHECK-NEXT: vwsubu.vv v10, v8, v9
127 ; CHECK-NEXT: vmv2r.v v8, v10
129 %vc = zext <vscale x 2 x i32> %va to <vscale x 2 x i64>
130 %vd = zext <vscale x 2 x i32> %vb to <vscale x 2 x i64>
131 %ve = sub <vscale x 2 x i64> %vc, %vd
132 ret <vscale x 2 x i64> %ve
135 define <vscale x 2 x i64> @vwsub_vx_nxv2i64(<vscale x 2 x i32> %va, i32 %b) {
136 ; CHECK-LABEL: vwsub_vx_nxv2i64:
138 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
139 ; CHECK-NEXT: vwsub.vx v10, v8, a0
140 ; CHECK-NEXT: vmv2r.v v8, v10
142 %head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
143 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
144 %vc = sext <vscale x 2 x i32> %va to <vscale x 2 x i64>
145 %vd = sext <vscale x 2 x i32> %splat to <vscale x 2 x i64>
146 %ve = sub <vscale x 2 x i64> %vc, %vd
147 ret <vscale x 2 x i64> %ve
150 define <vscale x 2 x i64> @vwsubu_vx_nxv2i64(<vscale x 2 x i32> %va, i32 %b) {
151 ; CHECK-LABEL: vwsubu_vx_nxv2i64:
153 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
154 ; CHECK-NEXT: vwsubu.vx v10, v8, a0
155 ; CHECK-NEXT: vmv2r.v v8, v10
157 %head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
158 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
159 %vc = zext <vscale x 2 x i32> %va to <vscale x 2 x i64>
160 %vd = zext <vscale x 2 x i32> %splat to <vscale x 2 x i64>
161 %ve = sub <vscale x 2 x i64> %vc, %vd
162 ret <vscale x 2 x i64> %ve
165 define <vscale x 2 x i64> @vwsub_wv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i32> %vb) {
166 ; CHECK-LABEL: vwsub_wv_nxv2i64:
168 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
169 ; CHECK-NEXT: vwsub.wv v8, v8, v10
171 %vc = sext <vscale x 2 x i32> %vb to <vscale x 2 x i64>
172 %vd = sub <vscale x 2 x i64> %va, %vc
173 ret <vscale x 2 x i64> %vd
176 define <vscale x 2 x i64> @vwsubu_wv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i32> %vb) {
177 ; CHECK-LABEL: vwsubu_wv_nxv2i64:
179 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
180 ; CHECK-NEXT: vwsubu.wv v8, v8, v10
182 %vc = zext <vscale x 2 x i32> %vb to <vscale x 2 x i64>
183 %vd = sub <vscale x 2 x i64> %va, %vc
184 ret <vscale x 2 x i64> %vd
187 define <vscale x 2 x i64> @vwsub_wx_nxv2i64(<vscale x 2 x i64> %va, i32 %b) {
188 ; CHECK-LABEL: vwsub_wx_nxv2i64:
190 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
191 ; CHECK-NEXT: vwsub.wx v8, v8, a0
193 %head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
194 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
195 %vb = sext <vscale x 2 x i32> %splat to <vscale x 2 x i64>
196 %vc = sub <vscale x 2 x i64> %va, %vb
197 ret <vscale x 2 x i64> %vc
200 define <vscale x 2 x i64> @vwsubu_wx_nxv2i64(<vscale x 2 x i64> %va, i32 %b) {
201 ; CHECK-LABEL: vwsubu_wx_nxv2i64:
203 ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
204 ; CHECK-NEXT: vwsubu.wx v8, v8, a0
206 %head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
207 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
208 %vb = zext <vscale x 2 x i32> %splat to <vscale x 2 x i64>
209 %vc = sub <vscale x 2 x i64> %va, %vb
210 ret <vscale x 2 x i64> %vc
213 define <vscale x 4 x i64> @vwsub_vv_nxv4i64(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb) {
214 ; CHECK-LABEL: vwsub_vv_nxv4i64:
216 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
217 ; CHECK-NEXT: vwsub.vv v12, v8, v10
218 ; CHECK-NEXT: vmv4r.v v8, v12
220 %vc = sext <vscale x 4 x i32> %va to <vscale x 4 x i64>
221 %vd = sext <vscale x 4 x i32> %vb to <vscale x 4 x i64>
222 %ve = sub <vscale x 4 x i64> %vc, %vd
223 ret <vscale x 4 x i64> %ve
226 define <vscale x 4 x i64> @vwsubu_vv_nxv4i64(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb) {
227 ; CHECK-LABEL: vwsubu_vv_nxv4i64:
229 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
230 ; CHECK-NEXT: vwsubu.vv v12, v8, v10
231 ; CHECK-NEXT: vmv4r.v v8, v12
233 %vc = zext <vscale x 4 x i32> %va to <vscale x 4 x i64>
234 %vd = zext <vscale x 4 x i32> %vb to <vscale x 4 x i64>
235 %ve = sub <vscale x 4 x i64> %vc, %vd
236 ret <vscale x 4 x i64> %ve
239 define <vscale x 4 x i64> @vwsub_vx_nxv4i64(<vscale x 4 x i32> %va, i32 %b) {
240 ; CHECK-LABEL: vwsub_vx_nxv4i64:
242 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
243 ; CHECK-NEXT: vwsub.vx v12, v8, a0
244 ; CHECK-NEXT: vmv4r.v v8, v12
246 %head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
247 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
248 %vc = sext <vscale x 4 x i32> %va to <vscale x 4 x i64>
249 %vd = sext <vscale x 4 x i32> %splat to <vscale x 4 x i64>
250 %ve = sub <vscale x 4 x i64> %vc, %vd
251 ret <vscale x 4 x i64> %ve
254 define <vscale x 4 x i64> @vwsubu_vx_nxv4i64(<vscale x 4 x i32> %va, i32 %b) {
255 ; CHECK-LABEL: vwsubu_vx_nxv4i64:
257 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
258 ; CHECK-NEXT: vwsubu.vx v12, v8, a0
259 ; CHECK-NEXT: vmv4r.v v8, v12
261 %head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
262 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
263 %vc = zext <vscale x 4 x i32> %va to <vscale x 4 x i64>
264 %vd = zext <vscale x 4 x i32> %splat to <vscale x 4 x i64>
265 %ve = sub <vscale x 4 x i64> %vc, %vd
266 ret <vscale x 4 x i64> %ve
269 define <vscale x 4 x i64> @vwsub_wv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i32> %vb) {
270 ; CHECK-LABEL: vwsub_wv_nxv4i64:
272 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
273 ; CHECK-NEXT: vwsub.wv v8, v8, v12
275 %vc = sext <vscale x 4 x i32> %vb to <vscale x 4 x i64>
276 %vd = sub <vscale x 4 x i64> %va, %vc
277 ret <vscale x 4 x i64> %vd
280 define <vscale x 4 x i64> @vwsubu_wv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i32> %vb) {
281 ; CHECK-LABEL: vwsubu_wv_nxv4i64:
283 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
284 ; CHECK-NEXT: vwsubu.wv v8, v8, v12
286 %vc = zext <vscale x 4 x i32> %vb to <vscale x 4 x i64>
287 %vd = sub <vscale x 4 x i64> %va, %vc
288 ret <vscale x 4 x i64> %vd
291 define <vscale x 4 x i64> @vwsub_wx_nxv4i64(<vscale x 4 x i64> %va, i32 %b) {
292 ; CHECK-LABEL: vwsub_wx_nxv4i64:
294 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
295 ; CHECK-NEXT: vwsub.wx v8, v8, a0
297 %head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
298 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
299 %vb = sext <vscale x 4 x i32> %splat to <vscale x 4 x i64>
300 %vc = sub <vscale x 4 x i64> %va, %vb
301 ret <vscale x 4 x i64> %vc
304 define <vscale x 4 x i64> @vwsubu_wx_nxv4i64(<vscale x 4 x i64> %va, i32 %b) {
305 ; CHECK-LABEL: vwsubu_wx_nxv4i64:
307 ; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
308 ; CHECK-NEXT: vwsubu.wx v8, v8, a0
310 %head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
311 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
312 %vb = zext <vscale x 4 x i32> %splat to <vscale x 4 x i64>
313 %vc = sub <vscale x 4 x i64> %va, %vb
314 ret <vscale x 4 x i64> %vc
317 define <vscale x 8 x i64> @vwsub_vv_nxv8i64(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {
318 ; CHECK-LABEL: vwsub_vv_nxv8i64:
320 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
321 ; CHECK-NEXT: vwsub.vv v16, v8, v12
322 ; CHECK-NEXT: vmv8r.v v8, v16
324 %vc = sext <vscale x 8 x i32> %va to <vscale x 8 x i64>
325 %vd = sext <vscale x 8 x i32> %vb to <vscale x 8 x i64>
326 %ve = sub <vscale x 8 x i64> %vc, %vd
327 ret <vscale x 8 x i64> %ve
330 define <vscale x 8 x i64> @vwsubu_vv_nxv8i64(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb) {
331 ; CHECK-LABEL: vwsubu_vv_nxv8i64:
333 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
334 ; CHECK-NEXT: vwsubu.vv v16, v8, v12
335 ; CHECK-NEXT: vmv8r.v v8, v16
337 %vc = zext <vscale x 8 x i32> %va to <vscale x 8 x i64>
338 %vd = zext <vscale x 8 x i32> %vb to <vscale x 8 x i64>
339 %ve = sub <vscale x 8 x i64> %vc, %vd
340 ret <vscale x 8 x i64> %ve
343 define <vscale x 8 x i64> @vwsub_vx_nxv8i64(<vscale x 8 x i32> %va, i32 %b) {
344 ; CHECK-LABEL: vwsub_vx_nxv8i64:
346 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
347 ; CHECK-NEXT: vwsub.vx v16, v8, a0
348 ; CHECK-NEXT: vmv8r.v v8, v16
350 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
351 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
352 %vc = sext <vscale x 8 x i32> %va to <vscale x 8 x i64>
353 %vd = sext <vscale x 8 x i32> %splat to <vscale x 8 x i64>
354 %ve = sub <vscale x 8 x i64> %vc, %vd
355 ret <vscale x 8 x i64> %ve
358 define <vscale x 8 x i64> @vwsubu_vx_nxv8i64(<vscale x 8 x i32> %va, i32 %b) {
359 ; CHECK-LABEL: vwsubu_vx_nxv8i64:
361 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
362 ; CHECK-NEXT: vwsubu.vx v16, v8, a0
363 ; CHECK-NEXT: vmv8r.v v8, v16
365 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
366 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
367 %vc = zext <vscale x 8 x i32> %va to <vscale x 8 x i64>
368 %vd = zext <vscale x 8 x i32> %splat to <vscale x 8 x i64>
369 %ve = sub <vscale x 8 x i64> %vc, %vd
370 ret <vscale x 8 x i64> %ve
373 define <vscale x 8 x i64> @vwsub_wv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i32> %vb) {
374 ; CHECK-LABEL: vwsub_wv_nxv8i64:
376 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
377 ; CHECK-NEXT: vwsub.wv v8, v8, v16
379 %vc = sext <vscale x 8 x i32> %vb to <vscale x 8 x i64>
380 %vd = sub <vscale x 8 x i64> %va, %vc
381 ret <vscale x 8 x i64> %vd
384 define <vscale x 8 x i64> @vwsubu_wv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i32> %vb) {
385 ; CHECK-LABEL: vwsubu_wv_nxv8i64:
387 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
388 ; CHECK-NEXT: vwsubu.wv v8, v8, v16
390 %vc = zext <vscale x 8 x i32> %vb to <vscale x 8 x i64>
391 %vd = sub <vscale x 8 x i64> %va, %vc
392 ret <vscale x 8 x i64> %vd
395 define <vscale x 8 x i64> @vwsub_wx_nxv8i64(<vscale x 8 x i64> %va, i32 %b) {
396 ; CHECK-LABEL: vwsub_wx_nxv8i64:
398 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
399 ; CHECK-NEXT: vwsub.wx v8, v8, a0
401 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
402 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
403 %vb = sext <vscale x 8 x i32> %splat to <vscale x 8 x i64>
404 %vc = sub <vscale x 8 x i64> %va, %vb
405 ret <vscale x 8 x i64> %vc
408 define <vscale x 8 x i64> @vwsubu_wx_nxv8i64(<vscale x 8 x i64> %va, i32 %b) {
409 ; CHECK-LABEL: vwsubu_wx_nxv8i64:
411 ; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, ma
412 ; CHECK-NEXT: vwsubu.wx v8, v8, a0
414 %head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
415 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
416 %vb = zext <vscale x 8 x i32> %splat to <vscale x 8 x i64>
417 %vc = sub <vscale x 8 x i64> %va, %vb
418 ret <vscale x 8 x i64> %vc