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 <vscale x 1 x half> @llvm.vp.fdiv.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, <vscale x 1 x i1>, i32)
9 define <vscale x 1 x half> @vfrdiv_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vfrdiv_vf_nxv1f16:
12 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
13 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
15 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
16 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
17 %v = call <vscale x 1 x half> @llvm.vp.fdiv.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)
18 ret <vscale x 1 x half> %v
21 define <vscale x 1 x half> @vfrdiv_vf_nxv1f16_unmasked(<vscale x 1 x half> %va, half %b, i32 zeroext %evl) {
22 ; CHECK-LABEL: vfrdiv_vf_nxv1f16_unmasked:
24 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
25 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
27 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
28 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
29 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
30 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
31 %v = call <vscale x 1 x half> @llvm.vp.fdiv.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, <vscale x 1 x i1> %m, i32 %evl)
32 ret <vscale x 1 x half> %v
35 declare <vscale x 2 x half> @llvm.vp.fdiv.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>, <vscale x 2 x i1>, i32)
37 define <vscale x 2 x half> @vfrdiv_vf_nxv2f16(<vscale x 2 x half> %va, half %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
38 ; CHECK-LABEL: vfrdiv_vf_nxv2f16:
40 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
41 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
43 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
44 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
45 %v = call <vscale x 2 x half> @llvm.vp.fdiv.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)
46 ret <vscale x 2 x half> %v
49 define <vscale x 2 x half> @vfrdiv_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, i32 zeroext %evl) {
50 ; CHECK-LABEL: vfrdiv_vf_nxv2f16_unmasked:
52 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
53 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
55 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
56 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
57 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
58 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
59 %v = call <vscale x 2 x half> @llvm.vp.fdiv.nxv2f16(<vscale x 2 x half> %vb, <vscale x 2 x half> %va, <vscale x 2 x i1> %m, i32 %evl)
60 ret <vscale x 2 x half> %v
63 declare <vscale x 4 x half> @llvm.vp.fdiv.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>, <vscale x 4 x i1>, i32)
65 define <vscale x 4 x half> @vfrdiv_vf_nxv4f16(<vscale x 4 x half> %va, half %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
66 ; CHECK-LABEL: vfrdiv_vf_nxv4f16:
68 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
69 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
71 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
72 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
73 %v = call <vscale x 4 x half> @llvm.vp.fdiv.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
74 ret <vscale x 4 x half> %v
77 define <vscale x 4 x half> @vfrdiv_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, i32 zeroext %evl) {
78 ; CHECK-LABEL: vfrdiv_vf_nxv4f16_unmasked:
80 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
81 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
83 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
84 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
85 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
86 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
87 %v = call <vscale x 4 x half> @llvm.vp.fdiv.nxv4f16(<vscale x 4 x half> %vb, <vscale x 4 x half> %va, <vscale x 4 x i1> %m, i32 %evl)
88 ret <vscale x 4 x half> %v
91 declare <vscale x 8 x half> @llvm.vp.fdiv.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x i1>, i32)
93 define <vscale x 8 x half> @vfrdiv_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
94 ; CHECK-LABEL: vfrdiv_vf_nxv8f16:
96 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
97 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
99 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
100 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
101 %v = call <vscale x 8 x half> @llvm.vp.fdiv.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)
102 ret <vscale x 8 x half> %v
105 define <vscale x 8 x half> @vfrdiv_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, i32 zeroext %evl) {
106 ; CHECK-LABEL: vfrdiv_vf_nxv8f16_unmasked:
108 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
109 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
111 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
112 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
113 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
114 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
115 %v = call <vscale x 8 x half> @llvm.vp.fdiv.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, <vscale x 8 x i1> %m, i32 %evl)
116 ret <vscale x 8 x half> %v
119 declare <vscale x 16 x half> @llvm.vp.fdiv.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>, <vscale x 16 x i1>, i32)
121 define <vscale x 16 x half> @vfrdiv_vf_nxv16f16(<vscale x 16 x half> %va, half %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
122 ; CHECK-LABEL: vfrdiv_vf_nxv16f16:
124 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
125 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
127 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
128 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
129 %v = call <vscale x 16 x half> @llvm.vp.fdiv.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)
130 ret <vscale x 16 x half> %v
133 define <vscale x 16 x half> @vfrdiv_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, i32 zeroext %evl) {
134 ; CHECK-LABEL: vfrdiv_vf_nxv16f16_unmasked:
136 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
137 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
139 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
140 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
141 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
142 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
143 %v = call <vscale x 16 x half> @llvm.vp.fdiv.nxv16f16(<vscale x 16 x half> %vb, <vscale x 16 x half> %va, <vscale x 16 x i1> %m, i32 %evl)
144 ret <vscale x 16 x half> %v
147 declare <vscale x 32 x half> @llvm.vp.fdiv.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>, <vscale x 32 x i1>, i32)
149 define <vscale x 32 x half> @vfrdiv_vf_nxv32f16(<vscale x 32 x half> %va, half %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
150 ; CHECK-LABEL: vfrdiv_vf_nxv32f16:
152 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
153 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
155 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
156 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
157 %v = call <vscale x 32 x half> @llvm.vp.fdiv.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)
158 ret <vscale x 32 x half> %v
161 define <vscale x 32 x half> @vfrdiv_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, i32 zeroext %evl) {
162 ; CHECK-LABEL: vfrdiv_vf_nxv32f16_unmasked:
164 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
165 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
167 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
168 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
169 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
170 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
171 %v = call <vscale x 32 x half> @llvm.vp.fdiv.nxv32f16(<vscale x 32 x half> %vb, <vscale x 32 x half> %va, <vscale x 32 x i1> %m, i32 %evl)
172 ret <vscale x 32 x half> %v
175 declare <vscale x 1 x float> @llvm.vp.fdiv.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>, <vscale x 1 x i1>, i32)
177 define <vscale x 1 x float> @vfrdiv_vf_nxv1f32(<vscale x 1 x float> %va, float %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
178 ; CHECK-LABEL: vfrdiv_vf_nxv1f32:
180 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
181 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
183 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
184 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
185 %v = call <vscale x 1 x float> @llvm.vp.fdiv.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)
186 ret <vscale x 1 x float> %v
189 define <vscale x 1 x float> @vfrdiv_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, i32 zeroext %evl) {
190 ; CHECK-LABEL: vfrdiv_vf_nxv1f32_unmasked:
192 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
193 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
195 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
196 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
197 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
198 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
199 %v = call <vscale x 1 x float> @llvm.vp.fdiv.nxv1f32(<vscale x 1 x float> %vb, <vscale x 1 x float> %va, <vscale x 1 x i1> %m, i32 %evl)
200 ret <vscale x 1 x float> %v
203 declare <vscale x 2 x float> @llvm.vp.fdiv.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>, <vscale x 2 x i1>, i32)
205 define <vscale x 2 x float> @vfrdiv_vf_nxv2f32(<vscale x 2 x float> %va, float %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
206 ; CHECK-LABEL: vfrdiv_vf_nxv2f32:
208 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
209 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
211 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
212 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
213 %v = call <vscale x 2 x float> @llvm.vp.fdiv.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)
214 ret <vscale x 2 x float> %v
217 define <vscale x 2 x float> @vfrdiv_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, i32 zeroext %evl) {
218 ; CHECK-LABEL: vfrdiv_vf_nxv2f32_unmasked:
220 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
221 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
223 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
224 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
225 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
226 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
227 %v = call <vscale x 2 x float> @llvm.vp.fdiv.nxv2f32(<vscale x 2 x float> %vb, <vscale x 2 x float> %va, <vscale x 2 x i1> %m, i32 %evl)
228 ret <vscale x 2 x float> %v
231 declare <vscale x 4 x float> @llvm.vp.fdiv.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x i1>, i32)
233 define <vscale x 4 x float> @vfrdiv_vf_nxv4f32(<vscale x 4 x float> %va, float %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
234 ; CHECK-LABEL: vfrdiv_vf_nxv4f32:
236 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
237 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
239 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
240 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
241 %v = call <vscale x 4 x float> @llvm.vp.fdiv.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)
242 ret <vscale x 4 x float> %v
245 define <vscale x 4 x float> @vfrdiv_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, i32 zeroext %evl) {
246 ; CHECK-LABEL: vfrdiv_vf_nxv4f32_unmasked:
248 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
249 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
251 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
252 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
253 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
254 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
255 %v = call <vscale x 4 x float> @llvm.vp.fdiv.nxv4f32(<vscale x 4 x float> %vb, <vscale x 4 x float> %va, <vscale x 4 x i1> %m, i32 %evl)
256 ret <vscale x 4 x float> %v
259 declare <vscale x 8 x float> @llvm.vp.fdiv.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>, <vscale x 8 x i1>, i32)
261 define <vscale x 8 x float> @vfrdiv_vf_nxv8f32(<vscale x 8 x float> %va, float %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
262 ; CHECK-LABEL: vfrdiv_vf_nxv8f32:
264 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
265 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
267 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
268 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
269 %v = call <vscale x 8 x float> @llvm.vp.fdiv.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)
270 ret <vscale x 8 x float> %v
273 define <vscale x 8 x float> @vfrdiv_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, i32 zeroext %evl) {
274 ; CHECK-LABEL: vfrdiv_vf_nxv8f32_unmasked:
276 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
277 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
279 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
280 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
281 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
282 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
283 %v = call <vscale x 8 x float> @llvm.vp.fdiv.nxv8f32(<vscale x 8 x float> %vb, <vscale x 8 x float> %va, <vscale x 8 x i1> %m, i32 %evl)
284 ret <vscale x 8 x float> %v
287 declare <vscale x 16 x float> @llvm.vp.fdiv.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>, <vscale x 16 x i1>, i32)
289 define <vscale x 16 x float> @vfrdiv_vf_nxv16f32(<vscale x 16 x float> %va, float %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
290 ; CHECK-LABEL: vfrdiv_vf_nxv16f32:
292 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
293 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
295 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
296 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
297 %v = call <vscale x 16 x float> @llvm.vp.fdiv.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)
298 ret <vscale x 16 x float> %v
301 define <vscale x 16 x float> @vfrdiv_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, i32 zeroext %evl) {
302 ; CHECK-LABEL: vfrdiv_vf_nxv16f32_unmasked:
304 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
305 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
307 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
308 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
309 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
310 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
311 %v = call <vscale x 16 x float> @llvm.vp.fdiv.nxv16f32(<vscale x 16 x float> %vb, <vscale x 16 x float> %va, <vscale x 16 x i1> %m, i32 %evl)
312 ret <vscale x 16 x float> %v
315 declare <vscale x 1 x double> @llvm.vp.fdiv.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, <vscale x 1 x i1>, i32)
317 define <vscale x 1 x double> @vfrdiv_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
318 ; CHECK-LABEL: vfrdiv_vf_nxv1f64:
320 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
321 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
323 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
324 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
325 %v = call <vscale x 1 x double> @llvm.vp.fdiv.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)
326 ret <vscale x 1 x double> %v
329 define <vscale x 1 x double> @vfrdiv_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, i32 zeroext %evl) {
330 ; CHECK-LABEL: vfrdiv_vf_nxv1f64_unmasked:
332 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
333 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
335 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
336 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
337 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
338 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
339 %v = call <vscale x 1 x double> @llvm.vp.fdiv.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, <vscale x 1 x i1> %m, i32 %evl)
340 ret <vscale x 1 x double> %v
343 declare <vscale x 2 x double> @llvm.vp.fdiv.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x i1>, i32)
345 define <vscale x 2 x double> @vfrdiv_vf_nxv2f64(<vscale x 2 x double> %va, double %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
346 ; CHECK-LABEL: vfrdiv_vf_nxv2f64:
348 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
349 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
351 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
352 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
353 %v = call <vscale x 2 x double> @llvm.vp.fdiv.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)
354 ret <vscale x 2 x double> %v
357 define <vscale x 2 x double> @vfrdiv_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, i32 zeroext %evl) {
358 ; CHECK-LABEL: vfrdiv_vf_nxv2f64_unmasked:
360 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
361 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
363 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
364 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
365 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
366 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
367 %v = call <vscale x 2 x double> @llvm.vp.fdiv.nxv2f64(<vscale x 2 x double> %vb, <vscale x 2 x double> %va, <vscale x 2 x i1> %m, i32 %evl)
368 ret <vscale x 2 x double> %v
371 declare <vscale x 4 x double> @llvm.vp.fdiv.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>, <vscale x 4 x i1>, i32)
373 define <vscale x 4 x double> @vfrdiv_vf_nxv4f64(<vscale x 4 x double> %va, double %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
374 ; CHECK-LABEL: vfrdiv_vf_nxv4f64:
376 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
377 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
379 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
380 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
381 %v = call <vscale x 4 x double> @llvm.vp.fdiv.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)
382 ret <vscale x 4 x double> %v
385 define <vscale x 4 x double> @vfrdiv_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, i32 zeroext %evl) {
386 ; CHECK-LABEL: vfrdiv_vf_nxv4f64_unmasked:
388 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
389 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
391 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
392 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
393 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
394 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
395 %v = call <vscale x 4 x double> @llvm.vp.fdiv.nxv4f64(<vscale x 4 x double> %vb, <vscale x 4 x double> %va, <vscale x 4 x i1> %m, i32 %evl)
396 ret <vscale x 4 x double> %v
399 declare <vscale x 8 x double> @llvm.vp.fdiv.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, <vscale x 8 x i1>, i32)
401 define <vscale x 8 x double> @vfrdiv_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
402 ; CHECK-LABEL: vfrdiv_vf_nxv8f64:
404 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
405 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
407 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
408 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
409 %v = call <vscale x 8 x double> @llvm.vp.fdiv.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)
410 ret <vscale x 8 x double> %v
413 define <vscale x 8 x double> @vfrdiv_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, i32 zeroext %evl) {
414 ; CHECK-LABEL: vfrdiv_vf_nxv8f64_unmasked:
416 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
417 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
419 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
420 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
421 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
422 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
423 %v = call <vscale x 8 x double> @llvm.vp.fdiv.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, <vscale x 8 x i1> %m, i32 %evl)
424 ret <vscale x 8 x double> %v