You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll
+100Lines changed: 100 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3193,3 +3193,103 @@ define <vscale x 4 x double> @vfwsub_wf(<vscale x 4 x double> %a, float %b, iXLe
3193
3193
%2 = call <vscale x 4 x double> @llvm.riscv.vfadd.nxv4f64.nxv4f64(<vscale x 4 x double> poison, <vscale x 4 x double> %1, <vscale x 4 x double> %1, iXLen 7, iXLen %vl)
3194
3194
ret <vscale x 4 x double> %2
3195
3195
}
3196
+
3197
+
define <vscale x 4 x float> @vfmul_vv(<vscale x 4 x float> %a, <vscale x 4 x float> %b, iXLen %vl) {
3198
+
; NOVLOPT-LABEL: vfmul_vv:
3199
+
; NOVLOPT: # %bb.0:
3200
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3201
+
; NOVLOPT-NEXT: vfmul.vv v8, v8, v10
3202
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3203
+
; NOVLOPT-NEXT: vfadd.vv v8, v8, v10
3204
+
; NOVLOPT-NEXT: ret
3205
+
;
3206
+
; VLOPT-LABEL: vfmul_vv:
3207
+
; VLOPT: # %bb.0:
3208
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3209
+
; VLOPT-NEXT: vfmul.vv v8, v8, v10
3210
+
; VLOPT-NEXT: vfadd.vv v8, v8, v10
3211
+
; VLOPT-NEXT: ret
3212
+
%1 = call <vscale x 4 x float> @llvm.riscv.vfmul.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %a, <vscale x 4 x float> %b, iXLen 7, iXLen -1)
3213
+
%2 = call <vscale x 4 x float> @llvm.riscv.vfadd.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %1, <vscale x 4 x float> %b, iXLen 7, iXLen %vl)
3214
+
ret <vscale x 4 x float> %2
3215
+
}
3216
+
3217
+
define <vscale x 4 x float> @vfmul_vf(<vscale x 4 x float> %a, float%b, iXLen %vl) {
3218
+
; NOVLOPT-LABEL: vfmul_vf:
3219
+
; NOVLOPT: # %bb.0:
3220
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3221
+
; NOVLOPT-NEXT: vfmul.vf v10, v8, fa0
3222
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3223
+
; NOVLOPT-NEXT: vfadd.vv v8, v10, v8
3224
+
; NOVLOPT-NEXT: ret
3225
+
;
3226
+
; VLOPT-LABEL: vfmul_vf:
3227
+
; VLOPT: # %bb.0:
3228
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3229
+
; VLOPT-NEXT: vfmul.vf v10, v8, fa0
3230
+
; VLOPT-NEXT: vfadd.vv v8, v10, v8
3231
+
; VLOPT-NEXT: ret
3232
+
%1 = call <vscale x 4 x float> @llvm.riscv.vfmul.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %a, float%b, iXLen 7, iXLen -1)
3233
+
%2 = call <vscale x 4 x float> @llvm.riscv.vfadd.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %1, <vscale x 4 x float> %a, iXLen 7, iXLen %vl)
3234
+
ret <vscale x 4 x float> %2
3235
+
}
3236
+
3237
+
define <vscale x 4 x float> @vfdiv_vv(<vscale x 4 x float> %a, <vscale x 4 x float> %b, iXLen %vl) {
3238
+
; NOVLOPT-LABEL: vfdiv_vv:
3239
+
; NOVLOPT: # %bb.0:
3240
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3241
+
; NOVLOPT-NEXT: vfdiv.vv v8, v8, v10
3242
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3243
+
; NOVLOPT-NEXT: vfadd.vv v8, v8, v10
3244
+
; NOVLOPT-NEXT: ret
3245
+
;
3246
+
; VLOPT-LABEL: vfdiv_vv:
3247
+
; VLOPT: # %bb.0:
3248
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3249
+
; VLOPT-NEXT: vfdiv.vv v8, v8, v10
3250
+
; VLOPT-NEXT: vfadd.vv v8, v8, v10
3251
+
; VLOPT-NEXT: ret
3252
+
%1 = call <vscale x 4 x float> @llvm.riscv.vfdiv.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %a, <vscale x 4 x float> %b, iXLen 7, iXLen -1)
3253
+
%2 = call <vscale x 4 x float> @llvm.riscv.vfadd.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %1, <vscale x 4 x float> %b, iXLen 7, iXLen %vl)
3254
+
ret <vscale x 4 x float> %2
3255
+
}
3256
+
3257
+
define <vscale x 4 x float> @vfdiv_vf(<vscale x 4 x float> %a, float%b, iXLen %vl) {
3258
+
; NOVLOPT-LABEL: vfdiv_vf:
3259
+
; NOVLOPT: # %bb.0:
3260
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3261
+
; NOVLOPT-NEXT: vfdiv.vf v10, v8, fa0
3262
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3263
+
; NOVLOPT-NEXT: vfadd.vv v8, v10, v8
3264
+
; NOVLOPT-NEXT: ret
3265
+
;
3266
+
; VLOPT-LABEL: vfdiv_vf:
3267
+
; VLOPT: # %bb.0:
3268
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3269
+
; VLOPT-NEXT: vfdiv.vf v10, v8, fa0
3270
+
; VLOPT-NEXT: vfadd.vv v8, v10, v8
3271
+
; VLOPT-NEXT: ret
3272
+
%1 = call <vscale x 4 x float> @llvm.riscv.vfdiv.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %a, float%b, iXLen 7, iXLen -1)
3273
+
%2 = call <vscale x 4 x float> @llvm.riscv.vfadd.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %1, <vscale x 4 x float> %a, iXLen 7, iXLen %vl)
3274
+
ret <vscale x 4 x float> %2
3275
+
}
3276
+
3277
+
define <vscale x 4 x float> @vfrdiv_vf(<vscale x 4 x float> %a, float%b, iXLen %vl) {
3278
+
; NOVLOPT-LABEL: vfrdiv_vf:
3279
+
; NOVLOPT: # %bb.0:
3280
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3281
+
; NOVLOPT-NEXT: vfrdiv.vf v10, v8, fa0
3282
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3283
+
; NOVLOPT-NEXT: vfadd.vv v8, v10, v8
3284
+
; NOVLOPT-NEXT: ret
3285
+
;
3286
+
; VLOPT-LABEL: vfrdiv_vf:
3287
+
; VLOPT: # %bb.0:
3288
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3289
+
; VLOPT-NEXT: vfrdiv.vf v10, v8, fa0
3290
+
; VLOPT-NEXT: vfadd.vv v8, v10, v8
3291
+
; VLOPT-NEXT: ret
3292
+
%1 = call <vscale x 4 x float> @llvm.riscv.vfrdiv.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %a, float%b, iXLen 7, iXLen -1)
3293
+
%2 = call <vscale x 4 x float> @llvm.riscv.vfadd.nxv4f32.nxv4f32(<vscale x 4 x float> poison, <vscale x 4 x float> %1, <vscale x 4 x float> %a, iXLen 7, iXLen %vl)
0 commit comments