1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v,+m -target-abi=ilp32d \
3 ; RUN: -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v,+m -target-abi=lp64d \
5 ; RUN: -verify-machineinstrs < %s | FileCheck %s
7 declare <2 x half> @llvm.vp.fma.v2f16(<2 x half>, <2 x half>, <2 x half>, <2 x i1>, i32)
8 declare <2 x half> @llvm.vp.fneg.v2f16(<2 x half>, <2 x i1>, i32)
9 declare <2 x half> @llvm.vp.merge.v2f16(<2 x i1>, <2 x half>, <2 x half>, i32)
10 declare <2 x half> @llvm.vp.select.v2f16(<2 x i1>, <2 x half>, <2 x half>, i32)
12 define <2 x half> @vfmacc_vv_v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
13 ; CHECK-LABEL: vfmacc_vv_v2f16:
15 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, mu
16 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
17 ; CHECK-NEXT: vmv1r.v v8, v10
19 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
20 %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)
24 define <2 x half> @vfmacc_vv_v2f16_unmasked(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
25 ; CHECK-LABEL: vfmacc_vv_v2f16_unmasked:
27 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
28 ; CHECK-NEXT: vfmacc.vv v10, v8, v9
29 ; CHECK-NEXT: vmv1r.v v8, v10
31 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
32 %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> splat (i1 -1), <2 x half> %v, <2 x half> %c, i32 %evl)
36 define <2 x half> @vfmacc_vf_v2f16(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
37 ; CHECK-LABEL: vfmacc_vf_v2f16:
39 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, mu
40 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
41 ; CHECK-NEXT: vmv1r.v v8, v9
43 %elt.head = insertelement <2 x half> poison, half %b, i32 0
44 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
45 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
46 %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)
50 define <2 x half> @vfmacc_vf_v2f16_commute(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
51 ; CHECK-LABEL: vfmacc_vf_v2f16_commute:
53 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, mu
54 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
55 ; CHECK-NEXT: vmv1r.v v8, v9
57 %elt.head = insertelement <2 x half> poison, half %b, i32 0
58 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
59 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %vb, <2 x half> %va, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
60 %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)
64 define <2 x half> @vfmacc_vf_v2f16_unmasked(<2 x half> %va, half %b, <2 x half> %c, i32 zeroext %evl) {
65 ; CHECK-LABEL: vfmacc_vf_v2f16_unmasked:
67 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
68 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8
69 ; CHECK-NEXT: vmv1r.v v8, v9
71 %elt.head = insertelement <2 x half> poison, half %b, i32 0
72 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
73 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
74 %u = call <2 x half> @llvm.vp.merge.v2f16(<2 x i1> splat (i1 -1), <2 x half> %v, <2 x half> %c, i32 %evl)
78 define <2 x half> @vfmacc_vv_v2f16_ta(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
79 ; CHECK-LABEL: vfmacc_vv_v2f16_ta:
81 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu
82 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
83 ; CHECK-NEXT: vmv1r.v v8, v10
85 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %a, <2 x half> %b, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
86 %u = call <2 x half> @llvm.vp.select.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)
90 define <2 x half> @vfmacc_vf_v2f16_ta(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
91 ; CHECK-LABEL: vfmacc_vf_v2f16_ta:
93 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu
94 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
95 ; CHECK-NEXT: vmv1r.v v8, v9
97 %elt.head = insertelement <2 x half> poison, half %b, i32 0
98 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
99 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %va, <2 x half> %vb, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
100 %u = call <2 x half> @llvm.vp.select.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)
104 define <2 x half> @vfmacc_vf_v2f16_commute_ta(<2 x half> %va, half %b, <2 x half> %c, <2 x i1> %m, i32 zeroext %evl) {
105 ; CHECK-LABEL: vfmacc_vf_v2f16_commute_ta:
107 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu
108 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
109 ; CHECK-NEXT: vmv1r.v v8, v9
111 %elt.head = insertelement <2 x half> poison, half %b, i32 0
112 %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
113 %v = call <2 x half> @llvm.vp.fma.v2f16(<2 x half> %vb, <2 x half> %va, <2 x half> %c, <2 x i1> splat (i1 -1), i32 %evl)
114 %u = call <2 x half> @llvm.vp.select.v2f16(<2 x i1> %m, <2 x half> %v, <2 x half> %c, i32 %evl)
118 declare <4 x half> @llvm.vp.fma.v4f16(<4 x half>, <4 x half>, <4 x half>, <4 x i1>, i32)
119 declare <4 x half> @llvm.vp.fneg.v4f16(<4 x half>, <4 x i1>, i32)
120 declare <4 x half> @llvm.vp.merge.v4f16(<4 x i1>, <4 x half>, <4 x half>, i32)
121 declare <4 x half> @llvm.vp.select.v4f16(<4 x i1>, <4 x half>, <4 x half>, i32)
123 define <4 x half> @vfmacc_vv_v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
124 ; CHECK-LABEL: vfmacc_vv_v4f16:
126 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, mu
127 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
128 ; CHECK-NEXT: vmv1r.v v8, v10
130 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
131 %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)
135 define <4 x half> @vfmacc_vv_v4f16_unmasked(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
136 ; CHECK-LABEL: vfmacc_vv_v4f16_unmasked:
138 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
139 ; CHECK-NEXT: vfmacc.vv v10, v8, v9
140 ; CHECK-NEXT: vmv1r.v v8, v10
142 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
143 %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> splat (i1 -1), <4 x half> %v, <4 x half> %c, i32 %evl)
147 define <4 x half> @vfmacc_vf_v4f16(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
148 ; CHECK-LABEL: vfmacc_vf_v4f16:
150 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, mu
151 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
152 ; CHECK-NEXT: vmv1r.v v8, v9
154 %elt.head = insertelement <4 x half> poison, half %b, i32 0
155 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
156 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
157 %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)
161 define <4 x half> @vfmacc_vf_v4f16_commute(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
162 ; CHECK-LABEL: vfmacc_vf_v4f16_commute:
164 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, mu
165 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
166 ; CHECK-NEXT: vmv1r.v v8, v9
168 %elt.head = insertelement <4 x half> poison, half %b, i32 0
169 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
170 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %vb, <4 x half> %va, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
171 %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)
175 define <4 x half> @vfmacc_vf_v4f16_unmasked(<4 x half> %va, half %b, <4 x half> %c, i32 zeroext %evl) {
176 ; CHECK-LABEL: vfmacc_vf_v4f16_unmasked:
178 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
179 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8
180 ; CHECK-NEXT: vmv1r.v v8, v9
182 %elt.head = insertelement <4 x half> poison, half %b, i32 0
183 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
184 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
185 %u = call <4 x half> @llvm.vp.merge.v4f16(<4 x i1> splat (i1 -1), <4 x half> %v, <4 x half> %c, i32 %evl)
189 define <4 x half> @vfmacc_vv_v4f16_ta(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
190 ; CHECK-LABEL: vfmacc_vv_v4f16_ta:
192 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu
193 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
194 ; CHECK-NEXT: vmv1r.v v8, v10
196 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %a, <4 x half> %b, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
197 %u = call <4 x half> @llvm.vp.select.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)
201 define <4 x half> @vfmacc_vf_v4f16_ta(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
202 ; CHECK-LABEL: vfmacc_vf_v4f16_ta:
204 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu
205 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
206 ; CHECK-NEXT: vmv1r.v v8, v9
208 %elt.head = insertelement <4 x half> poison, half %b, i32 0
209 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
210 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %va, <4 x half> %vb, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
211 %u = call <4 x half> @llvm.vp.select.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)
215 define <4 x half> @vfmacc_vf_v4f16_commute_ta(<4 x half> %va, half %b, <4 x half> %c, <4 x i1> %m, i32 zeroext %evl) {
216 ; CHECK-LABEL: vfmacc_vf_v4f16_commute_ta:
218 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu
219 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
220 ; CHECK-NEXT: vmv1r.v v8, v9
222 %elt.head = insertelement <4 x half> poison, half %b, i32 0
223 %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
224 %v = call <4 x half> @llvm.vp.fma.v4f16(<4 x half> %vb, <4 x half> %va, <4 x half> %c, <4 x i1> splat (i1 -1), i32 %evl)
225 %u = call <4 x half> @llvm.vp.select.v4f16(<4 x i1> %m, <4 x half> %v, <4 x half> %c, i32 %evl)
229 declare <8 x half> @llvm.vp.fma.v8f16(<8 x half>, <8 x half>, <8 x half>, <8 x i1>, i32)
230 declare <8 x half> @llvm.vp.fneg.v8f16(<8 x half>, <8 x i1>, i32)
231 declare <8 x half> @llvm.vp.merge.v8f16(<8 x i1>, <8 x half>, <8 x half>, i32)
232 declare <8 x half> @llvm.vp.select.v8f16(<8 x i1>, <8 x half>, <8 x half>, i32)
234 define <8 x half> @vfmacc_vv_v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
235 ; CHECK-LABEL: vfmacc_vv_v8f16:
237 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, mu
238 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
239 ; CHECK-NEXT: vmv1r.v v8, v10
241 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
242 %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)
246 define <8 x half> @vfmacc_vv_v8f16_unmasked(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
247 ; CHECK-LABEL: vfmacc_vv_v8f16_unmasked:
249 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
250 ; CHECK-NEXT: vfmacc.vv v10, v8, v9
251 ; CHECK-NEXT: vmv1r.v v8, v10
253 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
254 %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> splat (i1 -1), <8 x half> %v, <8 x half> %c, i32 %evl)
258 define <8 x half> @vfmacc_vf_v8f16(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
259 ; CHECK-LABEL: vfmacc_vf_v8f16:
261 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, mu
262 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
263 ; CHECK-NEXT: vmv1r.v v8, v9
265 %elt.head = insertelement <8 x half> poison, half %b, i32 0
266 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
267 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
268 %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)
272 define <8 x half> @vfmacc_vf_v8f16_commute(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
273 ; CHECK-LABEL: vfmacc_vf_v8f16_commute:
275 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, mu
276 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
277 ; CHECK-NEXT: vmv1r.v v8, v9
279 %elt.head = insertelement <8 x half> poison, half %b, i32 0
280 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
281 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %vb, <8 x half> %va, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
282 %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)
286 define <8 x half> @vfmacc_vf_v8f16_unmasked(<8 x half> %va, half %b, <8 x half> %c, i32 zeroext %evl) {
287 ; CHECK-LABEL: vfmacc_vf_v8f16_unmasked:
289 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
290 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8
291 ; CHECK-NEXT: vmv1r.v v8, v9
293 %elt.head = insertelement <8 x half> poison, half %b, i32 0
294 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
295 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
296 %u = call <8 x half> @llvm.vp.merge.v8f16(<8 x i1> splat (i1 -1), <8 x half> %v, <8 x half> %c, i32 %evl)
300 define <8 x half> @vfmacc_vv_v8f16_ta(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
301 ; CHECK-LABEL: vfmacc_vv_v8f16_ta:
303 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu
304 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
305 ; CHECK-NEXT: vmv.v.v v8, v10
307 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %a, <8 x half> %b, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
308 %u = call <8 x half> @llvm.vp.select.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)
312 define <8 x half> @vfmacc_vf_v8f16_ta(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
313 ; CHECK-LABEL: vfmacc_vf_v8f16_ta:
315 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu
316 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
317 ; CHECK-NEXT: vmv.v.v v8, v9
319 %elt.head = insertelement <8 x half> poison, half %b, i32 0
320 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
321 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %va, <8 x half> %vb, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
322 %u = call <8 x half> @llvm.vp.select.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)
326 define <8 x half> @vfmacc_vf_v8f16_commute_ta(<8 x half> %va, half %b, <8 x half> %c, <8 x i1> %m, i32 zeroext %evl) {
327 ; CHECK-LABEL: vfmacc_vf_v8f16_commute_ta:
329 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu
330 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
331 ; CHECK-NEXT: vmv.v.v v8, v9
333 %elt.head = insertelement <8 x half> poison, half %b, i32 0
334 %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
335 %v = call <8 x half> @llvm.vp.fma.v8f16(<8 x half> %vb, <8 x half> %va, <8 x half> %c, <8 x i1> splat (i1 -1), i32 %evl)
336 %u = call <8 x half> @llvm.vp.select.v8f16(<8 x i1> %m, <8 x half> %v, <8 x half> %c, i32 %evl)
340 declare <16 x half> @llvm.vp.fma.v16f16(<16 x half>, <16 x half>, <16 x half>, <16 x i1>, i32)
341 declare <16 x half> @llvm.vp.fneg.v16f16(<16 x half>, <16 x i1>, i32)
342 declare <16 x half> @llvm.vp.merge.v16f16(<16 x i1>, <16 x half>, <16 x half>, i32)
343 declare <16 x half> @llvm.vp.select.v16f16(<16 x i1>, <16 x half>, <16 x half>, i32)
345 define <16 x half> @vfmacc_vv_v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
346 ; CHECK-LABEL: vfmacc_vv_v16f16:
348 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, mu
349 ; CHECK-NEXT: vfmacc.vv v12, v8, v10, v0.t
350 ; CHECK-NEXT: vmv2r.v v8, v12
352 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
353 %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)
357 define <16 x half> @vfmacc_vv_v16f16_unmasked(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
358 ; CHECK-LABEL: vfmacc_vv_v16f16_unmasked:
360 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
361 ; CHECK-NEXT: vfmacc.vv v12, v8, v10
362 ; CHECK-NEXT: vmv2r.v v8, v12
364 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
365 %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> splat (i1 -1), <16 x half> %v, <16 x half> %c, i32 %evl)
369 define <16 x half> @vfmacc_vf_v16f16(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
370 ; CHECK-LABEL: vfmacc_vf_v16f16:
372 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, mu
373 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
374 ; CHECK-NEXT: vmv2r.v v8, v10
376 %elt.head = insertelement <16 x half> poison, half %b, i32 0
377 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
378 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
379 %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)
383 define <16 x half> @vfmacc_vf_v16f16_commute(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
384 ; CHECK-LABEL: vfmacc_vf_v16f16_commute:
386 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, mu
387 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
388 ; CHECK-NEXT: vmv2r.v v8, v10
390 %elt.head = insertelement <16 x half> poison, half %b, i32 0
391 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
392 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %vb, <16 x half> %va, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
393 %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)
397 define <16 x half> @vfmacc_vf_v16f16_unmasked(<16 x half> %va, half %b, <16 x half> %c, i32 zeroext %evl) {
398 ; CHECK-LABEL: vfmacc_vf_v16f16_unmasked:
400 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
401 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8
402 ; CHECK-NEXT: vmv2r.v v8, v10
404 %elt.head = insertelement <16 x half> poison, half %b, i32 0
405 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
406 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
407 %u = call <16 x half> @llvm.vp.merge.v16f16(<16 x i1> splat (i1 -1), <16 x half> %v, <16 x half> %c, i32 %evl)
411 define <16 x half> @vfmacc_vv_v16f16_ta(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
412 ; CHECK-LABEL: vfmacc_vv_v16f16_ta:
414 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu
415 ; CHECK-NEXT: vfmacc.vv v12, v8, v10, v0.t
416 ; CHECK-NEXT: vmv.v.v v8, v12
418 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %a, <16 x half> %b, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
419 %u = call <16 x half> @llvm.vp.select.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)
423 define <16 x half> @vfmacc_vf_v16f16_ta(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
424 ; CHECK-LABEL: vfmacc_vf_v16f16_ta:
426 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu
427 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
428 ; CHECK-NEXT: vmv.v.v v8, v10
430 %elt.head = insertelement <16 x half> poison, half %b, i32 0
431 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
432 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %va, <16 x half> %vb, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
433 %u = call <16 x half> @llvm.vp.select.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)
437 define <16 x half> @vfmacc_vf_v16f16_commute_ta(<16 x half> %va, half %b, <16 x half> %c, <16 x i1> %m, i32 zeroext %evl) {
438 ; CHECK-LABEL: vfmacc_vf_v16f16_commute_ta:
440 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu
441 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
442 ; CHECK-NEXT: vmv.v.v v8, v10
444 %elt.head = insertelement <16 x half> poison, half %b, i32 0
445 %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
446 %v = call <16 x half> @llvm.vp.fma.v16f16(<16 x half> %vb, <16 x half> %va, <16 x half> %c, <16 x i1> splat (i1 -1), i32 %evl)
447 %u = call <16 x half> @llvm.vp.select.v16f16(<16 x i1> %m, <16 x half> %v, <16 x half> %c, i32 %evl)
451 declare <32 x half> @llvm.vp.fma.v32f16(<32 x half>, <32 x half>, <32 x half>, <32 x i1>, i32)
452 declare <32 x half> @llvm.vp.fneg.v32f16(<32 x half>, <32 x i1>, i32)
453 declare <32 x half> @llvm.vp.merge.v32f16(<32 x i1>, <32 x half>, <32 x half>, i32)
454 declare <32 x half> @llvm.vp.select.v32f16(<32 x i1>, <32 x half>, <32 x half>, i32)
456 define <32 x half> @vfmacc_vv_v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
457 ; CHECK-LABEL: vfmacc_vv_v32f16:
459 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, mu
460 ; CHECK-NEXT: vfmacc.vv v16, v8, v12, v0.t
461 ; CHECK-NEXT: vmv4r.v v8, v16
463 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
464 %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)
468 define <32 x half> @vfmacc_vv_v32f16_unmasked(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
469 ; CHECK-LABEL: vfmacc_vv_v32f16_unmasked:
471 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
472 ; CHECK-NEXT: vfmacc.vv v16, v8, v12
473 ; CHECK-NEXT: vmv4r.v v8, v16
475 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
476 %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> splat (i1 -1), <32 x half> %v, <32 x half> %c, i32 %evl)
480 define <32 x half> @vfmacc_vf_v32f16(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
481 ; CHECK-LABEL: vfmacc_vf_v32f16:
483 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, mu
484 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
485 ; CHECK-NEXT: vmv4r.v v8, v12
487 %elt.head = insertelement <32 x half> poison, half %b, i32 0
488 %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer
489 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %va, <32 x half> %vb, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
490 %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)
494 define <32 x half> @vfmacc_vf_v32f16_commute(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
495 ; CHECK-LABEL: vfmacc_vf_v32f16_commute:
497 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, mu
498 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
499 ; CHECK-NEXT: vmv4r.v v8, v12
501 %elt.head = insertelement <32 x half> poison, half %b, i32 0
502 %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer
503 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %vb, <32 x half> %va, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
504 %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)
508 define <32 x half> @vfmacc_vf_v32f16_unmasked(<32 x half> %va, half %b, <32 x half> %c, i32 zeroext %evl) {
509 ; CHECK-LABEL: vfmacc_vf_v32f16_unmasked:
511 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
512 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8
513 ; CHECK-NEXT: vmv4r.v v8, v12
515 %elt.head = insertelement <32 x half> poison, half %b, i32 0
516 %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer
517 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %va, <32 x half> %vb, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
518 %u = call <32 x half> @llvm.vp.merge.v32f16(<32 x i1> splat (i1 -1), <32 x half> %v, <32 x half> %c, i32 %evl)
522 define <32 x half> @vfmacc_vv_v32f16_ta(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
523 ; CHECK-LABEL: vfmacc_vv_v32f16_ta:
525 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu
526 ; CHECK-NEXT: vfmacc.vv v16, v8, v12, v0.t
527 ; CHECK-NEXT: vmv.v.v v8, v16
529 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %a, <32 x half> %b, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
530 %u = call <32 x half> @llvm.vp.select.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)
534 define <32 x half> @vfmacc_vf_v32f16_ta(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
535 ; CHECK-LABEL: vfmacc_vf_v32f16_ta:
537 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu
538 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
539 ; CHECK-NEXT: vmv.v.v v8, v12
541 %elt.head = insertelement <32 x half> poison, half %b, i32 0
542 %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer
543 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %va, <32 x half> %vb, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
544 %u = call <32 x half> @llvm.vp.select.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)
548 define <32 x half> @vfmacc_vf_v32f16_commute_ta(<32 x half> %va, half %b, <32 x half> %c, <32 x i1> %m, i32 zeroext %evl) {
549 ; CHECK-LABEL: vfmacc_vf_v32f16_commute_ta:
551 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu
552 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
553 ; CHECK-NEXT: vmv.v.v v8, v12
555 %elt.head = insertelement <32 x half> poison, half %b, i32 0
556 %vb = shufflevector <32 x half> %elt.head, <32 x half> poison, <32 x i32> zeroinitializer
557 %v = call <32 x half> @llvm.vp.fma.v32f16(<32 x half> %vb, <32 x half> %va, <32 x half> %c, <32 x i1> splat (i1 -1), i32 %evl)
558 %u = call <32 x half> @llvm.vp.select.v32f16(<32 x i1> %m, <32 x half> %v, <32 x half> %c, i32 %evl)
562 declare <2 x float> @llvm.vp.fma.v2f32(<2 x float>, <2 x float>, <2 x float>, <2 x i1>, i32)
563 declare <2 x float> @llvm.vp.fneg.v2f32(<2 x float>, <2 x i1>, i32)
564 declare <2 x float> @llvm.vp.merge.v2f32(<2 x i1>, <2 x float>, <2 x float>, i32)
565 declare <2 x float> @llvm.vp.select.v2f32(<2 x i1>, <2 x float>, <2 x float>, i32)
567 define <2 x float> @vfmacc_vv_v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
568 ; CHECK-LABEL: vfmacc_vv_v2f32:
570 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, mu
571 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
572 ; CHECK-NEXT: vmv1r.v v8, v10
574 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
575 %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)
579 define <2 x float> @vfmacc_vv_v2f32_unmasked(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
580 ; CHECK-LABEL: vfmacc_vv_v2f32_unmasked:
582 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, ma
583 ; CHECK-NEXT: vfmacc.vv v10, v8, v9
584 ; CHECK-NEXT: vmv1r.v v8, v10
586 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
587 %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> splat (i1 -1), <2 x float> %v, <2 x float> %c, i32 %evl)
591 define <2 x float> @vfmacc_vf_v2f32(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
592 ; CHECK-LABEL: vfmacc_vf_v2f32:
594 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, mu
595 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
596 ; CHECK-NEXT: vmv1r.v v8, v9
598 %elt.head = insertelement <2 x float> poison, float %b, i32 0
599 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
600 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
601 %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)
605 define <2 x float> @vfmacc_vf_v2f32_commute(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
606 ; CHECK-LABEL: vfmacc_vf_v2f32_commute:
608 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, mu
609 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
610 ; CHECK-NEXT: vmv1r.v v8, v9
612 %elt.head = insertelement <2 x float> poison, float %b, i32 0
613 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
614 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %vb, <2 x float> %va, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
615 %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)
619 define <2 x float> @vfmacc_vf_v2f32_unmasked(<2 x float> %va, float %b, <2 x float> %c, i32 zeroext %evl) {
620 ; CHECK-LABEL: vfmacc_vf_v2f32_unmasked:
622 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, ma
623 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8
624 ; CHECK-NEXT: vmv1r.v v8, v9
626 %elt.head = insertelement <2 x float> poison, float %b, i32 0
627 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
628 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
629 %u = call <2 x float> @llvm.vp.merge.v2f32(<2 x i1> splat (i1 -1), <2 x float> %v, <2 x float> %c, i32 %evl)
633 define <2 x float> @vfmacc_vv_v2f32_ta(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
634 ; CHECK-LABEL: vfmacc_vv_v2f32_ta:
636 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
637 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
638 ; CHECK-NEXT: vmv1r.v v8, v10
640 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %a, <2 x float> %b, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
641 %u = call <2 x float> @llvm.vp.select.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)
645 define <2 x float> @vfmacc_vf_v2f32_ta(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
646 ; CHECK-LABEL: vfmacc_vf_v2f32_ta:
648 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
649 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
650 ; CHECK-NEXT: vmv1r.v v8, v9
652 %elt.head = insertelement <2 x float> poison, float %b, i32 0
653 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
654 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %va, <2 x float> %vb, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
655 %u = call <2 x float> @llvm.vp.select.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)
659 define <2 x float> @vfmacc_vf_v2f32_commute_ta(<2 x float> %va, float %b, <2 x float> %c, <2 x i1> %m, i32 zeroext %evl) {
660 ; CHECK-LABEL: vfmacc_vf_v2f32_commute_ta:
662 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
663 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
664 ; CHECK-NEXT: vmv1r.v v8, v9
666 %elt.head = insertelement <2 x float> poison, float %b, i32 0
667 %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
668 %v = call <2 x float> @llvm.vp.fma.v2f32(<2 x float> %vb, <2 x float> %va, <2 x float> %c, <2 x i1> splat (i1 -1), i32 %evl)
669 %u = call <2 x float> @llvm.vp.select.v2f32(<2 x i1> %m, <2 x float> %v, <2 x float> %c, i32 %evl)
673 declare <4 x float> @llvm.vp.fma.v4f32(<4 x float>, <4 x float>, <4 x float>, <4 x i1>, i32)
674 declare <4 x float> @llvm.vp.fneg.v4f32(<4 x float>, <4 x i1>, i32)
675 declare <4 x float> @llvm.vp.merge.v4f32(<4 x i1>, <4 x float>, <4 x float>, i32)
676 declare <4 x float> @llvm.vp.select.v4f32(<4 x i1>, <4 x float>, <4 x float>, i32)
678 define <4 x float> @vfmacc_vv_v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
679 ; CHECK-LABEL: vfmacc_vv_v4f32:
681 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, mu
682 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
683 ; CHECK-NEXT: vmv1r.v v8, v10
685 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
686 %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)
690 define <4 x float> @vfmacc_vv_v4f32_unmasked(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
691 ; CHECK-LABEL: vfmacc_vv_v4f32_unmasked:
693 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, ma
694 ; CHECK-NEXT: vfmacc.vv v10, v8, v9
695 ; CHECK-NEXT: vmv1r.v v8, v10
697 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
698 %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> splat (i1 -1), <4 x float> %v, <4 x float> %c, i32 %evl)
702 define <4 x float> @vfmacc_vf_v4f32(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
703 ; CHECK-LABEL: vfmacc_vf_v4f32:
705 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, mu
706 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
707 ; CHECK-NEXT: vmv1r.v v8, v9
709 %elt.head = insertelement <4 x float> poison, float %b, i32 0
710 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
711 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
712 %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)
716 define <4 x float> @vfmacc_vf_v4f32_commute(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
717 ; CHECK-LABEL: vfmacc_vf_v4f32_commute:
719 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, mu
720 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
721 ; CHECK-NEXT: vmv1r.v v8, v9
723 %elt.head = insertelement <4 x float> poison, float %b, i32 0
724 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
725 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %vb, <4 x float> %va, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
726 %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)
730 define <4 x float> @vfmacc_vf_v4f32_unmasked(<4 x float> %va, float %b, <4 x float> %c, i32 zeroext %evl) {
731 ; CHECK-LABEL: vfmacc_vf_v4f32_unmasked:
733 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, ma
734 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8
735 ; CHECK-NEXT: vmv1r.v v8, v9
737 %elt.head = insertelement <4 x float> poison, float %b, i32 0
738 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
739 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
740 %u = call <4 x float> @llvm.vp.merge.v4f32(<4 x i1> splat (i1 -1), <4 x float> %v, <4 x float> %c, i32 %evl)
744 define <4 x float> @vfmacc_vv_v4f32_ta(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
745 ; CHECK-LABEL: vfmacc_vv_v4f32_ta:
747 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
748 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
749 ; CHECK-NEXT: vmv.v.v v8, v10
751 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
752 %u = call <4 x float> @llvm.vp.select.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)
756 define <4 x float> @vfmacc_vf_v4f32_ta(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
757 ; CHECK-LABEL: vfmacc_vf_v4f32_ta:
759 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
760 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
761 ; CHECK-NEXT: vmv.v.v v8, v9
763 %elt.head = insertelement <4 x float> poison, float %b, i32 0
764 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
765 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %va, <4 x float> %vb, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
766 %u = call <4 x float> @llvm.vp.select.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)
770 define <4 x float> @vfmacc_vf_v4f32_commute_ta(<4 x float> %va, float %b, <4 x float> %c, <4 x i1> %m, i32 zeroext %evl) {
771 ; CHECK-LABEL: vfmacc_vf_v4f32_commute_ta:
773 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
774 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
775 ; CHECK-NEXT: vmv.v.v v8, v9
777 %elt.head = insertelement <4 x float> poison, float %b, i32 0
778 %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
779 %v = call <4 x float> @llvm.vp.fma.v4f32(<4 x float> %vb, <4 x float> %va, <4 x float> %c, <4 x i1> splat (i1 -1), i32 %evl)
780 %u = call <4 x float> @llvm.vp.select.v4f32(<4 x i1> %m, <4 x float> %v, <4 x float> %c, i32 %evl)
784 declare <8 x float> @llvm.vp.fma.v8f32(<8 x float>, <8 x float>, <8 x float>, <8 x i1>, i32)
785 declare <8 x float> @llvm.vp.fneg.v8f32(<8 x float>, <8 x i1>, i32)
786 declare <8 x float> @llvm.vp.merge.v8f32(<8 x i1>, <8 x float>, <8 x float>, i32)
787 declare <8 x float> @llvm.vp.select.v8f32(<8 x i1>, <8 x float>, <8 x float>, i32)
789 define <8 x float> @vfmacc_vv_v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
790 ; CHECK-LABEL: vfmacc_vv_v8f32:
792 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, mu
793 ; CHECK-NEXT: vfmacc.vv v12, v8, v10, v0.t
794 ; CHECK-NEXT: vmv2r.v v8, v12
796 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
797 %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)
801 define <8 x float> @vfmacc_vv_v8f32_unmasked(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
802 ; CHECK-LABEL: vfmacc_vv_v8f32_unmasked:
804 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
805 ; CHECK-NEXT: vfmacc.vv v12, v8, v10
806 ; CHECK-NEXT: vmv2r.v v8, v12
808 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
809 %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> splat (i1 -1), <8 x float> %v, <8 x float> %c, i32 %evl)
813 define <8 x float> @vfmacc_vf_v8f32(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
814 ; CHECK-LABEL: vfmacc_vf_v8f32:
816 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, mu
817 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
818 ; CHECK-NEXT: vmv2r.v v8, v10
820 %elt.head = insertelement <8 x float> poison, float %b, i32 0
821 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
822 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
823 %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)
827 define <8 x float> @vfmacc_vf_v8f32_commute(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
828 ; CHECK-LABEL: vfmacc_vf_v8f32_commute:
830 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, mu
831 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
832 ; CHECK-NEXT: vmv2r.v v8, v10
834 %elt.head = insertelement <8 x float> poison, float %b, i32 0
835 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
836 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %vb, <8 x float> %va, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
837 %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)
841 define <8 x float> @vfmacc_vf_v8f32_unmasked(<8 x float> %va, float %b, <8 x float> %c, i32 zeroext %evl) {
842 ; CHECK-LABEL: vfmacc_vf_v8f32_unmasked:
844 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
845 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8
846 ; CHECK-NEXT: vmv2r.v v8, v10
848 %elt.head = insertelement <8 x float> poison, float %b, i32 0
849 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
850 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
851 %u = call <8 x float> @llvm.vp.merge.v8f32(<8 x i1> splat (i1 -1), <8 x float> %v, <8 x float> %c, i32 %evl)
855 define <8 x float> @vfmacc_vv_v8f32_ta(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
856 ; CHECK-LABEL: vfmacc_vv_v8f32_ta:
858 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
859 ; CHECK-NEXT: vfmacc.vv v12, v8, v10, v0.t
860 ; CHECK-NEXT: vmv.v.v v8, v12
862 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
863 %u = call <8 x float> @llvm.vp.select.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)
867 define <8 x float> @vfmacc_vf_v8f32_ta(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
868 ; CHECK-LABEL: vfmacc_vf_v8f32_ta:
870 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
871 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
872 ; CHECK-NEXT: vmv.v.v v8, v10
874 %elt.head = insertelement <8 x float> poison, float %b, i32 0
875 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
876 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %va, <8 x float> %vb, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
877 %u = call <8 x float> @llvm.vp.select.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)
881 define <8 x float> @vfmacc_vf_v8f32_commute_ta(<8 x float> %va, float %b, <8 x float> %c, <8 x i1> %m, i32 zeroext %evl) {
882 ; CHECK-LABEL: vfmacc_vf_v8f32_commute_ta:
884 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
885 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
886 ; CHECK-NEXT: vmv.v.v v8, v10
888 %elt.head = insertelement <8 x float> poison, float %b, i32 0
889 %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
890 %v = call <8 x float> @llvm.vp.fma.v8f32(<8 x float> %vb, <8 x float> %va, <8 x float> %c, <8 x i1> splat (i1 -1), i32 %evl)
891 %u = call <8 x float> @llvm.vp.select.v8f32(<8 x i1> %m, <8 x float> %v, <8 x float> %c, i32 %evl)
895 declare <16 x float> @llvm.vp.fma.v16f32(<16 x float>, <16 x float>, <16 x float>, <16 x i1>, i32)
896 declare <16 x float> @llvm.vp.fneg.v16f32(<16 x float>, <16 x i1>, i32)
897 declare <16 x float> @llvm.vp.merge.v16f32(<16 x i1>, <16 x float>, <16 x float>, i32)
898 declare <16 x float> @llvm.vp.select.v16f32(<16 x i1>, <16 x float>, <16 x float>, i32)
900 define <16 x float> @vfmacc_vv_v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
901 ; CHECK-LABEL: vfmacc_vv_v16f32:
903 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, mu
904 ; CHECK-NEXT: vfmacc.vv v16, v8, v12, v0.t
905 ; CHECK-NEXT: vmv4r.v v8, v16
907 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
908 %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)
912 define <16 x float> @vfmacc_vv_v16f32_unmasked(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
913 ; CHECK-LABEL: vfmacc_vv_v16f32_unmasked:
915 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma
916 ; CHECK-NEXT: vfmacc.vv v16, v8, v12
917 ; CHECK-NEXT: vmv4r.v v8, v16
919 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
920 %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> splat (i1 -1), <16 x float> %v, <16 x float> %c, i32 %evl)
924 define <16 x float> @vfmacc_vf_v16f32(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
925 ; CHECK-LABEL: vfmacc_vf_v16f32:
927 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, mu
928 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
929 ; CHECK-NEXT: vmv4r.v v8, v12
931 %elt.head = insertelement <16 x float> poison, float %b, i32 0
932 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
933 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
934 %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)
938 define <16 x float> @vfmacc_vf_v16f32_commute(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
939 ; CHECK-LABEL: vfmacc_vf_v16f32_commute:
941 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, mu
942 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
943 ; CHECK-NEXT: vmv4r.v v8, v12
945 %elt.head = insertelement <16 x float> poison, float %b, i32 0
946 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
947 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %vb, <16 x float> %va, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
948 %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)
952 define <16 x float> @vfmacc_vf_v16f32_unmasked(<16 x float> %va, float %b, <16 x float> %c, i32 zeroext %evl) {
953 ; CHECK-LABEL: vfmacc_vf_v16f32_unmasked:
955 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma
956 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8
957 ; CHECK-NEXT: vmv4r.v v8, v12
959 %elt.head = insertelement <16 x float> poison, float %b, i32 0
960 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
961 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
962 %u = call <16 x float> @llvm.vp.merge.v16f32(<16 x i1> splat (i1 -1), <16 x float> %v, <16 x float> %c, i32 %evl)
966 define <16 x float> @vfmacc_vv_v16f32_ta(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
967 ; CHECK-LABEL: vfmacc_vv_v16f32_ta:
969 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
970 ; CHECK-NEXT: vfmacc.vv v16, v8, v12, v0.t
971 ; CHECK-NEXT: vmv.v.v v8, v16
973 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
974 %u = call <16 x float> @llvm.vp.select.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)
978 define <16 x float> @vfmacc_vf_v16f32_ta(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
979 ; CHECK-LABEL: vfmacc_vf_v16f32_ta:
981 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
982 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
983 ; CHECK-NEXT: vmv.v.v v8, v12
985 %elt.head = insertelement <16 x float> poison, float %b, i32 0
986 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
987 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %va, <16 x float> %vb, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
988 %u = call <16 x float> @llvm.vp.select.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)
992 define <16 x float> @vfmacc_vf_v16f32_commute_ta(<16 x float> %va, float %b, <16 x float> %c, <16 x i1> %m, i32 zeroext %evl) {
993 ; CHECK-LABEL: vfmacc_vf_v16f32_commute_ta:
995 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
996 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
997 ; CHECK-NEXT: vmv.v.v v8, v12
999 %elt.head = insertelement <16 x float> poison, float %b, i32 0
1000 %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
1001 %v = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %vb, <16 x float> %va, <16 x float> %c, <16 x i1> splat (i1 -1), i32 %evl)
1002 %u = call <16 x float> @llvm.vp.select.v16f32(<16 x i1> %m, <16 x float> %v, <16 x float> %c, i32 %evl)
1006 declare <2 x double> @llvm.vp.fma.v2f64(<2 x double>, <2 x double>, <2 x double>, <2 x i1>, i32)
1007 declare <2 x double> @llvm.vp.fneg.v2f64(<2 x double>, <2 x i1>, i32)
1008 declare <2 x double> @llvm.vp.merge.v2f64(<2 x i1>, <2 x double>, <2 x double>, i32)
1009 declare <2 x double> @llvm.vp.select.v2f64(<2 x i1>, <2 x double>, <2 x double>, i32)
1011 define <2 x double> @vfmacc_vv_v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1012 ; CHECK-LABEL: vfmacc_vv_v2f64:
1014 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, mu
1015 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
1016 ; CHECK-NEXT: vmv1r.v v8, v10
1018 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1019 %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)
1023 define <2 x double> @vfmacc_vv_v2f64_unmasked(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1024 ; CHECK-LABEL: vfmacc_vv_v2f64_unmasked:
1026 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, ma
1027 ; CHECK-NEXT: vfmacc.vv v10, v8, v9
1028 ; CHECK-NEXT: vmv1r.v v8, v10
1030 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1031 %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> splat (i1 -1), <2 x double> %v, <2 x double> %c, i32 %evl)
1035 define <2 x double> @vfmacc_vf_v2f64(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1036 ; CHECK-LABEL: vfmacc_vf_v2f64:
1038 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, mu
1039 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
1040 ; CHECK-NEXT: vmv1r.v v8, v9
1042 %elt.head = insertelement <2 x double> poison, double %b, i32 0
1043 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
1044 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1045 %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)
1049 define <2 x double> @vfmacc_vf_v2f64_commute(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1050 ; CHECK-LABEL: vfmacc_vf_v2f64_commute:
1052 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, mu
1053 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
1054 ; CHECK-NEXT: vmv1r.v v8, v9
1056 %elt.head = insertelement <2 x double> poison, double %b, i32 0
1057 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
1058 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %vb, <2 x double> %va, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1059 %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)
1063 define <2 x double> @vfmacc_vf_v2f64_unmasked(<2 x double> %va, double %b, <2 x double> %c, i32 zeroext %evl) {
1064 ; CHECK-LABEL: vfmacc_vf_v2f64_unmasked:
1066 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, ma
1067 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8
1068 ; CHECK-NEXT: vmv1r.v v8, v9
1070 %elt.head = insertelement <2 x double> poison, double %b, i32 0
1071 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
1072 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1073 %u = call <2 x double> @llvm.vp.merge.v2f64(<2 x i1> splat (i1 -1), <2 x double> %v, <2 x double> %c, i32 %evl)
1077 define <2 x double> @vfmacc_vv_v2f64_ta(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1078 ; CHECK-LABEL: vfmacc_vv_v2f64_ta:
1080 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
1081 ; CHECK-NEXT: vfmacc.vv v10, v8, v9, v0.t
1082 ; CHECK-NEXT: vmv.v.v v8, v10
1084 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1085 %u = call <2 x double> @llvm.vp.select.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)
1089 define <2 x double> @vfmacc_vf_v2f64_ta(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1090 ; CHECK-LABEL: vfmacc_vf_v2f64_ta:
1092 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
1093 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
1094 ; CHECK-NEXT: vmv.v.v v8, v9
1096 %elt.head = insertelement <2 x double> poison, double %b, i32 0
1097 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
1098 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %va, <2 x double> %vb, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1099 %u = call <2 x double> @llvm.vp.select.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)
1103 define <2 x double> @vfmacc_vf_v2f64_commute_ta(<2 x double> %va, double %b, <2 x double> %c, <2 x i1> %m, i32 zeroext %evl) {
1104 ; CHECK-LABEL: vfmacc_vf_v2f64_commute_ta:
1106 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
1107 ; CHECK-NEXT: vfmacc.vf v9, fa0, v8, v0.t
1108 ; CHECK-NEXT: vmv.v.v v8, v9
1110 %elt.head = insertelement <2 x double> poison, double %b, i32 0
1111 %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
1112 %v = call <2 x double> @llvm.vp.fma.v2f64(<2 x double> %vb, <2 x double> %va, <2 x double> %c, <2 x i1> splat (i1 -1), i32 %evl)
1113 %u = call <2 x double> @llvm.vp.select.v2f64(<2 x i1> %m, <2 x double> %v, <2 x double> %c, i32 %evl)
1117 declare <4 x double> @llvm.vp.fma.v4f64(<4 x double>, <4 x double>, <4 x double>, <4 x i1>, i32)
1118 declare <4 x double> @llvm.vp.fneg.v4f64(<4 x double>, <4 x i1>, i32)
1119 declare <4 x double> @llvm.vp.merge.v4f64(<4 x i1>, <4 x double>, <4 x double>, i32)
1120 declare <4 x double> @llvm.vp.select.v4f64(<4 x i1>, <4 x double>, <4 x double>, i32)
1122 define <4 x double> @vfmacc_vv_v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1123 ; CHECK-LABEL: vfmacc_vv_v4f64:
1125 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, mu
1126 ; CHECK-NEXT: vfmacc.vv v12, v8, v10, v0.t
1127 ; CHECK-NEXT: vmv2r.v v8, v12
1129 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1130 %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)
1134 define <4 x double> @vfmacc_vv_v4f64_unmasked(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1135 ; CHECK-LABEL: vfmacc_vv_v4f64_unmasked:
1137 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, ma
1138 ; CHECK-NEXT: vfmacc.vv v12, v8, v10
1139 ; CHECK-NEXT: vmv2r.v v8, v12
1141 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1142 %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> splat (i1 -1), <4 x double> %v, <4 x double> %c, i32 %evl)
1146 define <4 x double> @vfmacc_vf_v4f64(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1147 ; CHECK-LABEL: vfmacc_vf_v4f64:
1149 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, mu
1150 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
1151 ; CHECK-NEXT: vmv2r.v v8, v10
1153 %elt.head = insertelement <4 x double> poison, double %b, i32 0
1154 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
1155 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1156 %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)
1160 define <4 x double> @vfmacc_vf_v4f64_commute(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1161 ; CHECK-LABEL: vfmacc_vf_v4f64_commute:
1163 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, mu
1164 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
1165 ; CHECK-NEXT: vmv2r.v v8, v10
1167 %elt.head = insertelement <4 x double> poison, double %b, i32 0
1168 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
1169 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %vb, <4 x double> %va, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1170 %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)
1174 define <4 x double> @vfmacc_vf_v4f64_unmasked(<4 x double> %va, double %b, <4 x double> %c, i32 zeroext %evl) {
1175 ; CHECK-LABEL: vfmacc_vf_v4f64_unmasked:
1177 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, ma
1178 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8
1179 ; CHECK-NEXT: vmv2r.v v8, v10
1181 %elt.head = insertelement <4 x double> poison, double %b, i32 0
1182 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
1183 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1184 %u = call <4 x double> @llvm.vp.merge.v4f64(<4 x i1> splat (i1 -1), <4 x double> %v, <4 x double> %c, i32 %evl)
1188 define <4 x double> @vfmacc_vv_v4f64_ta(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1189 ; CHECK-LABEL: vfmacc_vv_v4f64_ta:
1191 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
1192 ; CHECK-NEXT: vfmacc.vv v12, v8, v10, v0.t
1193 ; CHECK-NEXT: vmv.v.v v8, v12
1195 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1196 %u = call <4 x double> @llvm.vp.select.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)
1200 define <4 x double> @vfmacc_vf_v4f64_ta(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1201 ; CHECK-LABEL: vfmacc_vf_v4f64_ta:
1203 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
1204 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
1205 ; CHECK-NEXT: vmv.v.v v8, v10
1207 %elt.head = insertelement <4 x double> poison, double %b, i32 0
1208 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
1209 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %va, <4 x double> %vb, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1210 %u = call <4 x double> @llvm.vp.select.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)
1214 define <4 x double> @vfmacc_vf_v4f64_commute_ta(<4 x double> %va, double %b, <4 x double> %c, <4 x i1> %m, i32 zeroext %evl) {
1215 ; CHECK-LABEL: vfmacc_vf_v4f64_commute_ta:
1217 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
1218 ; CHECK-NEXT: vfmacc.vf v10, fa0, v8, v0.t
1219 ; CHECK-NEXT: vmv.v.v v8, v10
1221 %elt.head = insertelement <4 x double> poison, double %b, i32 0
1222 %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
1223 %v = call <4 x double> @llvm.vp.fma.v4f64(<4 x double> %vb, <4 x double> %va, <4 x double> %c, <4 x i1> splat (i1 -1), i32 %evl)
1224 %u = call <4 x double> @llvm.vp.select.v4f64(<4 x i1> %m, <4 x double> %v, <4 x double> %c, i32 %evl)
1228 declare <8 x double> @llvm.vp.fma.v8f64(<8 x double>, <8 x double>, <8 x double>, <8 x i1>, i32)
1229 declare <8 x double> @llvm.vp.fneg.v8f64(<8 x double>, <8 x i1>, i32)
1230 declare <8 x double> @llvm.vp.merge.v8f64(<8 x i1>, <8 x double>, <8 x double>, i32)
1231 declare <8 x double> @llvm.vp.select.v8f64(<8 x i1>, <8 x double>, <8 x double>, i32)
1233 define <8 x double> @vfmacc_vv_v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1234 ; CHECK-LABEL: vfmacc_vv_v8f64:
1236 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, mu
1237 ; CHECK-NEXT: vfmacc.vv v16, v8, v12, v0.t
1238 ; CHECK-NEXT: vmv4r.v v8, v16
1240 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1241 %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)
1245 define <8 x double> @vfmacc_vv_v8f64_unmasked(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1246 ; CHECK-LABEL: vfmacc_vv_v8f64_unmasked:
1248 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, ma
1249 ; CHECK-NEXT: vfmacc.vv v16, v8, v12
1250 ; CHECK-NEXT: vmv4r.v v8, v16
1252 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1253 %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> splat (i1 -1), <8 x double> %v, <8 x double> %c, i32 %evl)
1257 define <8 x double> @vfmacc_vf_v8f64(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1258 ; CHECK-LABEL: vfmacc_vf_v8f64:
1260 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, mu
1261 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
1262 ; CHECK-NEXT: vmv4r.v v8, v12
1264 %elt.head = insertelement <8 x double> poison, double %b, i32 0
1265 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
1266 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1267 %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)
1271 define <8 x double> @vfmacc_vf_v8f64_commute(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1272 ; CHECK-LABEL: vfmacc_vf_v8f64_commute:
1274 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, mu
1275 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
1276 ; CHECK-NEXT: vmv4r.v v8, v12
1278 %elt.head = insertelement <8 x double> poison, double %b, i32 0
1279 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
1280 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %vb, <8 x double> %va, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1281 %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)
1285 define <8 x double> @vfmacc_vf_v8f64_unmasked(<8 x double> %va, double %b, <8 x double> %c, i32 zeroext %evl) {
1286 ; CHECK-LABEL: vfmacc_vf_v8f64_unmasked:
1288 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, ma
1289 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8
1290 ; CHECK-NEXT: vmv4r.v v8, v12
1292 %elt.head = insertelement <8 x double> poison, double %b, i32 0
1293 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
1294 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1295 %u = call <8 x double> @llvm.vp.merge.v8f64(<8 x i1> splat (i1 -1), <8 x double> %v, <8 x double> %c, i32 %evl)
1299 define <8 x double> @vfmacc_vv_v8f64_ta(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1300 ; CHECK-LABEL: vfmacc_vv_v8f64_ta:
1302 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
1303 ; CHECK-NEXT: vfmacc.vv v16, v8, v12, v0.t
1304 ; CHECK-NEXT: vmv.v.v v8, v16
1306 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %a, <8 x double> %b, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1307 %u = call <8 x double> @llvm.vp.select.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)
1311 define <8 x double> @vfmacc_vf_v8f64_ta(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1312 ; CHECK-LABEL: vfmacc_vf_v8f64_ta:
1314 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
1315 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
1316 ; CHECK-NEXT: vmv.v.v v8, v12
1318 %elt.head = insertelement <8 x double> poison, double %b, i32 0
1319 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
1320 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %va, <8 x double> %vb, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1321 %u = call <8 x double> @llvm.vp.select.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)
1325 define <8 x double> @vfmacc_vf_v8f64_commute_ta(<8 x double> %va, double %b, <8 x double> %c, <8 x i1> %m, i32 zeroext %evl) {
1326 ; CHECK-LABEL: vfmacc_vf_v8f64_commute_ta:
1328 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
1329 ; CHECK-NEXT: vfmacc.vf v12, fa0, v8, v0.t
1330 ; CHECK-NEXT: vmv.v.v v8, v12
1332 %elt.head = insertelement <8 x double> poison, double %b, i32 0
1333 %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
1334 %v = call <8 x double> @llvm.vp.fma.v8f64(<8 x double> %vb, <8 x double> %va, <8 x double> %c, <8 x i1> splat (i1 -1), i32 %evl)
1335 %u = call <8 x double> @llvm.vp.select.v8f64(<8 x i1> %m, <8 x double> %v, <8 x double> %c, i32 %evl)