1640 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \3; RUN: -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \5; RUN: -verify-machineinstrs < %s | FileCheck %s6 7define <vscale x 1 x i1> @vfptosi_nxv1f16_nxv1i1(<vscale x 1 x half> %va) strictfp {8; CHECK-LABEL: vfptosi_nxv1f16_nxv1i1:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma11; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v812; CHECK-NEXT: vand.vi v8, v9, 113; CHECK-NEXT: vmsne.vi v0, v8, 014; CHECK-NEXT: ret15 %evec = call <vscale x 1 x i1> @llvm.experimental.constrained.fptosi.nxv1i1.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")16 ret <vscale x 1 x i1> %evec17}18 19define <vscale x 1 x i1> @vfptoui_nxv1f16_nxv1i1(<vscale x 1 x half> %va) strictfp {20; CHECK-LABEL: vfptoui_nxv1f16_nxv1i1:21; CHECK: # %bb.0:22; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma23; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v824; CHECK-NEXT: vand.vi v8, v9, 125; CHECK-NEXT: vmsne.vi v0, v8, 026; CHECK-NEXT: ret27 %evec = call <vscale x 1 x i1> @llvm.experimental.constrained.fptoui.nxv1i1.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")28 ret <vscale x 1 x i1> %evec29}30 31define <vscale x 1 x i7> @vfptosi_nxv1f16_nxv1i7(<vscale x 1 x half> %va) strictfp {32; CHECK-LABEL: vfptosi_nxv1f16_nxv1i7:33; CHECK: # %bb.0:34; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma35; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v836; CHECK-NEXT: vmv1r.v v8, v937; CHECK-NEXT: ret38 %evec = call <vscale x 1 x i7> @llvm.experimental.constrained.fptosi.nxv1i7.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")39 ret <vscale x 1 x i7> %evec40}41 42define <vscale x 1 x i7> @vfptoui_nxv1f16_nxv1i7(<vscale x 1 x half> %va) strictfp {43; CHECK-LABEL: vfptoui_nxv1f16_nxv1i7:44; CHECK: # %bb.0:45; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma46; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v847; CHECK-NEXT: vmv1r.v v8, v948; CHECK-NEXT: ret49 %evec = call <vscale x 1 x i7> @llvm.experimental.constrained.fptoui.nxv1i7.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")50 ret <vscale x 1 x i7> %evec51}52 53define <vscale x 1 x i8> @vfptosi_nxv1f16_nxv1i8(<vscale x 1 x half> %va) strictfp {54; CHECK-LABEL: vfptosi_nxv1f16_nxv1i8:55; CHECK: # %bb.0:56; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma57; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v858; CHECK-NEXT: vmv1r.v v8, v959; CHECK-NEXT: ret60 %evec = call <vscale x 1 x i8> @llvm.experimental.constrained.fptosi.nxv1i8.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")61 ret <vscale x 1 x i8> %evec62}63 64define <vscale x 1 x i8> @vfptoui_nxv1f16_nxv1i8(<vscale x 1 x half> %va) strictfp {65; CHECK-LABEL: vfptoui_nxv1f16_nxv1i8:66; CHECK: # %bb.0:67; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, ma68; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v869; CHECK-NEXT: vmv1r.v v8, v970; CHECK-NEXT: ret71 %evec = call <vscale x 1 x i8> @llvm.experimental.constrained.fptoui.nxv1i8.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")72 ret <vscale x 1 x i8> %evec73}74 75define <vscale x 1 x i16> @vfptosi_nxv1f16_nxv1i16(<vscale x 1 x half> %va) strictfp {76; CHECK-LABEL: vfptosi_nxv1f16_nxv1i16:77; CHECK: # %bb.0:78; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma79; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v880; CHECK-NEXT: ret81 %evec = call <vscale x 1 x i16> @llvm.experimental.constrained.fptosi.nxv1i16.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")82 ret <vscale x 1 x i16> %evec83}84 85define <vscale x 1 x i16> @vfptoui_nxv1f16_nxv1i16(<vscale x 1 x half> %va) strictfp {86; CHECK-LABEL: vfptoui_nxv1f16_nxv1i16:87; CHECK: # %bb.0:88; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma89; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v890; CHECK-NEXT: ret91 %evec = call <vscale x 1 x i16> @llvm.experimental.constrained.fptoui.nxv1i16.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")92 ret <vscale x 1 x i16> %evec93}94 95define <vscale x 1 x i32> @vfptosi_nxv1f16_nxv1i32(<vscale x 1 x half> %va) strictfp {96; CHECK-LABEL: vfptosi_nxv1f16_nxv1i32:97; CHECK: # %bb.0:98; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma99; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8100; CHECK-NEXT: vmv1r.v v8, v9101; CHECK-NEXT: ret102 %evec = call <vscale x 1 x i32> @llvm.experimental.constrained.fptosi.nxv1i32.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")103 ret <vscale x 1 x i32> %evec104}105 106define <vscale x 1 x i32> @vfptoui_nxv1f16_nxv1i32(<vscale x 1 x half> %va) strictfp {107; CHECK-LABEL: vfptoui_nxv1f16_nxv1i32:108; CHECK: # %bb.0:109; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma110; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8111; CHECK-NEXT: vmv1r.v v8, v9112; CHECK-NEXT: ret113 %evec = call <vscale x 1 x i32> @llvm.experimental.constrained.fptoui.nxv1i32.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")114 ret <vscale x 1 x i32> %evec115}116 117define <vscale x 1 x i64> @vfptosi_nxv1f16_nxv1i64(<vscale x 1 x half> %va) strictfp {118; CHECK-LABEL: vfptosi_nxv1f16_nxv1i64:119; CHECK: # %bb.0:120; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma121; CHECK-NEXT: vfwcvt.f.f.v v9, v8122; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma123; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v9124; CHECK-NEXT: ret125 %evec = call <vscale x 1 x i64> @llvm.experimental.constrained.fptosi.nxv1i64.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")126 ret <vscale x 1 x i64> %evec127}128 129define <vscale x 1 x i64> @vfptoui_nxv1f16_nxv1i64(<vscale x 1 x half> %va) strictfp {130; CHECK-LABEL: vfptoui_nxv1f16_nxv1i64:131; CHECK: # %bb.0:132; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma133; CHECK-NEXT: vfwcvt.f.f.v v9, v8134; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma135; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v9136; CHECK-NEXT: ret137 %evec = call <vscale x 1 x i64> @llvm.experimental.constrained.fptoui.nxv1i64.nxv1f16(<vscale x 1 x half> %va, metadata !"fpexcept.strict")138 ret <vscale x 1 x i64> %evec139}140 141define <vscale x 2 x i1> @vfptosi_nxv2f16_nxv2i1(<vscale x 2 x half> %va) strictfp {142; CHECK-LABEL: vfptosi_nxv2f16_nxv2i1:143; CHECK: # %bb.0:144; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma145; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8146; CHECK-NEXT: vand.vi v8, v9, 1147; CHECK-NEXT: vmsne.vi v0, v8, 0148; CHECK-NEXT: ret149 %evec = call <vscale x 2 x i1> @llvm.experimental.constrained.fptosi.nxv2i1.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")150 ret <vscale x 2 x i1> %evec151}152 153define <vscale x 2 x i1> @vfptoui_nxv2f16_nxv2i1(<vscale x 2 x half> %va) strictfp {154; CHECK-LABEL: vfptoui_nxv2f16_nxv2i1:155; CHECK: # %bb.0:156; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma157; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8158; CHECK-NEXT: vand.vi v8, v9, 1159; CHECK-NEXT: vmsne.vi v0, v8, 0160; CHECK-NEXT: ret161 %evec = call <vscale x 2 x i1> @llvm.experimental.constrained.fptoui.nxv2i1.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")162 ret <vscale x 2 x i1> %evec163}164 165define <vscale x 2 x i8> @vfptosi_nxv2f16_nxv2i8(<vscale x 2 x half> %va) strictfp {166; CHECK-LABEL: vfptosi_nxv2f16_nxv2i8:167; CHECK: # %bb.0:168; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma169; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8170; CHECK-NEXT: vmv1r.v v8, v9171; CHECK-NEXT: ret172 %evec = call <vscale x 2 x i8> @llvm.experimental.constrained.fptosi.nxv2i8.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")173 ret <vscale x 2 x i8> %evec174}175 176define <vscale x 2 x i8> @vfptoui_nxv2f16_nxv2i8(<vscale x 2 x half> %va) strictfp {177; CHECK-LABEL: vfptoui_nxv2f16_nxv2i8:178; CHECK: # %bb.0:179; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma180; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8181; CHECK-NEXT: vmv1r.v v8, v9182; CHECK-NEXT: ret183 %evec = call <vscale x 2 x i8> @llvm.experimental.constrained.fptoui.nxv2i8.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")184 ret <vscale x 2 x i8> %evec185}186 187define <vscale x 2 x i16> @vfptosi_nxv2f16_nxv2i16(<vscale x 2 x half> %va) strictfp {188; CHECK-LABEL: vfptosi_nxv2f16_nxv2i16:189; CHECK: # %bb.0:190; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma191; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8192; CHECK-NEXT: ret193 %evec = call <vscale x 2 x i16> @llvm.experimental.constrained.fptosi.nxv2i16.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")194 ret <vscale x 2 x i16> %evec195}196 197define <vscale x 2 x i16> @vfptoui_nxv2f16_nxv2i16(<vscale x 2 x half> %va) strictfp {198; CHECK-LABEL: vfptoui_nxv2f16_nxv2i16:199; CHECK: # %bb.0:200; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma201; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8202; CHECK-NEXT: ret203 %evec = call <vscale x 2 x i16> @llvm.experimental.constrained.fptoui.nxv2i16.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")204 ret <vscale x 2 x i16> %evec205}206 207define <vscale x 2 x i32> @vfptosi_nxv2f16_nxv2i32(<vscale x 2 x half> %va) strictfp {208; CHECK-LABEL: vfptosi_nxv2f16_nxv2i32:209; CHECK: # %bb.0:210; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma211; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8212; CHECK-NEXT: vmv1r.v v8, v9213; CHECK-NEXT: ret214 %evec = call <vscale x 2 x i32> @llvm.experimental.constrained.fptosi.nxv2i32.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")215 ret <vscale x 2 x i32> %evec216}217 218define <vscale x 2 x i32> @vfptoui_nxv2f16_nxv2i32(<vscale x 2 x half> %va) strictfp {219; CHECK-LABEL: vfptoui_nxv2f16_nxv2i32:220; CHECK: # %bb.0:221; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma222; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8223; CHECK-NEXT: vmv1r.v v8, v9224; CHECK-NEXT: ret225 %evec = call <vscale x 2 x i32> @llvm.experimental.constrained.fptoui.nxv2i32.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")226 ret <vscale x 2 x i32> %evec227}228 229define <vscale x 2 x i64> @vfptosi_nxv2f16_nxv2i64(<vscale x 2 x half> %va) strictfp {230; CHECK-LABEL: vfptosi_nxv2f16_nxv2i64:231; CHECK: # %bb.0:232; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma233; CHECK-NEXT: vfwcvt.f.f.v v10, v8234; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma235; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v10236; CHECK-NEXT: ret237 %evec = call <vscale x 2 x i64> @llvm.experimental.constrained.fptosi.nxv2i64.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")238 ret <vscale x 2 x i64> %evec239}240 241define <vscale x 2 x i64> @vfptoui_nxv2f16_nxv2i64(<vscale x 2 x half> %va) strictfp {242; CHECK-LABEL: vfptoui_nxv2f16_nxv2i64:243; CHECK: # %bb.0:244; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma245; CHECK-NEXT: vfwcvt.f.f.v v10, v8246; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma247; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v10248; CHECK-NEXT: ret249 %evec = call <vscale x 2 x i64> @llvm.experimental.constrained.fptoui.nxv2i64.nxv2f16(<vscale x 2 x half> %va, metadata !"fpexcept.strict")250 ret <vscale x 2 x i64> %evec251}252 253define <vscale x 4 x i1> @vfptosi_nxv4f16_nxv4i1(<vscale x 4 x half> %va) strictfp {254; CHECK-LABEL: vfptosi_nxv4f16_nxv4i1:255; CHECK: # %bb.0:256; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma257; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8258; CHECK-NEXT: vand.vi v8, v9, 1259; CHECK-NEXT: vmsne.vi v0, v8, 0260; CHECK-NEXT: ret261 %evec = call <vscale x 4 x i1> @llvm.experimental.constrained.fptosi.nxv4i1.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")262 ret <vscale x 4 x i1> %evec263}264 265define <vscale x 4 x i1> @vfptoui_nxv4f16_nxv4i1(<vscale x 4 x half> %va) strictfp {266; CHECK-LABEL: vfptoui_nxv4f16_nxv4i1:267; CHECK: # %bb.0:268; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma269; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8270; CHECK-NEXT: vand.vi v8, v9, 1271; CHECK-NEXT: vmsne.vi v0, v8, 0272; CHECK-NEXT: ret273 %evec = call <vscale x 4 x i1> @llvm.experimental.constrained.fptoui.nxv4i1.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")274 ret <vscale x 4 x i1> %evec275}276 277define <vscale x 4 x i8> @vfptosi_nxv4f16_nxv4i8(<vscale x 4 x half> %va) strictfp {278; CHECK-LABEL: vfptosi_nxv4f16_nxv4i8:279; CHECK: # %bb.0:280; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma281; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8282; CHECK-NEXT: vmv1r.v v8, v9283; CHECK-NEXT: ret284 %evec = call <vscale x 4 x i8> @llvm.experimental.constrained.fptosi.nxv4i8.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")285 ret <vscale x 4 x i8> %evec286}287 288define <vscale x 4 x i8> @vfptoui_nxv4f16_nxv4i8(<vscale x 4 x half> %va) strictfp {289; CHECK-LABEL: vfptoui_nxv4f16_nxv4i8:290; CHECK: # %bb.0:291; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, ma292; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8293; CHECK-NEXT: vmv1r.v v8, v9294; CHECK-NEXT: ret295 %evec = call <vscale x 4 x i8> @llvm.experimental.constrained.fptoui.nxv4i8.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")296 ret <vscale x 4 x i8> %evec297}298 299define <vscale x 4 x i16> @vfptosi_nxv4f16_nxv4i16(<vscale x 4 x half> %va) strictfp {300; CHECK-LABEL: vfptosi_nxv4f16_nxv4i16:301; CHECK: # %bb.0:302; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma303; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8304; CHECK-NEXT: ret305 %evec = call <vscale x 4 x i16> @llvm.experimental.constrained.fptosi.nxv4i16.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")306 ret <vscale x 4 x i16> %evec307}308 309define <vscale x 4 x i16> @vfptoui_nxv4f16_nxv4i16(<vscale x 4 x half> %va) strictfp {310; CHECK-LABEL: vfptoui_nxv4f16_nxv4i16:311; CHECK: # %bb.0:312; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma313; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8314; CHECK-NEXT: ret315 %evec = call <vscale x 4 x i16> @llvm.experimental.constrained.fptoui.nxv4i16.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")316 ret <vscale x 4 x i16> %evec317}318 319define <vscale x 4 x i32> @vfptosi_nxv4f16_nxv4i32(<vscale x 4 x half> %va) strictfp {320; CHECK-LABEL: vfptosi_nxv4f16_nxv4i32:321; CHECK: # %bb.0:322; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma323; CHECK-NEXT: vmv1r.v v10, v8324; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v10325; CHECK-NEXT: ret326 %evec = call <vscale x 4 x i32> @llvm.experimental.constrained.fptosi.nxv4i32.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")327 ret <vscale x 4 x i32> %evec328}329 330define <vscale x 4 x i32> @vfptoui_nxv4f16_nxv4i32(<vscale x 4 x half> %va) strictfp {331; CHECK-LABEL: vfptoui_nxv4f16_nxv4i32:332; CHECK: # %bb.0:333; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma334; CHECK-NEXT: vmv1r.v v10, v8335; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v10336; CHECK-NEXT: ret337 %evec = call <vscale x 4 x i32> @llvm.experimental.constrained.fptoui.nxv4i32.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")338 ret <vscale x 4 x i32> %evec339}340 341define <vscale x 4 x i64> @vfptosi_nxv4f16_nxv4i64(<vscale x 4 x half> %va) strictfp {342; CHECK-LABEL: vfptosi_nxv4f16_nxv4i64:343; CHECK: # %bb.0:344; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma345; CHECK-NEXT: vfwcvt.f.f.v v12, v8346; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma347; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v12348; CHECK-NEXT: ret349 %evec = call <vscale x 4 x i64> @llvm.experimental.constrained.fptosi.nxv4i64.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")350 ret <vscale x 4 x i64> %evec351}352 353define <vscale x 4 x i64> @vfptoui_nxv4f16_nxv4i64(<vscale x 4 x half> %va) strictfp {354; CHECK-LABEL: vfptoui_nxv4f16_nxv4i64:355; CHECK: # %bb.0:356; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma357; CHECK-NEXT: vfwcvt.f.f.v v12, v8358; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma359; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v12360; CHECK-NEXT: ret361 %evec = call <vscale x 4 x i64> @llvm.experimental.constrained.fptoui.nxv4i64.nxv4f16(<vscale x 4 x half> %va, metadata !"fpexcept.strict")362 ret <vscale x 4 x i64> %evec363}364 365define <vscale x 8 x i1> @vfptosi_nxv8f16_nxv8i1(<vscale x 8 x half> %va) strictfp {366; CHECK-LABEL: vfptosi_nxv8f16_nxv8i1:367; CHECK: # %bb.0:368; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma369; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8370; CHECK-NEXT: vand.vi v8, v10, 1371; CHECK-NEXT: vmsne.vi v0, v8, 0372; CHECK-NEXT: ret373 %evec = call <vscale x 8 x i1> @llvm.experimental.constrained.fptosi.nxv8i1.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")374 ret <vscale x 8 x i1> %evec375}376 377define <vscale x 8 x i1> @vfptoui_nxv8f16_nxv8i1(<vscale x 8 x half> %va) strictfp {378; CHECK-LABEL: vfptoui_nxv8f16_nxv8i1:379; CHECK: # %bb.0:380; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma381; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8382; CHECK-NEXT: vand.vi v8, v10, 1383; CHECK-NEXT: vmsne.vi v0, v8, 0384; CHECK-NEXT: ret385 %evec = call <vscale x 8 x i1> @llvm.experimental.constrained.fptoui.nxv8i1.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")386 ret <vscale x 8 x i1> %evec387}388 389define <vscale x 8 x i8> @vfptosi_nxv8f16_nxv8i8(<vscale x 8 x half> %va) strictfp {390; CHECK-LABEL: vfptosi_nxv8f16_nxv8i8:391; CHECK: # %bb.0:392; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma393; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8394; CHECK-NEXT: vmv.v.v v8, v10395; CHECK-NEXT: ret396 %evec = call <vscale x 8 x i8> @llvm.experimental.constrained.fptosi.nxv8i8.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")397 ret <vscale x 8 x i8> %evec398}399 400define <vscale x 8 x i8> @vfptoui_nxv8f16_nxv8i8(<vscale x 8 x half> %va) strictfp {401; CHECK-LABEL: vfptoui_nxv8f16_nxv8i8:402; CHECK: # %bb.0:403; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, ma404; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8405; CHECK-NEXT: vmv.v.v v8, v10406; CHECK-NEXT: ret407 %evec = call <vscale x 8 x i8> @llvm.experimental.constrained.fptoui.nxv8i8.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")408 ret <vscale x 8 x i8> %evec409}410 411define <vscale x 8 x i16> @vfptosi_nxv8f16_nxv8i16(<vscale x 8 x half> %va) strictfp {412; CHECK-LABEL: vfptosi_nxv8f16_nxv8i16:413; CHECK: # %bb.0:414; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma415; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8416; CHECK-NEXT: ret417 %evec = call <vscale x 8 x i16> @llvm.experimental.constrained.fptosi.nxv8i16.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")418 ret <vscale x 8 x i16> %evec419}420 421define <vscale x 8 x i16> @vfptoui_nxv8f16_nxv8i16(<vscale x 8 x half> %va) strictfp {422; CHECK-LABEL: vfptoui_nxv8f16_nxv8i16:423; CHECK: # %bb.0:424; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma425; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8426; CHECK-NEXT: ret427 %evec = call <vscale x 8 x i16> @llvm.experimental.constrained.fptoui.nxv8i16.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")428 ret <vscale x 8 x i16> %evec429}430 431define <vscale x 8 x i32> @vfptosi_nxv8f16_nxv8i32(<vscale x 8 x half> %va) strictfp {432; CHECK-LABEL: vfptosi_nxv8f16_nxv8i32:433; CHECK: # %bb.0:434; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma435; CHECK-NEXT: vmv2r.v v12, v8436; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v12437; CHECK-NEXT: ret438 %evec = call <vscale x 8 x i32> @llvm.experimental.constrained.fptosi.nxv8i32.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")439 ret <vscale x 8 x i32> %evec440}441 442define <vscale x 8 x i32> @vfptoui_nxv8f16_nxv8i32(<vscale x 8 x half> %va) strictfp {443; CHECK-LABEL: vfptoui_nxv8f16_nxv8i32:444; CHECK: # %bb.0:445; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma446; CHECK-NEXT: vmv2r.v v12, v8447; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v12448; CHECK-NEXT: ret449 %evec = call <vscale x 8 x i32> @llvm.experimental.constrained.fptoui.nxv8i32.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")450 ret <vscale x 8 x i32> %evec451}452 453define <vscale x 8 x i64> @vfptosi_nxv8f16_nxv8i64(<vscale x 8 x half> %va) strictfp {454; CHECK-LABEL: vfptosi_nxv8f16_nxv8i64:455; CHECK: # %bb.0:456; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma457; CHECK-NEXT: vfwcvt.f.f.v v16, v8458; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma459; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v16460; CHECK-NEXT: ret461 %evec = call <vscale x 8 x i64> @llvm.experimental.constrained.fptosi.nxv8i64.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")462 ret <vscale x 8 x i64> %evec463}464 465define <vscale x 8 x i64> @vfptoui_nxv8f16_nxv8i64(<vscale x 8 x half> %va) strictfp {466; CHECK-LABEL: vfptoui_nxv8f16_nxv8i64:467; CHECK: # %bb.0:468; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma469; CHECK-NEXT: vfwcvt.f.f.v v16, v8470; CHECK-NEXT: vsetvli zero, zero, e32, m4, ta, ma471; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v16472; CHECK-NEXT: ret473 %evec = call <vscale x 8 x i64> @llvm.experimental.constrained.fptoui.nxv8i64.nxv8f16(<vscale x 8 x half> %va, metadata !"fpexcept.strict")474 ret <vscale x 8 x i64> %evec475}476 477define <vscale x 16 x i1> @vfptosi_nxv16f16_nxv16i1(<vscale x 16 x half> %va) strictfp {478; CHECK-LABEL: vfptosi_nxv16f16_nxv16i1:479; CHECK: # %bb.0:480; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma481; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v8482; CHECK-NEXT: vand.vi v8, v12, 1483; CHECK-NEXT: vmsne.vi v0, v8, 0484; CHECK-NEXT: ret485 %evec = call <vscale x 16 x i1> @llvm.experimental.constrained.fptosi.nxv16i1.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")486 ret <vscale x 16 x i1> %evec487}488 489define <vscale x 16 x i1> @vfptoui_nxv16f16_nxv16i1(<vscale x 16 x half> %va) strictfp {490; CHECK-LABEL: vfptoui_nxv16f16_nxv16i1:491; CHECK: # %bb.0:492; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma493; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v8494; CHECK-NEXT: vand.vi v8, v12, 1495; CHECK-NEXT: vmsne.vi v0, v8, 0496; CHECK-NEXT: ret497 %evec = call <vscale x 16 x i1> @llvm.experimental.constrained.fptoui.nxv16i1.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")498 ret <vscale x 16 x i1> %evec499}500 501define <vscale x 16 x i8> @vfptosi_nxv16f16_nxv16i8(<vscale x 16 x half> %va) strictfp {502; CHECK-LABEL: vfptosi_nxv16f16_nxv16i8:503; CHECK: # %bb.0:504; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma505; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v8506; CHECK-NEXT: vmv.v.v v8, v12507; CHECK-NEXT: ret508 %evec = call <vscale x 16 x i8> @llvm.experimental.constrained.fptosi.nxv16i8.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")509 ret <vscale x 16 x i8> %evec510}511 512define <vscale x 16 x i8> @vfptoui_nxv16f16_nxv16i8(<vscale x 16 x half> %va) strictfp {513; CHECK-LABEL: vfptoui_nxv16f16_nxv16i8:514; CHECK: # %bb.0:515; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, ma516; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v8517; CHECK-NEXT: vmv.v.v v8, v12518; CHECK-NEXT: ret519 %evec = call <vscale x 16 x i8> @llvm.experimental.constrained.fptoui.nxv16i8.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")520 ret <vscale x 16 x i8> %evec521}522 523define <vscale x 16 x i16> @vfptosi_nxv16f16_nxv16i16(<vscale x 16 x half> %va) strictfp {524; CHECK-LABEL: vfptosi_nxv16f16_nxv16i16:525; CHECK: # %bb.0:526; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma527; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8528; CHECK-NEXT: ret529 %evec = call <vscale x 16 x i16> @llvm.experimental.constrained.fptosi.nxv16i16.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")530 ret <vscale x 16 x i16> %evec531}532 533define <vscale x 16 x i16> @vfptoui_nxv16f16_nxv16i16(<vscale x 16 x half> %va) strictfp {534; CHECK-LABEL: vfptoui_nxv16f16_nxv16i16:535; CHECK: # %bb.0:536; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma537; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8538; CHECK-NEXT: ret539 %evec = call <vscale x 16 x i16> @llvm.experimental.constrained.fptoui.nxv16i16.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")540 ret <vscale x 16 x i16> %evec541}542 543define <vscale x 16 x i32> @vfptosi_nxv16f16_nxv16i32(<vscale x 16 x half> %va) strictfp {544; CHECK-LABEL: vfptosi_nxv16f16_nxv16i32:545; CHECK: # %bb.0:546; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma547; CHECK-NEXT: vmv4r.v v16, v8548; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v16549; CHECK-NEXT: ret550 %evec = call <vscale x 16 x i32> @llvm.experimental.constrained.fptosi.nxv16i32.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")551 ret <vscale x 16 x i32> %evec552}553 554define <vscale x 16 x i32> @vfptoui_nxv16f16_nxv16i32(<vscale x 16 x half> %va) strictfp {555; CHECK-LABEL: vfptoui_nxv16f16_nxv16i32:556; CHECK: # %bb.0:557; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma558; CHECK-NEXT: vmv4r.v v16, v8559; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v16560; CHECK-NEXT: ret561 %evec = call <vscale x 16 x i32> @llvm.experimental.constrained.fptoui.nxv16i32.nxv16f16(<vscale x 16 x half> %va, metadata !"fpexcept.strict")562 ret <vscale x 16 x i32> %evec563}564 565define <vscale x 32 x i1> @vfptosi_nxv32f16_nxv32i1(<vscale x 32 x half> %va) strictfp {566; CHECK-LABEL: vfptosi_nxv32f16_nxv32i1:567; CHECK: # %bb.0:568; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma569; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v8570; CHECK-NEXT: vand.vi v8, v16, 1571; CHECK-NEXT: vmsne.vi v0, v8, 0572; CHECK-NEXT: ret573 %evec = call <vscale x 32 x i1> @llvm.experimental.constrained.fptosi.nxv32i1.nxv32f16(<vscale x 32 x half> %va, metadata !"fpexcept.strict")574 ret <vscale x 32 x i1> %evec575}576 577define <vscale x 32 x i1> @vfptoui_nxv32f16_nxv32i1(<vscale x 32 x half> %va) strictfp {578; CHECK-LABEL: vfptoui_nxv32f16_nxv32i1:579; CHECK: # %bb.0:580; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma581; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v8582; CHECK-NEXT: vand.vi v8, v16, 1583; CHECK-NEXT: vmsne.vi v0, v8, 0584; CHECK-NEXT: ret585 %evec = call <vscale x 32 x i1> @llvm.experimental.constrained.fptoui.nxv32i1.nxv32f16(<vscale x 32 x half> %va, metadata !"fpexcept.strict")586 ret <vscale x 32 x i1> %evec587}588 589define <vscale x 32 x i8> @vfptosi_nxv32f16_nxv32i8(<vscale x 32 x half> %va) strictfp {590; CHECK-LABEL: vfptosi_nxv32f16_nxv32i8:591; CHECK: # %bb.0:592; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma593; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v8594; CHECK-NEXT: vmv.v.v v8, v16595; CHECK-NEXT: ret596 %evec = call <vscale x 32 x i8> @llvm.experimental.constrained.fptosi.nxv32i8.nxv32f16(<vscale x 32 x half> %va, metadata !"fpexcept.strict")597 ret <vscale x 32 x i8> %evec598}599 600define <vscale x 32 x i8> @vfptoui_nxv32f16_nxv32i8(<vscale x 32 x half> %va) strictfp {601; CHECK-LABEL: vfptoui_nxv32f16_nxv32i8:602; CHECK: # %bb.0:603; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, ma604; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v8605; CHECK-NEXT: vmv.v.v v8, v16606; CHECK-NEXT: ret607 %evec = call <vscale x 32 x i8> @llvm.experimental.constrained.fptoui.nxv32i8.nxv32f16(<vscale x 32 x half> %va, metadata !"fpexcept.strict")608 ret <vscale x 32 x i8> %evec609}610 611define <vscale x 32 x i16> @vfptosi_nxv32f16_nxv32i16(<vscale x 32 x half> %va) strictfp {612; CHECK-LABEL: vfptosi_nxv32f16_nxv32i16:613; CHECK: # %bb.0:614; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma615; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8616; CHECK-NEXT: ret617 %evec = call <vscale x 32 x i16> @llvm.experimental.constrained.fptosi.nxv32i16.nxv32f16(<vscale x 32 x half> %va, metadata !"fpexcept.strict")618 ret <vscale x 32 x i16> %evec619}620 621define <vscale x 32 x i16> @vfptoui_nxv32f16_nxv32i16(<vscale x 32 x half> %va) strictfp {622; CHECK-LABEL: vfptoui_nxv32f16_nxv32i16:623; CHECK: # %bb.0:624; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma625; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8626; CHECK-NEXT: ret627 %evec = call <vscale x 32 x i16> @llvm.experimental.constrained.fptoui.nxv32i16.nxv32f16(<vscale x 32 x half> %va, metadata !"fpexcept.strict")628 ret <vscale x 32 x i16> %evec629}630 631define <vscale x 1 x i1> @vfptosi_nxv1f32_nxv1i1(<vscale x 1 x float> %va) strictfp {632; CHECK-LABEL: vfptosi_nxv1f32_nxv1i1:633; CHECK: # %bb.0:634; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma635; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8636; CHECK-NEXT: vand.vi v8, v9, 1637; CHECK-NEXT: vmsne.vi v0, v8, 0638; CHECK-NEXT: ret639 %evec = call <vscale x 1 x i1> @llvm.experimental.constrained.fptosi.nxv1i1.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")640 ret <vscale x 1 x i1> %evec641}642 643define <vscale x 1 x i1> @vfptoui_nxv1f32_nxv1i1(<vscale x 1 x float> %va) strictfp {644; CHECK-LABEL: vfptoui_nxv1f32_nxv1i1:645; CHECK: # %bb.0:646; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma647; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8648; CHECK-NEXT: vand.vi v8, v9, 1649; CHECK-NEXT: vmsne.vi v0, v8, 0650; CHECK-NEXT: ret651 %evec = call <vscale x 1 x i1> @llvm.experimental.constrained.fptoui.nxv1i1.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")652 ret <vscale x 1 x i1> %evec653}654 655define <vscale x 1 x i8> @vfptosi_nxv1f32_nxv1i8(<vscale x 1 x float> %va) strictfp {656; CHECK-LABEL: vfptosi_nxv1f32_nxv1i8:657; CHECK: # %bb.0:658; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma659; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8660; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma661; CHECK-NEXT: vnsrl.wi v8, v9, 0662; CHECK-NEXT: ret663 %evec = call <vscale x 1 x i8> @llvm.experimental.constrained.fptosi.nxv1i8.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")664 ret <vscale x 1 x i8> %evec665}666 667define <vscale x 1 x i8> @vfptoui_nxv1f32_nxv1i8(<vscale x 1 x float> %va) strictfp {668; CHECK-LABEL: vfptoui_nxv1f32_nxv1i8:669; CHECK: # %bb.0:670; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma671; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8672; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma673; CHECK-NEXT: vnsrl.wi v8, v9, 0674; CHECK-NEXT: ret675 %evec = call <vscale x 1 x i8> @llvm.experimental.constrained.fptoui.nxv1i8.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")676 ret <vscale x 1 x i8> %evec677}678 679define <vscale x 1 x i16> @vfptosi_nxv1f32_nxv1i16(<vscale x 1 x float> %va) strictfp {680; CHECK-LABEL: vfptosi_nxv1f32_nxv1i16:681; CHECK: # %bb.0:682; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma683; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8684; CHECK-NEXT: vmv1r.v v8, v9685; CHECK-NEXT: ret686 %evec = call <vscale x 1 x i16> @llvm.experimental.constrained.fptosi.nxv1i16.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")687 ret <vscale x 1 x i16> %evec688}689 690define <vscale x 1 x i16> @vfptoui_nxv1f32_nxv1i16(<vscale x 1 x float> %va) strictfp {691; CHECK-LABEL: vfptoui_nxv1f32_nxv1i16:692; CHECK: # %bb.0:693; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma694; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8695; CHECK-NEXT: vmv1r.v v8, v9696; CHECK-NEXT: ret697 %evec = call <vscale x 1 x i16> @llvm.experimental.constrained.fptoui.nxv1i16.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")698 ret <vscale x 1 x i16> %evec699}700 701define <vscale x 1 x i32> @vfptosi_nxv1f32_nxv1i32(<vscale x 1 x float> %va) strictfp {702; CHECK-LABEL: vfptosi_nxv1f32_nxv1i32:703; CHECK: # %bb.0:704; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma705; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8706; CHECK-NEXT: ret707 %evec = call <vscale x 1 x i32> @llvm.experimental.constrained.fptosi.nxv1i32.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")708 ret <vscale x 1 x i32> %evec709}710 711define <vscale x 1 x i32> @vfptoui_nxv1f32_nxv1i32(<vscale x 1 x float> %va) strictfp {712; CHECK-LABEL: vfptoui_nxv1f32_nxv1i32:713; CHECK: # %bb.0:714; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma715; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8716; CHECK-NEXT: ret717 %evec = call <vscale x 1 x i32> @llvm.experimental.constrained.fptoui.nxv1i32.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")718 ret <vscale x 1 x i32> %evec719}720 721define <vscale x 1 x i64> @vfptosi_nxv1f32_nxv1i64(<vscale x 1 x float> %va) strictfp {722; CHECK-LABEL: vfptosi_nxv1f32_nxv1i64:723; CHECK: # %bb.0:724; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma725; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8726; CHECK-NEXT: vmv1r.v v8, v9727; CHECK-NEXT: ret728 %evec = call <vscale x 1 x i64> @llvm.experimental.constrained.fptosi.nxv1i64.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")729 ret <vscale x 1 x i64> %evec730}731 732define <vscale x 1 x i64> @vfptoui_nxv1f32_nxv1i64(<vscale x 1 x float> %va) strictfp {733; CHECK-LABEL: vfptoui_nxv1f32_nxv1i64:734; CHECK: # %bb.0:735; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma736; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8737; CHECK-NEXT: vmv1r.v v8, v9738; CHECK-NEXT: ret739 %evec = call <vscale x 1 x i64> @llvm.experimental.constrained.fptoui.nxv1i64.nxv1f32(<vscale x 1 x float> %va, metadata !"fpexcept.strict")740 ret <vscale x 1 x i64> %evec741}742 743define <vscale x 2 x i1> @vfptosi_nxv2f32_nxv2i1(<vscale x 2 x float> %va) strictfp {744; CHECK-LABEL: vfptosi_nxv2f32_nxv2i1:745; CHECK: # %bb.0:746; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma747; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8748; CHECK-NEXT: vand.vi v8, v9, 1749; CHECK-NEXT: vmsne.vi v0, v8, 0750; CHECK-NEXT: ret751 %evec = call <vscale x 2 x i1> @llvm.experimental.constrained.fptosi.nxv2i1.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")752 ret <vscale x 2 x i1> %evec753}754 755define <vscale x 2 x i1> @vfptoui_nxv2f32_nxv2i1(<vscale x 2 x float> %va) strictfp {756; CHECK-LABEL: vfptoui_nxv2f32_nxv2i1:757; CHECK: # %bb.0:758; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma759; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8760; CHECK-NEXT: vand.vi v8, v9, 1761; CHECK-NEXT: vmsne.vi v0, v8, 0762; CHECK-NEXT: ret763 %evec = call <vscale x 2 x i1> @llvm.experimental.constrained.fptoui.nxv2i1.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")764 ret <vscale x 2 x i1> %evec765}766 767define <vscale x 2 x i8> @vfptosi_nxv2f32_nxv2i8(<vscale x 2 x float> %va) strictfp {768; CHECK-LABEL: vfptosi_nxv2f32_nxv2i8:769; CHECK: # %bb.0:770; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma771; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8772; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma773; CHECK-NEXT: vnsrl.wi v8, v9, 0774; CHECK-NEXT: ret775 %evec = call <vscale x 2 x i8> @llvm.experimental.constrained.fptosi.nxv2i8.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")776 ret <vscale x 2 x i8> %evec777}778 779define <vscale x 2 x i8> @vfptoui_nxv2f32_nxv2i8(<vscale x 2 x float> %va) strictfp {780; CHECK-LABEL: vfptoui_nxv2f32_nxv2i8:781; CHECK: # %bb.0:782; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma783; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8784; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma785; CHECK-NEXT: vnsrl.wi v8, v9, 0786; CHECK-NEXT: ret787 %evec = call <vscale x 2 x i8> @llvm.experimental.constrained.fptoui.nxv2i8.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")788 ret <vscale x 2 x i8> %evec789}790 791define <vscale x 2 x i16> @vfptosi_nxv2f32_nxv2i16(<vscale x 2 x float> %va) strictfp {792; CHECK-LABEL: vfptosi_nxv2f32_nxv2i16:793; CHECK: # %bb.0:794; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma795; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8796; CHECK-NEXT: vmv1r.v v8, v9797; CHECK-NEXT: ret798 %evec = call <vscale x 2 x i16> @llvm.experimental.constrained.fptosi.nxv2i16.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")799 ret <vscale x 2 x i16> %evec800}801 802define <vscale x 2 x i16> @vfptoui_nxv2f32_nxv2i16(<vscale x 2 x float> %va) strictfp {803; CHECK-LABEL: vfptoui_nxv2f32_nxv2i16:804; CHECK: # %bb.0:805; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma806; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8807; CHECK-NEXT: vmv1r.v v8, v9808; CHECK-NEXT: ret809 %evec = call <vscale x 2 x i16> @llvm.experimental.constrained.fptoui.nxv2i16.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")810 ret <vscale x 2 x i16> %evec811}812 813define <vscale x 2 x i32> @vfptosi_nxv2f32_nxv2i32(<vscale x 2 x float> %va) strictfp {814; CHECK-LABEL: vfptosi_nxv2f32_nxv2i32:815; CHECK: # %bb.0:816; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma817; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8818; CHECK-NEXT: ret819 %evec = call <vscale x 2 x i32> @llvm.experimental.constrained.fptosi.nxv2i32.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")820 ret <vscale x 2 x i32> %evec821}822 823define <vscale x 2 x i32> @vfptoui_nxv2f32_nxv2i32(<vscale x 2 x float> %va) strictfp {824; CHECK-LABEL: vfptoui_nxv2f32_nxv2i32:825; CHECK: # %bb.0:826; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma827; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8828; CHECK-NEXT: ret829 %evec = call <vscale x 2 x i32> @llvm.experimental.constrained.fptoui.nxv2i32.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")830 ret <vscale x 2 x i32> %evec831}832 833define <vscale x 2 x i64> @vfptosi_nxv2f32_nxv2i64(<vscale x 2 x float> %va) strictfp {834; CHECK-LABEL: vfptosi_nxv2f32_nxv2i64:835; CHECK: # %bb.0:836; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma837; CHECK-NEXT: vmv1r.v v10, v8838; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v10839; CHECK-NEXT: ret840 %evec = call <vscale x 2 x i64> @llvm.experimental.constrained.fptosi.nxv2i64.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")841 ret <vscale x 2 x i64> %evec842}843 844define <vscale x 2 x i64> @vfptoui_nxv2f32_nxv2i64(<vscale x 2 x float> %va) strictfp {845; CHECK-LABEL: vfptoui_nxv2f32_nxv2i64:846; CHECK: # %bb.0:847; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma848; CHECK-NEXT: vmv1r.v v10, v8849; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v10850; CHECK-NEXT: ret851 %evec = call <vscale x 2 x i64> @llvm.experimental.constrained.fptoui.nxv2i64.nxv2f32(<vscale x 2 x float> %va, metadata !"fpexcept.strict")852 ret <vscale x 2 x i64> %evec853}854 855define <vscale x 4 x i1> @vfptosi_nxv4f32_nxv4i1(<vscale x 4 x float> %va) strictfp {856; CHECK-LABEL: vfptosi_nxv4f32_nxv4i1:857; CHECK: # %bb.0:858; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma859; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8860; CHECK-NEXT: vand.vi v8, v10, 1861; CHECK-NEXT: vmsne.vi v0, v8, 0862; CHECK-NEXT: ret863 %evec = call <vscale x 4 x i1> @llvm.experimental.constrained.fptosi.nxv4i1.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")864 ret <vscale x 4 x i1> %evec865}866 867define <vscale x 4 x i1> @vfptoui_nxv4f32_nxv4i1(<vscale x 4 x float> %va) strictfp {868; CHECK-LABEL: vfptoui_nxv4f32_nxv4i1:869; CHECK: # %bb.0:870; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma871; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8872; CHECK-NEXT: vand.vi v8, v10, 1873; CHECK-NEXT: vmsne.vi v0, v8, 0874; CHECK-NEXT: ret875 %evec = call <vscale x 4 x i1> @llvm.experimental.constrained.fptoui.nxv4i1.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")876 ret <vscale x 4 x i1> %evec877}878 879define <vscale x 4 x i8> @vfptosi_nxv4f32_nxv4i8(<vscale x 4 x float> %va) strictfp {880; CHECK-LABEL: vfptosi_nxv4f32_nxv4i8:881; CHECK: # %bb.0:882; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma883; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8884; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma885; CHECK-NEXT: vnsrl.wi v8, v10, 0886; CHECK-NEXT: ret887 %evec = call <vscale x 4 x i8> @llvm.experimental.constrained.fptosi.nxv4i8.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")888 ret <vscale x 4 x i8> %evec889}890 891define <vscale x 4 x i8> @vfptoui_nxv4f32_nxv4i8(<vscale x 4 x float> %va) strictfp {892; CHECK-LABEL: vfptoui_nxv4f32_nxv4i8:893; CHECK: # %bb.0:894; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma895; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8896; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma897; CHECK-NEXT: vnsrl.wi v8, v10, 0898; CHECK-NEXT: ret899 %evec = call <vscale x 4 x i8> @llvm.experimental.constrained.fptoui.nxv4i8.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")900 ret <vscale x 4 x i8> %evec901}902 903define <vscale x 4 x i16> @vfptosi_nxv4f32_nxv4i16(<vscale x 4 x float> %va) strictfp {904; CHECK-LABEL: vfptosi_nxv4f32_nxv4i16:905; CHECK: # %bb.0:906; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma907; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8908; CHECK-NEXT: vmv.v.v v8, v10909; CHECK-NEXT: ret910 %evec = call <vscale x 4 x i16> @llvm.experimental.constrained.fptosi.nxv4i16.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")911 ret <vscale x 4 x i16> %evec912}913 914define <vscale x 4 x i16> @vfptoui_nxv4f32_nxv4i16(<vscale x 4 x float> %va) strictfp {915; CHECK-LABEL: vfptoui_nxv4f32_nxv4i16:916; CHECK: # %bb.0:917; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma918; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8919; CHECK-NEXT: vmv.v.v v8, v10920; CHECK-NEXT: ret921 %evec = call <vscale x 4 x i16> @llvm.experimental.constrained.fptoui.nxv4i16.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")922 ret <vscale x 4 x i16> %evec923}924 925define <vscale x 4 x i32> @vfptosi_nxv4f32_nxv4i32(<vscale x 4 x float> %va) strictfp {926; CHECK-LABEL: vfptosi_nxv4f32_nxv4i32:927; CHECK: # %bb.0:928; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma929; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8930; CHECK-NEXT: ret931 %evec = call <vscale x 4 x i32> @llvm.experimental.constrained.fptosi.nxv4i32.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")932 ret <vscale x 4 x i32> %evec933}934 935define <vscale x 4 x i32> @vfptoui_nxv4f32_nxv4i32(<vscale x 4 x float> %va) strictfp {936; CHECK-LABEL: vfptoui_nxv4f32_nxv4i32:937; CHECK: # %bb.0:938; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma939; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8940; CHECK-NEXT: ret941 %evec = call <vscale x 4 x i32> @llvm.experimental.constrained.fptoui.nxv4i32.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")942 ret <vscale x 4 x i32> %evec943}944 945define <vscale x 4 x i64> @vfptosi_nxv4f32_nxv4i64(<vscale x 4 x float> %va) strictfp {946; CHECK-LABEL: vfptosi_nxv4f32_nxv4i64:947; CHECK: # %bb.0:948; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma949; CHECK-NEXT: vmv2r.v v12, v8950; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v12951; CHECK-NEXT: ret952 %evec = call <vscale x 4 x i64> @llvm.experimental.constrained.fptosi.nxv4i64.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")953 ret <vscale x 4 x i64> %evec954}955 956define <vscale x 4 x i64> @vfptoui_nxv4f32_nxv4i64(<vscale x 4 x float> %va) strictfp {957; CHECK-LABEL: vfptoui_nxv4f32_nxv4i64:958; CHECK: # %bb.0:959; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma960; CHECK-NEXT: vmv2r.v v12, v8961; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v12962; CHECK-NEXT: ret963 %evec = call <vscale x 4 x i64> @llvm.experimental.constrained.fptoui.nxv4i64.nxv4f32(<vscale x 4 x float> %va, metadata !"fpexcept.strict")964 ret <vscale x 4 x i64> %evec965}966 967define <vscale x 8 x i1> @vfptosi_nxv8f32_nxv8i1(<vscale x 8 x float> %va) strictfp {968; CHECK-LABEL: vfptosi_nxv8f32_nxv8i1:969; CHECK: # %bb.0:970; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma971; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v8972; CHECK-NEXT: vand.vi v8, v12, 1973; CHECK-NEXT: vmsne.vi v0, v8, 0974; CHECK-NEXT: ret975 %evec = call <vscale x 8 x i1> @llvm.experimental.constrained.fptosi.nxv8i1.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")976 ret <vscale x 8 x i1> %evec977}978 979define <vscale x 8 x i1> @vfptoui_nxv8f32_nxv8i1(<vscale x 8 x float> %va) strictfp {980; CHECK-LABEL: vfptoui_nxv8f32_nxv8i1:981; CHECK: # %bb.0:982; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma983; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v8984; CHECK-NEXT: vand.vi v8, v12, 1985; CHECK-NEXT: vmsne.vi v0, v8, 0986; CHECK-NEXT: ret987 %evec = call <vscale x 8 x i1> @llvm.experimental.constrained.fptoui.nxv8i1.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")988 ret <vscale x 8 x i1> %evec989}990 991define <vscale x 8 x i8> @vfptosi_nxv8f32_nxv8i8(<vscale x 8 x float> %va) strictfp {992; CHECK-LABEL: vfptosi_nxv8f32_nxv8i8:993; CHECK: # %bb.0:994; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma995; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v8996; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma997; CHECK-NEXT: vnsrl.wi v8, v12, 0998; CHECK-NEXT: ret999 %evec = call <vscale x 8 x i8> @llvm.experimental.constrained.fptosi.nxv8i8.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1000 ret <vscale x 8 x i8> %evec1001}1002 1003define <vscale x 8 x i8> @vfptoui_nxv8f32_nxv8i8(<vscale x 8 x float> %va) strictfp {1004; CHECK-LABEL: vfptoui_nxv8f32_nxv8i8:1005; CHECK: # %bb.0:1006; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1007; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81008; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma1009; CHECK-NEXT: vnsrl.wi v8, v12, 01010; CHECK-NEXT: ret1011 %evec = call <vscale x 8 x i8> @llvm.experimental.constrained.fptoui.nxv8i8.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1012 ret <vscale x 8 x i8> %evec1013}1014 1015define <vscale x 8 x i16> @vfptosi_nxv8f32_nxv8i16(<vscale x 8 x float> %va) strictfp {1016; CHECK-LABEL: vfptosi_nxv8f32_nxv8i16:1017; CHECK: # %bb.0:1018; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1019; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81020; CHECK-NEXT: vmv.v.v v8, v121021; CHECK-NEXT: ret1022 %evec = call <vscale x 8 x i16> @llvm.experimental.constrained.fptosi.nxv8i16.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1023 ret <vscale x 8 x i16> %evec1024}1025 1026define <vscale x 8 x i16> @vfptoui_nxv8f32_nxv8i16(<vscale x 8 x float> %va) strictfp {1027; CHECK-LABEL: vfptoui_nxv8f32_nxv8i16:1028; CHECK: # %bb.0:1029; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma1030; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81031; CHECK-NEXT: vmv.v.v v8, v121032; CHECK-NEXT: ret1033 %evec = call <vscale x 8 x i16> @llvm.experimental.constrained.fptoui.nxv8i16.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1034 ret <vscale x 8 x i16> %evec1035}1036 1037define <vscale x 8 x i32> @vfptosi_nxv8f32_nxv8i32(<vscale x 8 x float> %va) strictfp {1038; CHECK-LABEL: vfptosi_nxv8f32_nxv8i32:1039; CHECK: # %bb.0:1040; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1041; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81042; CHECK-NEXT: ret1043 %evec = call <vscale x 8 x i32> @llvm.experimental.constrained.fptosi.nxv8i32.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1044 ret <vscale x 8 x i32> %evec1045}1046 1047define <vscale x 8 x i32> @vfptoui_nxv8f32_nxv8i32(<vscale x 8 x float> %va) strictfp {1048; CHECK-LABEL: vfptoui_nxv8f32_nxv8i32:1049; CHECK: # %bb.0:1050; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1051; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81052; CHECK-NEXT: ret1053 %evec = call <vscale x 8 x i32> @llvm.experimental.constrained.fptoui.nxv8i32.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1054 ret <vscale x 8 x i32> %evec1055}1056 1057define <vscale x 8 x i64> @vfptosi_nxv8f32_nxv8i64(<vscale x 8 x float> %va) strictfp {1058; CHECK-LABEL: vfptosi_nxv8f32_nxv8i64:1059; CHECK: # %bb.0:1060; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1061; CHECK-NEXT: vmv4r.v v16, v81062; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v161063; CHECK-NEXT: ret1064 %evec = call <vscale x 8 x i64> @llvm.experimental.constrained.fptosi.nxv8i64.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1065 ret <vscale x 8 x i64> %evec1066}1067 1068define <vscale x 8 x i64> @vfptoui_nxv8f32_nxv8i64(<vscale x 8 x float> %va) strictfp {1069; CHECK-LABEL: vfptoui_nxv8f32_nxv8i64:1070; CHECK: # %bb.0:1071; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1072; CHECK-NEXT: vmv4r.v v16, v81073; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v161074; CHECK-NEXT: ret1075 %evec = call <vscale x 8 x i64> @llvm.experimental.constrained.fptoui.nxv8i64.nxv8f32(<vscale x 8 x float> %va, metadata !"fpexcept.strict")1076 ret <vscale x 8 x i64> %evec1077}1078 1079define <vscale x 16 x i1> @vfptosi_nxv16f32_nxv16i1(<vscale x 16 x float> %va) strictfp {1080; CHECK-LABEL: vfptosi_nxv16f32_nxv16i1:1081; CHECK: # %bb.0:1082; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma1083; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81084; CHECK-NEXT: vand.vi v8, v16, 11085; CHECK-NEXT: vmsne.vi v0, v8, 01086; CHECK-NEXT: ret1087 %evec = call <vscale x 16 x i1> @llvm.experimental.constrained.fptosi.nxv16i1.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1088 ret <vscale x 16 x i1> %evec1089}1090 1091define <vscale x 16 x i1> @vfptoui_nxv16f32_nxv16i1(<vscale x 16 x float> %va) strictfp {1092; CHECK-LABEL: vfptoui_nxv16f32_nxv16i1:1093; CHECK: # %bb.0:1094; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma1095; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81096; CHECK-NEXT: vand.vi v8, v16, 11097; CHECK-NEXT: vmsne.vi v0, v8, 01098; CHECK-NEXT: ret1099 %evec = call <vscale x 16 x i1> @llvm.experimental.constrained.fptoui.nxv16i1.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1100 ret <vscale x 16 x i1> %evec1101}1102 1103define <vscale x 16 x i8> @vfptosi_nxv16f32_nxv16i8(<vscale x 16 x float> %va) strictfp {1104; CHECK-LABEL: vfptosi_nxv16f32_nxv16i8:1105; CHECK: # %bb.0:1106; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma1107; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81108; CHECK-NEXT: vsetvli zero, zero, e8, m2, ta, ma1109; CHECK-NEXT: vnsrl.wi v8, v16, 01110; CHECK-NEXT: ret1111 %evec = call <vscale x 16 x i8> @llvm.experimental.constrained.fptosi.nxv16i8.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1112 ret <vscale x 16 x i8> %evec1113}1114 1115define <vscale x 16 x i8> @vfptoui_nxv16f32_nxv16i8(<vscale x 16 x float> %va) strictfp {1116; CHECK-LABEL: vfptoui_nxv16f32_nxv16i8:1117; CHECK: # %bb.0:1118; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma1119; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81120; CHECK-NEXT: vsetvli zero, zero, e8, m2, ta, ma1121; CHECK-NEXT: vnsrl.wi v8, v16, 01122; CHECK-NEXT: ret1123 %evec = call <vscale x 16 x i8> @llvm.experimental.constrained.fptoui.nxv16i8.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1124 ret <vscale x 16 x i8> %evec1125}1126 1127define <vscale x 16 x i16> @vfptosi_nxv16f32_nxv16i16(<vscale x 16 x float> %va) strictfp {1128; CHECK-LABEL: vfptosi_nxv16f32_nxv16i16:1129; CHECK: # %bb.0:1130; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma1131; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81132; CHECK-NEXT: vmv.v.v v8, v161133; CHECK-NEXT: ret1134 %evec = call <vscale x 16 x i16> @llvm.experimental.constrained.fptosi.nxv16i16.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1135 ret <vscale x 16 x i16> %evec1136}1137 1138define <vscale x 16 x i16> @vfptoui_nxv16f32_nxv16i16(<vscale x 16 x float> %va) strictfp {1139; CHECK-LABEL: vfptoui_nxv16f32_nxv16i16:1140; CHECK: # %bb.0:1141; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma1142; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81143; CHECK-NEXT: vmv.v.v v8, v161144; CHECK-NEXT: ret1145 %evec = call <vscale x 16 x i16> @llvm.experimental.constrained.fptoui.nxv16i16.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1146 ret <vscale x 16 x i16> %evec1147}1148 1149define <vscale x 16 x i32> @vfptosi_nxv16f32_nxv16i32(<vscale x 16 x float> %va) strictfp {1150; CHECK-LABEL: vfptosi_nxv16f32_nxv16i32:1151; CHECK: # %bb.0:1152; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma1153; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81154; CHECK-NEXT: ret1155 %evec = call <vscale x 16 x i32> @llvm.experimental.constrained.fptosi.nxv16i32.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1156 ret <vscale x 16 x i32> %evec1157}1158 1159define <vscale x 16 x i32> @vfptoui_nxv16f32_nxv16i32(<vscale x 16 x float> %va) strictfp {1160; CHECK-LABEL: vfptoui_nxv16f32_nxv16i32:1161; CHECK: # %bb.0:1162; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma1163; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81164; CHECK-NEXT: ret1165 %evec = call <vscale x 16 x i32> @llvm.experimental.constrained.fptoui.nxv16i32.nxv16f32(<vscale x 16 x float> %va, metadata !"fpexcept.strict")1166 ret <vscale x 16 x i32> %evec1167}1168 1169define <vscale x 1 x i1> @vfptosi_nxv1f64_nxv1i1(<vscale x 1 x double> %va) strictfp {1170; CHECK-LABEL: vfptosi_nxv1f64_nxv1i1:1171; CHECK: # %bb.0:1172; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1173; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81174; CHECK-NEXT: vand.vi v8, v9, 11175; CHECK-NEXT: vmsne.vi v0, v8, 01176; CHECK-NEXT: ret1177 %evec = call <vscale x 1 x i1> @llvm.experimental.constrained.fptosi.nxv1i1.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1178 ret <vscale x 1 x i1> %evec1179}1180 1181define <vscale x 1 x i1> @vfptoui_nxv1f64_nxv1i1(<vscale x 1 x double> %va) strictfp {1182; CHECK-LABEL: vfptoui_nxv1f64_nxv1i1:1183; CHECK: # %bb.0:1184; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1185; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81186; CHECK-NEXT: vand.vi v8, v9, 11187; CHECK-NEXT: vmsne.vi v0, v8, 01188; CHECK-NEXT: ret1189 %evec = call <vscale x 1 x i1> @llvm.experimental.constrained.fptoui.nxv1i1.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1190 ret <vscale x 1 x i1> %evec1191}1192 1193define <vscale x 1 x i8> @vfptosi_nxv1f64_nxv1i8(<vscale x 1 x double> %va) strictfp {1194; CHECK-LABEL: vfptosi_nxv1f64_nxv1i8:1195; CHECK: # %bb.0:1196; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1197; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81198; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1199; CHECK-NEXT: vnsrl.wi v8, v9, 01200; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma1201; CHECK-NEXT: vnsrl.wi v8, v8, 01202; CHECK-NEXT: ret1203 %evec = call <vscale x 1 x i8> @llvm.experimental.constrained.fptosi.nxv1i8.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1204 ret <vscale x 1 x i8> %evec1205}1206 1207define <vscale x 1 x i8> @vfptoui_nxv1f64_nxv1i8(<vscale x 1 x double> %va) strictfp {1208; CHECK-LABEL: vfptoui_nxv1f64_nxv1i8:1209; CHECK: # %bb.0:1210; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1211; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81212; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1213; CHECK-NEXT: vnsrl.wi v8, v9, 01214; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma1215; CHECK-NEXT: vnsrl.wi v8, v8, 01216; CHECK-NEXT: ret1217 %evec = call <vscale x 1 x i8> @llvm.experimental.constrained.fptoui.nxv1i8.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1218 ret <vscale x 1 x i8> %evec1219}1220 1221define <vscale x 1 x i16> @vfptosi_nxv1f64_nxv1i16(<vscale x 1 x double> %va) strictfp {1222; CHECK-LABEL: vfptosi_nxv1f64_nxv1i16:1223; CHECK: # %bb.0:1224; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1225; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81226; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1227; CHECK-NEXT: vnsrl.wi v8, v9, 01228; CHECK-NEXT: ret1229 %evec = call <vscale x 1 x i16> @llvm.experimental.constrained.fptosi.nxv1i16.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1230 ret <vscale x 1 x i16> %evec1231}1232 1233define <vscale x 1 x i16> @vfptoui_nxv1f64_nxv1i16(<vscale x 1 x double> %va) strictfp {1234; CHECK-LABEL: vfptoui_nxv1f64_nxv1i16:1235; CHECK: # %bb.0:1236; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1237; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81238; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1239; CHECK-NEXT: vnsrl.wi v8, v9, 01240; CHECK-NEXT: ret1241 %evec = call <vscale x 1 x i16> @llvm.experimental.constrained.fptoui.nxv1i16.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1242 ret <vscale x 1 x i16> %evec1243}1244 1245define <vscale x 1 x i32> @vfptosi_nxv1f64_nxv1i32(<vscale x 1 x double> %va) strictfp {1246; CHECK-LABEL: vfptosi_nxv1f64_nxv1i32:1247; CHECK: # %bb.0:1248; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1249; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81250; CHECK-NEXT: vmv1r.v v8, v91251; CHECK-NEXT: ret1252 %evec = call <vscale x 1 x i32> @llvm.experimental.constrained.fptosi.nxv1i32.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1253 ret <vscale x 1 x i32> %evec1254}1255 1256define <vscale x 1 x i32> @vfptoui_nxv1f64_nxv1i32(<vscale x 1 x double> %va) strictfp {1257; CHECK-LABEL: vfptoui_nxv1f64_nxv1i32:1258; CHECK: # %bb.0:1259; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma1260; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81261; CHECK-NEXT: vmv1r.v v8, v91262; CHECK-NEXT: ret1263 %evec = call <vscale x 1 x i32> @llvm.experimental.constrained.fptoui.nxv1i32.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1264 ret <vscale x 1 x i32> %evec1265}1266 1267define <vscale x 1 x i64> @vfptosi_nxv1f64_nxv1i64(<vscale x 1 x double> %va) strictfp {1268; CHECK-LABEL: vfptosi_nxv1f64_nxv1i64:1269; CHECK: # %bb.0:1270; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma1271; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81272; CHECK-NEXT: ret1273 %evec = call <vscale x 1 x i64> @llvm.experimental.constrained.fptosi.nxv1i64.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1274 ret <vscale x 1 x i64> %evec1275}1276 1277define <vscale x 1 x i64> @vfptoui_nxv1f64_nxv1i64(<vscale x 1 x double> %va) strictfp {1278; CHECK-LABEL: vfptoui_nxv1f64_nxv1i64:1279; CHECK: # %bb.0:1280; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma1281; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81282; CHECK-NEXT: ret1283 %evec = call <vscale x 1 x i64> @llvm.experimental.constrained.fptoui.nxv1i64.nxv1f64(<vscale x 1 x double> %va, metadata !"fpexcept.strict")1284 ret <vscale x 1 x i64> %evec1285}1286 1287define <vscale x 2 x i1> @vfptosi_nxv2f64_nxv2i1(<vscale x 2 x double> %va) strictfp {1288; CHECK-LABEL: vfptosi_nxv2f64_nxv2i1:1289; CHECK: # %bb.0:1290; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1291; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81292; CHECK-NEXT: vand.vi v8, v10, 11293; CHECK-NEXT: vmsne.vi v0, v8, 01294; CHECK-NEXT: ret1295 %evec = call <vscale x 2 x i1> @llvm.experimental.constrained.fptosi.nxv2i1.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1296 ret <vscale x 2 x i1> %evec1297}1298 1299define <vscale x 2 x i1> @vfptoui_nxv2f64_nxv2i1(<vscale x 2 x double> %va) strictfp {1300; CHECK-LABEL: vfptoui_nxv2f64_nxv2i1:1301; CHECK: # %bb.0:1302; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1303; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81304; CHECK-NEXT: vand.vi v8, v10, 11305; CHECK-NEXT: vmsne.vi v0, v8, 01306; CHECK-NEXT: ret1307 %evec = call <vscale x 2 x i1> @llvm.experimental.constrained.fptoui.nxv2i1.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1308 ret <vscale x 2 x i1> %evec1309}1310 1311define <vscale x 2 x i8> @vfptosi_nxv2f64_nxv2i8(<vscale x 2 x double> %va) strictfp {1312; CHECK-LABEL: vfptosi_nxv2f64_nxv2i8:1313; CHECK: # %bb.0:1314; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1315; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81316; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1317; CHECK-NEXT: vnsrl.wi v8, v10, 01318; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma1319; CHECK-NEXT: vnsrl.wi v8, v8, 01320; CHECK-NEXT: ret1321 %evec = call <vscale x 2 x i8> @llvm.experimental.constrained.fptosi.nxv2i8.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1322 ret <vscale x 2 x i8> %evec1323}1324 1325define <vscale x 2 x i8> @vfptoui_nxv2f64_nxv2i8(<vscale x 2 x double> %va) strictfp {1326; CHECK-LABEL: vfptoui_nxv2f64_nxv2i8:1327; CHECK: # %bb.0:1328; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1329; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81330; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1331; CHECK-NEXT: vnsrl.wi v8, v10, 01332; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma1333; CHECK-NEXT: vnsrl.wi v8, v8, 01334; CHECK-NEXT: ret1335 %evec = call <vscale x 2 x i8> @llvm.experimental.constrained.fptoui.nxv2i8.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1336 ret <vscale x 2 x i8> %evec1337}1338 1339define <vscale x 2 x i16> @vfptosi_nxv2f64_nxv2i16(<vscale x 2 x double> %va) strictfp {1340; CHECK-LABEL: vfptosi_nxv2f64_nxv2i16:1341; CHECK: # %bb.0:1342; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1343; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81344; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1345; CHECK-NEXT: vnsrl.wi v8, v10, 01346; CHECK-NEXT: ret1347 %evec = call <vscale x 2 x i16> @llvm.experimental.constrained.fptosi.nxv2i16.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1348 ret <vscale x 2 x i16> %evec1349}1350 1351define <vscale x 2 x i16> @vfptoui_nxv2f64_nxv2i16(<vscale x 2 x double> %va) strictfp {1352; CHECK-LABEL: vfptoui_nxv2f64_nxv2i16:1353; CHECK: # %bb.0:1354; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1355; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81356; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1357; CHECK-NEXT: vnsrl.wi v8, v10, 01358; CHECK-NEXT: ret1359 %evec = call <vscale x 2 x i16> @llvm.experimental.constrained.fptoui.nxv2i16.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1360 ret <vscale x 2 x i16> %evec1361}1362 1363define <vscale x 2 x i32> @vfptosi_nxv2f64_nxv2i32(<vscale x 2 x double> %va) strictfp {1364; CHECK-LABEL: vfptosi_nxv2f64_nxv2i32:1365; CHECK: # %bb.0:1366; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1367; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81368; CHECK-NEXT: vmv.v.v v8, v101369; CHECK-NEXT: ret1370 %evec = call <vscale x 2 x i32> @llvm.experimental.constrained.fptosi.nxv2i32.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1371 ret <vscale x 2 x i32> %evec1372}1373 1374define <vscale x 2 x i32> @vfptoui_nxv2f64_nxv2i32(<vscale x 2 x double> %va) strictfp {1375; CHECK-LABEL: vfptoui_nxv2f64_nxv2i32:1376; CHECK: # %bb.0:1377; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma1378; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81379; CHECK-NEXT: vmv.v.v v8, v101380; CHECK-NEXT: ret1381 %evec = call <vscale x 2 x i32> @llvm.experimental.constrained.fptoui.nxv2i32.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1382 ret <vscale x 2 x i32> %evec1383}1384 1385define <vscale x 2 x i64> @vfptosi_nxv2f64_nxv2i64(<vscale x 2 x double> %va) strictfp {1386; CHECK-LABEL: vfptosi_nxv2f64_nxv2i64:1387; CHECK: # %bb.0:1388; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma1389; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81390; CHECK-NEXT: ret1391 %evec = call <vscale x 2 x i64> @llvm.experimental.constrained.fptosi.nxv2i64.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1392 ret <vscale x 2 x i64> %evec1393}1394 1395define <vscale x 2 x i64> @vfptoui_nxv2f64_nxv2i64(<vscale x 2 x double> %va) strictfp {1396; CHECK-LABEL: vfptoui_nxv2f64_nxv2i64:1397; CHECK: # %bb.0:1398; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma1399; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81400; CHECK-NEXT: ret1401 %evec = call <vscale x 2 x i64> @llvm.experimental.constrained.fptoui.nxv2i64.nxv2f64(<vscale x 2 x double> %va, metadata !"fpexcept.strict")1402 ret <vscale x 2 x i64> %evec1403}1404 1405define <vscale x 4 x i1> @vfptosi_nxv4f64_nxv4i1(<vscale x 4 x double> %va) strictfp {1406; CHECK-LABEL: vfptosi_nxv4f64_nxv4i1:1407; CHECK: # %bb.0:1408; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1409; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81410; CHECK-NEXT: vand.vi v8, v12, 11411; CHECK-NEXT: vmsne.vi v0, v8, 01412; CHECK-NEXT: ret1413 %evec = call <vscale x 4 x i1> @llvm.experimental.constrained.fptosi.nxv4i1.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1414 ret <vscale x 4 x i1> %evec1415}1416 1417define <vscale x 4 x i1> @vfptoui_nxv4f64_nxv4i1(<vscale x 4 x double> %va) strictfp {1418; CHECK-LABEL: vfptoui_nxv4f64_nxv4i1:1419; CHECK: # %bb.0:1420; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1421; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81422; CHECK-NEXT: vand.vi v8, v12, 11423; CHECK-NEXT: vmsne.vi v0, v8, 01424; CHECK-NEXT: ret1425 %evec = call <vscale x 4 x i1> @llvm.experimental.constrained.fptoui.nxv4i1.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1426 ret <vscale x 4 x i1> %evec1427}1428 1429define <vscale x 4 x i8> @vfptosi_nxv4f64_nxv4i8(<vscale x 4 x double> %va) strictfp {1430; CHECK-LABEL: vfptosi_nxv4f64_nxv4i8:1431; CHECK: # %bb.0:1432; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1433; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81434; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1435; CHECK-NEXT: vnsrl.wi v8, v12, 01436; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma1437; CHECK-NEXT: vnsrl.wi v8, v8, 01438; CHECK-NEXT: ret1439 %evec = call <vscale x 4 x i8> @llvm.experimental.constrained.fptosi.nxv4i8.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1440 ret <vscale x 4 x i8> %evec1441}1442 1443define <vscale x 4 x i8> @vfptoui_nxv4f64_nxv4i8(<vscale x 4 x double> %va) strictfp {1444; CHECK-LABEL: vfptoui_nxv4f64_nxv4i8:1445; CHECK: # %bb.0:1446; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1447; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81448; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1449; CHECK-NEXT: vnsrl.wi v8, v12, 01450; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma1451; CHECK-NEXT: vnsrl.wi v8, v8, 01452; CHECK-NEXT: ret1453 %evec = call <vscale x 4 x i8> @llvm.experimental.constrained.fptoui.nxv4i8.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1454 ret <vscale x 4 x i8> %evec1455}1456 1457define <vscale x 4 x i16> @vfptosi_nxv4f64_nxv4i16(<vscale x 4 x double> %va) strictfp {1458; CHECK-LABEL: vfptosi_nxv4f64_nxv4i16:1459; CHECK: # %bb.0:1460; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1461; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81462; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1463; CHECK-NEXT: vnsrl.wi v8, v12, 01464; CHECK-NEXT: ret1465 %evec = call <vscale x 4 x i16> @llvm.experimental.constrained.fptosi.nxv4i16.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1466 ret <vscale x 4 x i16> %evec1467}1468 1469define <vscale x 4 x i16> @vfptoui_nxv4f64_nxv4i16(<vscale x 4 x double> %va) strictfp {1470; CHECK-LABEL: vfptoui_nxv4f64_nxv4i16:1471; CHECK: # %bb.0:1472; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1473; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81474; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1475; CHECK-NEXT: vnsrl.wi v8, v12, 01476; CHECK-NEXT: ret1477 %evec = call <vscale x 4 x i16> @llvm.experimental.constrained.fptoui.nxv4i16.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1478 ret <vscale x 4 x i16> %evec1479}1480 1481define <vscale x 4 x i32> @vfptosi_nxv4f64_nxv4i32(<vscale x 4 x double> %va) strictfp {1482; CHECK-LABEL: vfptosi_nxv4f64_nxv4i32:1483; CHECK: # %bb.0:1484; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1485; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81486; CHECK-NEXT: vmv.v.v v8, v121487; CHECK-NEXT: ret1488 %evec = call <vscale x 4 x i32> @llvm.experimental.constrained.fptosi.nxv4i32.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1489 ret <vscale x 4 x i32> %evec1490}1491 1492define <vscale x 4 x i32> @vfptoui_nxv4f64_nxv4i32(<vscale x 4 x double> %va) strictfp {1493; CHECK-LABEL: vfptoui_nxv4f64_nxv4i32:1494; CHECK: # %bb.0:1495; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma1496; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81497; CHECK-NEXT: vmv.v.v v8, v121498; CHECK-NEXT: ret1499 %evec = call <vscale x 4 x i32> @llvm.experimental.constrained.fptoui.nxv4i32.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1500 ret <vscale x 4 x i32> %evec1501}1502 1503define <vscale x 4 x i64> @vfptosi_nxv4f64_nxv4i64(<vscale x 4 x double> %va) strictfp {1504; CHECK-LABEL: vfptosi_nxv4f64_nxv4i64:1505; CHECK: # %bb.0:1506; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma1507; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81508; CHECK-NEXT: ret1509 %evec = call <vscale x 4 x i64> @llvm.experimental.constrained.fptosi.nxv4i64.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1510 ret <vscale x 4 x i64> %evec1511}1512 1513define <vscale x 4 x i64> @vfptoui_nxv4f64_nxv4i64(<vscale x 4 x double> %va) strictfp {1514; CHECK-LABEL: vfptoui_nxv4f64_nxv4i64:1515; CHECK: # %bb.0:1516; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma1517; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81518; CHECK-NEXT: ret1519 %evec = call <vscale x 4 x i64> @llvm.experimental.constrained.fptoui.nxv4i64.nxv4f64(<vscale x 4 x double> %va, metadata !"fpexcept.strict")1520 ret <vscale x 4 x i64> %evec1521}1522 1523define <vscale x 8 x i1> @vfptosi_nxv8f64_nxv8i1(<vscale x 8 x double> %va) strictfp {1524; CHECK-LABEL: vfptosi_nxv8f64_nxv8i1:1525; CHECK: # %bb.0:1526; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1527; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81528; CHECK-NEXT: vand.vi v8, v16, 11529; CHECK-NEXT: vmsne.vi v0, v8, 01530; CHECK-NEXT: ret1531 %evec = call <vscale x 8 x i1> @llvm.experimental.constrained.fptosi.nxv8i1.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1532 ret <vscale x 8 x i1> %evec1533}1534 1535define <vscale x 8 x i1> @vfptoui_nxv8f64_nxv8i1(<vscale x 8 x double> %va) strictfp {1536; CHECK-LABEL: vfptoui_nxv8f64_nxv8i1:1537; CHECK: # %bb.0:1538; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1539; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81540; CHECK-NEXT: vand.vi v8, v16, 11541; CHECK-NEXT: vmsne.vi v0, v8, 01542; CHECK-NEXT: ret1543 %evec = call <vscale x 8 x i1> @llvm.experimental.constrained.fptoui.nxv8i1.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1544 ret <vscale x 8 x i1> %evec1545}1546 1547define <vscale x 8 x i8> @vfptosi_nxv8f64_nxv8i8(<vscale x 8 x double> %va) strictfp {1548; CHECK-LABEL: vfptosi_nxv8f64_nxv8i8:1549; CHECK: # %bb.0:1550; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1551; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81552; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1553; CHECK-NEXT: vnsrl.wi v10, v16, 01554; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma1555; CHECK-NEXT: vnsrl.wi v8, v10, 01556; CHECK-NEXT: ret1557 %evec = call <vscale x 8 x i8> @llvm.experimental.constrained.fptosi.nxv8i8.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1558 ret <vscale x 8 x i8> %evec1559}1560 1561define <vscale x 8 x i8> @vfptoui_nxv8f64_nxv8i8(<vscale x 8 x double> %va) strictfp {1562; CHECK-LABEL: vfptoui_nxv8f64_nxv8i8:1563; CHECK: # %bb.0:1564; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1565; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81566; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1567; CHECK-NEXT: vnsrl.wi v10, v16, 01568; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma1569; CHECK-NEXT: vnsrl.wi v8, v10, 01570; CHECK-NEXT: ret1571 %evec = call <vscale x 8 x i8> @llvm.experimental.constrained.fptoui.nxv8i8.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1572 ret <vscale x 8 x i8> %evec1573}1574 1575define <vscale x 8 x i16> @vfptosi_nxv8f64_nxv8i16(<vscale x 8 x double> %va) strictfp {1576; CHECK-LABEL: vfptosi_nxv8f64_nxv8i16:1577; CHECK: # %bb.0:1578; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1579; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81580; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1581; CHECK-NEXT: vnsrl.wi v8, v16, 01582; CHECK-NEXT: ret1583 %evec = call <vscale x 8 x i16> @llvm.experimental.constrained.fptosi.nxv8i16.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1584 ret <vscale x 8 x i16> %evec1585}1586 1587define <vscale x 8 x i16> @vfptoui_nxv8f64_nxv8i16(<vscale x 8 x double> %va) strictfp {1588; CHECK-LABEL: vfptoui_nxv8f64_nxv8i16:1589; CHECK: # %bb.0:1590; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1591; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81592; CHECK-NEXT: vsetvli zero, zero, e16, m2, ta, ma1593; CHECK-NEXT: vnsrl.wi v8, v16, 01594; CHECK-NEXT: ret1595 %evec = call <vscale x 8 x i16> @llvm.experimental.constrained.fptoui.nxv8i16.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1596 ret <vscale x 8 x i16> %evec1597}1598 1599define <vscale x 8 x i32> @vfptosi_nxv8f64_nxv8i32(<vscale x 8 x double> %va) strictfp {1600; CHECK-LABEL: vfptosi_nxv8f64_nxv8i32:1601; CHECK: # %bb.0:1602; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1603; CHECK-NEXT: vfncvt.rtz.x.f.w v16, v81604; CHECK-NEXT: vmv.v.v v8, v161605; CHECK-NEXT: ret1606 %evec = call <vscale x 8 x i32> @llvm.experimental.constrained.fptosi.nxv8i32.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1607 ret <vscale x 8 x i32> %evec1608}1609 1610define <vscale x 8 x i32> @vfptoui_nxv8f64_nxv8i32(<vscale x 8 x double> %va) strictfp {1611; CHECK-LABEL: vfptoui_nxv8f64_nxv8i32:1612; CHECK: # %bb.0:1613; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma1614; CHECK-NEXT: vfncvt.rtz.xu.f.w v16, v81615; CHECK-NEXT: vmv.v.v v8, v161616; CHECK-NEXT: ret1617 %evec = call <vscale x 8 x i32> @llvm.experimental.constrained.fptoui.nxv8i32.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1618 ret <vscale x 8 x i32> %evec1619}1620 1621define <vscale x 8 x i64> @vfptosi_nxv8f64_nxv8i64(<vscale x 8 x double> %va) strictfp {1622; CHECK-LABEL: vfptosi_nxv8f64_nxv8i64:1623; CHECK: # %bb.0:1624; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma1625; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81626; CHECK-NEXT: ret1627 %evec = call <vscale x 8 x i64> @llvm.experimental.constrained.fptosi.nxv8i64.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1628 ret <vscale x 8 x i64> %evec1629}1630 1631define <vscale x 8 x i64> @vfptoui_nxv8f64_nxv8i64(<vscale x 8 x double> %va) strictfp {1632; CHECK-LABEL: vfptoui_nxv8f64_nxv8i64:1633; CHECK: # %bb.0:1634; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma1635; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81636; CHECK-NEXT: ret1637 %evec = call <vscale x 8 x i64> @llvm.experimental.constrained.fptoui.nxv8i64.nxv8f64(<vscale x 8 x double> %va, metadata !"fpexcept.strict")1638 ret <vscale x 8 x i64> %evec1639}1640