1660 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \3; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV324; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \5; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV646 7define <1 x i1> @vfptosi_v1f16_v1i1(<1 x half> %va) strictfp {8; CHECK-LABEL: vfptosi_v1f16_v1i1:9; CHECK: # %bb.0:10; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f16(<1 x half> %va, metadata !"fpexcept.strict")16 ret <1 x i1> %evec17}18 19define <1 x i1> @vfptoui_v1f16_v1i1(<1 x half> %va) strictfp {20; CHECK-LABEL: vfptoui_v1f16_v1i1:21; CHECK: # %bb.0:22; CHECK-NEXT: vsetivli zero, 1, 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 <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f16(<1 x half> %va, metadata !"fpexcept.strict")28 ret <1 x i1> %evec29}30 31define <1 x i7> @vfptosi_v1f16_v1i7(<1 x half> %va) strictfp {32; RV32-LABEL: vfptosi_v1f16_v1i7:33; RV32: # %bb.0:34; RV32-NEXT: vsetivli zero, 1, e16, m1, ta, ma35; RV32-NEXT: vfmv.f.s fa5, v836; RV32-NEXT: fcvt.w.h a0, fa5, rtz37; RV32-NEXT: ret38;39; RV64-LABEL: vfptosi_v1f16_v1i7:40; RV64: # %bb.0:41; RV64-NEXT: vsetivli zero, 1, e16, m1, ta, ma42; RV64-NEXT: vfmv.f.s fa5, v843; RV64-NEXT: fcvt.l.h a0, fa5, rtz44; RV64-NEXT: ret45 %evec = call <1 x i7> @llvm.experimental.constrained.fptosi.v1i7.v1f16(<1 x half> %va, metadata !"fpexcept.strict")46 ret <1 x i7> %evec47}48 49define <1 x i7> @vfptoui_v1f16_v1i7(<1 x half> %va) strictfp {50; RV32-LABEL: vfptoui_v1f16_v1i7:51; RV32: # %bb.0:52; RV32-NEXT: vsetivli zero, 1, e16, m1, ta, ma53; RV32-NEXT: vfmv.f.s fa5, v854; RV32-NEXT: fcvt.w.h a0, fa5, rtz55; RV32-NEXT: ret56;57; RV64-LABEL: vfptoui_v1f16_v1i7:58; RV64: # %bb.0:59; RV64-NEXT: vsetivli zero, 1, e16, m1, ta, ma60; RV64-NEXT: vfmv.f.s fa5, v861; RV64-NEXT: fcvt.l.h a0, fa5, rtz62; RV64-NEXT: ret63 %evec = call <1 x i7> @llvm.experimental.constrained.fptoui.v1i7.v1f16(<1 x half> %va, metadata !"fpexcept.strict")64 ret <1 x i7> %evec65}66 67define <1 x i8> @vfptosi_v1f16_v1i8(<1 x half> %va) strictfp {68; CHECK-LABEL: vfptosi_v1f16_v1i8:69; CHECK: # %bb.0:70; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, ma71; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v872; CHECK-NEXT: vmv1r.v v8, v973; CHECK-NEXT: ret74 %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f16(<1 x half> %va, metadata !"fpexcept.strict")75 ret <1 x i8> %evec76}77 78define <1 x i8> @vfptoui_v1f16_v1i8(<1 x half> %va) strictfp {79; CHECK-LABEL: vfptoui_v1f16_v1i8:80; CHECK: # %bb.0:81; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, ma82; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v883; CHECK-NEXT: vmv1r.v v8, v984; CHECK-NEXT: ret85 %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f16(<1 x half> %va, metadata !"fpexcept.strict")86 ret <1 x i8> %evec87}88 89define <1 x i16> @vfptosi_v1f16_v1i16(<1 x half> %va) strictfp {90; CHECK-LABEL: vfptosi_v1f16_v1i16:91; CHECK: # %bb.0:92; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma93; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v894; CHECK-NEXT: ret95 %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f16(<1 x half> %va, metadata !"fpexcept.strict")96 ret <1 x i16> %evec97}98 99define <1 x i16> @vfptoui_v1f16_v1i16(<1 x half> %va) strictfp {100; CHECK-LABEL: vfptoui_v1f16_v1i16:101; CHECK: # %bb.0:102; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma103; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8104; CHECK-NEXT: ret105 %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f16(<1 x half> %va, metadata !"fpexcept.strict")106 ret <1 x i16> %evec107}108 109define <1 x i32> @vfptosi_v1f16_v1i32(<1 x half> %va) strictfp {110; CHECK-LABEL: vfptosi_v1f16_v1i32:111; CHECK: # %bb.0:112; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma113; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8114; CHECK-NEXT: vmv1r.v v8, v9115; CHECK-NEXT: ret116 %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f16(<1 x half> %va, metadata !"fpexcept.strict")117 ret <1 x i32> %evec118}119 120define <1 x i32> @vfptoui_v1f16_v1i32(<1 x half> %va) strictfp {121; CHECK-LABEL: vfptoui_v1f16_v1i32:122; CHECK: # %bb.0:123; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma124; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8125; CHECK-NEXT: vmv1r.v v8, v9126; CHECK-NEXT: ret127 %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f16(<1 x half> %va, metadata !"fpexcept.strict")128 ret <1 x i32> %evec129}130 131define <1 x i64> @vfptosi_v1f16_v1i64(<1 x half> %va) strictfp {132; CHECK-LABEL: vfptosi_v1f16_v1i64:133; CHECK: # %bb.0:134; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma135; CHECK-NEXT: vfwcvt.f.f.v v9, v8136; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma137; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v9138; CHECK-NEXT: ret139 %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f16(<1 x half> %va, metadata !"fpexcept.strict")140 ret <1 x i64> %evec141}142 143define <1 x i64> @vfptoui_v1f16_v1i64(<1 x half> %va) strictfp {144; CHECK-LABEL: vfptoui_v1f16_v1i64:145; CHECK: # %bb.0:146; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma147; CHECK-NEXT: vfwcvt.f.f.v v9, v8148; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma149; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v9150; CHECK-NEXT: ret151 %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f16(<1 x half> %va, metadata !"fpexcept.strict")152 ret <1 x i64> %evec153}154 155define <2 x i1> @vfptosi_v2f16_v2i1(<2 x half> %va) strictfp {156; CHECK-LABEL: vfptosi_v2f16_v2i1:157; CHECK: # %bb.0:158; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma159; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8160; CHECK-NEXT: vand.vi v8, v9, 1161; CHECK-NEXT: vmsne.vi v0, v8, 0162; CHECK-NEXT: ret163 %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f16(<2 x half> %va, metadata !"fpexcept.strict")164 ret <2 x i1> %evec165}166 167define <2 x i1> @vfptoui_v2f16_v2i1(<2 x half> %va) strictfp {168; CHECK-LABEL: vfptoui_v2f16_v2i1:169; CHECK: # %bb.0:170; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma171; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8172; CHECK-NEXT: vand.vi v8, v9, 1173; CHECK-NEXT: vmsne.vi v0, v8, 0174; CHECK-NEXT: ret175 %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f16(<2 x half> %va, metadata !"fpexcept.strict")176 ret <2 x i1> %evec177}178 179define <2 x i8> @vfptosi_v2f16_v2i8(<2 x half> %va) strictfp {180; CHECK-LABEL: vfptosi_v2f16_v2i8:181; CHECK: # %bb.0:182; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma183; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8184; CHECK-NEXT: vmv1r.v v8, v9185; CHECK-NEXT: ret186 %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f16(<2 x half> %va, metadata !"fpexcept.strict")187 ret <2 x i8> %evec188}189 190define <2 x i8> @vfptoui_v2f16_v2i8(<2 x half> %va) strictfp {191; CHECK-LABEL: vfptoui_v2f16_v2i8:192; CHECK: # %bb.0:193; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma194; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8195; CHECK-NEXT: vmv1r.v v8, v9196; CHECK-NEXT: ret197 %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f16(<2 x half> %va, metadata !"fpexcept.strict")198 ret <2 x i8> %evec199}200 201define <2 x i16> @vfptosi_v2f16_v2i16(<2 x half> %va) strictfp {202; CHECK-LABEL: vfptosi_v2f16_v2i16:203; CHECK: # %bb.0:204; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma205; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8206; CHECK-NEXT: ret207 %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f16(<2 x half> %va, metadata !"fpexcept.strict")208 ret <2 x i16> %evec209}210 211define <2 x i16> @vfptoui_v2f16_v2i16(<2 x half> %va) strictfp {212; CHECK-LABEL: vfptoui_v2f16_v2i16:213; CHECK: # %bb.0:214; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma215; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8216; CHECK-NEXT: ret217 %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f16(<2 x half> %va, metadata !"fpexcept.strict")218 ret <2 x i16> %evec219}220 221define <2 x i32> @vfptosi_v2f16_v2i32(<2 x half> %va) strictfp {222; CHECK-LABEL: vfptosi_v2f16_v2i32:223; CHECK: # %bb.0:224; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma225; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8226; CHECK-NEXT: vmv1r.v v8, v9227; CHECK-NEXT: ret228 %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f16(<2 x half> %va, metadata !"fpexcept.strict")229 ret <2 x i32> %evec230}231 232define <2 x i32> @vfptoui_v2f16_v2i32(<2 x half> %va) strictfp {233; CHECK-LABEL: vfptoui_v2f16_v2i32:234; CHECK: # %bb.0:235; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma236; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8237; CHECK-NEXT: vmv1r.v v8, v9238; CHECK-NEXT: ret239 %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f16(<2 x half> %va, metadata !"fpexcept.strict")240 ret <2 x i32> %evec241}242 243define <2 x i64> @vfptosi_v2f16_v2i64(<2 x half> %va) strictfp {244; CHECK-LABEL: vfptosi_v2f16_v2i64:245; CHECK: # %bb.0:246; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma247; CHECK-NEXT: vfwcvt.f.f.v v9, v8248; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma249; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v9250; CHECK-NEXT: ret251 %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f16(<2 x half> %va, metadata !"fpexcept.strict")252 ret <2 x i64> %evec253}254 255define <2 x i64> @vfptoui_v2f16_v2i64(<2 x half> %va) strictfp {256; CHECK-LABEL: vfptoui_v2f16_v2i64:257; CHECK: # %bb.0:258; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma259; CHECK-NEXT: vfwcvt.f.f.v v9, v8260; CHECK-NEXT: vsetvli zero, zero, e32, mf2, ta, ma261; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v9262; CHECK-NEXT: ret263 %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f16(<2 x half> %va, metadata !"fpexcept.strict")264 ret <2 x i64> %evec265}266 267define <4 x i1> @vfptosi_v4f16_v4i1(<4 x half> %va) strictfp {268; CHECK-LABEL: vfptosi_v4f16_v4i1:269; CHECK: # %bb.0:270; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma271; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8272; CHECK-NEXT: vand.vi v8, v9, 1273; CHECK-NEXT: vmsne.vi v0, v8, 0274; CHECK-NEXT: ret275 %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f16(<4 x half> %va, metadata !"fpexcept.strict")276 ret <4 x i1> %evec277}278 279define <4 x i1> @vfptoui_v4f16_v4i1(<4 x half> %va) strictfp {280; CHECK-LABEL: vfptoui_v4f16_v4i1:281; CHECK: # %bb.0:282; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma283; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8284; CHECK-NEXT: vand.vi v8, v9, 1285; CHECK-NEXT: vmsne.vi v0, v8, 0286; CHECK-NEXT: ret287 %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f16(<4 x half> %va, metadata !"fpexcept.strict")288 ret <4 x i1> %evec289}290 291define <4 x i8> @vfptosi_v4f16_v4i8(<4 x half> %va) strictfp {292; CHECK-LABEL: vfptosi_v4f16_v4i8:293; CHECK: # %bb.0:294; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma295; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8296; CHECK-NEXT: vmv1r.v v8, v9297; CHECK-NEXT: ret298 %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f16(<4 x half> %va, metadata !"fpexcept.strict")299 ret <4 x i8> %evec300}301 302define <4 x i8> @vfptoui_v4f16_v4i8(<4 x half> %va) strictfp {303; CHECK-LABEL: vfptoui_v4f16_v4i8:304; CHECK: # %bb.0:305; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma306; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8307; CHECK-NEXT: vmv1r.v v8, v9308; CHECK-NEXT: ret309 %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f16(<4 x half> %va, metadata !"fpexcept.strict")310 ret <4 x i8> %evec311}312 313define <4 x i16> @vfptosi_v4f16_v4i16(<4 x half> %va) strictfp {314; CHECK-LABEL: vfptosi_v4f16_v4i16:315; CHECK: # %bb.0:316; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma317; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8318; CHECK-NEXT: ret319 %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f16(<4 x half> %va, metadata !"fpexcept.strict")320 ret <4 x i16> %evec321}322 323define <4 x i16> @vfptoui_v4f16_v4i16(<4 x half> %va) strictfp {324; CHECK-LABEL: vfptoui_v4f16_v4i16:325; CHECK: # %bb.0:326; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma327; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8328; CHECK-NEXT: ret329 %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f16(<4 x half> %va, metadata !"fpexcept.strict")330 ret <4 x i16> %evec331}332 333define <4 x i32> @vfptosi_v4f16_v4i32(<4 x half> %va) strictfp {334; CHECK-LABEL: vfptosi_v4f16_v4i32:335; CHECK: # %bb.0:336; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma337; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8338; CHECK-NEXT: vmv1r.v v8, v9339; CHECK-NEXT: ret340 %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f16(<4 x half> %va, metadata !"fpexcept.strict")341 ret <4 x i32> %evec342}343 344define <4 x i32> @vfptoui_v4f16_v4i32(<4 x half> %va) strictfp {345; CHECK-LABEL: vfptoui_v4f16_v4i32:346; CHECK: # %bb.0:347; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma348; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8349; CHECK-NEXT: vmv1r.v v8, v9350; CHECK-NEXT: ret351 %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f16(<4 x half> %va, metadata !"fpexcept.strict")352 ret <4 x i32> %evec353}354 355define <4 x i64> @vfptosi_v4f16_v4i64(<4 x half> %va) strictfp {356; CHECK-LABEL: vfptosi_v4f16_v4i64:357; CHECK: # %bb.0:358; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma359; CHECK-NEXT: vfwcvt.f.f.v v10, v8360; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma361; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v10362; CHECK-NEXT: ret363 %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f16(<4 x half> %va, metadata !"fpexcept.strict")364 ret <4 x i64> %evec365}366 367define <4 x i64> @vfptoui_v4f16_v4i64(<4 x half> %va) strictfp {368; CHECK-LABEL: vfptoui_v4f16_v4i64:369; CHECK: # %bb.0:370; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma371; CHECK-NEXT: vfwcvt.f.f.v v10, v8372; CHECK-NEXT: vsetvli zero, zero, e32, m1, ta, ma373; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v10374; CHECK-NEXT: ret375 %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f16(<4 x half> %va, metadata !"fpexcept.strict")376 ret <4 x i64> %evec377}378 379define <8 x i1> @vfptosi_v8f16_v8i1(<8 x half> %va) strictfp {380; CHECK-LABEL: vfptosi_v8f16_v8i1:381; CHECK: # %bb.0:382; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma383; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8384; CHECK-NEXT: vand.vi v8, v9, 1385; CHECK-NEXT: vmsne.vi v0, v8, 0386; CHECK-NEXT: ret387 %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f16(<8 x half> %va, metadata !"fpexcept.strict")388 ret <8 x i1> %evec389}390 391define <8 x i1> @vfptoui_v8f16_v8i1(<8 x half> %va) strictfp {392; CHECK-LABEL: vfptoui_v8f16_v8i1:393; CHECK: # %bb.0:394; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma395; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8396; CHECK-NEXT: vand.vi v8, v9, 1397; CHECK-NEXT: vmsne.vi v0, v8, 0398; CHECK-NEXT: ret399 %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f16(<8 x half> %va, metadata !"fpexcept.strict")400 ret <8 x i1> %evec401}402 403define <8 x i8> @vfptosi_v8f16_v8i8(<8 x half> %va) strictfp {404; CHECK-LABEL: vfptosi_v8f16_v8i8:405; CHECK: # %bb.0:406; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma407; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8408; CHECK-NEXT: vmv1r.v v8, v9409; CHECK-NEXT: ret410 %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f16(<8 x half> %va, metadata !"fpexcept.strict")411 ret <8 x i8> %evec412}413 414define <8 x i8> @vfptoui_v8f16_v8i8(<8 x half> %va) strictfp {415; CHECK-LABEL: vfptoui_v8f16_v8i8:416; CHECK: # %bb.0:417; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma418; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8419; CHECK-NEXT: vmv1r.v v8, v9420; CHECK-NEXT: ret421 %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f16(<8 x half> %va, metadata !"fpexcept.strict")422 ret <8 x i8> %evec423}424 425define <8 x i16> @vfptosi_v8f16_v8i16(<8 x half> %va) strictfp {426; CHECK-LABEL: vfptosi_v8f16_v8i16:427; CHECK: # %bb.0:428; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma429; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8430; CHECK-NEXT: ret431 %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f16(<8 x half> %va, metadata !"fpexcept.strict")432 ret <8 x i16> %evec433}434 435define <8 x i16> @vfptoui_v8f16_v8i16(<8 x half> %va) strictfp {436; CHECK-LABEL: vfptoui_v8f16_v8i16:437; CHECK: # %bb.0:438; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma439; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8440; CHECK-NEXT: ret441 %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f16(<8 x half> %va, metadata !"fpexcept.strict")442 ret <8 x i16> %evec443}444 445define <8 x i32> @vfptosi_v8f16_v8i32(<8 x half> %va) strictfp {446; CHECK-LABEL: vfptosi_v8f16_v8i32:447; CHECK: # %bb.0:448; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma449; CHECK-NEXT: vmv1r.v v10, v8450; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v10451; CHECK-NEXT: ret452 %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f16(<8 x half> %va, metadata !"fpexcept.strict")453 ret <8 x i32> %evec454}455 456define <8 x i32> @vfptoui_v8f16_v8i32(<8 x half> %va) strictfp {457; CHECK-LABEL: vfptoui_v8f16_v8i32:458; CHECK: # %bb.0:459; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma460; CHECK-NEXT: vmv1r.v v10, v8461; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v10462; CHECK-NEXT: ret463 %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f16(<8 x half> %va, metadata !"fpexcept.strict")464 ret <8 x i32> %evec465}466 467define <8 x i64> @vfptosi_v8f16_v8i64(<8 x half> %va) strictfp {468; CHECK-LABEL: vfptosi_v8f16_v8i64:469; CHECK: # %bb.0:470; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma471; CHECK-NEXT: vfwcvt.f.f.v v12, v8472; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma473; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v12474; CHECK-NEXT: ret475 %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f16(<8 x half> %va, metadata !"fpexcept.strict")476 ret <8 x i64> %evec477}478 479define <8 x i64> @vfptoui_v8f16_v8i64(<8 x half> %va) strictfp {480; CHECK-LABEL: vfptoui_v8f16_v8i64:481; CHECK: # %bb.0:482; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma483; CHECK-NEXT: vfwcvt.f.f.v v12, v8484; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma485; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v12486; CHECK-NEXT: ret487 %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f16(<8 x half> %va, metadata !"fpexcept.strict")488 ret <8 x i64> %evec489}490 491define <16 x i1> @vfptosi_v16f16_v16i1(<16 x half> %va) strictfp {492; CHECK-LABEL: vfptosi_v16f16_v16i1:493; CHECK: # %bb.0:494; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma495; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8496; CHECK-NEXT: vand.vi v8, v10, 1497; CHECK-NEXT: vmsne.vi v0, v8, 0498; CHECK-NEXT: ret499 %evec = call <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f16(<16 x half> %va, metadata !"fpexcept.strict")500 ret <16 x i1> %evec501}502 503define <16 x i1> @vfptoui_v16f16_v16i1(<16 x half> %va) strictfp {504; CHECK-LABEL: vfptoui_v16f16_v16i1:505; CHECK: # %bb.0:506; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma507; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8508; CHECK-NEXT: vand.vi v8, v10, 1509; CHECK-NEXT: vmsne.vi v0, v8, 0510; CHECK-NEXT: ret511 %evec = call <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f16(<16 x half> %va, metadata !"fpexcept.strict")512 ret <16 x i1> %evec513}514 515define <16 x i8> @vfptosi_v16f16_v16i8(<16 x half> %va) strictfp {516; CHECK-LABEL: vfptosi_v16f16_v16i8:517; CHECK: # %bb.0:518; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma519; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8520; CHECK-NEXT: vmv.v.v v8, v10521; CHECK-NEXT: ret522 %evec = call <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f16(<16 x half> %va, metadata !"fpexcept.strict")523 ret <16 x i8> %evec524}525 526define <16 x i8> @vfptoui_v16f16_v16i8(<16 x half> %va) strictfp {527; CHECK-LABEL: vfptoui_v16f16_v16i8:528; CHECK: # %bb.0:529; CHECK-NEXT: vsetivli zero, 16, e8, m1, ta, ma530; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v8531; CHECK-NEXT: vmv.v.v v8, v10532; CHECK-NEXT: ret533 %evec = call <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f16(<16 x half> %va, metadata !"fpexcept.strict")534 ret <16 x i8> %evec535}536 537define <16 x i16> @vfptosi_v16f16_v16i16(<16 x half> %va) strictfp {538; CHECK-LABEL: vfptosi_v16f16_v16i16:539; CHECK: # %bb.0:540; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma541; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8542; CHECK-NEXT: ret543 %evec = call <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f16(<16 x half> %va, metadata !"fpexcept.strict")544 ret <16 x i16> %evec545}546 547define <16 x i16> @vfptoui_v16f16_v16i16(<16 x half> %va) strictfp {548; CHECK-LABEL: vfptoui_v16f16_v16i16:549; CHECK: # %bb.0:550; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma551; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8552; CHECK-NEXT: ret553 %evec = call <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f16(<16 x half> %va, metadata !"fpexcept.strict")554 ret <16 x i16> %evec555}556 557define <16 x i32> @vfptosi_v16f16_v16i32(<16 x half> %va) strictfp {558; CHECK-LABEL: vfptosi_v16f16_v16i32:559; CHECK: # %bb.0:560; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma561; CHECK-NEXT: vmv2r.v v12, v8562; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v12563; CHECK-NEXT: ret564 %evec = call <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f16(<16 x half> %va, metadata !"fpexcept.strict")565 ret <16 x i32> %evec566}567 568define <16 x i32> @vfptoui_v16f16_v16i32(<16 x half> %va) strictfp {569; CHECK-LABEL: vfptoui_v16f16_v16i32:570; CHECK: # %bb.0:571; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma572; CHECK-NEXT: vmv2r.v v12, v8573; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v12574; CHECK-NEXT: ret575 %evec = call <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f16(<16 x half> %va, metadata !"fpexcept.strict")576 ret <16 x i32> %evec577}578 579define <32 x i1> @vfptosi_v32f16_v32i1(<32 x half> %va) strictfp {580; CHECK-LABEL: vfptosi_v32f16_v32i1:581; CHECK: # %bb.0:582; CHECK-NEXT: li a0, 32583; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma584; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v8585; CHECK-NEXT: vand.vi v8, v12, 1586; CHECK-NEXT: vmsne.vi v0, v8, 0587; CHECK-NEXT: ret588 %evec = call <32 x i1> @llvm.experimental.constrained.fptosi.v32i1.v32f16(<32 x half> %va, metadata !"fpexcept.strict")589 ret <32 x i1> %evec590}591 592define <32 x i1> @vfptoui_v32f16_v32i1(<32 x half> %va) strictfp {593; CHECK-LABEL: vfptoui_v32f16_v32i1:594; CHECK: # %bb.0:595; CHECK-NEXT: li a0, 32596; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma597; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v8598; CHECK-NEXT: vand.vi v8, v12, 1599; CHECK-NEXT: vmsne.vi v0, v8, 0600; CHECK-NEXT: ret601 %evec = call <32 x i1> @llvm.experimental.constrained.fptoui.v32i1.v32f16(<32 x half> %va, metadata !"fpexcept.strict")602 ret <32 x i1> %evec603}604 605define <32 x i8> @vfptosi_v32f16_v32i8(<32 x half> %va) strictfp {606; CHECK-LABEL: vfptosi_v32f16_v32i8:607; CHECK: # %bb.0:608; CHECK-NEXT: li a0, 32609; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma610; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v8611; CHECK-NEXT: vmv.v.v v8, v12612; CHECK-NEXT: ret613 %evec = call <32 x i8> @llvm.experimental.constrained.fptosi.v32i8.v32f16(<32 x half> %va, metadata !"fpexcept.strict")614 ret <32 x i8> %evec615}616 617define <32 x i8> @vfptoui_v32f16_v32i8(<32 x half> %va) strictfp {618; CHECK-LABEL: vfptoui_v32f16_v32i8:619; CHECK: # %bb.0:620; CHECK-NEXT: li a0, 32621; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma622; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v8623; CHECK-NEXT: vmv.v.v v8, v12624; CHECK-NEXT: ret625 %evec = call <32 x i8> @llvm.experimental.constrained.fptoui.v32i8.v32f16(<32 x half> %va, metadata !"fpexcept.strict")626 ret <32 x i8> %evec627}628 629define <32 x i16> @vfptosi_v32f16_v32i16(<32 x half> %va) strictfp {630; CHECK-LABEL: vfptosi_v32f16_v32i16:631; CHECK: # %bb.0:632; CHECK-NEXT: li a0, 32633; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma634; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8635; CHECK-NEXT: ret636 %evec = call <32 x i16> @llvm.experimental.constrained.fptosi.v32i16.v32f16(<32 x half> %va, metadata !"fpexcept.strict")637 ret <32 x i16> %evec638}639 640define <32 x i16> @vfptoui_v32f16_v32i16(<32 x half> %va) strictfp {641; CHECK-LABEL: vfptoui_v32f16_v32i16:642; CHECK: # %bb.0:643; CHECK-NEXT: li a0, 32644; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma645; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8646; CHECK-NEXT: ret647 %evec = call <32 x i16> @llvm.experimental.constrained.fptoui.v32i16.v32f16(<32 x half> %va, metadata !"fpexcept.strict")648 ret <32 x i16> %evec649}650 651define <1 x i1> @vfptosi_v1f32_v1i1(<1 x float> %va) strictfp {652; CHECK-LABEL: vfptosi_v1f32_v1i1:653; CHECK: # %bb.0:654; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma655; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8656; CHECK-NEXT: vand.vi v8, v9, 1657; CHECK-NEXT: vmsne.vi v0, v8, 0658; CHECK-NEXT: ret659 %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f32(<1 x float> %va, metadata !"fpexcept.strict")660 ret <1 x i1> %evec661}662 663define <1 x i1> @vfptoui_v1f32_v1i1(<1 x float> %va) strictfp {664; CHECK-LABEL: vfptoui_v1f32_v1i1:665; CHECK: # %bb.0:666; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma667; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8668; CHECK-NEXT: vand.vi v8, v9, 1669; CHECK-NEXT: vmsne.vi v0, v8, 0670; CHECK-NEXT: ret671 %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f32(<1 x float> %va, metadata !"fpexcept.strict")672 ret <1 x i1> %evec673}674 675define <1 x i8> @vfptosi_v1f32_v1i8(<1 x float> %va) strictfp {676; CHECK-LABEL: vfptosi_v1f32_v1i8:677; CHECK: # %bb.0:678; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma679; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8680; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma681; CHECK-NEXT: vnsrl.wi v8, v9, 0682; CHECK-NEXT: ret683 %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f32(<1 x float> %va, metadata !"fpexcept.strict")684 ret <1 x i8> %evec685}686 687define <1 x i8> @vfptoui_v1f32_v1i8(<1 x float> %va) strictfp {688; CHECK-LABEL: vfptoui_v1f32_v1i8:689; CHECK: # %bb.0:690; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma691; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8692; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma693; CHECK-NEXT: vnsrl.wi v8, v9, 0694; CHECK-NEXT: ret695 %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f32(<1 x float> %va, metadata !"fpexcept.strict")696 ret <1 x i8> %evec697}698 699define <1 x i16> @vfptosi_v1f32_v1i16(<1 x float> %va) strictfp {700; CHECK-LABEL: vfptosi_v1f32_v1i16:701; CHECK: # %bb.0:702; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma703; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8704; CHECK-NEXT: vmv1r.v v8, v9705; CHECK-NEXT: ret706 %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f32(<1 x float> %va, metadata !"fpexcept.strict")707 ret <1 x i16> %evec708}709 710define <1 x i16> @vfptoui_v1f32_v1i16(<1 x float> %va) strictfp {711; CHECK-LABEL: vfptoui_v1f32_v1i16:712; CHECK: # %bb.0:713; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma714; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8715; CHECK-NEXT: vmv1r.v v8, v9716; CHECK-NEXT: ret717 %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f32(<1 x float> %va, metadata !"fpexcept.strict")718 ret <1 x i16> %evec719}720 721define <1 x i32> @vfptosi_v1f32_v1i32(<1 x float> %va) strictfp {722; CHECK-LABEL: vfptosi_v1f32_v1i32:723; CHECK: # %bb.0:724; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma725; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8726; CHECK-NEXT: ret727 %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f32(<1 x float> %va, metadata !"fpexcept.strict")728 ret <1 x i32> %evec729}730 731define <1 x i32> @vfptoui_v1f32_v1i32(<1 x float> %va) strictfp {732; CHECK-LABEL: vfptoui_v1f32_v1i32:733; CHECK: # %bb.0:734; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma735; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8736; CHECK-NEXT: ret737 %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f32(<1 x float> %va, metadata !"fpexcept.strict")738 ret <1 x i32> %evec739}740 741define <1 x i64> @vfptosi_v1f32_v1i64(<1 x float> %va) strictfp {742; CHECK-LABEL: vfptosi_v1f32_v1i64:743; CHECK: # %bb.0:744; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma745; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8746; CHECK-NEXT: vmv1r.v v8, v9747; CHECK-NEXT: ret748 %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f32(<1 x float> %va, metadata !"fpexcept.strict")749 ret <1 x i64> %evec750}751 752define <1 x i64> @vfptoui_v1f32_v1i64(<1 x float> %va) strictfp {753; CHECK-LABEL: vfptoui_v1f32_v1i64:754; CHECK: # %bb.0:755; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma756; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8757; CHECK-NEXT: vmv1r.v v8, v9758; CHECK-NEXT: ret759 %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f32(<1 x float> %va, metadata !"fpexcept.strict")760 ret <1 x i64> %evec761}762 763define <2 x i1> @vfptosi_v2f32_v2i1(<2 x float> %va) strictfp {764; CHECK-LABEL: vfptosi_v2f32_v2i1:765; CHECK: # %bb.0:766; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma767; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8768; CHECK-NEXT: vand.vi v8, v9, 1769; CHECK-NEXT: vmsne.vi v0, v8, 0770; CHECK-NEXT: ret771 %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f32(<2 x float> %va, metadata !"fpexcept.strict")772 ret <2 x i1> %evec773}774 775define <2 x i1> @vfptoui_v2f32_v2i1(<2 x float> %va) strictfp {776; CHECK-LABEL: vfptoui_v2f32_v2i1:777; CHECK: # %bb.0:778; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma779; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8780; CHECK-NEXT: vand.vi v8, v9, 1781; CHECK-NEXT: vmsne.vi v0, v8, 0782; CHECK-NEXT: ret783 %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f32(<2 x float> %va, metadata !"fpexcept.strict")784 ret <2 x i1> %evec785}786 787define <2 x i8> @vfptosi_v2f32_v2i8(<2 x float> %va) strictfp {788; CHECK-LABEL: vfptosi_v2f32_v2i8:789; CHECK: # %bb.0:790; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma791; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8792; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma793; CHECK-NEXT: vnsrl.wi v8, v9, 0794; CHECK-NEXT: ret795 %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f32(<2 x float> %va, metadata !"fpexcept.strict")796 ret <2 x i8> %evec797}798 799define <2 x i8> @vfptoui_v2f32_v2i8(<2 x float> %va) strictfp {800; CHECK-LABEL: vfptoui_v2f32_v2i8:801; CHECK: # %bb.0:802; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma803; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8804; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma805; CHECK-NEXT: vnsrl.wi v8, v9, 0806; CHECK-NEXT: ret807 %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f32(<2 x float> %va, metadata !"fpexcept.strict")808 ret <2 x i8> %evec809}810 811define <2 x i16> @vfptosi_v2f32_v2i16(<2 x float> %va) strictfp {812; CHECK-LABEL: vfptosi_v2f32_v2i16:813; CHECK: # %bb.0:814; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma815; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8816; CHECK-NEXT: vmv1r.v v8, v9817; CHECK-NEXT: ret818 %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f32(<2 x float> %va, metadata !"fpexcept.strict")819 ret <2 x i16> %evec820}821 822define <2 x i16> @vfptoui_v2f32_v2i16(<2 x float> %va) strictfp {823; CHECK-LABEL: vfptoui_v2f32_v2i16:824; CHECK: # %bb.0:825; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma826; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8827; CHECK-NEXT: vmv1r.v v8, v9828; CHECK-NEXT: ret829 %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f32(<2 x float> %va, metadata !"fpexcept.strict")830 ret <2 x i16> %evec831}832 833define <2 x i32> @vfptosi_v2f32_v2i32(<2 x float> %va) strictfp {834; CHECK-LABEL: vfptosi_v2f32_v2i32:835; CHECK: # %bb.0:836; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma837; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8838; CHECK-NEXT: ret839 %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f32(<2 x float> %va, metadata !"fpexcept.strict")840 ret <2 x i32> %evec841}842 843define <2 x i32> @vfptoui_v2f32_v2i32(<2 x float> %va) strictfp {844; CHECK-LABEL: vfptoui_v2f32_v2i32:845; CHECK: # %bb.0:846; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma847; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8848; CHECK-NEXT: ret849 %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f32(<2 x float> %va, metadata !"fpexcept.strict")850 ret <2 x i32> %evec851}852 853define <2 x i64> @vfptosi_v2f32_v2i64(<2 x float> %va) strictfp {854; CHECK-LABEL: vfptosi_v2f32_v2i64:855; CHECK: # %bb.0:856; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma857; CHECK-NEXT: vfwcvt.rtz.x.f.v v9, v8858; CHECK-NEXT: vmv1r.v v8, v9859; CHECK-NEXT: ret860 %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f32(<2 x float> %va, metadata !"fpexcept.strict")861 ret <2 x i64> %evec862}863 864define <2 x i64> @vfptoui_v2f32_v2i64(<2 x float> %va) strictfp {865; CHECK-LABEL: vfptoui_v2f32_v2i64:866; CHECK: # %bb.0:867; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma868; CHECK-NEXT: vfwcvt.rtz.xu.f.v v9, v8869; CHECK-NEXT: vmv1r.v v8, v9870; CHECK-NEXT: ret871 %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f32(<2 x float> %va, metadata !"fpexcept.strict")872 ret <2 x i64> %evec873}874 875define <4 x i1> @vfptosi_v4f32_v4i1(<4 x float> %va) strictfp {876; CHECK-LABEL: vfptosi_v4f32_v4i1:877; CHECK: # %bb.0:878; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma879; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8880; CHECK-NEXT: vand.vi v8, v9, 1881; CHECK-NEXT: vmsne.vi v0, v8, 0882; CHECK-NEXT: ret883 %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f32(<4 x float> %va, metadata !"fpexcept.strict")884 ret <4 x i1> %evec885}886 887define <4 x i1> @vfptoui_v4f32_v4i1(<4 x float> %va) strictfp {888; CHECK-LABEL: vfptoui_v4f32_v4i1:889; CHECK: # %bb.0:890; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma891; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8892; CHECK-NEXT: vand.vi v8, v9, 1893; CHECK-NEXT: vmsne.vi v0, v8, 0894; CHECK-NEXT: ret895 %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f32(<4 x float> %va, metadata !"fpexcept.strict")896 ret <4 x i1> %evec897}898 899define <4 x i8> @vfptosi_v4f32_v4i8(<4 x float> %va) strictfp {900; CHECK-LABEL: vfptosi_v4f32_v4i8:901; CHECK: # %bb.0:902; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma903; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8904; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma905; CHECK-NEXT: vnsrl.wi v8, v9, 0906; CHECK-NEXT: ret907 %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f32(<4 x float> %va, metadata !"fpexcept.strict")908 ret <4 x i8> %evec909}910 911define <4 x i8> @vfptoui_v4f32_v4i8(<4 x float> %va) strictfp {912; CHECK-LABEL: vfptoui_v4f32_v4i8:913; CHECK: # %bb.0:914; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma915; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8916; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma917; CHECK-NEXT: vnsrl.wi v8, v9, 0918; CHECK-NEXT: ret919 %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f32(<4 x float> %va, metadata !"fpexcept.strict")920 ret <4 x i8> %evec921}922 923define <4 x i16> @vfptosi_v4f32_v4i16(<4 x float> %va) strictfp {924; CHECK-LABEL: vfptosi_v4f32_v4i16:925; CHECK: # %bb.0:926; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma927; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v8928; CHECK-NEXT: vmv1r.v v8, v9929; CHECK-NEXT: ret930 %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f32(<4 x float> %va, metadata !"fpexcept.strict")931 ret <4 x i16> %evec932}933 934define <4 x i16> @vfptoui_v4f32_v4i16(<4 x float> %va) strictfp {935; CHECK-LABEL: vfptoui_v4f32_v4i16:936; CHECK: # %bb.0:937; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma938; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v8939; CHECK-NEXT: vmv1r.v v8, v9940; CHECK-NEXT: ret941 %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f32(<4 x float> %va, metadata !"fpexcept.strict")942 ret <4 x i16> %evec943}944 945define <4 x i32> @vfptosi_v4f32_v4i32(<4 x float> %va) strictfp {946; CHECK-LABEL: vfptosi_v4f32_v4i32:947; CHECK: # %bb.0:948; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma949; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v8950; CHECK-NEXT: ret951 %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float> %va, metadata !"fpexcept.strict")952 ret <4 x i32> %evec953}954 955define <4 x i32> @vfptoui_v4f32_v4i32(<4 x float> %va) strictfp {956; CHECK-LABEL: vfptoui_v4f32_v4i32:957; CHECK: # %bb.0:958; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma959; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v8960; CHECK-NEXT: ret961 %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float> %va, metadata !"fpexcept.strict")962 ret <4 x i32> %evec963}964 965define <4 x i64> @vfptosi_v4f32_v4i64(<4 x float> %va) strictfp {966; CHECK-LABEL: vfptosi_v4f32_v4i64:967; CHECK: # %bb.0:968; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma969; CHECK-NEXT: vmv1r.v v10, v8970; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v10971; CHECK-NEXT: ret972 %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f32(<4 x float> %va, metadata !"fpexcept.strict")973 ret <4 x i64> %evec974}975 976define <4 x i64> @vfptoui_v4f32_v4i64(<4 x float> %va) strictfp {977; CHECK-LABEL: vfptoui_v4f32_v4i64:978; CHECK: # %bb.0:979; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma980; CHECK-NEXT: vmv1r.v v10, v8981; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v10982; CHECK-NEXT: ret983 %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f32(<4 x float> %va, metadata !"fpexcept.strict")984 ret <4 x i64> %evec985}986 987define <8 x i1> @vfptosi_v8f32_v8i1(<8 x float> %va) strictfp {988; CHECK-LABEL: vfptosi_v8f32_v8i1:989; CHECK: # %bb.0:990; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma991; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v8992; CHECK-NEXT: vand.vi v8, v10, 1993; CHECK-NEXT: vmsne.vi v0, v8, 0994; CHECK-NEXT: ret995 %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f32(<8 x float> %va, metadata !"fpexcept.strict")996 ret <8 x i1> %evec997}998 999define <8 x i1> @vfptoui_v8f32_v8i1(<8 x float> %va) strictfp {1000; CHECK-LABEL: vfptoui_v8f32_v8i1:1001; CHECK: # %bb.0:1002; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1003; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81004; CHECK-NEXT: vand.vi v8, v10, 11005; CHECK-NEXT: vmsne.vi v0, v8, 01006; CHECK-NEXT: ret1007 %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1008 ret <8 x i1> %evec1009}1010 1011define <8 x i8> @vfptosi_v8f32_v8i8(<8 x float> %va) strictfp {1012; CHECK-LABEL: vfptosi_v8f32_v8i8:1013; CHECK: # %bb.0:1014; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1015; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81016; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma1017; CHECK-NEXT: vnsrl.wi v8, v10, 01018; CHECK-NEXT: ret1019 %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1020 ret <8 x i8> %evec1021}1022 1023define <8 x i8> @vfptoui_v8f32_v8i8(<8 x float> %va) strictfp {1024; CHECK-LABEL: vfptoui_v8f32_v8i8:1025; CHECK: # %bb.0:1026; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1027; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81028; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma1029; CHECK-NEXT: vnsrl.wi v8, v10, 01030; CHECK-NEXT: ret1031 %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1032 ret <8 x i8> %evec1033}1034 1035define <8 x i16> @vfptosi_v8f32_v8i16(<8 x float> %va) strictfp {1036; CHECK-LABEL: vfptosi_v8f32_v8i16:1037; CHECK: # %bb.0:1038; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1039; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81040; CHECK-NEXT: vmv.v.v v8, v101041; CHECK-NEXT: ret1042 %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1043 ret <8 x i16> %evec1044}1045 1046define <8 x i16> @vfptoui_v8f32_v8i16(<8 x float> %va) strictfp {1047; CHECK-LABEL: vfptoui_v8f32_v8i16:1048; CHECK: # %bb.0:1049; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma1050; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81051; CHECK-NEXT: vmv.v.v v8, v101052; CHECK-NEXT: ret1053 %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1054 ret <8 x i16> %evec1055}1056 1057define <8 x i32> @vfptosi_v8f32_v8i32(<8 x float> %va) strictfp {1058; CHECK-LABEL: vfptosi_v8f32_v8i32:1059; CHECK: # %bb.0:1060; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1061; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81062; CHECK-NEXT: ret1063 %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1064 ret <8 x i32> %evec1065}1066 1067define <8 x i32> @vfptoui_v8f32_v8i32(<8 x float> %va) strictfp {1068; CHECK-LABEL: vfptoui_v8f32_v8i32:1069; CHECK: # %bb.0:1070; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1071; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81072; CHECK-NEXT: ret1073 %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1074 ret <8 x i32> %evec1075}1076 1077define <8 x i64> @vfptosi_v8f32_v8i64(<8 x float> %va) strictfp {1078; CHECK-LABEL: vfptosi_v8f32_v8i64:1079; CHECK: # %bb.0:1080; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1081; CHECK-NEXT: vmv2r.v v12, v81082; CHECK-NEXT: vfwcvt.rtz.x.f.v v8, v121083; CHECK-NEXT: ret1084 %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1085 ret <8 x i64> %evec1086}1087 1088define <8 x i64> @vfptoui_v8f32_v8i64(<8 x float> %va) strictfp {1089; CHECK-LABEL: vfptoui_v8f32_v8i64:1090; CHECK: # %bb.0:1091; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1092; CHECK-NEXT: vmv2r.v v12, v81093; CHECK-NEXT: vfwcvt.rtz.xu.f.v v8, v121094; CHECK-NEXT: ret1095 %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f32(<8 x float> %va, metadata !"fpexcept.strict")1096 ret <8 x i64> %evec1097}1098 1099define <16 x i1> @vfptosi_v16f32_v16i1(<16 x float> %va) strictfp {1100; CHECK-LABEL: vfptosi_v16f32_v16i1:1101; CHECK: # %bb.0:1102; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma1103; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81104; CHECK-NEXT: vand.vi v8, v12, 11105; CHECK-NEXT: vmsne.vi v0, v8, 01106; CHECK-NEXT: ret1107 %evec = call <16 x i1> @llvm.experimental.constrained.fptosi.v16i1.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1108 ret <16 x i1> %evec1109}1110 1111define <16 x i1> @vfptoui_v16f32_v16i1(<16 x float> %va) strictfp {1112; CHECK-LABEL: vfptoui_v16f32_v16i1:1113; CHECK: # %bb.0:1114; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma1115; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81116; CHECK-NEXT: vand.vi v8, v12, 11117; CHECK-NEXT: vmsne.vi v0, v8, 01118; CHECK-NEXT: ret1119 %evec = call <16 x i1> @llvm.experimental.constrained.fptoui.v16i1.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1120 ret <16 x i1> %evec1121}1122 1123define <16 x i8> @vfptosi_v16f32_v16i8(<16 x float> %va) strictfp {1124; CHECK-LABEL: vfptosi_v16f32_v16i8:1125; CHECK: # %bb.0:1126; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma1127; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81128; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma1129; CHECK-NEXT: vnsrl.wi v8, v12, 01130; CHECK-NEXT: ret1131 %evec = call <16 x i8> @llvm.experimental.constrained.fptosi.v16i8.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1132 ret <16 x i8> %evec1133}1134 1135define <16 x i8> @vfptoui_v16f32_v16i8(<16 x float> %va) strictfp {1136; CHECK-LABEL: vfptoui_v16f32_v16i8:1137; CHECK: # %bb.0:1138; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma1139; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81140; CHECK-NEXT: vsetvli zero, zero, e8, m1, ta, ma1141; CHECK-NEXT: vnsrl.wi v8, v12, 01142; CHECK-NEXT: ret1143 %evec = call <16 x i8> @llvm.experimental.constrained.fptoui.v16i8.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1144 ret <16 x i8> %evec1145}1146 1147define <16 x i16> @vfptosi_v16f32_v16i16(<16 x float> %va) strictfp {1148; CHECK-LABEL: vfptosi_v16f32_v16i16:1149; CHECK: # %bb.0:1150; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma1151; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81152; CHECK-NEXT: vmv.v.v v8, v121153; CHECK-NEXT: ret1154 %evec = call <16 x i16> @llvm.experimental.constrained.fptosi.v16i16.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1155 ret <16 x i16> %evec1156}1157 1158define <16 x i16> @vfptoui_v16f32_v16i16(<16 x float> %va) strictfp {1159; CHECK-LABEL: vfptoui_v16f32_v16i16:1160; CHECK: # %bb.0:1161; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, ma1162; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81163; CHECK-NEXT: vmv.v.v v8, v121164; CHECK-NEXT: ret1165 %evec = call <16 x i16> @llvm.experimental.constrained.fptoui.v16i16.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1166 ret <16 x i16> %evec1167}1168 1169define <16 x i32> @vfptosi_v16f32_v16i32(<16 x float> %va) strictfp {1170; CHECK-LABEL: vfptosi_v16f32_v16i32:1171; CHECK: # %bb.0:1172; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma1173; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81174; CHECK-NEXT: ret1175 %evec = call <16 x i32> @llvm.experimental.constrained.fptosi.v16i32.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1176 ret <16 x i32> %evec1177}1178 1179define <16 x i32> @vfptoui_v16f32_v16i32(<16 x float> %va) strictfp {1180; CHECK-LABEL: vfptoui_v16f32_v16i32:1181; CHECK: # %bb.0:1182; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, ma1183; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81184; CHECK-NEXT: ret1185 %evec = call <16 x i32> @llvm.experimental.constrained.fptoui.v16i32.v16f32(<16 x float> %va, metadata !"fpexcept.strict")1186 ret <16 x i32> %evec1187}1188 1189define <1 x i1> @vfptosi_v1f64_v1i1(<1 x double> %va) strictfp {1190; CHECK-LABEL: vfptosi_v1f64_v1i1:1191; CHECK: # %bb.0:1192; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1193; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81194; CHECK-NEXT: vand.vi v8, v9, 11195; CHECK-NEXT: vmsne.vi v0, v8, 01196; CHECK-NEXT: ret1197 %evec = call <1 x i1> @llvm.experimental.constrained.fptosi.v1i1.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1198 ret <1 x i1> %evec1199}1200 1201define <1 x i1> @vfptoui_v1f64_v1i1(<1 x double> %va) strictfp {1202; CHECK-LABEL: vfptoui_v1f64_v1i1:1203; CHECK: # %bb.0:1204; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1205; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81206; CHECK-NEXT: vand.vi v8, v9, 11207; CHECK-NEXT: vmsne.vi v0, v8, 01208; CHECK-NEXT: ret1209 %evec = call <1 x i1> @llvm.experimental.constrained.fptoui.v1i1.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1210 ret <1 x i1> %evec1211}1212 1213define <1 x i8> @vfptosi_v1f64_v1i8(<1 x double> %va) strictfp {1214; CHECK-LABEL: vfptosi_v1f64_v1i8:1215; CHECK: # %bb.0:1216; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1217; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81218; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1219; CHECK-NEXT: vnsrl.wi v8, v9, 01220; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma1221; CHECK-NEXT: vnsrl.wi v8, v8, 01222; CHECK-NEXT: ret1223 %evec = call <1 x i8> @llvm.experimental.constrained.fptosi.v1i8.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1224 ret <1 x i8> %evec1225}1226 1227define <1 x i8> @vfptoui_v1f64_v1i8(<1 x double> %va) strictfp {1228; CHECK-LABEL: vfptoui_v1f64_v1i8:1229; CHECK: # %bb.0:1230; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1231; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81232; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1233; CHECK-NEXT: vnsrl.wi v8, v9, 01234; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma1235; CHECK-NEXT: vnsrl.wi v8, v8, 01236; CHECK-NEXT: ret1237 %evec = call <1 x i8> @llvm.experimental.constrained.fptoui.v1i8.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1238 ret <1 x i8> %evec1239}1240 1241define <1 x i16> @vfptosi_v1f64_v1i16(<1 x double> %va) strictfp {1242; CHECK-LABEL: vfptosi_v1f64_v1i16:1243; CHECK: # %bb.0:1244; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1245; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81246; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1247; CHECK-NEXT: vnsrl.wi v8, v9, 01248; CHECK-NEXT: ret1249 %evec = call <1 x i16> @llvm.experimental.constrained.fptosi.v1i16.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1250 ret <1 x i16> %evec1251}1252 1253define <1 x i16> @vfptoui_v1f64_v1i16(<1 x double> %va) strictfp {1254; CHECK-LABEL: vfptoui_v1f64_v1i16:1255; CHECK: # %bb.0:1256; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1257; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81258; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1259; CHECK-NEXT: vnsrl.wi v8, v9, 01260; CHECK-NEXT: ret1261 %evec = call <1 x i16> @llvm.experimental.constrained.fptoui.v1i16.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1262 ret <1 x i16> %evec1263}1264 1265define <1 x i32> @vfptosi_v1f64_v1i32(<1 x double> %va) strictfp {1266; CHECK-LABEL: vfptosi_v1f64_v1i32:1267; CHECK: # %bb.0:1268; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1269; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81270; CHECK-NEXT: vmv1r.v v8, v91271; CHECK-NEXT: ret1272 %evec = call <1 x i32> @llvm.experimental.constrained.fptosi.v1i32.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1273 ret <1 x i32> %evec1274}1275 1276define <1 x i32> @vfptoui_v1f64_v1i32(<1 x double> %va) strictfp {1277; CHECK-LABEL: vfptoui_v1f64_v1i32:1278; CHECK: # %bb.0:1279; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma1280; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81281; CHECK-NEXT: vmv1r.v v8, v91282; CHECK-NEXT: ret1283 %evec = call <1 x i32> @llvm.experimental.constrained.fptoui.v1i32.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1284 ret <1 x i32> %evec1285}1286 1287define <1 x i64> @vfptosi_v1f64_v1i64(<1 x double> %va) strictfp {1288; CHECK-LABEL: vfptosi_v1f64_v1i64:1289; CHECK: # %bb.0:1290; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma1291; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81292; CHECK-NEXT: ret1293 %evec = call <1 x i64> @llvm.experimental.constrained.fptosi.v1i64.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1294 ret <1 x i64> %evec1295}1296 1297define <1 x i64> @vfptoui_v1f64_v1i64(<1 x double> %va) strictfp {1298; CHECK-LABEL: vfptoui_v1f64_v1i64:1299; CHECK: # %bb.0:1300; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma1301; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81302; CHECK-NEXT: ret1303 %evec = call <1 x i64> @llvm.experimental.constrained.fptoui.v1i64.v1f64(<1 x double> %va, metadata !"fpexcept.strict")1304 ret <1 x i64> %evec1305}1306 1307define <2 x i1> @vfptosi_v2f64_v2i1(<2 x double> %va) strictfp {1308; CHECK-LABEL: vfptosi_v2f64_v2i1:1309; CHECK: # %bb.0:1310; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1311; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81312; CHECK-NEXT: vand.vi v8, v9, 11313; CHECK-NEXT: vmsne.vi v0, v8, 01314; CHECK-NEXT: ret1315 %evec = call <2 x i1> @llvm.experimental.constrained.fptosi.v2i1.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1316 ret <2 x i1> %evec1317}1318 1319define <2 x i1> @vfptoui_v2f64_v2i1(<2 x double> %va) strictfp {1320; CHECK-LABEL: vfptoui_v2f64_v2i1:1321; CHECK: # %bb.0:1322; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1323; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81324; CHECK-NEXT: vand.vi v8, v9, 11325; CHECK-NEXT: vmsne.vi v0, v8, 01326; CHECK-NEXT: ret1327 %evec = call <2 x i1> @llvm.experimental.constrained.fptoui.v2i1.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1328 ret <2 x i1> %evec1329}1330 1331define <2 x i8> @vfptosi_v2f64_v2i8(<2 x double> %va) strictfp {1332; CHECK-LABEL: vfptosi_v2f64_v2i8:1333; CHECK: # %bb.0:1334; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1335; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81336; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1337; CHECK-NEXT: vnsrl.wi v8, v9, 01338; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma1339; CHECK-NEXT: vnsrl.wi v8, v8, 01340; CHECK-NEXT: ret1341 %evec = call <2 x i8> @llvm.experimental.constrained.fptosi.v2i8.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1342 ret <2 x i8> %evec1343}1344 1345define <2 x i8> @vfptoui_v2f64_v2i8(<2 x double> %va) strictfp {1346; CHECK-LABEL: vfptoui_v2f64_v2i8:1347; CHECK: # %bb.0:1348; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1349; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81350; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1351; CHECK-NEXT: vnsrl.wi v8, v9, 01352; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, ma1353; CHECK-NEXT: vnsrl.wi v8, v8, 01354; CHECK-NEXT: ret1355 %evec = call <2 x i8> @llvm.experimental.constrained.fptoui.v2i8.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1356 ret <2 x i8> %evec1357}1358 1359define <2 x i16> @vfptosi_v2f64_v2i16(<2 x double> %va) strictfp {1360; CHECK-LABEL: vfptosi_v2f64_v2i16:1361; CHECK: # %bb.0:1362; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1363; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81364; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1365; CHECK-NEXT: vnsrl.wi v8, v9, 01366; CHECK-NEXT: ret1367 %evec = call <2 x i16> @llvm.experimental.constrained.fptosi.v2i16.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1368 ret <2 x i16> %evec1369}1370 1371define <2 x i16> @vfptoui_v2f64_v2i16(<2 x double> %va) strictfp {1372; CHECK-LABEL: vfptoui_v2f64_v2i16:1373; CHECK: # %bb.0:1374; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1375; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81376; CHECK-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1377; CHECK-NEXT: vnsrl.wi v8, v9, 01378; CHECK-NEXT: ret1379 %evec = call <2 x i16> @llvm.experimental.constrained.fptoui.v2i16.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1380 ret <2 x i16> %evec1381}1382 1383define <2 x i32> @vfptosi_v2f64_v2i32(<2 x double> %va) strictfp {1384; CHECK-LABEL: vfptosi_v2f64_v2i32:1385; CHECK: # %bb.0:1386; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1387; CHECK-NEXT: vfncvt.rtz.x.f.w v9, v81388; CHECK-NEXT: vmv1r.v v8, v91389; CHECK-NEXT: ret1390 %evec = call <2 x i32> @llvm.experimental.constrained.fptosi.v2i32.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1391 ret <2 x i32> %evec1392}1393 1394define <2 x i32> @vfptoui_v2f64_v2i32(<2 x double> %va) strictfp {1395; CHECK-LABEL: vfptoui_v2f64_v2i32:1396; CHECK: # %bb.0:1397; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1398; CHECK-NEXT: vfncvt.rtz.xu.f.w v9, v81399; CHECK-NEXT: vmv1r.v v8, v91400; CHECK-NEXT: ret1401 %evec = call <2 x i32> @llvm.experimental.constrained.fptoui.v2i32.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1402 ret <2 x i32> %evec1403}1404 1405define <2 x i64> @vfptosi_v2f64_v2i64(<2 x double> %va) strictfp {1406; CHECK-LABEL: vfptosi_v2f64_v2i64:1407; CHECK: # %bb.0:1408; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma1409; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81410; CHECK-NEXT: ret1411 %evec = call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1412 ret <2 x i64> %evec1413}1414 1415define <2 x i64> @vfptoui_v2f64_v2i64(<2 x double> %va) strictfp {1416; CHECK-LABEL: vfptoui_v2f64_v2i64:1417; CHECK: # %bb.0:1418; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma1419; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81420; CHECK-NEXT: ret1421 %evec = call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double> %va, metadata !"fpexcept.strict")1422 ret <2 x i64> %evec1423}1424 1425define <4 x i1> @vfptosi_v4f64_v4i1(<4 x double> %va) strictfp {1426; CHECK-LABEL: vfptosi_v4f64_v4i1:1427; CHECK: # %bb.0:1428; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1429; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81430; CHECK-NEXT: vand.vi v8, v10, 11431; CHECK-NEXT: vmsne.vi v0, v8, 01432; CHECK-NEXT: ret1433 %evec = call <4 x i1> @llvm.experimental.constrained.fptosi.v4i1.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1434 ret <4 x i1> %evec1435}1436 1437define <4 x i1> @vfptoui_v4f64_v4i1(<4 x double> %va) strictfp {1438; CHECK-LABEL: vfptoui_v4f64_v4i1:1439; CHECK: # %bb.0:1440; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1441; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81442; CHECK-NEXT: vand.vi v8, v10, 11443; CHECK-NEXT: vmsne.vi v0, v8, 01444; CHECK-NEXT: ret1445 %evec = call <4 x i1> @llvm.experimental.constrained.fptoui.v4i1.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1446 ret <4 x i1> %evec1447}1448 1449define <4 x i8> @vfptosi_v4f64_v4i8(<4 x double> %va) strictfp {1450; CHECK-LABEL: vfptosi_v4f64_v4i8:1451; CHECK: # %bb.0:1452; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1453; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81454; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1455; CHECK-NEXT: vnsrl.wi v8, v10, 01456; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma1457; CHECK-NEXT: vnsrl.wi v8, v8, 01458; CHECK-NEXT: ret1459 %evec = call <4 x i8> @llvm.experimental.constrained.fptosi.v4i8.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1460 ret <4 x i8> %evec1461}1462 1463define <4 x i8> @vfptoui_v4f64_v4i8(<4 x double> %va) strictfp {1464; CHECK-LABEL: vfptoui_v4f64_v4i8:1465; CHECK: # %bb.0:1466; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1467; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81468; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1469; CHECK-NEXT: vnsrl.wi v8, v10, 01470; CHECK-NEXT: vsetvli zero, zero, e8, mf4, ta, ma1471; CHECK-NEXT: vnsrl.wi v8, v8, 01472; CHECK-NEXT: ret1473 %evec = call <4 x i8> @llvm.experimental.constrained.fptoui.v4i8.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1474 ret <4 x i8> %evec1475}1476 1477define <4 x i16> @vfptosi_v4f64_v4i16(<4 x double> %va) strictfp {1478; CHECK-LABEL: vfptosi_v4f64_v4i16:1479; CHECK: # %bb.0:1480; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1481; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81482; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1483; CHECK-NEXT: vnsrl.wi v8, v10, 01484; CHECK-NEXT: ret1485 %evec = call <4 x i16> @llvm.experimental.constrained.fptosi.v4i16.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1486 ret <4 x i16> %evec1487}1488 1489define <4 x i16> @vfptoui_v4f64_v4i16(<4 x double> %va) strictfp {1490; CHECK-LABEL: vfptoui_v4f64_v4i16:1491; CHECK: # %bb.0:1492; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1493; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81494; CHECK-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1495; CHECK-NEXT: vnsrl.wi v8, v10, 01496; CHECK-NEXT: ret1497 %evec = call <4 x i16> @llvm.experimental.constrained.fptoui.v4i16.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1498 ret <4 x i16> %evec1499}1500 1501define <4 x i32> @vfptosi_v4f64_v4i32(<4 x double> %va) strictfp {1502; CHECK-LABEL: vfptosi_v4f64_v4i32:1503; CHECK: # %bb.0:1504; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1505; CHECK-NEXT: vfncvt.rtz.x.f.w v10, v81506; CHECK-NEXT: vmv.v.v v8, v101507; CHECK-NEXT: ret1508 %evec = call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1509 ret <4 x i32> %evec1510}1511 1512define <4 x i32> @vfptoui_v4f64_v4i32(<4 x double> %va) strictfp {1513; CHECK-LABEL: vfptoui_v4f64_v4i32:1514; CHECK: # %bb.0:1515; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma1516; CHECK-NEXT: vfncvt.rtz.xu.f.w v10, v81517; CHECK-NEXT: vmv.v.v v8, v101518; CHECK-NEXT: ret1519 %evec = call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1520 ret <4 x i32> %evec1521}1522 1523define <4 x i64> @vfptosi_v4f64_v4i64(<4 x double> %va) strictfp {1524; CHECK-LABEL: vfptosi_v4f64_v4i64:1525; CHECK: # %bb.0:1526; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma1527; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81528; CHECK-NEXT: ret1529 %evec = call <4 x i64> @llvm.experimental.constrained.fptosi.v4i64.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1530 ret <4 x i64> %evec1531}1532 1533define <4 x i64> @vfptoui_v4f64_v4i64(<4 x double> %va) strictfp {1534; CHECK-LABEL: vfptoui_v4f64_v4i64:1535; CHECK: # %bb.0:1536; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma1537; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81538; CHECK-NEXT: ret1539 %evec = call <4 x i64> @llvm.experimental.constrained.fptoui.v4i64.v4f64(<4 x double> %va, metadata !"fpexcept.strict")1540 ret <4 x i64> %evec1541}1542 1543define <8 x i1> @vfptosi_v8f64_v8i1(<8 x double> %va) strictfp {1544; CHECK-LABEL: vfptosi_v8f64_v8i1:1545; CHECK: # %bb.0:1546; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1547; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81548; CHECK-NEXT: vand.vi v8, v12, 11549; CHECK-NEXT: vmsne.vi v0, v8, 01550; CHECK-NEXT: ret1551 %evec = call <8 x i1> @llvm.experimental.constrained.fptosi.v8i1.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1552 ret <8 x i1> %evec1553}1554 1555define <8 x i1> @vfptoui_v8f64_v8i1(<8 x double> %va) strictfp {1556; CHECK-LABEL: vfptoui_v8f64_v8i1:1557; CHECK: # %bb.0:1558; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1559; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81560; CHECK-NEXT: vand.vi v8, v12, 11561; CHECK-NEXT: vmsne.vi v0, v8, 01562; CHECK-NEXT: ret1563 %evec = call <8 x i1> @llvm.experimental.constrained.fptoui.v8i1.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1564 ret <8 x i1> %evec1565}1566 1567define <8 x i8> @vfptosi_v8f64_v8i8(<8 x double> %va) strictfp {1568; CHECK-LABEL: vfptosi_v8f64_v8i8:1569; CHECK: # %bb.0:1570; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1571; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81572; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1573; CHECK-NEXT: vnsrl.wi v8, v12, 01574; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma1575; CHECK-NEXT: vnsrl.wi v8, v8, 01576; CHECK-NEXT: ret1577 %evec = call <8 x i8> @llvm.experimental.constrained.fptosi.v8i8.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1578 ret <8 x i8> %evec1579}1580 1581define <8 x i8> @vfptoui_v8f64_v8i8(<8 x double> %va) strictfp {1582; CHECK-LABEL: vfptoui_v8f64_v8i8:1583; CHECK: # %bb.0:1584; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1585; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81586; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1587; CHECK-NEXT: vnsrl.wi v8, v12, 01588; CHECK-NEXT: vsetvli zero, zero, e8, mf2, ta, ma1589; CHECK-NEXT: vnsrl.wi v8, v8, 01590; CHECK-NEXT: ret1591 %evec = call <8 x i8> @llvm.experimental.constrained.fptoui.v8i8.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1592 ret <8 x i8> %evec1593}1594 1595define <8 x i16> @vfptosi_v8f64_v8i16(<8 x double> %va) strictfp {1596; CHECK-LABEL: vfptosi_v8f64_v8i16:1597; CHECK: # %bb.0:1598; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1599; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81600; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1601; CHECK-NEXT: vnsrl.wi v8, v12, 01602; CHECK-NEXT: ret1603 %evec = call <8 x i16> @llvm.experimental.constrained.fptosi.v8i16.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1604 ret <8 x i16> %evec1605}1606 1607define <8 x i16> @vfptoui_v8f64_v8i16(<8 x double> %va) strictfp {1608; CHECK-LABEL: vfptoui_v8f64_v8i16:1609; CHECK: # %bb.0:1610; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1611; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81612; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma1613; CHECK-NEXT: vnsrl.wi v8, v12, 01614; CHECK-NEXT: ret1615 %evec = call <8 x i16> @llvm.experimental.constrained.fptoui.v8i16.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1616 ret <8 x i16> %evec1617}1618 1619define <8 x i32> @vfptosi_v8f64_v8i32(<8 x double> %va) strictfp {1620; CHECK-LABEL: vfptosi_v8f64_v8i32:1621; CHECK: # %bb.0:1622; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1623; CHECK-NEXT: vfncvt.rtz.x.f.w v12, v81624; CHECK-NEXT: vmv.v.v v8, v121625; CHECK-NEXT: ret1626 %evec = call <8 x i32> @llvm.experimental.constrained.fptosi.v8i32.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1627 ret <8 x i32> %evec1628}1629 1630define <8 x i32> @vfptoui_v8f64_v8i32(<8 x double> %va) strictfp {1631; CHECK-LABEL: vfptoui_v8f64_v8i32:1632; CHECK: # %bb.0:1633; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma1634; CHECK-NEXT: vfncvt.rtz.xu.f.w v12, v81635; CHECK-NEXT: vmv.v.v v8, v121636; CHECK-NEXT: ret1637 %evec = call <8 x i32> @llvm.experimental.constrained.fptoui.v8i32.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1638 ret <8 x i32> %evec1639}1640 1641define <8 x i64> @vfptosi_v8f64_v8i64(<8 x double> %va) strictfp {1642; CHECK-LABEL: vfptosi_v8f64_v8i64:1643; CHECK: # %bb.0:1644; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma1645; CHECK-NEXT: vfcvt.rtz.x.f.v v8, v81646; CHECK-NEXT: ret1647 %evec = call <8 x i64> @llvm.experimental.constrained.fptosi.v8i64.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1648 ret <8 x i64> %evec1649}1650 1651define <8 x i64> @vfptoui_v8f64_v8i64(<8 x double> %va) strictfp {1652; CHECK-LABEL: vfptoui_v8f64_v8i64:1653; CHECK: # %bb.0:1654; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma1655; CHECK-NEXT: vfcvt.rtz.xu.f.v v8, v81656; CHECK-NEXT: ret1657 %evec = call <8 x i64> @llvm.experimental.constrained.fptoui.v8i64.v8f64(<8 x double> %va, metadata !"fpexcept.strict")1658 ret <8 x i64> %evec1659}1660