brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 3de3447 Raw
108 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+zvfh,+zvfbfmin < %s | FileCheck %s3; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+zvfh,+zvfbfmin < %s | FileCheck %s4 5define <vscale x 2 x bfloat> @vsitofp_nxv2bf16_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {6; CHECK-LABEL: vsitofp_nxv2bf16_nxv2i1:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma9; CHECK-NEXT:    vmv.v.i v9, 010; CHECK-NEXT:    vmerge.vim v9, v9, -1, v011; CHECK-NEXT:    vmv1r.v v0, v812; CHECK-NEXT:    vfcvt.f.x.v v9, v9, v0.t13; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma14; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v915; CHECK-NEXT:    ret16  %v = call <vscale x 2 x bfloat> @llvm.vp.sitofp.nxv2bf16.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 %evl)17  ret <vscale x 2 x bfloat> %v18}19 20define <vscale x 2 x bfloat> @vsitofp_nxv2bf16_nxv2i1_unmasked(<vscale x 2 x i1> %va, i32 zeroext %evl) {21; CHECK-LABEL: vsitofp_nxv2bf16_nxv2i1_unmasked:22; CHECK:       # %bb.0:23; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma24; CHECK-NEXT:    vmv.v.i v8, 025; CHECK-NEXT:    vmerge.vim v8, v8, -1, v026; CHECK-NEXT:    vfcvt.f.x.v v9, v827; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma28; CHECK-NEXT:    vfncvtbf16.f.f.w v8, v929; CHECK-NEXT:    ret30  %v = call <vscale x 2 x bfloat> @llvm.vp.sitofp.nxv2bf16.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)31  ret <vscale x 2 x bfloat> %v32}33 34define <vscale x 2 x half> @vsitofp_nxv2f16_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {35; CHECK-LABEL: vsitofp_nxv2f16_nxv2i1:36; CHECK:       # %bb.0:37; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma38; CHECK-NEXT:    vmv.v.i v9, 039; CHECK-NEXT:    vmerge.vim v9, v9, -1, v040; CHECK-NEXT:    vmv1r.v v0, v841; CHECK-NEXT:    vfcvt.f.x.v v8, v9, v0.t42; CHECK-NEXT:    ret43  %v = call <vscale x 2 x half> @llvm.vp.sitofp.nxv2f16.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 %evl)44  ret <vscale x 2 x half> %v45}46 47define <vscale x 2 x half> @vsitofp_nxv2f16_nxv2i1_unmasked(<vscale x 2 x i1> %va, i32 zeroext %evl) {48; CHECK-LABEL: vsitofp_nxv2f16_nxv2i1_unmasked:49; CHECK:       # %bb.0:50; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma51; CHECK-NEXT:    vmv.v.i v8, 052; CHECK-NEXT:    vmerge.vim v8, v8, -1, v053; CHECK-NEXT:    vfcvt.f.x.v v8, v854; CHECK-NEXT:    ret55  %v = call <vscale x 2 x half> @llvm.vp.sitofp.nxv2f16.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)56  ret <vscale x 2 x half> %v57}58 59define <vscale x 2 x float> @vsitofp_nxv2f32_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {60; CHECK-LABEL: vsitofp_nxv2f32_nxv2i1:61; CHECK:       # %bb.0:62; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma63; CHECK-NEXT:    vmv.v.i v9, 064; CHECK-NEXT:    vmerge.vim v9, v9, -1, v065; CHECK-NEXT:    vmv1r.v v0, v866; CHECK-NEXT:    vfcvt.f.x.v v8, v9, v0.t67; CHECK-NEXT:    ret68  %v = call <vscale x 2 x float> @llvm.vp.sitofp.nxv2f32.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 %evl)69  ret <vscale x 2 x float> %v70}71 72define <vscale x 2 x float> @vsitofp_nxv2f32_nxv2i1_unmasked(<vscale x 2 x i1> %va, i32 zeroext %evl) {73; CHECK-LABEL: vsitofp_nxv2f32_nxv2i1_unmasked:74; CHECK:       # %bb.0:75; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma76; CHECK-NEXT:    vmv.v.i v8, 077; CHECK-NEXT:    vmerge.vim v8, v8, -1, v078; CHECK-NEXT:    vfcvt.f.x.v v8, v879; CHECK-NEXT:    ret80  %v = call <vscale x 2 x float> @llvm.vp.sitofp.nxv2f32.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)81  ret <vscale x 2 x float> %v82}83 84define <vscale x 2 x double> @vsitofp_nxv2f64_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {85; CHECK-LABEL: vsitofp_nxv2f64_nxv2i1:86; CHECK:       # %bb.0:87; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma88; CHECK-NEXT:    vmv.v.i v10, 089; CHECK-NEXT:    vmerge.vim v10, v10, -1, v090; CHECK-NEXT:    vmv1r.v v0, v891; CHECK-NEXT:    vfcvt.f.x.v v8, v10, v0.t92; CHECK-NEXT:    ret93  %v = call <vscale x 2 x double> @llvm.vp.sitofp.nxv2f64.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %m, i32 %evl)94  ret <vscale x 2 x double> %v95}96 97define <vscale x 2 x double> @vsitofp_nxv2f64_nxv2i1_unmasked(<vscale x 2 x i1> %va, i32 zeroext %evl) {98; CHECK-LABEL: vsitofp_nxv2f64_nxv2i1_unmasked:99; CHECK:       # %bb.0:100; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma101; CHECK-NEXT:    vmv.v.i v8, 0102; CHECK-NEXT:    vmerge.vim v8, v8, -1, v0103; CHECK-NEXT:    vfcvt.f.x.v v8, v8104; CHECK-NEXT:    ret105  %v = call <vscale x 2 x double> @llvm.vp.sitofp.nxv2f64.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> splat (i1 true), i32 %evl)106  ret <vscale x 2 x double> %v107}108