79 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+m,+v,+zvfh < %s | FileCheck %s3; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+zvfh < %s | FileCheck %s4 5define <4 x half> @vuitofp_v4f16_v4i1(<4 x i1> %va, <4 x i1> %m, i32 zeroext %evl) {6; CHECK-LABEL: vuitofp_v4f16_v4i1:7; CHECK: # %bb.0:8; CHECK-NEXT: vsetvli zero, a0, e16, mf2, 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.xu.v v8, v9, v0.t13; CHECK-NEXT: ret14 %v = call <4 x half> @llvm.vp.uitofp.v4f16.v4i1(<4 x i1> %va, <4 x i1> %m, i32 %evl)15 ret <4 x half> %v16}17 18define <4 x half> @vuitofp_v4f16_v4i1_unmasked(<4 x i1> %va, i32 zeroext %evl) {19; CHECK-LABEL: vuitofp_v4f16_v4i1_unmasked:20; CHECK: # %bb.0:21; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma22; CHECK-NEXT: vmv.v.i v8, 023; CHECK-NEXT: vmerge.vim v8, v8, 1, v024; CHECK-NEXT: vfcvt.f.xu.v v8, v825; CHECK-NEXT: ret26 %v = call <4 x half> @llvm.vp.uitofp.v4f16.v4i1(<4 x i1> %va, <4 x i1> splat (i1 true), i32 %evl)27 ret <4 x half> %v28}29 30define <4 x float> @vuitofp_v4f32_v4i1(<4 x i1> %va, <4 x i1> %m, i32 zeroext %evl) {31; CHECK-LABEL: vuitofp_v4f32_v4i1:32; CHECK: # %bb.0:33; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma34; CHECK-NEXT: vmv.v.i v9, 035; CHECK-NEXT: vmerge.vim v9, v9, 1, v036; CHECK-NEXT: vmv1r.v v0, v837; CHECK-NEXT: vfcvt.f.xu.v v8, v9, v0.t38; CHECK-NEXT: ret39 %v = call <4 x float> @llvm.vp.uitofp.v4f32.v4i1(<4 x i1> %va, <4 x i1> %m, i32 %evl)40 ret <4 x float> %v41}42 43define <4 x float> @vuitofp_v4f32_v4i1_unmasked(<4 x i1> %va, i32 zeroext %evl) {44; CHECK-LABEL: vuitofp_v4f32_v4i1_unmasked:45; CHECK: # %bb.0:46; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma47; CHECK-NEXT: vmv.v.i v8, 048; CHECK-NEXT: vmerge.vim v8, v8, 1, v049; CHECK-NEXT: vfcvt.f.xu.v v8, v850; CHECK-NEXT: ret51 %v = call <4 x float> @llvm.vp.uitofp.v4f32.v4i1(<4 x i1> %va, <4 x i1> splat (i1 true), i32 %evl)52 ret <4 x float> %v53}54 55define <4 x double> @vuitofp_v4f64_v4i1(<4 x i1> %va, <4 x i1> %m, i32 zeroext %evl) {56; CHECK-LABEL: vuitofp_v4f64_v4i1:57; CHECK: # %bb.0:58; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma59; CHECK-NEXT: vmv.v.i v10, 060; CHECK-NEXT: vmerge.vim v10, v10, 1, v061; CHECK-NEXT: vmv1r.v v0, v862; CHECK-NEXT: vfcvt.f.xu.v v8, v10, v0.t63; CHECK-NEXT: ret64 %v = call <4 x double> @llvm.vp.uitofp.v4f64.v4i1(<4 x i1> %va, <4 x i1> %m, i32 %evl)65 ret <4 x double> %v66}67 68define <4 x double> @vuitofp_v4f64_v4i1_unmasked(<4 x i1> %va, i32 zeroext %evl) {69; CHECK-LABEL: vuitofp_v4f64_v4i1_unmasked:70; CHECK: # %bb.0:71; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma72; CHECK-NEXT: vmv.v.i v8, 073; CHECK-NEXT: vmerge.vim v8, v8, 1, v074; CHECK-NEXT: vfcvt.f.xu.v v8, v875; CHECK-NEXT: ret76 %v = call <4 x double> @llvm.vp.uitofp.v4f64.v4i1(<4 x i1> %va, <4 x i1> splat (i1 true), i32 %evl)77 ret <4 x double> %v78}79