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 %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> splat (i1 true), i32 %evl)
30 ret <vscale x 1 x half> %v
33 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)
35 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) {
36 ; CHECK-LABEL: vfrdiv_vf_nxv2f16:
38 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
39 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
41 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
42 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
43 %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)
44 ret <vscale x 2 x half> %v
47 define <vscale x 2 x half> @vfrdiv_vf_nxv2f16_unmasked(<vscale x 2 x half> %va, half %b, i32 zeroext %evl) {
48 ; CHECK-LABEL: vfrdiv_vf_nxv2f16_unmasked:
50 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
51 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
53 %elt.head = insertelement <vscale x 2 x half> poison, half %b, i32 0
54 %vb = shufflevector <vscale x 2 x half> %elt.head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
55 %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> splat (i1 true), i32 %evl)
56 ret <vscale x 2 x half> %v
59 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)
61 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) {
62 ; CHECK-LABEL: vfrdiv_vf_nxv4f16:
64 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
65 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
67 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
68 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
69 %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)
70 ret <vscale x 4 x half> %v
73 define <vscale x 4 x half> @vfrdiv_vf_nxv4f16_unmasked(<vscale x 4 x half> %va, half %b, i32 zeroext %evl) {
74 ; CHECK-LABEL: vfrdiv_vf_nxv4f16_unmasked:
76 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
77 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
79 %elt.head = insertelement <vscale x 4 x half> poison, half %b, i32 0
80 %vb = shufflevector <vscale x 4 x half> %elt.head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
81 %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> splat (i1 true), i32 %evl)
82 ret <vscale x 4 x half> %v
85 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)
87 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) {
88 ; CHECK-LABEL: vfrdiv_vf_nxv8f16:
90 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
91 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
93 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
94 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
95 %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)
96 ret <vscale x 8 x half> %v
99 define <vscale x 8 x half> @vfrdiv_vf_nxv8f16_unmasked(<vscale x 8 x half> %va, half %b, i32 zeroext %evl) {
100 ; CHECK-LABEL: vfrdiv_vf_nxv8f16_unmasked:
102 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
103 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
105 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
106 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
107 %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> splat (i1 true), i32 %evl)
108 ret <vscale x 8 x half> %v
111 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)
113 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) {
114 ; CHECK-LABEL: vfrdiv_vf_nxv16f16:
116 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
117 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
119 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
120 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
121 %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)
122 ret <vscale x 16 x half> %v
125 define <vscale x 16 x half> @vfrdiv_vf_nxv16f16_unmasked(<vscale x 16 x half> %va, half %b, i32 zeroext %evl) {
126 ; CHECK-LABEL: vfrdiv_vf_nxv16f16_unmasked:
128 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
129 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
131 %elt.head = insertelement <vscale x 16 x half> poison, half %b, i32 0
132 %vb = shufflevector <vscale x 16 x half> %elt.head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
133 %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> splat (i1 true), i32 %evl)
134 ret <vscale x 16 x half> %v
137 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)
139 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) {
140 ; CHECK-LABEL: vfrdiv_vf_nxv32f16:
142 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
143 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
145 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
146 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
147 %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)
148 ret <vscale x 32 x half> %v
151 define <vscale x 32 x half> @vfrdiv_vf_nxv32f16_unmasked(<vscale x 32 x half> %va, half %b, i32 zeroext %evl) {
152 ; CHECK-LABEL: vfrdiv_vf_nxv32f16_unmasked:
154 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
155 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
157 %elt.head = insertelement <vscale x 32 x half> poison, half %b, i32 0
158 %vb = shufflevector <vscale x 32 x half> %elt.head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
159 %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> splat (i1 true), i32 %evl)
160 ret <vscale x 32 x half> %v
163 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)
165 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) {
166 ; CHECK-LABEL: vfrdiv_vf_nxv1f32:
168 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
169 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
171 %elt.head = insertelement <vscale x 1 x float> poison, float %b, i32 0
172 %vb = shufflevector <vscale x 1 x float> %elt.head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
173 %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)
174 ret <vscale x 1 x float> %v
177 define <vscale x 1 x float> @vfrdiv_vf_nxv1f32_unmasked(<vscale x 1 x float> %va, float %b, i32 zeroext %evl) {
178 ; CHECK-LABEL: vfrdiv_vf_nxv1f32_unmasked:
180 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
181 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
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> splat (i1 true), i32 %evl)
186 ret <vscale x 1 x float> %v
189 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)
191 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) {
192 ; CHECK-LABEL: vfrdiv_vf_nxv2f32:
194 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
195 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
197 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
198 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
199 %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)
200 ret <vscale x 2 x float> %v
203 define <vscale x 2 x float> @vfrdiv_vf_nxv2f32_unmasked(<vscale x 2 x float> %va, float %b, i32 zeroext %evl) {
204 ; CHECK-LABEL: vfrdiv_vf_nxv2f32_unmasked:
206 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
207 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
209 %elt.head = insertelement <vscale x 2 x float> poison, float %b, i32 0
210 %vb = shufflevector <vscale x 2 x float> %elt.head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
211 %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> splat (i1 true), i32 %evl)
212 ret <vscale x 2 x float> %v
215 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)
217 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) {
218 ; CHECK-LABEL: vfrdiv_vf_nxv4f32:
220 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
221 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
223 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
224 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
225 %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)
226 ret <vscale x 4 x float> %v
229 define <vscale x 4 x float> @vfrdiv_vf_nxv4f32_unmasked(<vscale x 4 x float> %va, float %b, i32 zeroext %evl) {
230 ; CHECK-LABEL: vfrdiv_vf_nxv4f32_unmasked:
232 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
233 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
235 %elt.head = insertelement <vscale x 4 x float> poison, float %b, i32 0
236 %vb = shufflevector <vscale x 4 x float> %elt.head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
237 %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> splat (i1 true), i32 %evl)
238 ret <vscale x 4 x float> %v
241 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)
243 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) {
244 ; CHECK-LABEL: vfrdiv_vf_nxv8f32:
246 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
247 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
249 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
250 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
251 %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)
252 ret <vscale x 8 x float> %v
255 define <vscale x 8 x float> @vfrdiv_vf_nxv8f32_unmasked(<vscale x 8 x float> %va, float %b, i32 zeroext %evl) {
256 ; CHECK-LABEL: vfrdiv_vf_nxv8f32_unmasked:
258 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
259 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
261 %elt.head = insertelement <vscale x 8 x float> poison, float %b, i32 0
262 %vb = shufflevector <vscale x 8 x float> %elt.head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
263 %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> splat (i1 true), i32 %evl)
264 ret <vscale x 8 x float> %v
267 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)
269 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) {
270 ; CHECK-LABEL: vfrdiv_vf_nxv16f32:
272 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
273 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
275 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
276 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
277 %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)
278 ret <vscale x 16 x float> %v
281 define <vscale x 16 x float> @vfrdiv_vf_nxv16f32_unmasked(<vscale x 16 x float> %va, float %b, i32 zeroext %evl) {
282 ; CHECK-LABEL: vfrdiv_vf_nxv16f32_unmasked:
284 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
285 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
287 %elt.head = insertelement <vscale x 16 x float> poison, float %b, i32 0
288 %vb = shufflevector <vscale x 16 x float> %elt.head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
289 %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> splat (i1 true), i32 %evl)
290 ret <vscale x 16 x float> %v
293 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)
295 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) {
296 ; CHECK-LABEL: vfrdiv_vf_nxv1f64:
298 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
299 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
301 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
302 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
303 %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)
304 ret <vscale x 1 x double> %v
307 define <vscale x 1 x double> @vfrdiv_vf_nxv1f64_unmasked(<vscale x 1 x double> %va, double %b, i32 zeroext %evl) {
308 ; CHECK-LABEL: vfrdiv_vf_nxv1f64_unmasked:
310 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
311 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
313 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
314 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
315 %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> splat (i1 true), i32 %evl)
316 ret <vscale x 1 x double> %v
319 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)
321 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) {
322 ; CHECK-LABEL: vfrdiv_vf_nxv2f64:
324 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
325 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
327 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
328 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
329 %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)
330 ret <vscale x 2 x double> %v
333 define <vscale x 2 x double> @vfrdiv_vf_nxv2f64_unmasked(<vscale x 2 x double> %va, double %b, i32 zeroext %evl) {
334 ; CHECK-LABEL: vfrdiv_vf_nxv2f64_unmasked:
336 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
337 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
339 %elt.head = insertelement <vscale x 2 x double> poison, double %b, i32 0
340 %vb = shufflevector <vscale x 2 x double> %elt.head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
341 %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> splat (i1 true), i32 %evl)
342 ret <vscale x 2 x double> %v
345 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)
347 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) {
348 ; CHECK-LABEL: vfrdiv_vf_nxv4f64:
350 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
351 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
353 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
354 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
355 %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)
356 ret <vscale x 4 x double> %v
359 define <vscale x 4 x double> @vfrdiv_vf_nxv4f64_unmasked(<vscale x 4 x double> %va, double %b, i32 zeroext %evl) {
360 ; CHECK-LABEL: vfrdiv_vf_nxv4f64_unmasked:
362 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
363 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
365 %elt.head = insertelement <vscale x 4 x double> poison, double %b, i32 0
366 %vb = shufflevector <vscale x 4 x double> %elt.head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
367 %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> splat (i1 true), i32 %evl)
368 ret <vscale x 4 x double> %v
371 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)
373 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) {
374 ; CHECK-LABEL: vfrdiv_vf_nxv8f64:
376 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
377 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0, v0.t
379 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
380 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
381 %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)
382 ret <vscale x 8 x double> %v
385 define <vscale x 8 x double> @vfrdiv_vf_nxv8f64_unmasked(<vscale x 8 x double> %va, double %b, i32 zeroext %evl) {
386 ; CHECK-LABEL: vfrdiv_vf_nxv8f64_unmasked:
388 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
389 ; CHECK-NEXT: vfrdiv.vf v8, v8, fa0
391 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
392 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
393 %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> splat (i1 true), i32 %evl)
394 ret <vscale x 8 x double> %v