Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vfrsub-vp.ll
blob3391abf8740a78cf285984a1551185fac62eb316
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3 ; RUN:   -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5 ; RUN:   -verify-machineinstrs < %s | FileCheck %s
7 declare <2 x half> @llvm.vp.fsub.v2f16(<2 x half>, <2 x half>, <2 x i1>, i32)
9 define <2 x half> @vfrsub_vf_v2f16(<2 x half> %va, half %b, <2 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vfrsub_vf_v2f16:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
13 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
14 ; CHECK-NEXT:    ret
15   %elt.head = insertelement <2 x half> poison, half %b, i32 0
16   %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
17   %v = call <2 x half> @llvm.vp.fsub.v2f16(<2 x half> %vb, <2 x half> %va, <2 x i1> %m, i32 %evl)
18   ret <2 x half> %v
21 define <2 x half> @vfrsub_vf_v2f16_unmasked(<2 x half> %va, half %b, i32 zeroext %evl) {
22 ; CHECK-LABEL: vfrsub_vf_v2f16_unmasked:
23 ; CHECK:       # %bb.0:
24 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
25 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
26 ; CHECK-NEXT:    ret
27   %elt.head = insertelement <2 x half> poison, half %b, i32 0
28   %vb = shufflevector <2 x half> %elt.head, <2 x half> poison, <2 x i32> zeroinitializer
29   %head = insertelement <2 x i1> poison, i1 true, i32 0
30   %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
31   %v = call <2 x half> @llvm.vp.fsub.v2f16(<2 x half> %vb, <2 x half> %va, <2 x i1> %m, i32 %evl)
32   ret <2 x half> %v
35 declare <4 x half> @llvm.vp.fsub.v4f16(<4 x half>, <4 x half>, <4 x i1>, i32)
37 define <4 x half> @vfrsub_vf_v4f16(<4 x half> %va, half %b, <4 x i1> %m, i32 zeroext %evl) {
38 ; CHECK-LABEL: vfrsub_vf_v4f16:
39 ; CHECK:       # %bb.0:
40 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
41 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
42 ; CHECK-NEXT:    ret
43   %elt.head = insertelement <4 x half> poison, half %b, i32 0
44   %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
45   %v = call <4 x half> @llvm.vp.fsub.v4f16(<4 x half> %vb, <4 x half> %va, <4 x i1> %m, i32 %evl)
46   ret <4 x half> %v
49 define <4 x half> @vfrsub_vf_v4f16_unmasked(<4 x half> %va, half %b, i32 zeroext %evl) {
50 ; CHECK-LABEL: vfrsub_vf_v4f16_unmasked:
51 ; CHECK:       # %bb.0:
52 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
53 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
54 ; CHECK-NEXT:    ret
55   %elt.head = insertelement <4 x half> poison, half %b, i32 0
56   %vb = shufflevector <4 x half> %elt.head, <4 x half> poison, <4 x i32> zeroinitializer
57   %head = insertelement <4 x i1> poison, i1 true, i32 0
58   %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
59   %v = call <4 x half> @llvm.vp.fsub.v4f16(<4 x half> %vb, <4 x half> %va, <4 x i1> %m, i32 %evl)
60   ret <4 x half> %v
63 declare <8 x half> @llvm.vp.fsub.v8f16(<8 x half>, <8 x half>, <8 x i1>, i32)
65 define <8 x half> @vfrsub_vf_v8f16(<8 x half> %va, half %b, <8 x i1> %m, i32 zeroext %evl) {
66 ; CHECK-LABEL: vfrsub_vf_v8f16:
67 ; CHECK:       # %bb.0:
68 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
69 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
70 ; CHECK-NEXT:    ret
71   %elt.head = insertelement <8 x half> poison, half %b, i32 0
72   %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
73   %v = call <8 x half> @llvm.vp.fsub.v8f16(<8 x half> %vb, <8 x half> %va, <8 x i1> %m, i32 %evl)
74   ret <8 x half> %v
77 define <8 x half> @vfrsub_vf_v8f16_unmasked(<8 x half> %va, half %b, i32 zeroext %evl) {
78 ; CHECK-LABEL: vfrsub_vf_v8f16_unmasked:
79 ; CHECK:       # %bb.0:
80 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
81 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
82 ; CHECK-NEXT:    ret
83   %elt.head = insertelement <8 x half> poison, half %b, i32 0
84   %vb = shufflevector <8 x half> %elt.head, <8 x half> poison, <8 x i32> zeroinitializer
85   %head = insertelement <8 x i1> poison, i1 true, i32 0
86   %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
87   %v = call <8 x half> @llvm.vp.fsub.v8f16(<8 x half> %vb, <8 x half> %va, <8 x i1> %m, i32 %evl)
88   ret <8 x half> %v
91 declare <16 x half> @llvm.vp.fsub.v16f16(<16 x half>, <16 x half>, <16 x i1>, i32)
93 define <16 x half> @vfrsub_vf_v16f16(<16 x half> %va, half %b, <16 x i1> %m, i32 zeroext %evl) {
94 ; CHECK-LABEL: vfrsub_vf_v16f16:
95 ; CHECK:       # %bb.0:
96 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
97 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
98 ; CHECK-NEXT:    ret
99   %elt.head = insertelement <16 x half> poison, half %b, i32 0
100   %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
101   %v = call <16 x half> @llvm.vp.fsub.v16f16(<16 x half> %vb, <16 x half> %va, <16 x i1> %m, i32 %evl)
102   ret <16 x half> %v
105 define <16 x half> @vfrsub_vf_v16f16_unmasked(<16 x half> %va, half %b, i32 zeroext %evl) {
106 ; CHECK-LABEL: vfrsub_vf_v16f16_unmasked:
107 ; CHECK:       # %bb.0:
108 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
109 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
110 ; CHECK-NEXT:    ret
111   %elt.head = insertelement <16 x half> poison, half %b, i32 0
112   %vb = shufflevector <16 x half> %elt.head, <16 x half> poison, <16 x i32> zeroinitializer
113   %head = insertelement <16 x i1> poison, i1 true, i32 0
114   %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
115   %v = call <16 x half> @llvm.vp.fsub.v16f16(<16 x half> %vb, <16 x half> %va, <16 x i1> %m, i32 %evl)
116   ret <16 x half> %v
119 declare <2 x float> @llvm.vp.fsub.v2f32(<2 x float>, <2 x float>, <2 x i1>, i32)
121 define <2 x float> @vfrsub_vf_v2f32(<2 x float> %va, float %b, <2 x i1> %m, i32 zeroext %evl) {
122 ; CHECK-LABEL: vfrsub_vf_v2f32:
123 ; CHECK:       # %bb.0:
124 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
125 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
126 ; CHECK-NEXT:    ret
127   %elt.head = insertelement <2 x float> poison, float %b, i32 0
128   %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
129   %v = call <2 x float> @llvm.vp.fsub.v2f32(<2 x float> %vb, <2 x float> %va, <2 x i1> %m, i32 %evl)
130   ret <2 x float> %v
133 define <2 x float> @vfrsub_vf_v2f32_unmasked(<2 x float> %va, float %b, i32 zeroext %evl) {
134 ; CHECK-LABEL: vfrsub_vf_v2f32_unmasked:
135 ; CHECK:       # %bb.0:
136 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
137 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
138 ; CHECK-NEXT:    ret
139   %elt.head = insertelement <2 x float> poison, float %b, i32 0
140   %vb = shufflevector <2 x float> %elt.head, <2 x float> poison, <2 x i32> zeroinitializer
141   %head = insertelement <2 x i1> poison, i1 true, i32 0
142   %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
143   %v = call <2 x float> @llvm.vp.fsub.v2f32(<2 x float> %vb, <2 x float> %va, <2 x i1> %m, i32 %evl)
144   ret <2 x float> %v
147 declare <4 x float> @llvm.vp.fsub.v4f32(<4 x float>, <4 x float>, <4 x i1>, i32)
149 define <4 x float> @vfrsub_vf_v4f32(<4 x float> %va, float %b, <4 x i1> %m, i32 zeroext %evl) {
150 ; CHECK-LABEL: vfrsub_vf_v4f32:
151 ; CHECK:       # %bb.0:
152 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
153 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
154 ; CHECK-NEXT:    ret
155   %elt.head = insertelement <4 x float> poison, float %b, i32 0
156   %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
157   %v = call <4 x float> @llvm.vp.fsub.v4f32(<4 x float> %vb, <4 x float> %va, <4 x i1> %m, i32 %evl)
158   ret <4 x float> %v
161 define <4 x float> @vfrsub_vf_v4f32_unmasked(<4 x float> %va, float %b, i32 zeroext %evl) {
162 ; CHECK-LABEL: vfrsub_vf_v4f32_unmasked:
163 ; CHECK:       # %bb.0:
164 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
165 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
166 ; CHECK-NEXT:    ret
167   %elt.head = insertelement <4 x float> poison, float %b, i32 0
168   %vb = shufflevector <4 x float> %elt.head, <4 x float> poison, <4 x i32> zeroinitializer
169   %head = insertelement <4 x i1> poison, i1 true, i32 0
170   %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
171   %v = call <4 x float> @llvm.vp.fsub.v4f32(<4 x float> %vb, <4 x float> %va, <4 x i1> %m, i32 %evl)
172   ret <4 x float> %v
175 declare <8 x float> @llvm.vp.fsub.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)
177 define <8 x float> @vfrsub_vf_v8f32(<8 x float> %va, float %b, <8 x i1> %m, i32 zeroext %evl) {
178 ; CHECK-LABEL: vfrsub_vf_v8f32:
179 ; CHECK:       # %bb.0:
180 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
181 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
182 ; CHECK-NEXT:    ret
183   %elt.head = insertelement <8 x float> poison, float %b, i32 0
184   %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
185   %v = call <8 x float> @llvm.vp.fsub.v8f32(<8 x float> %vb, <8 x float> %va, <8 x i1> %m, i32 %evl)
186   ret <8 x float> %v
189 define <8 x float> @vfrsub_vf_v8f32_unmasked(<8 x float> %va, float %b, i32 zeroext %evl) {
190 ; CHECK-LABEL: vfrsub_vf_v8f32_unmasked:
191 ; CHECK:       # %bb.0:
192 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
193 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
194 ; CHECK-NEXT:    ret
195   %elt.head = insertelement <8 x float> poison, float %b, i32 0
196   %vb = shufflevector <8 x float> %elt.head, <8 x float> poison, <8 x i32> zeroinitializer
197   %head = insertelement <8 x i1> poison, i1 true, i32 0
198   %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
199   %v = call <8 x float> @llvm.vp.fsub.v8f32(<8 x float> %vb, <8 x float> %va, <8 x i1> %m, i32 %evl)
200   ret <8 x float> %v
203 declare <16 x float> @llvm.vp.fsub.v16f32(<16 x float>, <16 x float>, <16 x i1>, i32)
205 define <16 x float> @vfrsub_vf_v16f32(<16 x float> %va, float %b, <16 x i1> %m, i32 zeroext %evl) {
206 ; CHECK-LABEL: vfrsub_vf_v16f32:
207 ; CHECK:       # %bb.0:
208 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
209 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
210 ; CHECK-NEXT:    ret
211   %elt.head = insertelement <16 x float> poison, float %b, i32 0
212   %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
213   %v = call <16 x float> @llvm.vp.fsub.v16f32(<16 x float> %vb, <16 x float> %va, <16 x i1> %m, i32 %evl)
214   ret <16 x float> %v
217 define <16 x float> @vfrsub_vf_v16f32_unmasked(<16 x float> %va, float %b, i32 zeroext %evl) {
218 ; CHECK-LABEL: vfrsub_vf_v16f32_unmasked:
219 ; CHECK:       # %bb.0:
220 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
221 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
222 ; CHECK-NEXT:    ret
223   %elt.head = insertelement <16 x float> poison, float %b, i32 0
224   %vb = shufflevector <16 x float> %elt.head, <16 x float> poison, <16 x i32> zeroinitializer
225   %head = insertelement <16 x i1> poison, i1 true, i32 0
226   %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
227   %v = call <16 x float> @llvm.vp.fsub.v16f32(<16 x float> %vb, <16 x float> %va, <16 x i1> %m, i32 %evl)
228   ret <16 x float> %v
231 declare <2 x double> @llvm.vp.fsub.v2f64(<2 x double>, <2 x double>, <2 x i1>, i32)
233 define <2 x double> @vfrsub_vf_v2f64(<2 x double> %va, double %b, <2 x i1> %m, i32 zeroext %evl) {
234 ; CHECK-LABEL: vfrsub_vf_v2f64:
235 ; CHECK:       # %bb.0:
236 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
237 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
238 ; CHECK-NEXT:    ret
239   %elt.head = insertelement <2 x double> poison, double %b, i32 0
240   %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
241   %v = call <2 x double> @llvm.vp.fsub.v2f64(<2 x double> %vb, <2 x double> %va, <2 x i1> %m, i32 %evl)
242   ret <2 x double> %v
245 define <2 x double> @vfrsub_vf_v2f64_unmasked(<2 x double> %va, double %b, i32 zeroext %evl) {
246 ; CHECK-LABEL: vfrsub_vf_v2f64_unmasked:
247 ; CHECK:       # %bb.0:
248 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
249 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
250 ; CHECK-NEXT:    ret
251   %elt.head = insertelement <2 x double> poison, double %b, i32 0
252   %vb = shufflevector <2 x double> %elt.head, <2 x double> poison, <2 x i32> zeroinitializer
253   %head = insertelement <2 x i1> poison, i1 true, i32 0
254   %m = shufflevector <2 x i1> %head, <2 x i1> poison, <2 x i32> zeroinitializer
255   %v = call <2 x double> @llvm.vp.fsub.v2f64(<2 x double> %vb, <2 x double> %va, <2 x i1> %m, i32 %evl)
256   ret <2 x double> %v
259 declare <4 x double> @llvm.vp.fsub.v4f64(<4 x double>, <4 x double>, <4 x i1>, i32)
261 define <4 x double> @vfrsub_vf_v4f64(<4 x double> %va, double %b, <4 x i1> %m, i32 zeroext %evl) {
262 ; CHECK-LABEL: vfrsub_vf_v4f64:
263 ; CHECK:       # %bb.0:
264 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
265 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
266 ; CHECK-NEXT:    ret
267   %elt.head = insertelement <4 x double> poison, double %b, i32 0
268   %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
269   %v = call <4 x double> @llvm.vp.fsub.v4f64(<4 x double> %vb, <4 x double> %va, <4 x i1> %m, i32 %evl)
270   ret <4 x double> %v
273 define <4 x double> @vfrsub_vf_v4f64_unmasked(<4 x double> %va, double %b, i32 zeroext %evl) {
274 ; CHECK-LABEL: vfrsub_vf_v4f64_unmasked:
275 ; CHECK:       # %bb.0:
276 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
277 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
278 ; CHECK-NEXT:    ret
279   %elt.head = insertelement <4 x double> poison, double %b, i32 0
280   %vb = shufflevector <4 x double> %elt.head, <4 x double> poison, <4 x i32> zeroinitializer
281   %head = insertelement <4 x i1> poison, i1 true, i32 0
282   %m = shufflevector <4 x i1> %head, <4 x i1> poison, <4 x i32> zeroinitializer
283   %v = call <4 x double> @llvm.vp.fsub.v4f64(<4 x double> %vb, <4 x double> %va, <4 x i1> %m, i32 %evl)
284   ret <4 x double> %v
287 declare <8 x double> @llvm.vp.fsub.v8f64(<8 x double>, <8 x double>, <8 x i1>, i32)
289 define <8 x double> @vfrsub_vf_v8f64(<8 x double> %va, double %b, <8 x i1> %m, i32 zeroext %evl) {
290 ; CHECK-LABEL: vfrsub_vf_v8f64:
291 ; CHECK:       # %bb.0:
292 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
293 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
294 ; CHECK-NEXT:    ret
295   %elt.head = insertelement <8 x double> poison, double %b, i32 0
296   %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
297   %v = call <8 x double> @llvm.vp.fsub.v8f64(<8 x double> %vb, <8 x double> %va, <8 x i1> %m, i32 %evl)
298   ret <8 x double> %v
301 define <8 x double> @vfrsub_vf_v8f64_unmasked(<8 x double> %va, double %b, i32 zeroext %evl) {
302 ; CHECK-LABEL: vfrsub_vf_v8f64_unmasked:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
305 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
306 ; CHECK-NEXT:    ret
307   %elt.head = insertelement <8 x double> poison, double %b, i32 0
308   %vb = shufflevector <8 x double> %elt.head, <8 x double> poison, <8 x i32> zeroinitializer
309   %head = insertelement <8 x i1> poison, i1 true, i32 0
310   %m = shufflevector <8 x i1> %head, <8 x i1> poison, <8 x i32> zeroinitializer
311   %v = call <8 x double> @llvm.vp.fsub.v8f64(<8 x double> %vb, <8 x double> %va, <8 x i1> %m, i32 %evl)
312   ret <8 x double> %v
315 declare <16 x double> @llvm.vp.fsub.v16f64(<16 x double>, <16 x double>, <16 x i1>, i32)
317 define <16 x double> @vfrsub_vf_v16f64(<16 x double> %va, double %b, <16 x i1> %m, i32 zeroext %evl) {
318 ; CHECK-LABEL: vfrsub_vf_v16f64:
319 ; CHECK:       # %bb.0:
320 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
321 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0, v0.t
322 ; CHECK-NEXT:    ret
323   %elt.head = insertelement <16 x double> poison, double %b, i32 0
324   %vb = shufflevector <16 x double> %elt.head, <16 x double> poison, <16 x i32> zeroinitializer
325   %v = call <16 x double> @llvm.vp.fsub.v16f64(<16 x double> %vb, <16 x double> %va, <16 x i1> %m, i32 %evl)
326   ret <16 x double> %v
329 define <16 x double> @vfrsub_vf_v16f64_unmasked(<16 x double> %va, double %b, i32 zeroext %evl) {
330 ; CHECK-LABEL: vfrsub_vf_v16f64_unmasked:
331 ; CHECK:       # %bb.0:
332 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
333 ; CHECK-NEXT:    vfrsub.vf v8, v8, fa0
334 ; CHECK-NEXT:    ret
335   %elt.head = insertelement <16 x double> poison, double %b, i32 0
336   %vb = shufflevector <16 x double> %elt.head, <16 x double> poison, <16 x i32> zeroinitializer
337   %head = insertelement <16 x i1> poison, i1 true, i32 0
338   %m = shufflevector <16 x i1> %head, <16 x i1> poison, <16 x i32> zeroinitializer
339   %v = call <16 x double> @llvm.vp.fsub.v16f64(<16 x double> %vb, <16 x double> %va, <16 x i1> %m, i32 %evl)
340   ret <16 x double> %v