471 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfh \3; RUN: -verify-machineinstrs -target-abi=ilp32d | FileCheck %s4; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfh \5; RUN: -verify-machineinstrs -target-abi=lp64d | FileCheck %s6 7define <vscale x 1 x i16> @intrinsic_vfcvt_rtz.x.f.v_nxv1i16_nxv1f16(<vscale x 1 x half> %0, iXLen %1) nounwind {8; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv1i16_nxv1f16:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma11; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v812; CHECK-NEXT: ret13entry:14 %a = call <vscale x 1 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.nxv1i16.nxv1f16(15 <vscale x 1 x i16> poison,16 <vscale x 1 x half> %0,17 iXLen %1)18 19 ret <vscale x 1 x i16> %a20}21 22define <vscale x 1 x i16> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv1i16_nxv1f16(<vscale x 1 x i16> %0, <vscale x 1 x half> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {23; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv1i16_nxv1f16:24; CHECK: # %bb.0: # %entry25; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu26; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v9, v0.t27; CHECK-NEXT: ret28entry:29 %a = call <vscale x 1 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv1i16.nxv1f16(30 <vscale x 1 x i16> %0,31 <vscale x 1 x half> %1,32 <vscale x 1 x i1> %2,33 iXLen %3, iXLen 1)34 35 ret <vscale x 1 x i16> %a36}37 38define <vscale x 2 x i16> @intrinsic_vfcvt_rtz.x.f.v_nxv2i16_nxv2f16(<vscale x 2 x half> %0, iXLen %1) nounwind {39; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv2i16_nxv2f16:40; CHECK: # %bb.0: # %entry41; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma42; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v843; CHECK-NEXT: ret44entry:45 %a = call <vscale x 2 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.nxv2i16.nxv2f16(46 <vscale x 2 x i16> poison,47 <vscale x 2 x half> %0,48 iXLen %1)49 50 ret <vscale x 2 x i16> %a51}52 53define <vscale x 2 x i16> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv2i16_nxv2f16(<vscale x 2 x i16> %0, <vscale x 2 x half> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {54; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv2i16_nxv2f16:55; CHECK: # %bb.0: # %entry56; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu57; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v9, v0.t58; CHECK-NEXT: ret59entry:60 %a = call <vscale x 2 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv2i16.nxv2f16(61 <vscale x 2 x i16> %0,62 <vscale x 2 x half> %1,63 <vscale x 2 x i1> %2,64 iXLen %3, iXLen 1)65 66 ret <vscale x 2 x i16> %a67}68 69define <vscale x 4 x i16> @intrinsic_vfcvt_rtz.x.f.v_nxv4i16_nxv4f16(<vscale x 4 x half> %0, iXLen %1) nounwind {70; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv4i16_nxv4f16:71; CHECK: # %bb.0: # %entry72; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma73; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v874; CHECK-NEXT: ret75entry:76 %a = call <vscale x 4 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.nxv4i16.nxv4f16(77 <vscale x 4 x i16> poison,78 <vscale x 4 x half> %0,79 iXLen %1)80 81 ret <vscale x 4 x i16> %a82}83 84define <vscale x 4 x i16> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv4i16_nxv4f16(<vscale x 4 x i16> %0, <vscale x 4 x half> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {85; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv4i16_nxv4f16:86; CHECK: # %bb.0: # %entry87; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu88; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v9, v0.t89; CHECK-NEXT: ret90entry:91 %a = call <vscale x 4 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv4i16.nxv4f16(92 <vscale x 4 x i16> %0,93 <vscale x 4 x half> %1,94 <vscale x 4 x i1> %2,95 iXLen %3, iXLen 1)96 97 ret <vscale x 4 x i16> %a98}99 100define <vscale x 8 x i16> @intrinsic_vfcvt_rtz.x.f.v_nxv8i16_nxv8f16(<vscale x 8 x half> %0, iXLen %1) nounwind {101; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv8i16_nxv8f16:102; CHECK: # %bb.0: # %entry103; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma104; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8105; CHECK-NEXT: ret106entry:107 %a = call <vscale x 8 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.nxv8i16.nxv8f16(108 <vscale x 8 x i16> poison,109 <vscale x 8 x half> %0,110 iXLen %1)111 112 ret <vscale x 8 x i16> %a113}114 115define <vscale x 8 x i16> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv8i16_nxv8f16(<vscale x 8 x i16> %0, <vscale x 8 x half> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {116; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv8i16_nxv8f16:117; CHECK: # %bb.0: # %entry118; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu119; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v10, v0.t120; CHECK-NEXT: ret121entry:122 %a = call <vscale x 8 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv8i16.nxv8f16(123 <vscale x 8 x i16> %0,124 <vscale x 8 x half> %1,125 <vscale x 8 x i1> %2,126 iXLen %3, iXLen 1)127 128 ret <vscale x 8 x i16> %a129}130 131define <vscale x 16 x i16> @intrinsic_vfcvt_rtz.x.f.v_nxv16i16_nxv16f16(<vscale x 16 x half> %0, iXLen %1) nounwind {132; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv16i16_nxv16f16:133; CHECK: # %bb.0: # %entry134; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma135; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8136; CHECK-NEXT: ret137entry:138 %a = call <vscale x 16 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.nxv16i16.nxv16f16(139 <vscale x 16 x i16> poison,140 <vscale x 16 x half> %0,141 iXLen %1)142 143 ret <vscale x 16 x i16> %a144}145 146define <vscale x 16 x i16> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv16i16_nxv16f16(<vscale x 16 x i16> %0, <vscale x 16 x half> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {147; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv16i16_nxv16f16:148; CHECK: # %bb.0: # %entry149; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu150; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v12, v0.t151; CHECK-NEXT: ret152entry:153 %a = call <vscale x 16 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv16i16.nxv16f16(154 <vscale x 16 x i16> %0,155 <vscale x 16 x half> %1,156 <vscale x 16 x i1> %2,157 iXLen %3, iXLen 1)158 159 ret <vscale x 16 x i16> %a160}161 162define <vscale x 32 x i16> @intrinsic_vfcvt_rtz.x.f.v_nxv32i16_nxv32f16(<vscale x 32 x half> %0, iXLen %1) nounwind {163; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv32i16_nxv32f16:164; CHECK: # %bb.0: # %entry165; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma166; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8167; CHECK-NEXT: ret168entry:169 %a = call <vscale x 32 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.nxv32i16.nxv32f16(170 <vscale x 32 x i16> poison,171 <vscale x 32 x half> %0,172 iXLen %1)173 174 ret <vscale x 32 x i16> %a175}176 177define <vscale x 32 x i16> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv32i16_nxv32f16(<vscale x 32 x i16> %0, <vscale x 32 x half> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {178; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv32i16_nxv32f16:179; CHECK: # %bb.0: # %entry180; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, mu181; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v16, v0.t182; CHECK-NEXT: ret183entry:184 %a = call <vscale x 32 x i16> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv32i16.nxv32f16(185 <vscale x 32 x i16> %0,186 <vscale x 32 x half> %1,187 <vscale x 32 x i1> %2,188 iXLen %3, iXLen 1)189 190 ret <vscale x 32 x i16> %a191}192 193define <vscale x 1 x i32> @intrinsic_vfcvt_rtz.x.f.v_nxv1i32_nxv1f32(<vscale x 1 x float> %0, iXLen %1) nounwind {194; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv1i32_nxv1f32:195; CHECK: # %bb.0: # %entry196; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma197; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8198; CHECK-NEXT: ret199entry:200 %a = call <vscale x 1 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.nxv1i32.nxv1f32(201 <vscale x 1 x i32> poison,202 <vscale x 1 x float> %0,203 iXLen %1)204 205 ret <vscale x 1 x i32> %a206}207 208define <vscale x 1 x i32> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv1i32_nxv1f32(<vscale x 1 x i32> %0, <vscale x 1 x float> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {209; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv1i32_nxv1f32:210; CHECK: # %bb.0: # %entry211; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu212; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v9, v0.t213; CHECK-NEXT: ret214entry:215 %a = call <vscale x 1 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv1i32.nxv1f32(216 <vscale x 1 x i32> %0,217 <vscale x 1 x float> %1,218 <vscale x 1 x i1> %2,219 iXLen %3, iXLen 1)220 221 ret <vscale x 1 x i32> %a222}223 224define <vscale x 2 x i32> @intrinsic_vfcvt_rtz.x.f.v_nxv2i32_nxv2f32(<vscale x 2 x float> %0, iXLen %1) nounwind {225; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv2i32_nxv2f32:226; CHECK: # %bb.0: # %entry227; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma228; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8229; CHECK-NEXT: ret230entry:231 %a = call <vscale x 2 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.nxv2i32.nxv2f32(232 <vscale x 2 x i32> poison,233 <vscale x 2 x float> %0,234 iXLen %1)235 236 ret <vscale x 2 x i32> %a237}238 239define <vscale x 2 x i32> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv2i32_nxv2f32(<vscale x 2 x i32> %0, <vscale x 2 x float> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {240; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv2i32_nxv2f32:241; CHECK: # %bb.0: # %entry242; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu243; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v9, v0.t244; CHECK-NEXT: ret245entry:246 %a = call <vscale x 2 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv2i32.nxv2f32(247 <vscale x 2 x i32> %0,248 <vscale x 2 x float> %1,249 <vscale x 2 x i1> %2,250 iXLen %3, iXLen 1)251 252 ret <vscale x 2 x i32> %a253}254 255define <vscale x 4 x i32> @intrinsic_vfcvt_rtz.x.f.v_nxv4i32_nxv4f32(<vscale x 4 x float> %0, iXLen %1) nounwind {256; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv4i32_nxv4f32:257; CHECK: # %bb.0: # %entry258; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma259; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8260; CHECK-NEXT: ret261entry:262 %a = call <vscale x 4 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.nxv4i32.nxv4f32(263 <vscale x 4 x i32> poison,264 <vscale x 4 x float> %0,265 iXLen %1)266 267 ret <vscale x 4 x i32> %a268}269 270define <vscale x 4 x i32> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv4i32_nxv4f32(<vscale x 4 x i32> %0, <vscale x 4 x float> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {271; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv4i32_nxv4f32:272; CHECK: # %bb.0: # %entry273; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu274; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v10, v0.t275; CHECK-NEXT: ret276entry:277 %a = call <vscale x 4 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv4i32.nxv4f32(278 <vscale x 4 x i32> %0,279 <vscale x 4 x float> %1,280 <vscale x 4 x i1> %2,281 iXLen %3, iXLen 1)282 283 ret <vscale x 4 x i32> %a284}285 286define <vscale x 8 x i32> @intrinsic_vfcvt_rtz.x.f.v_nxv8i32_nxv8f32(<vscale x 8 x float> %0, iXLen %1) nounwind {287; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv8i32_nxv8f32:288; CHECK: # %bb.0: # %entry289; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma290; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8291; CHECK-NEXT: ret292entry:293 %a = call <vscale x 8 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.nxv8i32.nxv8f32(294 <vscale x 8 x i32> poison,295 <vscale x 8 x float> %0,296 iXLen %1)297 298 ret <vscale x 8 x i32> %a299}300 301define <vscale x 8 x i32> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv8i32_nxv8f32(<vscale x 8 x i32> %0, <vscale x 8 x float> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {302; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv8i32_nxv8f32:303; CHECK: # %bb.0: # %entry304; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu305; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v12, v0.t306; CHECK-NEXT: ret307entry:308 %a = call <vscale x 8 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv8i32.nxv8f32(309 <vscale x 8 x i32> %0,310 <vscale x 8 x float> %1,311 <vscale x 8 x i1> %2,312 iXLen %3, iXLen 1)313 314 ret <vscale x 8 x i32> %a315}316 317define <vscale x 16 x i32> @intrinsic_vfcvt_rtz.x.f.v_nxv16i32_nxv16f32(<vscale x 16 x float> %0, iXLen %1) nounwind {318; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv16i32_nxv16f32:319; CHECK: # %bb.0: # %entry320; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma321; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8322; CHECK-NEXT: ret323entry:324 %a = call <vscale x 16 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.nxv16i32.nxv16f32(325 <vscale x 16 x i32> poison,326 <vscale x 16 x float> %0,327 iXLen %1)328 329 ret <vscale x 16 x i32> %a330}331 332define <vscale x 16 x i32> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv16i32_nxv16f32(<vscale x 16 x i32> %0, <vscale x 16 x float> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {333; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv16i32_nxv16f32:334; CHECK: # %bb.0: # %entry335; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, mu336; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v16, v0.t337; CHECK-NEXT: ret338entry:339 %a = call <vscale x 16 x i32> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv16i32.nxv16f32(340 <vscale x 16 x i32> %0,341 <vscale x 16 x float> %1,342 <vscale x 16 x i1> %2,343 iXLen %3, iXLen 1)344 345 ret <vscale x 16 x i32> %a346}347 348define <vscale x 1 x i64> @intrinsic_vfcvt_rtz.x.f.v_nxv1i64_nxv1f64(<vscale x 1 x double> %0, iXLen %1) nounwind {349; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv1i64_nxv1f64:350; CHECK: # %bb.0: # %entry351; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma352; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8353; CHECK-NEXT: ret354entry:355 %a = call <vscale x 1 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.nxv1i64.nxv1f64(356 <vscale x 1 x i64> poison,357 <vscale x 1 x double> %0,358 iXLen %1)359 360 ret <vscale x 1 x i64> %a361}362 363define <vscale x 1 x i64> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv1i64_nxv1f64(<vscale x 1 x i64> %0, <vscale x 1 x double> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {364; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv1i64_nxv1f64:365; CHECK: # %bb.0: # %entry366; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu367; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v9, v0.t368; CHECK-NEXT: ret369entry:370 %a = call <vscale x 1 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv1i64.nxv1f64(371 <vscale x 1 x i64> %0,372 <vscale x 1 x double> %1,373 <vscale x 1 x i1> %2,374 iXLen %3, iXLen 1)375 376 ret <vscale x 1 x i64> %a377}378 379define <vscale x 2 x i64> @intrinsic_vfcvt_rtz.x.f.v_nxv2i64_nxv2f64(<vscale x 2 x double> %0, iXLen %1) nounwind {380; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv2i64_nxv2f64:381; CHECK: # %bb.0: # %entry382; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma383; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8384; CHECK-NEXT: ret385entry:386 %a = call <vscale x 2 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.nxv2i64.nxv2f64(387 <vscale x 2 x i64> poison,388 <vscale x 2 x double> %0,389 iXLen %1)390 391 ret <vscale x 2 x i64> %a392}393 394define <vscale x 2 x i64> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv2i64_nxv2f64(<vscale x 2 x i64> %0, <vscale x 2 x double> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {395; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv2i64_nxv2f64:396; CHECK: # %bb.0: # %entry397; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu398; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v10, v0.t399; CHECK-NEXT: ret400entry:401 %a = call <vscale x 2 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv2i64.nxv2f64(402 <vscale x 2 x i64> %0,403 <vscale x 2 x double> %1,404 <vscale x 2 x i1> %2,405 iXLen %3, iXLen 1)406 407 ret <vscale x 2 x i64> %a408}409 410define <vscale x 4 x i64> @intrinsic_vfcvt_rtz.x.f.v_nxv4i64_nxv4f64(<vscale x 4 x double> %0, iXLen %1) nounwind {411; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv4i64_nxv4f64:412; CHECK: # %bb.0: # %entry413; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma414; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8415; CHECK-NEXT: ret416entry:417 %a = call <vscale x 4 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.nxv4i64.nxv4f64(418 <vscale x 4 x i64> poison,419 <vscale x 4 x double> %0,420 iXLen %1)421 422 ret <vscale x 4 x i64> %a423}424 425define <vscale x 4 x i64> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv4i64_nxv4f64(<vscale x 4 x i64> %0, <vscale x 4 x double> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {426; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv4i64_nxv4f64:427; CHECK: # %bb.0: # %entry428; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu429; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v12, v0.t430; CHECK-NEXT: ret431entry:432 %a = call <vscale x 4 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv4i64.nxv4f64(433 <vscale x 4 x i64> %0,434 <vscale x 4 x double> %1,435 <vscale x 4 x i1> %2,436 iXLen %3, iXLen 1)437 438 ret <vscale x 4 x i64> %a439}440 441define <vscale x 8 x i64> @intrinsic_vfcvt_rtz.x.f.v_nxv8i64_nxv8f64(<vscale x 8 x double> %0, iXLen %1) nounwind {442; CHECK-LABEL: intrinsic_vfcvt_rtz.x.f.v_nxv8i64_nxv8f64:443; CHECK: # %bb.0: # %entry444; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma445; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8446; CHECK-NEXT: ret447entry:448 %a = call <vscale x 8 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.nxv8i64.nxv8f64(449 <vscale x 8 x i64> poison,450 <vscale x 8 x double> %0,451 iXLen %1)452 453 ret <vscale x 8 x i64> %a454}455 456define <vscale x 8 x i64> @intrinsic_vfcvt_mask_rtz.x.f.v_nxv8i64_nxv8f64(<vscale x 8 x i64> %0, <vscale x 8 x double> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {457; CHECK-LABEL: intrinsic_vfcvt_mask_rtz.x.f.v_nxv8i64_nxv8f64:458; CHECK: # %bb.0: # %entry459; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu460; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v16, v0.t461; CHECK-NEXT: ret462entry:463 %a = call <vscale x 8 x i64> @llvm.riscv.vfcvt.rtz.x.f.v.mask.nxv8i64.nxv8f64(464 <vscale x 8 x i64> %0,465 <vscale x 8 x double> %1,466 <vscale x 8 x i1> %2,467 iXLen %3, iXLen 1)468 469 ret <vscale x 8 x i64> %a470}471