Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vfrdiv-vp.ll
blobd7bb1ad7726db18d4e28f96004ab78c3ad907ead
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:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
13 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
14 ; CHECK-NEXT:    ret
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:
23 ; CHECK:       # %bb.0:
24 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
25 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
26 ; CHECK-NEXT:    ret
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:
39 ; CHECK:       # %bb.0:
40 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
41 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
42 ; CHECK-NEXT:    ret
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:
51 ; CHECK:       # %bb.0:
52 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
53 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
54 ; CHECK-NEXT:    ret
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:
67 ; CHECK:       # %bb.0:
68 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
69 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
70 ; CHECK-NEXT:    ret
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:
79 ; CHECK:       # %bb.0:
80 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
81 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
82 ; CHECK-NEXT:    ret
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:
95 ; CHECK:       # %bb.0:
96 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
97 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
98 ; CHECK-NEXT:    ret
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:
107 ; CHECK:       # %bb.0:
108 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
109 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
110 ; CHECK-NEXT:    ret
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:
123 ; CHECK:       # %bb.0:
124 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
125 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
126 ; CHECK-NEXT:    ret
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:
135 ; CHECK:       # %bb.0:
136 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
137 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
138 ; CHECK-NEXT:    ret
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:
151 ; CHECK:       # %bb.0:
152 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
153 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
154 ; CHECK-NEXT:    ret
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:
163 ; CHECK:       # %bb.0:
164 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
165 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
166 ; CHECK-NEXT:    ret
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:
179 ; CHECK:       # %bb.0:
180 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
181 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
182 ; CHECK-NEXT:    ret
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:
191 ; CHECK:       # %bb.0:
192 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
193 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
194 ; CHECK-NEXT:    ret
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:
207 ; CHECK:       # %bb.0:
208 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
209 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
210 ; CHECK-NEXT:    ret
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:
219 ; CHECK:       # %bb.0:
220 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
221 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
222 ; CHECK-NEXT:    ret
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:
235 ; CHECK:       # %bb.0:
236 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
237 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
238 ; CHECK-NEXT:    ret
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:
247 ; CHECK:       # %bb.0:
248 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
249 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
250 ; CHECK-NEXT:    ret
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:
263 ; CHECK:       # %bb.0:
264 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
265 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
266 ; CHECK-NEXT:    ret
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:
275 ; CHECK:       # %bb.0:
276 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
277 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
278 ; CHECK-NEXT:    ret
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:
291 ; CHECK:       # %bb.0:
292 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
293 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
294 ; CHECK-NEXT:    ret
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:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
305 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
306 ; CHECK-NEXT:    ret
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:
319 ; CHECK:       # %bb.0:
320 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
321 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
322 ; CHECK-NEXT:    ret
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:
331 ; CHECK:       # %bb.0:
332 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
333 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
334 ; CHECK-NEXT:    ret
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:
347 ; CHECK:       # %bb.0:
348 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
349 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
350 ; CHECK-NEXT:    ret
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:
359 ; CHECK:       # %bb.0:
360 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
361 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
362 ; CHECK-NEXT:    ret
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:
375 ; CHECK:       # %bb.0:
376 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
377 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
378 ; CHECK-NEXT:    ret
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:
387 ; CHECK:       # %bb.0:
388 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
389 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
390 ; CHECK-NEXT:    ret
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:
403 ; CHECK:       # %bb.0:
404 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
405 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0, v0.t
406 ; CHECK-NEXT:    ret
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:
415 ; CHECK:       # %bb.0:
416 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
417 ; CHECK-NEXT:    vfrdiv.vf v8, v8, fa0
418 ; CHECK-NEXT:    ret
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