7215 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -mattr=+f,+d,+v -verify-machineinstrs < %s \3; RUN: -target-abi=lp64d -riscv-v-vector-bits-min=0 | FileCheck --check-prefix=CHECK-NOV %s4; RUN: llc -mtriple=riscv64 -mattr=+f,+d,+v -verify-machineinstrs < %s \5; RUN: -target-abi=lp64d -riscv-v-vector-bits-min=-1 | FileCheck --check-prefix=CHECK-V %s6 7; i32 saturate8 9define <2 x i32> @stest_f64i32(<2 x double> %x) {10; CHECK-NOV-LABEL: stest_f64i32:11; CHECK-NOV: # %bb.0: # %entry12; CHECK-NOV-NEXT: fcvt.l.d a1, fa1, rtz13; CHECK-NOV-NEXT: lui a2, 52428814; CHECK-NOV-NEXT: addiw a3, a2, -115; CHECK-NOV-NEXT: fcvt.l.d a0, fa0, rtz16; CHECK-NOV-NEXT: bge a1, a3, .LBB0_517; CHECK-NOV-NEXT: # %bb.1: # %entry18; CHECK-NOV-NEXT: bge a0, a3, .LBB0_619; CHECK-NOV-NEXT: .LBB0_2: # %entry20; CHECK-NOV-NEXT: bge a2, a0, .LBB0_721; CHECK-NOV-NEXT: .LBB0_3: # %entry22; CHECK-NOV-NEXT: bge a2, a1, .LBB0_823; CHECK-NOV-NEXT: .LBB0_4: # %entry24; CHECK-NOV-NEXT: ret25; CHECK-NOV-NEXT: .LBB0_5: # %entry26; CHECK-NOV-NEXT: mv a1, a327; CHECK-NOV-NEXT: blt a0, a3, .LBB0_228; CHECK-NOV-NEXT: .LBB0_6: # %entry29; CHECK-NOV-NEXT: mv a0, a330; CHECK-NOV-NEXT: blt a2, a3, .LBB0_331; CHECK-NOV-NEXT: .LBB0_7: # %entry32; CHECK-NOV-NEXT: lui a0, 52428833; CHECK-NOV-NEXT: blt a2, a1, .LBB0_434; CHECK-NOV-NEXT: .LBB0_8: # %entry35; CHECK-NOV-NEXT: lui a1, 52428836; CHECK-NOV-NEXT: ret37;38; CHECK-V-LABEL: stest_f64i32:39; CHECK-V: # %bb.0: # %entry40; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma41; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v842; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma43; CHECK-V-NEXT: vnclip.wi v8, v8, 044; CHECK-V-NEXT: ret45entry:46 %conv = fptosi <2 x double> %x to <2 x i64>47 %0 = icmp slt <2 x i64> %conv, <i64 2147483647, i64 2147483647>48 %spec.store.select = select <2 x i1> %0, <2 x i64> %conv, <2 x i64> <i64 2147483647, i64 2147483647>49 %1 = icmp sgt <2 x i64> %spec.store.select, <i64 -2147483648, i64 -2147483648>50 %spec.store.select7 = select <2 x i1> %1, <2 x i64> %spec.store.select, <2 x i64> <i64 -2147483648, i64 -2147483648>51 %conv6 = trunc <2 x i64> %spec.store.select7 to <2 x i32>52 ret <2 x i32> %conv653}54 55define <2 x i32> @utest_f64i32(<2 x double> %x) {56; CHECK-NOV-LABEL: utest_f64i32:57; CHECK-NOV: # %bb.0: # %entry58; CHECK-NOV-NEXT: fcvt.lu.d a0, fa0, rtz59; CHECK-NOV-NEXT: li a2, -160; CHECK-NOV-NEXT: srli a2, a2, 3261; CHECK-NOV-NEXT: fcvt.lu.d a1, fa1, rtz62; CHECK-NOV-NEXT: bgeu a0, a2, .LBB1_363; CHECK-NOV-NEXT: # %bb.1: # %entry64; CHECK-NOV-NEXT: bgeu a1, a2, .LBB1_465; CHECK-NOV-NEXT: .LBB1_2: # %entry66; CHECK-NOV-NEXT: ret67; CHECK-NOV-NEXT: .LBB1_3: # %entry68; CHECK-NOV-NEXT: mv a0, a269; CHECK-NOV-NEXT: bltu a1, a2, .LBB1_270; CHECK-NOV-NEXT: .LBB1_4: # %entry71; CHECK-NOV-NEXT: mv a1, a272; CHECK-NOV-NEXT: ret73;74; CHECK-V-LABEL: utest_f64i32:75; CHECK-V: # %bb.0: # %entry76; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma77; CHECK-V-NEXT: vfcvt.rtz.xu.f.v v8, v878; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma79; CHECK-V-NEXT: vnclipu.wi v8, v8, 080; CHECK-V-NEXT: ret81entry:82 %conv = fptoui <2 x double> %x to <2 x i64>83 %0 = icmp ult <2 x i64> %conv, <i64 4294967295, i64 4294967295>84 %spec.store.select = select <2 x i1> %0, <2 x i64> %conv, <2 x i64> <i64 4294967295, i64 4294967295>85 %conv6 = trunc <2 x i64> %spec.store.select to <2 x i32>86 ret <2 x i32> %conv687}88 89define <2 x i32> @ustest_f64i32(<2 x double> %x) {90; CHECK-NOV-LABEL: ustest_f64i32:91; CHECK-NOV: # %bb.0: # %entry92; CHECK-NOV-NEXT: fcvt.l.d a0, fa0, rtz93; CHECK-NOV-NEXT: li a2, -194; CHECK-NOV-NEXT: srli a2, a2, 3295; CHECK-NOV-NEXT: fcvt.l.d a1, fa1, rtz96; CHECK-NOV-NEXT: blt a0, a2, .LBB2_297; CHECK-NOV-NEXT: # %bb.1: # %entry98; CHECK-NOV-NEXT: mv a0, a299; CHECK-NOV-NEXT: .LBB2_2: # %entry100; CHECK-NOV-NEXT: blt a1, a2, .LBB2_4101; CHECK-NOV-NEXT: # %bb.3: # %entry102; CHECK-NOV-NEXT: mv a1, a2103; CHECK-NOV-NEXT: .LBB2_4: # %entry104; CHECK-NOV-NEXT: sgtz a2, a1105; CHECK-NOV-NEXT: sgtz a3, a0106; CHECK-NOV-NEXT: neg a3, a3107; CHECK-NOV-NEXT: neg a2, a2108; CHECK-NOV-NEXT: and a0, a3, a0109; CHECK-NOV-NEXT: and a1, a2, a1110; CHECK-NOV-NEXT: ret111;112; CHECK-V-LABEL: ustest_f64i32:113; CHECK-V: # %bb.0: # %entry114; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma115; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v8116; CHECK-V-NEXT: vmax.vx v8, v8, zero117; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma118; CHECK-V-NEXT: vnclipu.wi v8, v8, 0119; CHECK-V-NEXT: ret120entry:121 %conv = fptosi <2 x double> %x to <2 x i64>122 %0 = icmp slt <2 x i64> %conv, <i64 4294967295, i64 4294967295>123 %spec.store.select = select <2 x i1> %0, <2 x i64> %conv, <2 x i64> <i64 4294967295, i64 4294967295>124 %1 = icmp sgt <2 x i64> %spec.store.select, zeroinitializer125 %spec.store.select7 = select <2 x i1> %1, <2 x i64> %spec.store.select, <2 x i64> zeroinitializer126 %conv6 = trunc <2 x i64> %spec.store.select7 to <2 x i32>127 ret <2 x i32> %conv6128}129 130define <4 x i32> @stest_f32i32(<4 x float> %x) {131; CHECK-NOV-LABEL: stest_f32i32:132; CHECK-NOV: # %bb.0: # %entry133; CHECK-NOV-NEXT: fcvt.l.s a1, fa3, rtz134; CHECK-NOV-NEXT: lui a3, 524288135; CHECK-NOV-NEXT: addiw a6, a3, -1136; CHECK-NOV-NEXT: fcvt.l.s a2, fa2, rtz137; CHECK-NOV-NEXT: bge a1, a6, .LBB3_10138; CHECK-NOV-NEXT: # %bb.1: # %entry139; CHECK-NOV-NEXT: fcvt.l.s a4, fa1, rtz140; CHECK-NOV-NEXT: bge a2, a6, .LBB3_11141; CHECK-NOV-NEXT: .LBB3_2: # %entry142; CHECK-NOV-NEXT: fcvt.l.s a5, fa0, rtz143; CHECK-NOV-NEXT: bge a4, a6, .LBB3_12144; CHECK-NOV-NEXT: .LBB3_3: # %entry145; CHECK-NOV-NEXT: bge a5, a6, .LBB3_13146; CHECK-NOV-NEXT: .LBB3_4: # %entry147; CHECK-NOV-NEXT: bge a3, a5, .LBB3_14148; CHECK-NOV-NEXT: .LBB3_5: # %entry149; CHECK-NOV-NEXT: bge a3, a4, .LBB3_15150; CHECK-NOV-NEXT: .LBB3_6: # %entry151; CHECK-NOV-NEXT: bge a3, a2, .LBB3_16152; CHECK-NOV-NEXT: .LBB3_7: # %entry153; CHECK-NOV-NEXT: blt a3, a1, .LBB3_9154; CHECK-NOV-NEXT: .LBB3_8: # %entry155; CHECK-NOV-NEXT: lui a1, 524288156; CHECK-NOV-NEXT: .LBB3_9: # %entry157; CHECK-NOV-NEXT: sw a5, 0(a0)158; CHECK-NOV-NEXT: sw a4, 4(a0)159; CHECK-NOV-NEXT: sw a2, 8(a0)160; CHECK-NOV-NEXT: sw a1, 12(a0)161; CHECK-NOV-NEXT: ret162; CHECK-NOV-NEXT: .LBB3_10: # %entry163; CHECK-NOV-NEXT: mv a1, a6164; CHECK-NOV-NEXT: fcvt.l.s a4, fa1, rtz165; CHECK-NOV-NEXT: blt a2, a6, .LBB3_2166; CHECK-NOV-NEXT: .LBB3_11: # %entry167; CHECK-NOV-NEXT: mv a2, a6168; CHECK-NOV-NEXT: fcvt.l.s a5, fa0, rtz169; CHECK-NOV-NEXT: blt a4, a6, .LBB3_3170; CHECK-NOV-NEXT: .LBB3_12: # %entry171; CHECK-NOV-NEXT: mv a4, a6172; CHECK-NOV-NEXT: blt a5, a6, .LBB3_4173; CHECK-NOV-NEXT: .LBB3_13: # %entry174; CHECK-NOV-NEXT: mv a5, a6175; CHECK-NOV-NEXT: blt a3, a6, .LBB3_5176; CHECK-NOV-NEXT: .LBB3_14: # %entry177; CHECK-NOV-NEXT: lui a5, 524288178; CHECK-NOV-NEXT: blt a3, a4, .LBB3_6179; CHECK-NOV-NEXT: .LBB3_15: # %entry180; CHECK-NOV-NEXT: lui a4, 524288181; CHECK-NOV-NEXT: blt a3, a2, .LBB3_7182; CHECK-NOV-NEXT: .LBB3_16: # %entry183; CHECK-NOV-NEXT: lui a2, 524288184; CHECK-NOV-NEXT: bge a3, a1, .LBB3_8185; CHECK-NOV-NEXT: j .LBB3_9186;187; CHECK-V-LABEL: stest_f32i32:188; CHECK-V: # %bb.0: # %entry189; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma190; CHECK-V-NEXT: vfwcvt.rtz.x.f.v v10, v8191; CHECK-V-NEXT: vnclip.wi v8, v10, 0192; CHECK-V-NEXT: ret193entry:194 %conv = fptosi <4 x float> %x to <4 x i64>195 %0 = icmp slt <4 x i64> %conv, <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>196 %spec.store.select = select <4 x i1> %0, <4 x i64> %conv, <4 x i64> <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>197 %1 = icmp sgt <4 x i64> %spec.store.select, <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>198 %spec.store.select7 = select <4 x i1> %1, <4 x i64> %spec.store.select, <4 x i64> <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>199 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>200 ret <4 x i32> %conv6201}202 203define <4 x i32> @utest_f32i32(<4 x float> %x) {204; CHECK-NOV-LABEL: utest_f32i32:205; CHECK-NOV: # %bb.0: # %entry206; CHECK-NOV-NEXT: fcvt.lu.s a1, fa0, rtz207; CHECK-NOV-NEXT: li a3, -1208; CHECK-NOV-NEXT: srli a3, a3, 32209; CHECK-NOV-NEXT: fcvt.lu.s a2, fa1, rtz210; CHECK-NOV-NEXT: bgeu a1, a3, .LBB4_6211; CHECK-NOV-NEXT: # %bb.1: # %entry212; CHECK-NOV-NEXT: fcvt.lu.s a4, fa2, rtz213; CHECK-NOV-NEXT: bgeu a2, a3, .LBB4_7214; CHECK-NOV-NEXT: .LBB4_2: # %entry215; CHECK-NOV-NEXT: fcvt.lu.s a5, fa3, rtz216; CHECK-NOV-NEXT: bgeu a4, a3, .LBB4_8217; CHECK-NOV-NEXT: .LBB4_3: # %entry218; CHECK-NOV-NEXT: bltu a5, a3, .LBB4_5219; CHECK-NOV-NEXT: .LBB4_4: # %entry220; CHECK-NOV-NEXT: mv a5, a3221; CHECK-NOV-NEXT: .LBB4_5: # %entry222; CHECK-NOV-NEXT: sw a1, 0(a0)223; CHECK-NOV-NEXT: sw a2, 4(a0)224; CHECK-NOV-NEXT: sw a4, 8(a0)225; CHECK-NOV-NEXT: sw a5, 12(a0)226; CHECK-NOV-NEXT: ret227; CHECK-NOV-NEXT: .LBB4_6: # %entry228; CHECK-NOV-NEXT: mv a1, a3229; CHECK-NOV-NEXT: fcvt.lu.s a4, fa2, rtz230; CHECK-NOV-NEXT: bltu a2, a3, .LBB4_2231; CHECK-NOV-NEXT: .LBB4_7: # %entry232; CHECK-NOV-NEXT: mv a2, a3233; CHECK-NOV-NEXT: fcvt.lu.s a5, fa3, rtz234; CHECK-NOV-NEXT: bltu a4, a3, .LBB4_3235; CHECK-NOV-NEXT: .LBB4_8: # %entry236; CHECK-NOV-NEXT: mv a4, a3237; CHECK-NOV-NEXT: bgeu a5, a3, .LBB4_4238; CHECK-NOV-NEXT: j .LBB4_5239;240; CHECK-V-LABEL: utest_f32i32:241; CHECK-V: # %bb.0: # %entry242; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma243; CHECK-V-NEXT: vfwcvt.rtz.xu.f.v v10, v8244; CHECK-V-NEXT: vnclipu.wi v8, v10, 0245; CHECK-V-NEXT: ret246entry:247 %conv = fptoui <4 x float> %x to <4 x i64>248 %0 = icmp ult <4 x i64> %conv, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>249 %spec.store.select = select <4 x i1> %0, <4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>250 %conv6 = trunc <4 x i64> %spec.store.select to <4 x i32>251 ret <4 x i32> %conv6252}253 254define <4 x i32> @ustest_f32i32(<4 x float> %x) {255; CHECK-NOV-LABEL: ustest_f32i32:256; CHECK-NOV: # %bb.0: # %entry257; CHECK-NOV-NEXT: fcvt.l.s a1, fa0, rtz258; CHECK-NOV-NEXT: li a5, -1259; CHECK-NOV-NEXT: srli a5, a5, 32260; CHECK-NOV-NEXT: fcvt.l.s a2, fa1, rtz261; CHECK-NOV-NEXT: bge a1, a5, .LBB5_6262; CHECK-NOV-NEXT: # %bb.1: # %entry263; CHECK-NOV-NEXT: fcvt.l.s a3, fa2, rtz264; CHECK-NOV-NEXT: bge a2, a5, .LBB5_7265; CHECK-NOV-NEXT: .LBB5_2: # %entry266; CHECK-NOV-NEXT: fcvt.l.s a4, fa3, rtz267; CHECK-NOV-NEXT: bge a3, a5, .LBB5_8268; CHECK-NOV-NEXT: .LBB5_3: # %entry269; CHECK-NOV-NEXT: blt a4, a5, .LBB5_5270; CHECK-NOV-NEXT: .LBB5_4: # %entry271; CHECK-NOV-NEXT: mv a4, a5272; CHECK-NOV-NEXT: .LBB5_5: # %entry273; CHECK-NOV-NEXT: sgtz a5, a4274; CHECK-NOV-NEXT: sgtz a6, a3275; CHECK-NOV-NEXT: sgtz a7, a2276; CHECK-NOV-NEXT: sgtz t0, a1277; CHECK-NOV-NEXT: neg t0, t0278; CHECK-NOV-NEXT: neg a7, a7279; CHECK-NOV-NEXT: neg a6, a6280; CHECK-NOV-NEXT: neg a5, a5281; CHECK-NOV-NEXT: and a1, t0, a1282; CHECK-NOV-NEXT: and a2, a7, a2283; CHECK-NOV-NEXT: and a3, a6, a3284; CHECK-NOV-NEXT: and a4, a5, a4285; CHECK-NOV-NEXT: sw a1, 0(a0)286; CHECK-NOV-NEXT: sw a2, 4(a0)287; CHECK-NOV-NEXT: sw a3, 8(a0)288; CHECK-NOV-NEXT: sw a4, 12(a0)289; CHECK-NOV-NEXT: ret290; CHECK-NOV-NEXT: .LBB5_6: # %entry291; CHECK-NOV-NEXT: mv a1, a5292; CHECK-NOV-NEXT: fcvt.l.s a3, fa2, rtz293; CHECK-NOV-NEXT: blt a2, a5, .LBB5_2294; CHECK-NOV-NEXT: .LBB5_7: # %entry295; CHECK-NOV-NEXT: mv a2, a5296; CHECK-NOV-NEXT: fcvt.l.s a4, fa3, rtz297; CHECK-NOV-NEXT: blt a3, a5, .LBB5_3298; CHECK-NOV-NEXT: .LBB5_8: # %entry299; CHECK-NOV-NEXT: mv a3, a5300; CHECK-NOV-NEXT: bge a4, a5, .LBB5_4301; CHECK-NOV-NEXT: j .LBB5_5302;303; CHECK-V-LABEL: ustest_f32i32:304; CHECK-V: # %bb.0: # %entry305; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma306; CHECK-V-NEXT: vfwcvt.rtz.x.f.v v10, v8307; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, ma308; CHECK-V-NEXT: vmax.vx v10, v10, zero309; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma310; CHECK-V-NEXT: vnclipu.wi v8, v10, 0311; CHECK-V-NEXT: ret312entry:313 %conv = fptosi <4 x float> %x to <4 x i64>314 %0 = icmp slt <4 x i64> %conv, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>315 %spec.store.select = select <4 x i1> %0, <4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>316 %1 = icmp sgt <4 x i64> %spec.store.select, zeroinitializer317 %spec.store.select7 = select <4 x i1> %1, <4 x i64> %spec.store.select, <4 x i64> zeroinitializer318 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>319 ret <4 x i32> %conv6320}321 322define <4 x i32> @stest_f16i32(<4 x half> %x) {323; CHECK-NOV-LABEL: stest_f16i32:324; CHECK-NOV: # %bb.0: # %entry325; CHECK-NOV-NEXT: addi sp, sp, -64326; CHECK-NOV-NEXT: .cfi_def_cfa_offset 64327; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill328; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill329; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill330; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill331; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill332; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill333; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill334; CHECK-NOV-NEXT: fsd fs2, 0(sp) # 8-byte Folded Spill335; CHECK-NOV-NEXT: .cfi_offset ra, -8336; CHECK-NOV-NEXT: .cfi_offset s0, -16337; CHECK-NOV-NEXT: .cfi_offset s1, -24338; CHECK-NOV-NEXT: .cfi_offset s2, -32339; CHECK-NOV-NEXT: .cfi_offset s3, -40340; CHECK-NOV-NEXT: .cfi_offset fs0, -48341; CHECK-NOV-NEXT: .cfi_offset fs1, -56342; CHECK-NOV-NEXT: .cfi_offset fs2, -64343; CHECK-NOV-NEXT: .cfi_remember_state344; CHECK-NOV-NEXT: lhu s1, 0(a1)345; CHECK-NOV-NEXT: lhu s2, 8(a1)346; CHECK-NOV-NEXT: lhu a2, 16(a1)347; CHECK-NOV-NEXT: lhu s3, 24(a1)348; CHECK-NOV-NEXT: mv s0, a0349; CHECK-NOV-NEXT: fmv.w.x fa0, a2350; CHECK-NOV-NEXT: call __extendhfsf2351; CHECK-NOV-NEXT: fmv.s fs2, fa0352; CHECK-NOV-NEXT: fmv.w.x fa0, s2353; CHECK-NOV-NEXT: call __extendhfsf2354; CHECK-NOV-NEXT: fmv.s fs1, fa0355; CHECK-NOV-NEXT: fmv.w.x fa0, s1356; CHECK-NOV-NEXT: call __extendhfsf2357; CHECK-NOV-NEXT: fmv.s fs0, fa0358; CHECK-NOV-NEXT: fmv.w.x fa0, s3359; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz360; CHECK-NOV-NEXT: call __extendhfsf2361; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz362; CHECK-NOV-NEXT: lui a1, 524288363; CHECK-NOV-NEXT: addiw a4, a1, -1364; CHECK-NOV-NEXT: bge a0, a4, .LBB6_10365; CHECK-NOV-NEXT: # %bb.1: # %entry366; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz367; CHECK-NOV-NEXT: bge s1, a4, .LBB6_11368; CHECK-NOV-NEXT: .LBB6_2: # %entry369; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz370; CHECK-NOV-NEXT: bge a2, a4, .LBB6_12371; CHECK-NOV-NEXT: .LBB6_3: # %entry372; CHECK-NOV-NEXT: bge a3, a4, .LBB6_13373; CHECK-NOV-NEXT: .LBB6_4: # %entry374; CHECK-NOV-NEXT: bge a1, a3, .LBB6_14375; CHECK-NOV-NEXT: .LBB6_5: # %entry376; CHECK-NOV-NEXT: bge a1, a2, .LBB6_15377; CHECK-NOV-NEXT: .LBB6_6: # %entry378; CHECK-NOV-NEXT: bge a1, s1, .LBB6_16379; CHECK-NOV-NEXT: .LBB6_7: # %entry380; CHECK-NOV-NEXT: blt a1, a0, .LBB6_9381; CHECK-NOV-NEXT: .LBB6_8: # %entry382; CHECK-NOV-NEXT: lui a0, 524288383; CHECK-NOV-NEXT: .LBB6_9: # %entry384; CHECK-NOV-NEXT: sw a3, 0(s0)385; CHECK-NOV-NEXT: sw a2, 4(s0)386; CHECK-NOV-NEXT: sw s1, 8(s0)387; CHECK-NOV-NEXT: sw a0, 12(s0)388; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload389; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload390; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload391; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload392; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload393; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload394; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload395; CHECK-NOV-NEXT: fld fs2, 0(sp) # 8-byte Folded Reload396; CHECK-NOV-NEXT: .cfi_restore ra397; CHECK-NOV-NEXT: .cfi_restore s0398; CHECK-NOV-NEXT: .cfi_restore s1399; CHECK-NOV-NEXT: .cfi_restore s2400; CHECK-NOV-NEXT: .cfi_restore s3401; CHECK-NOV-NEXT: .cfi_restore fs0402; CHECK-NOV-NEXT: .cfi_restore fs1403; CHECK-NOV-NEXT: .cfi_restore fs2404; CHECK-NOV-NEXT: addi sp, sp, 64405; CHECK-NOV-NEXT: .cfi_def_cfa_offset 0406; CHECK-NOV-NEXT: ret407; CHECK-NOV-NEXT: .LBB6_10: # %entry408; CHECK-NOV-NEXT: .cfi_restore_state409; CHECK-NOV-NEXT: mv a0, a4410; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz411; CHECK-NOV-NEXT: blt s1, a4, .LBB6_2412; CHECK-NOV-NEXT: .LBB6_11: # %entry413; CHECK-NOV-NEXT: mv s1, a4414; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz415; CHECK-NOV-NEXT: blt a2, a4, .LBB6_3416; CHECK-NOV-NEXT: .LBB6_12: # %entry417; CHECK-NOV-NEXT: mv a2, a4418; CHECK-NOV-NEXT: blt a3, a4, .LBB6_4419; CHECK-NOV-NEXT: .LBB6_13: # %entry420; CHECK-NOV-NEXT: mv a3, a4421; CHECK-NOV-NEXT: blt a1, a4, .LBB6_5422; CHECK-NOV-NEXT: .LBB6_14: # %entry423; CHECK-NOV-NEXT: lui a3, 524288424; CHECK-NOV-NEXT: blt a1, a2, .LBB6_6425; CHECK-NOV-NEXT: .LBB6_15: # %entry426; CHECK-NOV-NEXT: lui a2, 524288427; CHECK-NOV-NEXT: blt a1, s1, .LBB6_7428; CHECK-NOV-NEXT: .LBB6_16: # %entry429; CHECK-NOV-NEXT: lui s1, 524288430; CHECK-NOV-NEXT: bge a1, a0, .LBB6_8431; CHECK-NOV-NEXT: j .LBB6_9432;433; CHECK-V-LABEL: stest_f16i32:434; CHECK-V: # %bb.0: # %entry435; CHECK-V-NEXT: addi sp, sp, -48436; CHECK-V-NEXT: .cfi_def_cfa_offset 48437; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill438; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill439; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill440; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill441; CHECK-V-NEXT: .cfi_offset ra, -8442; CHECK-V-NEXT: .cfi_offset s0, -16443; CHECK-V-NEXT: .cfi_offset s1, -24444; CHECK-V-NEXT: .cfi_offset s2, -32445; CHECK-V-NEXT: csrr a1, vlenb446; CHECK-V-NEXT: slli a2, a1, 1447; CHECK-V-NEXT: add a1, a2, a1448; CHECK-V-NEXT: sub sp, sp, a1449; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x03, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 3 * vlenb450; CHECK-V-NEXT: lhu s0, 0(a0)451; CHECK-V-NEXT: lhu s1, 8(a0)452; CHECK-V-NEXT: lhu s2, 16(a0)453; CHECK-V-NEXT: lhu a0, 24(a0)454; CHECK-V-NEXT: fmv.w.x fa0, a0455; CHECK-V-NEXT: call __extendhfsf2456; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz457; CHECK-V-NEXT: fmv.w.x fa0, s2458; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma459; CHECK-V-NEXT: vmv.s.x v8, a0460; CHECK-V-NEXT: addi a0, sp, 16461; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill462; CHECK-V-NEXT: call __extendhfsf2463; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz464; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma465; CHECK-V-NEXT: vmv.s.x v8, a0466; CHECK-V-NEXT: addi a0, sp, 16467; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload468; CHECK-V-NEXT: vslideup.vi v8, v9, 1469; CHECK-V-NEXT: csrr a0, vlenb470; CHECK-V-NEXT: add a0, sp, a0471; CHECK-V-NEXT: addi a0, a0, 16472; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill473; CHECK-V-NEXT: fmv.w.x fa0, s1474; CHECK-V-NEXT: call __extendhfsf2475; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz476; CHECK-V-NEXT: fmv.w.x fa0, s0477; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma478; CHECK-V-NEXT: vmv.s.x v8, a0479; CHECK-V-NEXT: addi a0, sp, 16480; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill481; CHECK-V-NEXT: call __extendhfsf2482; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz483; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma484; CHECK-V-NEXT: vmv.s.x v10, a0485; CHECK-V-NEXT: addi a0, sp, 16486; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload487; CHECK-V-NEXT: vslideup.vi v10, v8, 1488; CHECK-V-NEXT: csrr a0, vlenb489; CHECK-V-NEXT: add a0, sp, a0490; CHECK-V-NEXT: addi a0, a0, 16491; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload492; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma493; CHECK-V-NEXT: vslideup.vi v10, v8, 2494; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma495; CHECK-V-NEXT: vnclip.wi v8, v10, 0496; CHECK-V-NEXT: csrr a0, vlenb497; CHECK-V-NEXT: slli a1, a0, 1498; CHECK-V-NEXT: add a0, a1, a0499; CHECK-V-NEXT: add sp, sp, a0500; CHECK-V-NEXT: .cfi_def_cfa sp, 48501; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload502; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload503; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload504; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload505; CHECK-V-NEXT: .cfi_restore ra506; CHECK-V-NEXT: .cfi_restore s0507; CHECK-V-NEXT: .cfi_restore s1508; CHECK-V-NEXT: .cfi_restore s2509; CHECK-V-NEXT: addi sp, sp, 48510; CHECK-V-NEXT: .cfi_def_cfa_offset 0511; CHECK-V-NEXT: ret512entry:513 %conv = fptosi <4 x half> %x to <4 x i64>514 %0 = icmp slt <4 x i64> %conv, <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>515 %spec.store.select = select <4 x i1> %0, <4 x i64> %conv, <4 x i64> <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>516 %1 = icmp sgt <4 x i64> %spec.store.select, <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>517 %spec.store.select7 = select <4 x i1> %1, <4 x i64> %spec.store.select, <4 x i64> <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>518 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>519 ret <4 x i32> %conv6520}521 522define <4 x i32> @utest_f16i32(<4 x half> %x) {523; CHECK-NOV-LABEL: utest_f16i32:524; CHECK-NOV: # %bb.0: # %entry525; CHECK-NOV-NEXT: addi sp, sp, -64526; CHECK-NOV-NEXT: .cfi_def_cfa_offset 64527; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill528; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill529; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill530; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill531; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill532; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill533; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill534; CHECK-NOV-NEXT: fsd fs2, 0(sp) # 8-byte Folded Spill535; CHECK-NOV-NEXT: .cfi_offset ra, -8536; CHECK-NOV-NEXT: .cfi_offset s0, -16537; CHECK-NOV-NEXT: .cfi_offset s1, -24538; CHECK-NOV-NEXT: .cfi_offset s2, -32539; CHECK-NOV-NEXT: .cfi_offset s3, -40540; CHECK-NOV-NEXT: .cfi_offset fs0, -48541; CHECK-NOV-NEXT: .cfi_offset fs1, -56542; CHECK-NOV-NEXT: .cfi_offset fs2, -64543; CHECK-NOV-NEXT: .cfi_remember_state544; CHECK-NOV-NEXT: lhu s1, 0(a1)545; CHECK-NOV-NEXT: lhu a2, 8(a1)546; CHECK-NOV-NEXT: lhu s2, 16(a1)547; CHECK-NOV-NEXT: lhu s3, 24(a1)548; CHECK-NOV-NEXT: mv s0, a0549; CHECK-NOV-NEXT: fmv.w.x fa0, a2550; CHECK-NOV-NEXT: call __extendhfsf2551; CHECK-NOV-NEXT: fmv.s fs2, fa0552; CHECK-NOV-NEXT: fmv.w.x fa0, s2553; CHECK-NOV-NEXT: call __extendhfsf2554; CHECK-NOV-NEXT: fmv.s fs1, fa0555; CHECK-NOV-NEXT: fmv.w.x fa0, s3556; CHECK-NOV-NEXT: call __extendhfsf2557; CHECK-NOV-NEXT: fmv.s fs0, fa0558; CHECK-NOV-NEXT: fmv.w.x fa0, s1559; CHECK-NOV-NEXT: fcvt.lu.s s1, fs2, rtz560; CHECK-NOV-NEXT: call __extendhfsf2561; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz562; CHECK-NOV-NEXT: li a1, -1563; CHECK-NOV-NEXT: srli a1, a1, 32564; CHECK-NOV-NEXT: bgeu a0, a1, .LBB7_6565; CHECK-NOV-NEXT: # %bb.1: # %entry566; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz567; CHECK-NOV-NEXT: bgeu s1, a1, .LBB7_7568; CHECK-NOV-NEXT: .LBB7_2: # %entry569; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz570; CHECK-NOV-NEXT: bgeu a2, a1, .LBB7_8571; CHECK-NOV-NEXT: .LBB7_3: # %entry572; CHECK-NOV-NEXT: bltu a3, a1, .LBB7_5573; CHECK-NOV-NEXT: .LBB7_4: # %entry574; CHECK-NOV-NEXT: mv a3, a1575; CHECK-NOV-NEXT: .LBB7_5: # %entry576; CHECK-NOV-NEXT: sw a0, 0(s0)577; CHECK-NOV-NEXT: sw s1, 4(s0)578; CHECK-NOV-NEXT: sw a2, 8(s0)579; CHECK-NOV-NEXT: sw a3, 12(s0)580; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload581; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload582; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload583; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload584; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload585; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload586; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload587; CHECK-NOV-NEXT: fld fs2, 0(sp) # 8-byte Folded Reload588; CHECK-NOV-NEXT: .cfi_restore ra589; CHECK-NOV-NEXT: .cfi_restore s0590; CHECK-NOV-NEXT: .cfi_restore s1591; CHECK-NOV-NEXT: .cfi_restore s2592; CHECK-NOV-NEXT: .cfi_restore s3593; CHECK-NOV-NEXT: .cfi_restore fs0594; CHECK-NOV-NEXT: .cfi_restore fs1595; CHECK-NOV-NEXT: .cfi_restore fs2596; CHECK-NOV-NEXT: addi sp, sp, 64597; CHECK-NOV-NEXT: .cfi_def_cfa_offset 0598; CHECK-NOV-NEXT: ret599; CHECK-NOV-NEXT: .LBB7_6: # %entry600; CHECK-NOV-NEXT: .cfi_restore_state601; CHECK-NOV-NEXT: mv a0, a1602; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz603; CHECK-NOV-NEXT: bltu s1, a1, .LBB7_2604; CHECK-NOV-NEXT: .LBB7_7: # %entry605; CHECK-NOV-NEXT: mv s1, a1606; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz607; CHECK-NOV-NEXT: bltu a2, a1, .LBB7_3608; CHECK-NOV-NEXT: .LBB7_8: # %entry609; CHECK-NOV-NEXT: mv a2, a1610; CHECK-NOV-NEXT: bgeu a3, a1, .LBB7_4611; CHECK-NOV-NEXT: j .LBB7_5612;613; CHECK-V-LABEL: utest_f16i32:614; CHECK-V: # %bb.0: # %entry615; CHECK-V-NEXT: addi sp, sp, -48616; CHECK-V-NEXT: .cfi_def_cfa_offset 48617; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill618; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill619; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill620; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill621; CHECK-V-NEXT: .cfi_offset ra, -8622; CHECK-V-NEXT: .cfi_offset s0, -16623; CHECK-V-NEXT: .cfi_offset s1, -24624; CHECK-V-NEXT: .cfi_offset s2, -32625; CHECK-V-NEXT: csrr a1, vlenb626; CHECK-V-NEXT: slli a2, a1, 1627; CHECK-V-NEXT: add a1, a2, a1628; CHECK-V-NEXT: sub sp, sp, a1629; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x03, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 3 * vlenb630; CHECK-V-NEXT: lhu s0, 0(a0)631; CHECK-V-NEXT: lhu s1, 8(a0)632; CHECK-V-NEXT: lhu s2, 16(a0)633; CHECK-V-NEXT: lhu a0, 24(a0)634; CHECK-V-NEXT: fmv.w.x fa0, a0635; CHECK-V-NEXT: call __extendhfsf2636; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz637; CHECK-V-NEXT: fmv.w.x fa0, s2638; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma639; CHECK-V-NEXT: vmv.s.x v8, a0640; CHECK-V-NEXT: addi a0, sp, 16641; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill642; CHECK-V-NEXT: call __extendhfsf2643; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz644; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma645; CHECK-V-NEXT: vmv.s.x v8, a0646; CHECK-V-NEXT: addi a0, sp, 16647; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload648; CHECK-V-NEXT: vslideup.vi v8, v9, 1649; CHECK-V-NEXT: csrr a0, vlenb650; CHECK-V-NEXT: add a0, sp, a0651; CHECK-V-NEXT: addi a0, a0, 16652; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill653; CHECK-V-NEXT: fmv.w.x fa0, s1654; CHECK-V-NEXT: call __extendhfsf2655; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz656; CHECK-V-NEXT: fmv.w.x fa0, s0657; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma658; CHECK-V-NEXT: vmv.s.x v8, a0659; CHECK-V-NEXT: addi a0, sp, 16660; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill661; CHECK-V-NEXT: call __extendhfsf2662; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz663; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma664; CHECK-V-NEXT: vmv.s.x v10, a0665; CHECK-V-NEXT: addi a0, sp, 16666; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload667; CHECK-V-NEXT: vslideup.vi v10, v8, 1668; CHECK-V-NEXT: csrr a0, vlenb669; CHECK-V-NEXT: add a0, sp, a0670; CHECK-V-NEXT: addi a0, a0, 16671; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload672; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma673; CHECK-V-NEXT: vslideup.vi v10, v8, 2674; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma675; CHECK-V-NEXT: vnclipu.wi v8, v10, 0676; CHECK-V-NEXT: csrr a0, vlenb677; CHECK-V-NEXT: slli a1, a0, 1678; CHECK-V-NEXT: add a0, a1, a0679; CHECK-V-NEXT: add sp, sp, a0680; CHECK-V-NEXT: .cfi_def_cfa sp, 48681; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload682; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload683; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload684; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload685; CHECK-V-NEXT: .cfi_restore ra686; CHECK-V-NEXT: .cfi_restore s0687; CHECK-V-NEXT: .cfi_restore s1688; CHECK-V-NEXT: .cfi_restore s2689; CHECK-V-NEXT: addi sp, sp, 48690; CHECK-V-NEXT: .cfi_def_cfa_offset 0691; CHECK-V-NEXT: ret692entry:693 %conv = fptoui <4 x half> %x to <4 x i64>694 %0 = icmp ult <4 x i64> %conv, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>695 %spec.store.select = select <4 x i1> %0, <4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>696 %conv6 = trunc <4 x i64> %spec.store.select to <4 x i32>697 ret <4 x i32> %conv6698}699 700define <4 x i32> @ustest_f16i32(<4 x half> %x) {701; CHECK-NOV-LABEL: ustest_f16i32:702; CHECK-NOV: # %bb.0: # %entry703; CHECK-NOV-NEXT: addi sp, sp, -64704; CHECK-NOV-NEXT: .cfi_def_cfa_offset 64705; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill706; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill707; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill708; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill709; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill710; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill711; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill712; CHECK-NOV-NEXT: fsd fs2, 0(sp) # 8-byte Folded Spill713; CHECK-NOV-NEXT: .cfi_offset ra, -8714; CHECK-NOV-NEXT: .cfi_offset s0, -16715; CHECK-NOV-NEXT: .cfi_offset s1, -24716; CHECK-NOV-NEXT: .cfi_offset s2, -32717; CHECK-NOV-NEXT: .cfi_offset s3, -40718; CHECK-NOV-NEXT: .cfi_offset fs0, -48719; CHECK-NOV-NEXT: .cfi_offset fs1, -56720; CHECK-NOV-NEXT: .cfi_offset fs2, -64721; CHECK-NOV-NEXT: .cfi_remember_state722; CHECK-NOV-NEXT: lhu s1, 0(a1)723; CHECK-NOV-NEXT: lhu a2, 8(a1)724; CHECK-NOV-NEXT: lhu s2, 16(a1)725; CHECK-NOV-NEXT: lhu s3, 24(a1)726; CHECK-NOV-NEXT: mv s0, a0727; CHECK-NOV-NEXT: fmv.w.x fa0, a2728; CHECK-NOV-NEXT: call __extendhfsf2729; CHECK-NOV-NEXT: fmv.s fs2, fa0730; CHECK-NOV-NEXT: fmv.w.x fa0, s2731; CHECK-NOV-NEXT: call __extendhfsf2732; CHECK-NOV-NEXT: fmv.s fs1, fa0733; CHECK-NOV-NEXT: fmv.w.x fa0, s3734; CHECK-NOV-NEXT: call __extendhfsf2735; CHECK-NOV-NEXT: fmv.s fs0, fa0736; CHECK-NOV-NEXT: fmv.w.x fa0, s1737; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz738; CHECK-NOV-NEXT: call __extendhfsf2739; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz740; CHECK-NOV-NEXT: li a3, -1741; CHECK-NOV-NEXT: srli a3, a3, 32742; CHECK-NOV-NEXT: bge a0, a3, .LBB8_6743; CHECK-NOV-NEXT: # %bb.1: # %entry744; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz745; CHECK-NOV-NEXT: bge s1, a3, .LBB8_7746; CHECK-NOV-NEXT: .LBB8_2: # %entry747; CHECK-NOV-NEXT: fcvt.l.s a2, fs0, rtz748; CHECK-NOV-NEXT: bge a1, a3, .LBB8_8749; CHECK-NOV-NEXT: .LBB8_3: # %entry750; CHECK-NOV-NEXT: blt a2, a3, .LBB8_5751; CHECK-NOV-NEXT: .LBB8_4: # %entry752; CHECK-NOV-NEXT: mv a2, a3753; CHECK-NOV-NEXT: .LBB8_5: # %entry754; CHECK-NOV-NEXT: sgtz a3, a2755; CHECK-NOV-NEXT: sgtz a4, a1756; CHECK-NOV-NEXT: sgtz a5, s1757; CHECK-NOV-NEXT: sgtz a6, a0758; CHECK-NOV-NEXT: neg a6, a6759; CHECK-NOV-NEXT: neg a5, a5760; CHECK-NOV-NEXT: neg a4, a4761; CHECK-NOV-NEXT: neg a3, a3762; CHECK-NOV-NEXT: and a0, a6, a0763; CHECK-NOV-NEXT: and a5, a5, s1764; CHECK-NOV-NEXT: and a1, a4, a1765; CHECK-NOV-NEXT: and a2, a3, a2766; CHECK-NOV-NEXT: sw a0, 0(s0)767; CHECK-NOV-NEXT: sw a5, 4(s0)768; CHECK-NOV-NEXT: sw a1, 8(s0)769; CHECK-NOV-NEXT: sw a2, 12(s0)770; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload771; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload772; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload773; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload774; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload775; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload776; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload777; CHECK-NOV-NEXT: fld fs2, 0(sp) # 8-byte Folded Reload778; CHECK-NOV-NEXT: .cfi_restore ra779; CHECK-NOV-NEXT: .cfi_restore s0780; CHECK-NOV-NEXT: .cfi_restore s1781; CHECK-NOV-NEXT: .cfi_restore s2782; CHECK-NOV-NEXT: .cfi_restore s3783; CHECK-NOV-NEXT: .cfi_restore fs0784; CHECK-NOV-NEXT: .cfi_restore fs1785; CHECK-NOV-NEXT: .cfi_restore fs2786; CHECK-NOV-NEXT: addi sp, sp, 64787; CHECK-NOV-NEXT: .cfi_def_cfa_offset 0788; CHECK-NOV-NEXT: ret789; CHECK-NOV-NEXT: .LBB8_6: # %entry790; CHECK-NOV-NEXT: .cfi_restore_state791; CHECK-NOV-NEXT: mv a0, a3792; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz793; CHECK-NOV-NEXT: blt s1, a3, .LBB8_2794; CHECK-NOV-NEXT: .LBB8_7: # %entry795; CHECK-NOV-NEXT: mv s1, a3796; CHECK-NOV-NEXT: fcvt.l.s a2, fs0, rtz797; CHECK-NOV-NEXT: blt a1, a3, .LBB8_3798; CHECK-NOV-NEXT: .LBB8_8: # %entry799; CHECK-NOV-NEXT: mv a1, a3800; CHECK-NOV-NEXT: bge a2, a3, .LBB8_4801; CHECK-NOV-NEXT: j .LBB8_5802;803; CHECK-V-LABEL: ustest_f16i32:804; CHECK-V: # %bb.0: # %entry805; CHECK-V-NEXT: addi sp, sp, -48806; CHECK-V-NEXT: .cfi_def_cfa_offset 48807; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill808; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill809; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill810; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill811; CHECK-V-NEXT: .cfi_offset ra, -8812; CHECK-V-NEXT: .cfi_offset s0, -16813; CHECK-V-NEXT: .cfi_offset s1, -24814; CHECK-V-NEXT: .cfi_offset s2, -32815; CHECK-V-NEXT: csrr a1, vlenb816; CHECK-V-NEXT: slli a2, a1, 1817; CHECK-V-NEXT: add a1, a2, a1818; CHECK-V-NEXT: sub sp, sp, a1819; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x03, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 3 * vlenb820; CHECK-V-NEXT: lhu s0, 0(a0)821; CHECK-V-NEXT: lhu s1, 8(a0)822; CHECK-V-NEXT: lhu s2, 16(a0)823; CHECK-V-NEXT: lhu a0, 24(a0)824; CHECK-V-NEXT: fmv.w.x fa0, a0825; CHECK-V-NEXT: call __extendhfsf2826; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz827; CHECK-V-NEXT: fmv.w.x fa0, s2828; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma829; CHECK-V-NEXT: vmv.s.x v8, a0830; CHECK-V-NEXT: addi a0, sp, 16831; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill832; CHECK-V-NEXT: call __extendhfsf2833; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz834; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma835; CHECK-V-NEXT: vmv.s.x v8, a0836; CHECK-V-NEXT: addi a0, sp, 16837; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload838; CHECK-V-NEXT: vslideup.vi v8, v9, 1839; CHECK-V-NEXT: csrr a0, vlenb840; CHECK-V-NEXT: add a0, sp, a0841; CHECK-V-NEXT: addi a0, a0, 16842; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill843; CHECK-V-NEXT: fmv.w.x fa0, s1844; CHECK-V-NEXT: call __extendhfsf2845; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz846; CHECK-V-NEXT: fmv.w.x fa0, s0847; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma848; CHECK-V-NEXT: vmv.s.x v8, a0849; CHECK-V-NEXT: addi a0, sp, 16850; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill851; CHECK-V-NEXT: call __extendhfsf2852; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz853; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma854; CHECK-V-NEXT: vmv.s.x v8, a0855; CHECK-V-NEXT: addi a0, sp, 16856; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload857; CHECK-V-NEXT: vslideup.vi v8, v9, 1858; CHECK-V-NEXT: csrr a0, vlenb859; CHECK-V-NEXT: add a0, sp, a0860; CHECK-V-NEXT: addi a0, a0, 16861; CHECK-V-NEXT: vl2r.v v10, (a0) # vscale x 16-byte Folded Reload862; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma863; CHECK-V-NEXT: vslideup.vi v8, v10, 2864; CHECK-V-NEXT: vmax.vx v10, v8, zero865; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma866; CHECK-V-NEXT: vnclipu.wi v8, v10, 0867; CHECK-V-NEXT: csrr a0, vlenb868; CHECK-V-NEXT: slli a1, a0, 1869; CHECK-V-NEXT: add a0, a1, a0870; CHECK-V-NEXT: add sp, sp, a0871; CHECK-V-NEXT: .cfi_def_cfa sp, 48872; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload873; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload874; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload875; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload876; CHECK-V-NEXT: .cfi_restore ra877; CHECK-V-NEXT: .cfi_restore s0878; CHECK-V-NEXT: .cfi_restore s1879; CHECK-V-NEXT: .cfi_restore s2880; CHECK-V-NEXT: addi sp, sp, 48881; CHECK-V-NEXT: .cfi_def_cfa_offset 0882; CHECK-V-NEXT: ret883entry:884 %conv = fptosi <4 x half> %x to <4 x i64>885 %0 = icmp slt <4 x i64> %conv, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>886 %spec.store.select = select <4 x i1> %0, <4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>887 %1 = icmp sgt <4 x i64> %spec.store.select, zeroinitializer888 %spec.store.select7 = select <4 x i1> %1, <4 x i64> %spec.store.select, <4 x i64> zeroinitializer889 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>890 ret <4 x i32> %conv6891}892 893; i16 saturate894 895define <2 x i16> @stest_f64i16(<2 x double> %x) {896; CHECK-NOV-LABEL: stest_f64i16:897; CHECK-NOV: # %bb.0: # %entry898; CHECK-NOV-NEXT: fcvt.w.d a1, fa1, rtz899; CHECK-NOV-NEXT: lui a2, 8900; CHECK-NOV-NEXT: addi a2, a2, -1901; CHECK-NOV-NEXT: fcvt.w.d a0, fa0, rtz902; CHECK-NOV-NEXT: bge a1, a2, .LBB9_5903; CHECK-NOV-NEXT: # %bb.1: # %entry904; CHECK-NOV-NEXT: bge a0, a2, .LBB9_6905; CHECK-NOV-NEXT: .LBB9_2: # %entry906; CHECK-NOV-NEXT: lui a2, 1048568907; CHECK-NOV-NEXT: bge a2, a0, .LBB9_7908; CHECK-NOV-NEXT: .LBB9_3: # %entry909; CHECK-NOV-NEXT: bge a2, a1, .LBB9_8910; CHECK-NOV-NEXT: .LBB9_4: # %entry911; CHECK-NOV-NEXT: ret912; CHECK-NOV-NEXT: .LBB9_5: # %entry913; CHECK-NOV-NEXT: mv a1, a2914; CHECK-NOV-NEXT: blt a0, a2, .LBB9_2915; CHECK-NOV-NEXT: .LBB9_6: # %entry916; CHECK-NOV-NEXT: mv a0, a2917; CHECK-NOV-NEXT: lui a2, 1048568918; CHECK-NOV-NEXT: blt a2, a0, .LBB9_3919; CHECK-NOV-NEXT: .LBB9_7: # %entry920; CHECK-NOV-NEXT: lui a0, 1048568921; CHECK-NOV-NEXT: blt a2, a1, .LBB9_4922; CHECK-NOV-NEXT: .LBB9_8: # %entry923; CHECK-NOV-NEXT: lui a1, 1048568924; CHECK-NOV-NEXT: ret925;926; CHECK-V-LABEL: stest_f64i16:927; CHECK-V: # %bb.0: # %entry928; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma929; CHECK-V-NEXT: vfncvt.rtz.x.f.w v9, v8930; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma931; CHECK-V-NEXT: vnclip.wi v8, v9, 0932; CHECK-V-NEXT: ret933entry:934 %conv = fptosi <2 x double> %x to <2 x i32>935 %0 = icmp slt <2 x i32> %conv, <i32 32767, i32 32767>936 %spec.store.select = select <2 x i1> %0, <2 x i32> %conv, <2 x i32> <i32 32767, i32 32767>937 %1 = icmp sgt <2 x i32> %spec.store.select, <i32 -32768, i32 -32768>938 %spec.store.select7 = select <2 x i1> %1, <2 x i32> %spec.store.select, <2 x i32> <i32 -32768, i32 -32768>939 %conv6 = trunc <2 x i32> %spec.store.select7 to <2 x i16>940 ret <2 x i16> %conv6941}942 943define <2 x i16> @utest_f64i16(<2 x double> %x) {944; CHECK-NOV-LABEL: utest_f64i16:945; CHECK-NOV: # %bb.0: # %entry946; CHECK-NOV-NEXT: fcvt.wu.d a0, fa0, rtz947; CHECK-NOV-NEXT: lui a2, 16948; CHECK-NOV-NEXT: addi a2, a2, -1949; CHECK-NOV-NEXT: fcvt.wu.d a1, fa1, rtz950; CHECK-NOV-NEXT: bgeu a0, a2, .LBB10_3951; CHECK-NOV-NEXT: # %bb.1: # %entry952; CHECK-NOV-NEXT: bgeu a1, a2, .LBB10_4953; CHECK-NOV-NEXT: .LBB10_2: # %entry954; CHECK-NOV-NEXT: ret955; CHECK-NOV-NEXT: .LBB10_3: # %entry956; CHECK-NOV-NEXT: mv a0, a2957; CHECK-NOV-NEXT: bltu a1, a2, .LBB10_2958; CHECK-NOV-NEXT: .LBB10_4: # %entry959; CHECK-NOV-NEXT: mv a1, a2960; CHECK-NOV-NEXT: ret961;962; CHECK-V-LABEL: utest_f64i16:963; CHECK-V: # %bb.0: # %entry964; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma965; CHECK-V-NEXT: vfncvt.rtz.xu.f.w v9, v8966; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma967; CHECK-V-NEXT: vnclipu.wi v8, v9, 0968; CHECK-V-NEXT: ret969entry:970 %conv = fptoui <2 x double> %x to <2 x i32>971 %0 = icmp ult <2 x i32> %conv, <i32 65535, i32 65535>972 %spec.store.select = select <2 x i1> %0, <2 x i32> %conv, <2 x i32> <i32 65535, i32 65535>973 %conv6 = trunc <2 x i32> %spec.store.select to <2 x i16>974 ret <2 x i16> %conv6975}976 977define <2 x i16> @ustest_f64i16(<2 x double> %x) {978; CHECK-NOV-LABEL: ustest_f64i16:979; CHECK-NOV: # %bb.0: # %entry980; CHECK-NOV-NEXT: fcvt.w.d a0, fa0, rtz981; CHECK-NOV-NEXT: lui a2, 16982; CHECK-NOV-NEXT: addi a2, a2, -1983; CHECK-NOV-NEXT: fcvt.w.d a1, fa1, rtz984; CHECK-NOV-NEXT: blt a0, a2, .LBB11_2985; CHECK-NOV-NEXT: # %bb.1: # %entry986; CHECK-NOV-NEXT: mv a0, a2987; CHECK-NOV-NEXT: .LBB11_2: # %entry988; CHECK-NOV-NEXT: blt a1, a2, .LBB11_4989; CHECK-NOV-NEXT: # %bb.3: # %entry990; CHECK-NOV-NEXT: mv a1, a2991; CHECK-NOV-NEXT: .LBB11_4: # %entry992; CHECK-NOV-NEXT: sgtz a2, a1993; CHECK-NOV-NEXT: sgtz a3, a0994; CHECK-NOV-NEXT: neg a3, a3995; CHECK-NOV-NEXT: neg a2, a2996; CHECK-NOV-NEXT: and a0, a3, a0997; CHECK-NOV-NEXT: and a1, a2, a1998; CHECK-NOV-NEXT: ret999;1000; CHECK-V-LABEL: ustest_f64i16:1001; CHECK-V: # %bb.0: # %entry1002; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1003; CHECK-V-NEXT: vfncvt.rtz.x.f.w v9, v81004; CHECK-V-NEXT: vmax.vx v8, v9, zero1005; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma1006; CHECK-V-NEXT: vnclipu.wi v8, v8, 01007; CHECK-V-NEXT: ret1008entry:1009 %conv = fptosi <2 x double> %x to <2 x i32>1010 %0 = icmp slt <2 x i32> %conv, <i32 65535, i32 65535>1011 %spec.store.select = select <2 x i1> %0, <2 x i32> %conv, <2 x i32> <i32 65535, i32 65535>1012 %1 = icmp sgt <2 x i32> %spec.store.select, zeroinitializer1013 %spec.store.select7 = select <2 x i1> %1, <2 x i32> %spec.store.select, <2 x i32> zeroinitializer1014 %conv6 = trunc <2 x i32> %spec.store.select7 to <2 x i16>1015 ret <2 x i16> %conv61016}1017 1018define <4 x i16> @stest_f32i16(<4 x float> %x) {1019; CHECK-NOV-LABEL: stest_f32i16:1020; CHECK-NOV: # %bb.0: # %entry1021; CHECK-NOV-NEXT: fcvt.w.s a1, fa3, rtz1022; CHECK-NOV-NEXT: lui a5, 81023; CHECK-NOV-NEXT: addi a5, a5, -11024; CHECK-NOV-NEXT: fcvt.w.s a2, fa2, rtz1025; CHECK-NOV-NEXT: bge a1, a5, .LBB12_101026; CHECK-NOV-NEXT: # %bb.1: # %entry1027; CHECK-NOV-NEXT: fcvt.w.s a3, fa1, rtz1028; CHECK-NOV-NEXT: bge a2, a5, .LBB12_111029; CHECK-NOV-NEXT: .LBB12_2: # %entry1030; CHECK-NOV-NEXT: fcvt.w.s a4, fa0, rtz1031; CHECK-NOV-NEXT: bge a3, a5, .LBB12_121032; CHECK-NOV-NEXT: .LBB12_3: # %entry1033; CHECK-NOV-NEXT: bge a4, a5, .LBB12_131034; CHECK-NOV-NEXT: .LBB12_4: # %entry1035; CHECK-NOV-NEXT: lui a5, 10485681036; CHECK-NOV-NEXT: bge a5, a4, .LBB12_141037; CHECK-NOV-NEXT: .LBB12_5: # %entry1038; CHECK-NOV-NEXT: bge a5, a3, .LBB12_151039; CHECK-NOV-NEXT: .LBB12_6: # %entry1040; CHECK-NOV-NEXT: bge a5, a2, .LBB12_161041; CHECK-NOV-NEXT: .LBB12_7: # %entry1042; CHECK-NOV-NEXT: blt a5, a1, .LBB12_91043; CHECK-NOV-NEXT: .LBB12_8: # %entry1044; CHECK-NOV-NEXT: lui a1, 10485681045; CHECK-NOV-NEXT: .LBB12_9: # %entry1046; CHECK-NOV-NEXT: sh a4, 0(a0)1047; CHECK-NOV-NEXT: sh a3, 2(a0)1048; CHECK-NOV-NEXT: sh a2, 4(a0)1049; CHECK-NOV-NEXT: sh a1, 6(a0)1050; CHECK-NOV-NEXT: ret1051; CHECK-NOV-NEXT: .LBB12_10: # %entry1052; CHECK-NOV-NEXT: mv a1, a51053; CHECK-NOV-NEXT: fcvt.w.s a3, fa1, rtz1054; CHECK-NOV-NEXT: blt a2, a5, .LBB12_21055; CHECK-NOV-NEXT: .LBB12_11: # %entry1056; CHECK-NOV-NEXT: mv a2, a51057; CHECK-NOV-NEXT: fcvt.w.s a4, fa0, rtz1058; CHECK-NOV-NEXT: blt a3, a5, .LBB12_31059; CHECK-NOV-NEXT: .LBB12_12: # %entry1060; CHECK-NOV-NEXT: mv a3, a51061; CHECK-NOV-NEXT: blt a4, a5, .LBB12_41062; CHECK-NOV-NEXT: .LBB12_13: # %entry1063; CHECK-NOV-NEXT: mv a4, a51064; CHECK-NOV-NEXT: lui a5, 10485681065; CHECK-NOV-NEXT: blt a5, a4, .LBB12_51066; CHECK-NOV-NEXT: .LBB12_14: # %entry1067; CHECK-NOV-NEXT: lui a4, 10485681068; CHECK-NOV-NEXT: blt a5, a3, .LBB12_61069; CHECK-NOV-NEXT: .LBB12_15: # %entry1070; CHECK-NOV-NEXT: lui a3, 10485681071; CHECK-NOV-NEXT: blt a5, a2, .LBB12_71072; CHECK-NOV-NEXT: .LBB12_16: # %entry1073; CHECK-NOV-NEXT: lui a2, 10485681074; CHECK-NOV-NEXT: bge a5, a1, .LBB12_81075; CHECK-NOV-NEXT: j .LBB12_91076;1077; CHECK-V-LABEL: stest_f32i16:1078; CHECK-V: # %bb.0: # %entry1079; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1080; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v81081; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1082; CHECK-V-NEXT: vnclip.wi v8, v8, 01083; CHECK-V-NEXT: ret1084entry:1085 %conv = fptosi <4 x float> %x to <4 x i32>1086 %0 = icmp slt <4 x i32> %conv, <i32 32767, i32 32767, i32 32767, i32 32767>1087 %spec.store.select = select <4 x i1> %0, <4 x i32> %conv, <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>1088 %1 = icmp sgt <4 x i32> %spec.store.select, <i32 -32768, i32 -32768, i32 -32768, i32 -32768>1089 %spec.store.select7 = select <4 x i1> %1, <4 x i32> %spec.store.select, <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>1090 %conv6 = trunc <4 x i32> %spec.store.select7 to <4 x i16>1091 ret <4 x i16> %conv61092}1093 1094define <4 x i16> @utest_f32i16(<4 x float> %x) {1095; CHECK-NOV-LABEL: utest_f32i16:1096; CHECK-NOV: # %bb.0: # %entry1097; CHECK-NOV-NEXT: fcvt.wu.s a1, fa0, rtz1098; CHECK-NOV-NEXT: lui a3, 161099; CHECK-NOV-NEXT: addi a3, a3, -11100; CHECK-NOV-NEXT: fcvt.wu.s a2, fa1, rtz1101; CHECK-NOV-NEXT: bgeu a1, a3, .LBB13_61102; CHECK-NOV-NEXT: # %bb.1: # %entry1103; CHECK-NOV-NEXT: fcvt.wu.s a4, fa2, rtz1104; CHECK-NOV-NEXT: bgeu a2, a3, .LBB13_71105; CHECK-NOV-NEXT: .LBB13_2: # %entry1106; CHECK-NOV-NEXT: fcvt.wu.s a5, fa3, rtz1107; CHECK-NOV-NEXT: bgeu a4, a3, .LBB13_81108; CHECK-NOV-NEXT: .LBB13_3: # %entry1109; CHECK-NOV-NEXT: bltu a5, a3, .LBB13_51110; CHECK-NOV-NEXT: .LBB13_4: # %entry1111; CHECK-NOV-NEXT: mv a5, a31112; CHECK-NOV-NEXT: .LBB13_5: # %entry1113; CHECK-NOV-NEXT: sh a1, 0(a0)1114; CHECK-NOV-NEXT: sh a2, 2(a0)1115; CHECK-NOV-NEXT: sh a4, 4(a0)1116; CHECK-NOV-NEXT: sh a5, 6(a0)1117; CHECK-NOV-NEXT: ret1118; CHECK-NOV-NEXT: .LBB13_6: # %entry1119; CHECK-NOV-NEXT: mv a1, a31120; CHECK-NOV-NEXT: fcvt.wu.s a4, fa2, rtz1121; CHECK-NOV-NEXT: bltu a2, a3, .LBB13_21122; CHECK-NOV-NEXT: .LBB13_7: # %entry1123; CHECK-NOV-NEXT: mv a2, a31124; CHECK-NOV-NEXT: fcvt.wu.s a5, fa3, rtz1125; CHECK-NOV-NEXT: bltu a4, a3, .LBB13_31126; CHECK-NOV-NEXT: .LBB13_8: # %entry1127; CHECK-NOV-NEXT: mv a4, a31128; CHECK-NOV-NEXT: bgeu a5, a3, .LBB13_41129; CHECK-NOV-NEXT: j .LBB13_51130;1131; CHECK-V-LABEL: utest_f32i16:1132; CHECK-V: # %bb.0: # %entry1133; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1134; CHECK-V-NEXT: vfcvt.rtz.xu.f.v v8, v81135; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1136; CHECK-V-NEXT: vnclipu.wi v8, v8, 01137; CHECK-V-NEXT: ret1138entry:1139 %conv = fptoui <4 x float> %x to <4 x i32>1140 %0 = icmp ult <4 x i32> %conv, <i32 65535, i32 65535, i32 65535, i32 65535>1141 %spec.store.select = select <4 x i1> %0, <4 x i32> %conv, <4 x i32> <i32 65535, i32 65535, i32 65535, i32 65535>1142 %conv6 = trunc <4 x i32> %spec.store.select to <4 x i16>1143 ret <4 x i16> %conv61144}1145 1146define <4 x i16> @ustest_f32i16(<4 x float> %x) {1147; CHECK-NOV-LABEL: ustest_f32i16:1148; CHECK-NOV: # %bb.0: # %entry1149; CHECK-NOV-NEXT: fcvt.w.s a1, fa0, rtz1150; CHECK-NOV-NEXT: lui a5, 161151; CHECK-NOV-NEXT: addi a5, a5, -11152; CHECK-NOV-NEXT: fcvt.w.s a2, fa1, rtz1153; CHECK-NOV-NEXT: bge a1, a5, .LBB14_61154; CHECK-NOV-NEXT: # %bb.1: # %entry1155; CHECK-NOV-NEXT: fcvt.w.s a3, fa2, rtz1156; CHECK-NOV-NEXT: bge a2, a5, .LBB14_71157; CHECK-NOV-NEXT: .LBB14_2: # %entry1158; CHECK-NOV-NEXT: fcvt.w.s a4, fa3, rtz1159; CHECK-NOV-NEXT: bge a3, a5, .LBB14_81160; CHECK-NOV-NEXT: .LBB14_3: # %entry1161; CHECK-NOV-NEXT: blt a4, a5, .LBB14_51162; CHECK-NOV-NEXT: .LBB14_4: # %entry1163; CHECK-NOV-NEXT: mv a4, a51164; CHECK-NOV-NEXT: .LBB14_5: # %entry1165; CHECK-NOV-NEXT: sgtz a5, a41166; CHECK-NOV-NEXT: sgtz a6, a31167; CHECK-NOV-NEXT: sgtz a7, a21168; CHECK-NOV-NEXT: sgtz t0, a11169; CHECK-NOV-NEXT: neg t0, t01170; CHECK-NOV-NEXT: neg a7, a71171; CHECK-NOV-NEXT: neg a6, a61172; CHECK-NOV-NEXT: neg a5, a51173; CHECK-NOV-NEXT: and a1, t0, a11174; CHECK-NOV-NEXT: and a2, a7, a21175; CHECK-NOV-NEXT: and a3, a6, a31176; CHECK-NOV-NEXT: and a4, a5, a41177; CHECK-NOV-NEXT: sh a1, 0(a0)1178; CHECK-NOV-NEXT: sh a2, 2(a0)1179; CHECK-NOV-NEXT: sh a3, 4(a0)1180; CHECK-NOV-NEXT: sh a4, 6(a0)1181; CHECK-NOV-NEXT: ret1182; CHECK-NOV-NEXT: .LBB14_6: # %entry1183; CHECK-NOV-NEXT: mv a1, a51184; CHECK-NOV-NEXT: fcvt.w.s a3, fa2, rtz1185; CHECK-NOV-NEXT: blt a2, a5, .LBB14_21186; CHECK-NOV-NEXT: .LBB14_7: # %entry1187; CHECK-NOV-NEXT: mv a2, a51188; CHECK-NOV-NEXT: fcvt.w.s a4, fa3, rtz1189; CHECK-NOV-NEXT: blt a3, a5, .LBB14_31190; CHECK-NOV-NEXT: .LBB14_8: # %entry1191; CHECK-NOV-NEXT: mv a3, a51192; CHECK-NOV-NEXT: bge a4, a5, .LBB14_41193; CHECK-NOV-NEXT: j .LBB14_51194;1195; CHECK-V-LABEL: ustest_f32i16:1196; CHECK-V: # %bb.0: # %entry1197; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1198; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v81199; CHECK-V-NEXT: vmax.vx v8, v8, zero1200; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma1201; CHECK-V-NEXT: vnclipu.wi v8, v8, 01202; CHECK-V-NEXT: ret1203entry:1204 %conv = fptosi <4 x float> %x to <4 x i32>1205 %0 = icmp slt <4 x i32> %conv, <i32 65535, i32 65535, i32 65535, i32 65535>1206 %spec.store.select = select <4 x i1> %0, <4 x i32> %conv, <4 x i32> <i32 65535, i32 65535, i32 65535, i32 65535>1207 %1 = icmp sgt <4 x i32> %spec.store.select, zeroinitializer1208 %spec.store.select7 = select <4 x i1> %1, <4 x i32> %spec.store.select, <4 x i32> zeroinitializer1209 %conv6 = trunc <4 x i32> %spec.store.select7 to <4 x i16>1210 ret <4 x i16> %conv61211}1212 1213define <8 x i16> @stest_f16i16(<8 x half> %x) {1214; CHECK-NOV-LABEL: stest_f16i16:1215; CHECK-NOV: # %bb.0: # %entry1216; CHECK-NOV-NEXT: addi sp, sp, -1281217; CHECK-NOV-NEXT: .cfi_def_cfa_offset 1281218; CHECK-NOV-NEXT: sd ra, 120(sp) # 8-byte Folded Spill1219; CHECK-NOV-NEXT: sd s0, 112(sp) # 8-byte Folded Spill1220; CHECK-NOV-NEXT: sd s1, 104(sp) # 8-byte Folded Spill1221; CHECK-NOV-NEXT: sd s2, 96(sp) # 8-byte Folded Spill1222; CHECK-NOV-NEXT: sd s3, 88(sp) # 8-byte Folded Spill1223; CHECK-NOV-NEXT: sd s4, 80(sp) # 8-byte Folded Spill1224; CHECK-NOV-NEXT: sd s5, 72(sp) # 8-byte Folded Spill1225; CHECK-NOV-NEXT: sd s6, 64(sp) # 8-byte Folded Spill1226; CHECK-NOV-NEXT: sd s7, 56(sp) # 8-byte Folded Spill1227; CHECK-NOV-NEXT: fsd fs0, 48(sp) # 8-byte Folded Spill1228; CHECK-NOV-NEXT: fsd fs1, 40(sp) # 8-byte Folded Spill1229; CHECK-NOV-NEXT: fsd fs2, 32(sp) # 8-byte Folded Spill1230; CHECK-NOV-NEXT: fsd fs3, 24(sp) # 8-byte Folded Spill1231; CHECK-NOV-NEXT: fsd fs4, 16(sp) # 8-byte Folded Spill1232; CHECK-NOV-NEXT: fsd fs5, 8(sp) # 8-byte Folded Spill1233; CHECK-NOV-NEXT: fsd fs6, 0(sp) # 8-byte Folded Spill1234; CHECK-NOV-NEXT: .cfi_offset ra, -81235; CHECK-NOV-NEXT: .cfi_offset s0, -161236; CHECK-NOV-NEXT: .cfi_offset s1, -241237; CHECK-NOV-NEXT: .cfi_offset s2, -321238; CHECK-NOV-NEXT: .cfi_offset s3, -401239; CHECK-NOV-NEXT: .cfi_offset s4, -481240; CHECK-NOV-NEXT: .cfi_offset s5, -561241; CHECK-NOV-NEXT: .cfi_offset s6, -641242; CHECK-NOV-NEXT: .cfi_offset s7, -721243; CHECK-NOV-NEXT: .cfi_offset fs0, -801244; CHECK-NOV-NEXT: .cfi_offset fs1, -881245; CHECK-NOV-NEXT: .cfi_offset fs2, -961246; CHECK-NOV-NEXT: .cfi_offset fs3, -1041247; CHECK-NOV-NEXT: .cfi_offset fs4, -1121248; CHECK-NOV-NEXT: .cfi_offset fs5, -1201249; CHECK-NOV-NEXT: .cfi_offset fs6, -1281250; CHECK-NOV-NEXT: .cfi_remember_state1251; CHECK-NOV-NEXT: lhu s1, 32(a1)1252; CHECK-NOV-NEXT: lhu s2, 40(a1)1253; CHECK-NOV-NEXT: lhu a2, 48(a1)1254; CHECK-NOV-NEXT: lhu s3, 56(a1)1255; CHECK-NOV-NEXT: lhu s4, 0(a1)1256; CHECK-NOV-NEXT: lhu s5, 8(a1)1257; CHECK-NOV-NEXT: lhu s6, 16(a1)1258; CHECK-NOV-NEXT: lhu s7, 24(a1)1259; CHECK-NOV-NEXT: mv s0, a01260; CHECK-NOV-NEXT: fmv.w.x fa0, a21261; CHECK-NOV-NEXT: call __extendhfsf21262; CHECK-NOV-NEXT: fmv.s fs6, fa01263; CHECK-NOV-NEXT: fmv.w.x fa0, s21264; CHECK-NOV-NEXT: call __extendhfsf21265; CHECK-NOV-NEXT: fmv.s fs5, fa01266; CHECK-NOV-NEXT: fmv.w.x fa0, s11267; CHECK-NOV-NEXT: call __extendhfsf21268; CHECK-NOV-NEXT: fmv.s fs4, fa01269; CHECK-NOV-NEXT: fmv.w.x fa0, s71270; CHECK-NOV-NEXT: call __extendhfsf21271; CHECK-NOV-NEXT: fmv.s fs3, fa01272; CHECK-NOV-NEXT: fmv.w.x fa0, s61273; CHECK-NOV-NEXT: call __extendhfsf21274; CHECK-NOV-NEXT: fmv.s fs2, fa01275; CHECK-NOV-NEXT: fmv.w.x fa0, s51276; CHECK-NOV-NEXT: call __extendhfsf21277; CHECK-NOV-NEXT: fmv.s fs1, fa01278; CHECK-NOV-NEXT: fmv.w.x fa0, s41279; CHECK-NOV-NEXT: call __extendhfsf21280; CHECK-NOV-NEXT: fmv.s fs0, fa01281; CHECK-NOV-NEXT: fmv.w.x fa0, s31282; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz1283; CHECK-NOV-NEXT: call __extendhfsf21284; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz1285; CHECK-NOV-NEXT: lui a7, 81286; CHECK-NOV-NEXT: addi a7, a7, -11287; CHECK-NOV-NEXT: bge a0, a7, .LBB15_181288; CHECK-NOV-NEXT: # %bb.1: # %entry1289; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz1290; CHECK-NOV-NEXT: bge s1, a7, .LBB15_191291; CHECK-NOV-NEXT: .LBB15_2: # %entry1292; CHECK-NOV-NEXT: fcvt.l.s a3, fs4, rtz1293; CHECK-NOV-NEXT: bge a1, a7, .LBB15_201294; CHECK-NOV-NEXT: .LBB15_3: # %entry1295; CHECK-NOV-NEXT: fcvt.l.s a2, fs3, rtz1296; CHECK-NOV-NEXT: bge a3, a7, .LBB15_211297; CHECK-NOV-NEXT: .LBB15_4: # %entry1298; CHECK-NOV-NEXT: fcvt.l.s a4, fs2, rtz1299; CHECK-NOV-NEXT: bge a2, a7, .LBB15_221300; CHECK-NOV-NEXT: .LBB15_5: # %entry1301; CHECK-NOV-NEXT: fcvt.l.s a5, fs1, rtz1302; CHECK-NOV-NEXT: bge a4, a7, .LBB15_231303; CHECK-NOV-NEXT: .LBB15_6: # %entry1304; CHECK-NOV-NEXT: fcvt.l.s a6, fs0, rtz1305; CHECK-NOV-NEXT: bge a5, a7, .LBB15_241306; CHECK-NOV-NEXT: .LBB15_7: # %entry1307; CHECK-NOV-NEXT: bge a6, a7, .LBB15_251308; CHECK-NOV-NEXT: .LBB15_8: # %entry1309; CHECK-NOV-NEXT: lui a7, 10485681310; CHECK-NOV-NEXT: bge a7, a6, .LBB15_261311; CHECK-NOV-NEXT: .LBB15_9: # %entry1312; CHECK-NOV-NEXT: bge a7, a5, .LBB15_271313; CHECK-NOV-NEXT: .LBB15_10: # %entry1314; CHECK-NOV-NEXT: bge a7, a4, .LBB15_281315; CHECK-NOV-NEXT: .LBB15_11: # %entry1316; CHECK-NOV-NEXT: bge a7, a2, .LBB15_291317; CHECK-NOV-NEXT: .LBB15_12: # %entry1318; CHECK-NOV-NEXT: bge a7, a3, .LBB15_301319; CHECK-NOV-NEXT: .LBB15_13: # %entry1320; CHECK-NOV-NEXT: bge a7, a1, .LBB15_311321; CHECK-NOV-NEXT: .LBB15_14: # %entry1322; CHECK-NOV-NEXT: bge a7, s1, .LBB15_321323; CHECK-NOV-NEXT: .LBB15_15: # %entry1324; CHECK-NOV-NEXT: blt a7, a0, .LBB15_171325; CHECK-NOV-NEXT: .LBB15_16: # %entry1326; CHECK-NOV-NEXT: lui a0, 10485681327; CHECK-NOV-NEXT: .LBB15_17: # %entry1328; CHECK-NOV-NEXT: sh a3, 8(s0)1329; CHECK-NOV-NEXT: sh a1, 10(s0)1330; CHECK-NOV-NEXT: sh s1, 12(s0)1331; CHECK-NOV-NEXT: sh a0, 14(s0)1332; CHECK-NOV-NEXT: sh a6, 0(s0)1333; CHECK-NOV-NEXT: sh a5, 2(s0)1334; CHECK-NOV-NEXT: sh a4, 4(s0)1335; CHECK-NOV-NEXT: sh a2, 6(s0)1336; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload1337; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload1338; CHECK-NOV-NEXT: ld s1, 104(sp) # 8-byte Folded Reload1339; CHECK-NOV-NEXT: ld s2, 96(sp) # 8-byte Folded Reload1340; CHECK-NOV-NEXT: ld s3, 88(sp) # 8-byte Folded Reload1341; CHECK-NOV-NEXT: ld s4, 80(sp) # 8-byte Folded Reload1342; CHECK-NOV-NEXT: ld s5, 72(sp) # 8-byte Folded Reload1343; CHECK-NOV-NEXT: ld s6, 64(sp) # 8-byte Folded Reload1344; CHECK-NOV-NEXT: ld s7, 56(sp) # 8-byte Folded Reload1345; CHECK-NOV-NEXT: fld fs0, 48(sp) # 8-byte Folded Reload1346; CHECK-NOV-NEXT: fld fs1, 40(sp) # 8-byte Folded Reload1347; CHECK-NOV-NEXT: fld fs2, 32(sp) # 8-byte Folded Reload1348; CHECK-NOV-NEXT: fld fs3, 24(sp) # 8-byte Folded Reload1349; CHECK-NOV-NEXT: fld fs4, 16(sp) # 8-byte Folded Reload1350; CHECK-NOV-NEXT: fld fs5, 8(sp) # 8-byte Folded Reload1351; CHECK-NOV-NEXT: fld fs6, 0(sp) # 8-byte Folded Reload1352; CHECK-NOV-NEXT: .cfi_restore ra1353; CHECK-NOV-NEXT: .cfi_restore s01354; CHECK-NOV-NEXT: .cfi_restore s11355; CHECK-NOV-NEXT: .cfi_restore s21356; CHECK-NOV-NEXT: .cfi_restore s31357; CHECK-NOV-NEXT: .cfi_restore s41358; CHECK-NOV-NEXT: .cfi_restore s51359; CHECK-NOV-NEXT: .cfi_restore s61360; CHECK-NOV-NEXT: .cfi_restore s71361; CHECK-NOV-NEXT: .cfi_restore fs01362; CHECK-NOV-NEXT: .cfi_restore fs11363; CHECK-NOV-NEXT: .cfi_restore fs21364; CHECK-NOV-NEXT: .cfi_restore fs31365; CHECK-NOV-NEXT: .cfi_restore fs41366; CHECK-NOV-NEXT: .cfi_restore fs51367; CHECK-NOV-NEXT: .cfi_restore fs61368; CHECK-NOV-NEXT: addi sp, sp, 1281369; CHECK-NOV-NEXT: .cfi_def_cfa_offset 01370; CHECK-NOV-NEXT: ret1371; CHECK-NOV-NEXT: .LBB15_18: # %entry1372; CHECK-NOV-NEXT: .cfi_restore_state1373; CHECK-NOV-NEXT: mv a0, a71374; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz1375; CHECK-NOV-NEXT: blt s1, a7, .LBB15_21376; CHECK-NOV-NEXT: .LBB15_19: # %entry1377; CHECK-NOV-NEXT: mv s1, a71378; CHECK-NOV-NEXT: fcvt.l.s a3, fs4, rtz1379; CHECK-NOV-NEXT: blt a1, a7, .LBB15_31380; CHECK-NOV-NEXT: .LBB15_20: # %entry1381; CHECK-NOV-NEXT: mv a1, a71382; CHECK-NOV-NEXT: fcvt.l.s a2, fs3, rtz1383; CHECK-NOV-NEXT: blt a3, a7, .LBB15_41384; CHECK-NOV-NEXT: .LBB15_21: # %entry1385; CHECK-NOV-NEXT: mv a3, a71386; CHECK-NOV-NEXT: fcvt.l.s a4, fs2, rtz1387; CHECK-NOV-NEXT: blt a2, a7, .LBB15_51388; CHECK-NOV-NEXT: .LBB15_22: # %entry1389; CHECK-NOV-NEXT: mv a2, a71390; CHECK-NOV-NEXT: fcvt.l.s a5, fs1, rtz1391; CHECK-NOV-NEXT: blt a4, a7, .LBB15_61392; CHECK-NOV-NEXT: .LBB15_23: # %entry1393; CHECK-NOV-NEXT: mv a4, a71394; CHECK-NOV-NEXT: fcvt.l.s a6, fs0, rtz1395; CHECK-NOV-NEXT: blt a5, a7, .LBB15_71396; CHECK-NOV-NEXT: .LBB15_24: # %entry1397; CHECK-NOV-NEXT: mv a5, a71398; CHECK-NOV-NEXT: blt a6, a7, .LBB15_81399; CHECK-NOV-NEXT: .LBB15_25: # %entry1400; CHECK-NOV-NEXT: mv a6, a71401; CHECK-NOV-NEXT: lui a7, 10485681402; CHECK-NOV-NEXT: blt a7, a6, .LBB15_91403; CHECK-NOV-NEXT: .LBB15_26: # %entry1404; CHECK-NOV-NEXT: lui a6, 10485681405; CHECK-NOV-NEXT: blt a7, a5, .LBB15_101406; CHECK-NOV-NEXT: .LBB15_27: # %entry1407; CHECK-NOV-NEXT: lui a5, 10485681408; CHECK-NOV-NEXT: blt a7, a4, .LBB15_111409; CHECK-NOV-NEXT: .LBB15_28: # %entry1410; CHECK-NOV-NEXT: lui a4, 10485681411; CHECK-NOV-NEXT: blt a7, a2, .LBB15_121412; CHECK-NOV-NEXT: .LBB15_29: # %entry1413; CHECK-NOV-NEXT: lui a2, 10485681414; CHECK-NOV-NEXT: blt a7, a3, .LBB15_131415; CHECK-NOV-NEXT: .LBB15_30: # %entry1416; CHECK-NOV-NEXT: lui a3, 10485681417; CHECK-NOV-NEXT: blt a7, a1, .LBB15_141418; CHECK-NOV-NEXT: .LBB15_31: # %entry1419; CHECK-NOV-NEXT: lui a1, 10485681420; CHECK-NOV-NEXT: blt a7, s1, .LBB15_151421; CHECK-NOV-NEXT: .LBB15_32: # %entry1422; CHECK-NOV-NEXT: lui s1, 10485681423; CHECK-NOV-NEXT: bge a7, a0, .LBB15_161424; CHECK-NOV-NEXT: j .LBB15_171425;1426; CHECK-V-LABEL: stest_f16i16:1427; CHECK-V: # %bb.0: # %entry1428; CHECK-V-NEXT: addi sp, sp, -801429; CHECK-V-NEXT: .cfi_def_cfa_offset 801430; CHECK-V-NEXT: sd ra, 72(sp) # 8-byte Folded Spill1431; CHECK-V-NEXT: sd s0, 64(sp) # 8-byte Folded Spill1432; CHECK-V-NEXT: sd s1, 56(sp) # 8-byte Folded Spill1433; CHECK-V-NEXT: sd s2, 48(sp) # 8-byte Folded Spill1434; CHECK-V-NEXT: sd s3, 40(sp) # 8-byte Folded Spill1435; CHECK-V-NEXT: sd s4, 32(sp) # 8-byte Folded Spill1436; CHECK-V-NEXT: sd s5, 24(sp) # 8-byte Folded Spill1437; CHECK-V-NEXT: sd s6, 16(sp) # 8-byte Folded Spill1438; CHECK-V-NEXT: .cfi_offset ra, -81439; CHECK-V-NEXT: .cfi_offset s0, -161440; CHECK-V-NEXT: .cfi_offset s1, -241441; CHECK-V-NEXT: .cfi_offset s2, -321442; CHECK-V-NEXT: .cfi_offset s3, -401443; CHECK-V-NEXT: .cfi_offset s4, -481444; CHECK-V-NEXT: .cfi_offset s5, -561445; CHECK-V-NEXT: .cfi_offset s6, -641446; CHECK-V-NEXT: csrr a1, vlenb1447; CHECK-V-NEXT: slli a1, a1, 21448; CHECK-V-NEXT: sub sp, sp, a11449; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x04, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 80 + 4 * vlenb1450; CHECK-V-NEXT: lhu s0, 0(a0)1451; CHECK-V-NEXT: lhu s1, 8(a0)1452; CHECK-V-NEXT: lhu s2, 16(a0)1453; CHECK-V-NEXT: lhu s3, 24(a0)1454; CHECK-V-NEXT: lhu s4, 32(a0)1455; CHECK-V-NEXT: lhu s5, 40(a0)1456; CHECK-V-NEXT: lhu s6, 48(a0)1457; CHECK-V-NEXT: lhu a0, 56(a0)1458; CHECK-V-NEXT: fmv.w.x fa0, a01459; CHECK-V-NEXT: call __extendhfsf21460; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1461; CHECK-V-NEXT: fmv.w.x fa0, s61462; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1463; CHECK-V-NEXT: vmv.s.x v8, a01464; CHECK-V-NEXT: csrr a0, vlenb1465; CHECK-V-NEXT: slli a0, a0, 11466; CHECK-V-NEXT: add a0, sp, a01467; CHECK-V-NEXT: addi a0, a0, 161468; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1469; CHECK-V-NEXT: call __extendhfsf21470; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1471; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1472; CHECK-V-NEXT: vmv.s.x v8, a01473; CHECK-V-NEXT: csrr a0, vlenb1474; CHECK-V-NEXT: slli a0, a0, 11475; CHECK-V-NEXT: add a0, sp, a01476; CHECK-V-NEXT: addi a0, a0, 161477; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1478; CHECK-V-NEXT: vslideup.vi v8, v9, 11479; CHECK-V-NEXT: csrr a0, vlenb1480; CHECK-V-NEXT: add a0, sp, a01481; CHECK-V-NEXT: addi a0, a0, 161482; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1483; CHECK-V-NEXT: fmv.w.x fa0, s51484; CHECK-V-NEXT: call __extendhfsf21485; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1486; CHECK-V-NEXT: fmv.w.x fa0, s41487; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1488; CHECK-V-NEXT: vmv.s.x v8, a01489; CHECK-V-NEXT: csrr a0, vlenb1490; CHECK-V-NEXT: slli a0, a0, 11491; CHECK-V-NEXT: add a0, sp, a01492; CHECK-V-NEXT: addi a0, a0, 161493; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1494; CHECK-V-NEXT: call __extendhfsf21495; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1496; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1497; CHECK-V-NEXT: vmv.s.x v8, a01498; CHECK-V-NEXT: csrr a0, vlenb1499; CHECK-V-NEXT: slli a0, a0, 11500; CHECK-V-NEXT: add a0, sp, a01501; CHECK-V-NEXT: addi a0, a0, 161502; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1503; CHECK-V-NEXT: vslideup.vi v8, v9, 11504; CHECK-V-NEXT: csrr a0, vlenb1505; CHECK-V-NEXT: add a0, sp, a01506; CHECK-V-NEXT: addi a0, a0, 161507; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1508; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1509; CHECK-V-NEXT: vslideup.vi v8, v9, 21510; CHECK-V-NEXT: csrr a0, vlenb1511; CHECK-V-NEXT: slli a0, a0, 11512; CHECK-V-NEXT: add a0, sp, a01513; CHECK-V-NEXT: addi a0, a0, 161514; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill1515; CHECK-V-NEXT: fmv.w.x fa0, s31516; CHECK-V-NEXT: call __extendhfsf21517; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1518; CHECK-V-NEXT: fmv.w.x fa0, s21519; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1520; CHECK-V-NEXT: vmv.s.x v8, a01521; CHECK-V-NEXT: addi a0, sp, 161522; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1523; CHECK-V-NEXT: call __extendhfsf21524; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1525; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1526; CHECK-V-NEXT: vmv.s.x v8, a01527; CHECK-V-NEXT: addi a0, sp, 161528; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1529; CHECK-V-NEXT: vslideup.vi v8, v9, 11530; CHECK-V-NEXT: csrr a0, vlenb1531; CHECK-V-NEXT: add a0, sp, a01532; CHECK-V-NEXT: addi a0, a0, 161533; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1534; CHECK-V-NEXT: fmv.w.x fa0, s11535; CHECK-V-NEXT: call __extendhfsf21536; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1537; CHECK-V-NEXT: fmv.w.x fa0, s01538; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1539; CHECK-V-NEXT: vmv.s.x v8, a01540; CHECK-V-NEXT: addi a0, sp, 161541; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1542; CHECK-V-NEXT: call __extendhfsf21543; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz1544; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1545; CHECK-V-NEXT: vmv.s.x v10, a01546; CHECK-V-NEXT: addi a0, sp, 161547; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload1548; CHECK-V-NEXT: vslideup.vi v10, v8, 11549; CHECK-V-NEXT: csrr a0, vlenb1550; CHECK-V-NEXT: add a0, sp, a01551; CHECK-V-NEXT: addi a0, a0, 161552; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload1553; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1554; CHECK-V-NEXT: vslideup.vi v10, v8, 21555; CHECK-V-NEXT: csrr a0, vlenb1556; CHECK-V-NEXT: slli a0, a0, 11557; CHECK-V-NEXT: add a0, sp, a01558; CHECK-V-NEXT: addi a0, a0, 161559; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload1560; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma1561; CHECK-V-NEXT: vslideup.vi v10, v8, 41562; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma1563; CHECK-V-NEXT: vnclip.wi v8, v10, 01564; CHECK-V-NEXT: csrr a0, vlenb1565; CHECK-V-NEXT: slli a0, a0, 21566; CHECK-V-NEXT: add sp, sp, a01567; CHECK-V-NEXT: .cfi_def_cfa sp, 801568; CHECK-V-NEXT: ld ra, 72(sp) # 8-byte Folded Reload1569; CHECK-V-NEXT: ld s0, 64(sp) # 8-byte Folded Reload1570; CHECK-V-NEXT: ld s1, 56(sp) # 8-byte Folded Reload1571; CHECK-V-NEXT: ld s2, 48(sp) # 8-byte Folded Reload1572; CHECK-V-NEXT: ld s3, 40(sp) # 8-byte Folded Reload1573; CHECK-V-NEXT: ld s4, 32(sp) # 8-byte Folded Reload1574; CHECK-V-NEXT: ld s5, 24(sp) # 8-byte Folded Reload1575; CHECK-V-NEXT: ld s6, 16(sp) # 8-byte Folded Reload1576; CHECK-V-NEXT: .cfi_restore ra1577; CHECK-V-NEXT: .cfi_restore s01578; CHECK-V-NEXT: .cfi_restore s11579; CHECK-V-NEXT: .cfi_restore s21580; CHECK-V-NEXT: .cfi_restore s31581; CHECK-V-NEXT: .cfi_restore s41582; CHECK-V-NEXT: .cfi_restore s51583; CHECK-V-NEXT: .cfi_restore s61584; CHECK-V-NEXT: addi sp, sp, 801585; CHECK-V-NEXT: .cfi_def_cfa_offset 01586; CHECK-V-NEXT: ret1587entry:1588 %conv = fptosi <8 x half> %x to <8 x i32>1589 %0 = icmp slt <8 x i32> %conv, <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>1590 %spec.store.select = select <8 x i1> %0, <8 x i32> %conv, <8 x i32> <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>1591 %1 = icmp sgt <8 x i32> %spec.store.select, <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>1592 %spec.store.select7 = select <8 x i1> %1, <8 x i32> %spec.store.select, <8 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>1593 %conv6 = trunc <8 x i32> %spec.store.select7 to <8 x i16>1594 ret <8 x i16> %conv61595}1596 1597define <8 x i16> @utest_f16i16(<8 x half> %x) {1598; CHECK-NOV-LABEL: utest_f16i16:1599; CHECK-NOV: # %bb.0: # %entry1600; CHECK-NOV-NEXT: addi sp, sp, -1281601; CHECK-NOV-NEXT: .cfi_def_cfa_offset 1281602; CHECK-NOV-NEXT: sd ra, 120(sp) # 8-byte Folded Spill1603; CHECK-NOV-NEXT: sd s0, 112(sp) # 8-byte Folded Spill1604; CHECK-NOV-NEXT: sd s1, 104(sp) # 8-byte Folded Spill1605; CHECK-NOV-NEXT: sd s2, 96(sp) # 8-byte Folded Spill1606; CHECK-NOV-NEXT: sd s3, 88(sp) # 8-byte Folded Spill1607; CHECK-NOV-NEXT: sd s4, 80(sp) # 8-byte Folded Spill1608; CHECK-NOV-NEXT: sd s5, 72(sp) # 8-byte Folded Spill1609; CHECK-NOV-NEXT: sd s6, 64(sp) # 8-byte Folded Spill1610; CHECK-NOV-NEXT: sd s7, 56(sp) # 8-byte Folded Spill1611; CHECK-NOV-NEXT: fsd fs0, 48(sp) # 8-byte Folded Spill1612; CHECK-NOV-NEXT: fsd fs1, 40(sp) # 8-byte Folded Spill1613; CHECK-NOV-NEXT: fsd fs2, 32(sp) # 8-byte Folded Spill1614; CHECK-NOV-NEXT: fsd fs3, 24(sp) # 8-byte Folded Spill1615; CHECK-NOV-NEXT: fsd fs4, 16(sp) # 8-byte Folded Spill1616; CHECK-NOV-NEXT: fsd fs5, 8(sp) # 8-byte Folded Spill1617; CHECK-NOV-NEXT: fsd fs6, 0(sp) # 8-byte Folded Spill1618; CHECK-NOV-NEXT: .cfi_offset ra, -81619; CHECK-NOV-NEXT: .cfi_offset s0, -161620; CHECK-NOV-NEXT: .cfi_offset s1, -241621; CHECK-NOV-NEXT: .cfi_offset s2, -321622; CHECK-NOV-NEXT: .cfi_offset s3, -401623; CHECK-NOV-NEXT: .cfi_offset s4, -481624; CHECK-NOV-NEXT: .cfi_offset s5, -561625; CHECK-NOV-NEXT: .cfi_offset s6, -641626; CHECK-NOV-NEXT: .cfi_offset s7, -721627; CHECK-NOV-NEXT: .cfi_offset fs0, -801628; CHECK-NOV-NEXT: .cfi_offset fs1, -881629; CHECK-NOV-NEXT: .cfi_offset fs2, -961630; CHECK-NOV-NEXT: .cfi_offset fs3, -1041631; CHECK-NOV-NEXT: .cfi_offset fs4, -1121632; CHECK-NOV-NEXT: .cfi_offset fs5, -1201633; CHECK-NOV-NEXT: .cfi_offset fs6, -1281634; CHECK-NOV-NEXT: .cfi_remember_state1635; CHECK-NOV-NEXT: lhu s1, 32(a1)1636; CHECK-NOV-NEXT: lhu s2, 40(a1)1637; CHECK-NOV-NEXT: lhu s3, 48(a1)1638; CHECK-NOV-NEXT: lhu s4, 56(a1)1639; CHECK-NOV-NEXT: lhu s5, 0(a1)1640; CHECK-NOV-NEXT: lhu a2, 8(a1)1641; CHECK-NOV-NEXT: lhu s6, 16(a1)1642; CHECK-NOV-NEXT: lhu s7, 24(a1)1643; CHECK-NOV-NEXT: mv s0, a01644; CHECK-NOV-NEXT: fmv.w.x fa0, a21645; CHECK-NOV-NEXT: call __extendhfsf21646; CHECK-NOV-NEXT: fmv.s fs6, fa01647; CHECK-NOV-NEXT: fmv.w.x fa0, s61648; CHECK-NOV-NEXT: call __extendhfsf21649; CHECK-NOV-NEXT: fmv.s fs5, fa01650; CHECK-NOV-NEXT: fmv.w.x fa0, s71651; CHECK-NOV-NEXT: call __extendhfsf21652; CHECK-NOV-NEXT: fmv.s fs4, fa01653; CHECK-NOV-NEXT: fmv.w.x fa0, s11654; CHECK-NOV-NEXT: call __extendhfsf21655; CHECK-NOV-NEXT: fmv.s fs3, fa01656; CHECK-NOV-NEXT: fmv.w.x fa0, s21657; CHECK-NOV-NEXT: call __extendhfsf21658; CHECK-NOV-NEXT: fmv.s fs2, fa01659; CHECK-NOV-NEXT: fmv.w.x fa0, s31660; CHECK-NOV-NEXT: call __extendhfsf21661; CHECK-NOV-NEXT: fmv.s fs1, fa01662; CHECK-NOV-NEXT: fmv.w.x fa0, s41663; CHECK-NOV-NEXT: call __extendhfsf21664; CHECK-NOV-NEXT: fmv.s fs0, fa01665; CHECK-NOV-NEXT: fmv.w.x fa0, s51666; CHECK-NOV-NEXT: fcvt.lu.s s1, fs6, rtz1667; CHECK-NOV-NEXT: call __extendhfsf21668; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz1669; CHECK-NOV-NEXT: lui a3, 161670; CHECK-NOV-NEXT: addi a3, a3, -11671; CHECK-NOV-NEXT: bgeu a0, a3, .LBB16_101672; CHECK-NOV-NEXT: # %bb.1: # %entry1673; CHECK-NOV-NEXT: fcvt.lu.s a1, fs5, rtz1674; CHECK-NOV-NEXT: bgeu s1, a3, .LBB16_111675; CHECK-NOV-NEXT: .LBB16_2: # %entry1676; CHECK-NOV-NEXT: fcvt.lu.s a2, fs4, rtz1677; CHECK-NOV-NEXT: bgeu a1, a3, .LBB16_121678; CHECK-NOV-NEXT: .LBB16_3: # %entry1679; CHECK-NOV-NEXT: fcvt.lu.s a4, fs3, rtz1680; CHECK-NOV-NEXT: bgeu a2, a3, .LBB16_131681; CHECK-NOV-NEXT: .LBB16_4: # %entry1682; CHECK-NOV-NEXT: fcvt.lu.s a5, fs2, rtz1683; CHECK-NOV-NEXT: bgeu a4, a3, .LBB16_141684; CHECK-NOV-NEXT: .LBB16_5: # %entry1685; CHECK-NOV-NEXT: fcvt.lu.s a6, fs1, rtz1686; CHECK-NOV-NEXT: bgeu a5, a3, .LBB16_151687; CHECK-NOV-NEXT: .LBB16_6: # %entry1688; CHECK-NOV-NEXT: fcvt.lu.s a7, fs0, rtz1689; CHECK-NOV-NEXT: bgeu a6, a3, .LBB16_161690; CHECK-NOV-NEXT: .LBB16_7: # %entry1691; CHECK-NOV-NEXT: bltu a7, a3, .LBB16_91692; CHECK-NOV-NEXT: .LBB16_8: # %entry1693; CHECK-NOV-NEXT: mv a7, a31694; CHECK-NOV-NEXT: .LBB16_9: # %entry1695; CHECK-NOV-NEXT: sh a4, 8(s0)1696; CHECK-NOV-NEXT: sh a5, 10(s0)1697; CHECK-NOV-NEXT: sh a6, 12(s0)1698; CHECK-NOV-NEXT: sh a7, 14(s0)1699; CHECK-NOV-NEXT: sh a0, 0(s0)1700; CHECK-NOV-NEXT: sh s1, 2(s0)1701; CHECK-NOV-NEXT: sh a1, 4(s0)1702; CHECK-NOV-NEXT: sh a2, 6(s0)1703; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload1704; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload1705; CHECK-NOV-NEXT: ld s1, 104(sp) # 8-byte Folded Reload1706; CHECK-NOV-NEXT: ld s2, 96(sp) # 8-byte Folded Reload1707; CHECK-NOV-NEXT: ld s3, 88(sp) # 8-byte Folded Reload1708; CHECK-NOV-NEXT: ld s4, 80(sp) # 8-byte Folded Reload1709; CHECK-NOV-NEXT: ld s5, 72(sp) # 8-byte Folded Reload1710; CHECK-NOV-NEXT: ld s6, 64(sp) # 8-byte Folded Reload1711; CHECK-NOV-NEXT: ld s7, 56(sp) # 8-byte Folded Reload1712; CHECK-NOV-NEXT: fld fs0, 48(sp) # 8-byte Folded Reload1713; CHECK-NOV-NEXT: fld fs1, 40(sp) # 8-byte Folded Reload1714; CHECK-NOV-NEXT: fld fs2, 32(sp) # 8-byte Folded Reload1715; CHECK-NOV-NEXT: fld fs3, 24(sp) # 8-byte Folded Reload1716; CHECK-NOV-NEXT: fld fs4, 16(sp) # 8-byte Folded Reload1717; CHECK-NOV-NEXT: fld fs5, 8(sp) # 8-byte Folded Reload1718; CHECK-NOV-NEXT: fld fs6, 0(sp) # 8-byte Folded Reload1719; CHECK-NOV-NEXT: .cfi_restore ra1720; CHECK-NOV-NEXT: .cfi_restore s01721; CHECK-NOV-NEXT: .cfi_restore s11722; CHECK-NOV-NEXT: .cfi_restore s21723; CHECK-NOV-NEXT: .cfi_restore s31724; CHECK-NOV-NEXT: .cfi_restore s41725; CHECK-NOV-NEXT: .cfi_restore s51726; CHECK-NOV-NEXT: .cfi_restore s61727; CHECK-NOV-NEXT: .cfi_restore s71728; CHECK-NOV-NEXT: .cfi_restore fs01729; CHECK-NOV-NEXT: .cfi_restore fs11730; CHECK-NOV-NEXT: .cfi_restore fs21731; CHECK-NOV-NEXT: .cfi_restore fs31732; CHECK-NOV-NEXT: .cfi_restore fs41733; CHECK-NOV-NEXT: .cfi_restore fs51734; CHECK-NOV-NEXT: .cfi_restore fs61735; CHECK-NOV-NEXT: addi sp, sp, 1281736; CHECK-NOV-NEXT: .cfi_def_cfa_offset 01737; CHECK-NOV-NEXT: ret1738; CHECK-NOV-NEXT: .LBB16_10: # %entry1739; CHECK-NOV-NEXT: .cfi_restore_state1740; CHECK-NOV-NEXT: mv a0, a31741; CHECK-NOV-NEXT: fcvt.lu.s a1, fs5, rtz1742; CHECK-NOV-NEXT: bltu s1, a3, .LBB16_21743; CHECK-NOV-NEXT: .LBB16_11: # %entry1744; CHECK-NOV-NEXT: mv s1, a31745; CHECK-NOV-NEXT: fcvt.lu.s a2, fs4, rtz1746; CHECK-NOV-NEXT: bltu a1, a3, .LBB16_31747; CHECK-NOV-NEXT: .LBB16_12: # %entry1748; CHECK-NOV-NEXT: mv a1, a31749; CHECK-NOV-NEXT: fcvt.lu.s a4, fs3, rtz1750; CHECK-NOV-NEXT: bltu a2, a3, .LBB16_41751; CHECK-NOV-NEXT: .LBB16_13: # %entry1752; CHECK-NOV-NEXT: mv a2, a31753; CHECK-NOV-NEXT: fcvt.lu.s a5, fs2, rtz1754; CHECK-NOV-NEXT: bltu a4, a3, .LBB16_51755; CHECK-NOV-NEXT: .LBB16_14: # %entry1756; CHECK-NOV-NEXT: mv a4, a31757; CHECK-NOV-NEXT: fcvt.lu.s a6, fs1, rtz1758; CHECK-NOV-NEXT: bltu a5, a3, .LBB16_61759; CHECK-NOV-NEXT: .LBB16_15: # %entry1760; CHECK-NOV-NEXT: mv a5, a31761; CHECK-NOV-NEXT: fcvt.lu.s a7, fs0, rtz1762; CHECK-NOV-NEXT: bltu a6, a3, .LBB16_71763; CHECK-NOV-NEXT: .LBB16_16: # %entry1764; CHECK-NOV-NEXT: mv a6, a31765; CHECK-NOV-NEXT: bgeu a7, a3, .LBB16_81766; CHECK-NOV-NEXT: j .LBB16_91767;1768; CHECK-V-LABEL: utest_f16i16:1769; CHECK-V: # %bb.0: # %entry1770; CHECK-V-NEXT: addi sp, sp, -801771; CHECK-V-NEXT: .cfi_def_cfa_offset 801772; CHECK-V-NEXT: sd ra, 72(sp) # 8-byte Folded Spill1773; CHECK-V-NEXT: sd s0, 64(sp) # 8-byte Folded Spill1774; CHECK-V-NEXT: sd s1, 56(sp) # 8-byte Folded Spill1775; CHECK-V-NEXT: sd s2, 48(sp) # 8-byte Folded Spill1776; CHECK-V-NEXT: sd s3, 40(sp) # 8-byte Folded Spill1777; CHECK-V-NEXT: sd s4, 32(sp) # 8-byte Folded Spill1778; CHECK-V-NEXT: sd s5, 24(sp) # 8-byte Folded Spill1779; CHECK-V-NEXT: sd s6, 16(sp) # 8-byte Folded Spill1780; CHECK-V-NEXT: .cfi_offset ra, -81781; CHECK-V-NEXT: .cfi_offset s0, -161782; CHECK-V-NEXT: .cfi_offset s1, -241783; CHECK-V-NEXT: .cfi_offset s2, -321784; CHECK-V-NEXT: .cfi_offset s3, -401785; CHECK-V-NEXT: .cfi_offset s4, -481786; CHECK-V-NEXT: .cfi_offset s5, -561787; CHECK-V-NEXT: .cfi_offset s6, -641788; CHECK-V-NEXT: csrr a1, vlenb1789; CHECK-V-NEXT: slli a1, a1, 21790; CHECK-V-NEXT: sub sp, sp, a11791; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x04, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 80 + 4 * vlenb1792; CHECK-V-NEXT: lhu s0, 0(a0)1793; CHECK-V-NEXT: lhu s1, 8(a0)1794; CHECK-V-NEXT: lhu s2, 16(a0)1795; CHECK-V-NEXT: lhu s3, 24(a0)1796; CHECK-V-NEXT: lhu s4, 32(a0)1797; CHECK-V-NEXT: lhu s5, 40(a0)1798; CHECK-V-NEXT: lhu s6, 48(a0)1799; CHECK-V-NEXT: lhu a0, 56(a0)1800; CHECK-V-NEXT: fmv.w.x fa0, a01801; CHECK-V-NEXT: call __extendhfsf21802; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1803; CHECK-V-NEXT: fmv.w.x fa0, s61804; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1805; CHECK-V-NEXT: vmv.s.x v8, a01806; CHECK-V-NEXT: csrr a0, vlenb1807; CHECK-V-NEXT: slli a0, a0, 11808; CHECK-V-NEXT: add a0, sp, a01809; CHECK-V-NEXT: addi a0, a0, 161810; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1811; CHECK-V-NEXT: call __extendhfsf21812; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1813; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1814; CHECK-V-NEXT: vmv.s.x v8, a01815; CHECK-V-NEXT: csrr a0, vlenb1816; CHECK-V-NEXT: slli a0, a0, 11817; CHECK-V-NEXT: add a0, sp, a01818; CHECK-V-NEXT: addi a0, a0, 161819; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1820; CHECK-V-NEXT: vslideup.vi v8, v9, 11821; CHECK-V-NEXT: csrr a0, vlenb1822; CHECK-V-NEXT: add a0, sp, a01823; CHECK-V-NEXT: addi a0, a0, 161824; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1825; CHECK-V-NEXT: fmv.w.x fa0, s51826; CHECK-V-NEXT: call __extendhfsf21827; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1828; CHECK-V-NEXT: fmv.w.x fa0, s41829; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1830; CHECK-V-NEXT: vmv.s.x v8, a01831; CHECK-V-NEXT: csrr a0, vlenb1832; CHECK-V-NEXT: slli a0, a0, 11833; CHECK-V-NEXT: add a0, sp, a01834; CHECK-V-NEXT: addi a0, a0, 161835; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1836; CHECK-V-NEXT: call __extendhfsf21837; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1838; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1839; CHECK-V-NEXT: vmv.s.x v8, a01840; CHECK-V-NEXT: csrr a0, vlenb1841; CHECK-V-NEXT: slli a0, a0, 11842; CHECK-V-NEXT: add a0, sp, a01843; CHECK-V-NEXT: addi a0, a0, 161844; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1845; CHECK-V-NEXT: vslideup.vi v8, v9, 11846; CHECK-V-NEXT: csrr a0, vlenb1847; CHECK-V-NEXT: add a0, sp, a01848; CHECK-V-NEXT: addi a0, a0, 161849; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1850; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1851; CHECK-V-NEXT: vslideup.vi v8, v9, 21852; CHECK-V-NEXT: csrr a0, vlenb1853; CHECK-V-NEXT: slli a0, a0, 11854; CHECK-V-NEXT: add a0, sp, a01855; CHECK-V-NEXT: addi a0, a0, 161856; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill1857; CHECK-V-NEXT: fmv.w.x fa0, s31858; CHECK-V-NEXT: call __extendhfsf21859; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1860; CHECK-V-NEXT: fmv.w.x fa0, s21861; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1862; CHECK-V-NEXT: vmv.s.x v8, a01863; CHECK-V-NEXT: addi a0, sp, 161864; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1865; CHECK-V-NEXT: call __extendhfsf21866; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1867; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1868; CHECK-V-NEXT: vmv.s.x v8, a01869; CHECK-V-NEXT: addi a0, sp, 161870; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload1871; CHECK-V-NEXT: vslideup.vi v8, v9, 11872; CHECK-V-NEXT: csrr a0, vlenb1873; CHECK-V-NEXT: add a0, sp, a01874; CHECK-V-NEXT: addi a0, a0, 161875; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1876; CHECK-V-NEXT: fmv.w.x fa0, s11877; CHECK-V-NEXT: call __extendhfsf21878; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1879; CHECK-V-NEXT: fmv.w.x fa0, s01880; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma1881; CHECK-V-NEXT: vmv.s.x v8, a01882; CHECK-V-NEXT: addi a0, sp, 161883; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill1884; CHECK-V-NEXT: call __extendhfsf21885; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz1886; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma1887; CHECK-V-NEXT: vmv.s.x v10, a01888; CHECK-V-NEXT: addi a0, sp, 161889; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload1890; CHECK-V-NEXT: vslideup.vi v10, v8, 11891; CHECK-V-NEXT: csrr a0, vlenb1892; CHECK-V-NEXT: add a0, sp, a01893; CHECK-V-NEXT: addi a0, a0, 161894; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload1895; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma1896; CHECK-V-NEXT: vslideup.vi v10, v8, 21897; CHECK-V-NEXT: csrr a0, vlenb1898; CHECK-V-NEXT: slli a0, a0, 11899; CHECK-V-NEXT: add a0, sp, a01900; CHECK-V-NEXT: addi a0, a0, 161901; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload1902; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma1903; CHECK-V-NEXT: vslideup.vi v10, v8, 41904; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma1905; CHECK-V-NEXT: vnclipu.wi v8, v10, 01906; CHECK-V-NEXT: csrr a0, vlenb1907; CHECK-V-NEXT: slli a0, a0, 21908; CHECK-V-NEXT: add sp, sp, a01909; CHECK-V-NEXT: .cfi_def_cfa sp, 801910; CHECK-V-NEXT: ld ra, 72(sp) # 8-byte Folded Reload1911; CHECK-V-NEXT: ld s0, 64(sp) # 8-byte Folded Reload1912; CHECK-V-NEXT: ld s1, 56(sp) # 8-byte Folded Reload1913; CHECK-V-NEXT: ld s2, 48(sp) # 8-byte Folded Reload1914; CHECK-V-NEXT: ld s3, 40(sp) # 8-byte Folded Reload1915; CHECK-V-NEXT: ld s4, 32(sp) # 8-byte Folded Reload1916; CHECK-V-NEXT: ld s5, 24(sp) # 8-byte Folded Reload1917; CHECK-V-NEXT: ld s6, 16(sp) # 8-byte Folded Reload1918; CHECK-V-NEXT: .cfi_restore ra1919; CHECK-V-NEXT: .cfi_restore s01920; CHECK-V-NEXT: .cfi_restore s11921; CHECK-V-NEXT: .cfi_restore s21922; CHECK-V-NEXT: .cfi_restore s31923; CHECK-V-NEXT: .cfi_restore s41924; CHECK-V-NEXT: .cfi_restore s51925; CHECK-V-NEXT: .cfi_restore s61926; CHECK-V-NEXT: addi sp, sp, 801927; CHECK-V-NEXT: .cfi_def_cfa_offset 01928; CHECK-V-NEXT: ret1929entry:1930 %conv = fptoui <8 x half> %x to <8 x i32>1931 %0 = icmp ult <8 x i32> %conv, <i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535>1932 %spec.store.select = select <8 x i1> %0, <8 x i32> %conv, <8 x i32> <i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535>1933 %conv6 = trunc <8 x i32> %spec.store.select to <8 x i16>1934 ret <8 x i16> %conv61935}1936 1937define <8 x i16> @ustest_f16i16(<8 x half> %x) {1938; CHECK-NOV-LABEL: ustest_f16i16:1939; CHECK-NOV: # %bb.0: # %entry1940; CHECK-NOV-NEXT: addi sp, sp, -1281941; CHECK-NOV-NEXT: .cfi_def_cfa_offset 1281942; CHECK-NOV-NEXT: sd ra, 120(sp) # 8-byte Folded Spill1943; CHECK-NOV-NEXT: sd s0, 112(sp) # 8-byte Folded Spill1944; CHECK-NOV-NEXT: sd s1, 104(sp) # 8-byte Folded Spill1945; CHECK-NOV-NEXT: sd s2, 96(sp) # 8-byte Folded Spill1946; CHECK-NOV-NEXT: sd s3, 88(sp) # 8-byte Folded Spill1947; CHECK-NOV-NEXT: sd s4, 80(sp) # 8-byte Folded Spill1948; CHECK-NOV-NEXT: sd s5, 72(sp) # 8-byte Folded Spill1949; CHECK-NOV-NEXT: sd s6, 64(sp) # 8-byte Folded Spill1950; CHECK-NOV-NEXT: sd s7, 56(sp) # 8-byte Folded Spill1951; CHECK-NOV-NEXT: fsd fs0, 48(sp) # 8-byte Folded Spill1952; CHECK-NOV-NEXT: fsd fs1, 40(sp) # 8-byte Folded Spill1953; CHECK-NOV-NEXT: fsd fs2, 32(sp) # 8-byte Folded Spill1954; CHECK-NOV-NEXT: fsd fs3, 24(sp) # 8-byte Folded Spill1955; CHECK-NOV-NEXT: fsd fs4, 16(sp) # 8-byte Folded Spill1956; CHECK-NOV-NEXT: fsd fs5, 8(sp) # 8-byte Folded Spill1957; CHECK-NOV-NEXT: fsd fs6, 0(sp) # 8-byte Folded Spill1958; CHECK-NOV-NEXT: .cfi_offset ra, -81959; CHECK-NOV-NEXT: .cfi_offset s0, -161960; CHECK-NOV-NEXT: .cfi_offset s1, -241961; CHECK-NOV-NEXT: .cfi_offset s2, -321962; CHECK-NOV-NEXT: .cfi_offset s3, -401963; CHECK-NOV-NEXT: .cfi_offset s4, -481964; CHECK-NOV-NEXT: .cfi_offset s5, -561965; CHECK-NOV-NEXT: .cfi_offset s6, -641966; CHECK-NOV-NEXT: .cfi_offset s7, -721967; CHECK-NOV-NEXT: .cfi_offset fs0, -801968; CHECK-NOV-NEXT: .cfi_offset fs1, -881969; CHECK-NOV-NEXT: .cfi_offset fs2, -961970; CHECK-NOV-NEXT: .cfi_offset fs3, -1041971; CHECK-NOV-NEXT: .cfi_offset fs4, -1121972; CHECK-NOV-NEXT: .cfi_offset fs5, -1201973; CHECK-NOV-NEXT: .cfi_offset fs6, -1281974; CHECK-NOV-NEXT: .cfi_remember_state1975; CHECK-NOV-NEXT: lhu s1, 32(a1)1976; CHECK-NOV-NEXT: lhu s2, 40(a1)1977; CHECK-NOV-NEXT: lhu s3, 48(a1)1978; CHECK-NOV-NEXT: lhu s4, 56(a1)1979; CHECK-NOV-NEXT: lhu s5, 0(a1)1980; CHECK-NOV-NEXT: lhu a2, 8(a1)1981; CHECK-NOV-NEXT: lhu s6, 16(a1)1982; CHECK-NOV-NEXT: lhu s7, 24(a1)1983; CHECK-NOV-NEXT: mv s0, a01984; CHECK-NOV-NEXT: fmv.w.x fa0, a21985; CHECK-NOV-NEXT: call __extendhfsf21986; CHECK-NOV-NEXT: fmv.s fs6, fa01987; CHECK-NOV-NEXT: fmv.w.x fa0, s61988; CHECK-NOV-NEXT: call __extendhfsf21989; CHECK-NOV-NEXT: fmv.s fs5, fa01990; CHECK-NOV-NEXT: fmv.w.x fa0, s71991; CHECK-NOV-NEXT: call __extendhfsf21992; CHECK-NOV-NEXT: fmv.s fs4, fa01993; CHECK-NOV-NEXT: fmv.w.x fa0, s11994; CHECK-NOV-NEXT: call __extendhfsf21995; CHECK-NOV-NEXT: fmv.s fs3, fa01996; CHECK-NOV-NEXT: fmv.w.x fa0, s21997; CHECK-NOV-NEXT: call __extendhfsf21998; CHECK-NOV-NEXT: fmv.s fs2, fa01999; CHECK-NOV-NEXT: fmv.w.x fa0, s32000; CHECK-NOV-NEXT: call __extendhfsf22001; CHECK-NOV-NEXT: fmv.s fs1, fa02002; CHECK-NOV-NEXT: fmv.w.x fa0, s42003; CHECK-NOV-NEXT: call __extendhfsf22004; CHECK-NOV-NEXT: fmv.s fs0, fa02005; CHECK-NOV-NEXT: fmv.w.x fa0, s52006; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz2007; CHECK-NOV-NEXT: call __extendhfsf22008; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz2009; CHECK-NOV-NEXT: lui a5, 162010; CHECK-NOV-NEXT: addi a5, a5, -12011; CHECK-NOV-NEXT: bge a0, a5, .LBB17_102012; CHECK-NOV-NEXT: # %bb.1: # %entry2013; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz2014; CHECK-NOV-NEXT: bge s1, a5, .LBB17_112015; CHECK-NOV-NEXT: .LBB17_2: # %entry2016; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz2017; CHECK-NOV-NEXT: bge a1, a5, .LBB17_122018; CHECK-NOV-NEXT: .LBB17_3: # %entry2019; CHECK-NOV-NEXT: fcvt.l.s a3, fs3, rtz2020; CHECK-NOV-NEXT: bge a2, a5, .LBB17_132021; CHECK-NOV-NEXT: .LBB17_4: # %entry2022; CHECK-NOV-NEXT: fcvt.l.s a4, fs2, rtz2023; CHECK-NOV-NEXT: bge a3, a5, .LBB17_142024; CHECK-NOV-NEXT: .LBB17_5: # %entry2025; CHECK-NOV-NEXT: fcvt.l.s a6, fs1, rtz2026; CHECK-NOV-NEXT: bge a4, a5, .LBB17_152027; CHECK-NOV-NEXT: .LBB17_6: # %entry2028; CHECK-NOV-NEXT: fcvt.l.s a7, fs0, rtz2029; CHECK-NOV-NEXT: bge a6, a5, .LBB17_162030; CHECK-NOV-NEXT: .LBB17_7: # %entry2031; CHECK-NOV-NEXT: blt a7, a5, .LBB17_92032; CHECK-NOV-NEXT: .LBB17_8: # %entry2033; CHECK-NOV-NEXT: mv a7, a52034; CHECK-NOV-NEXT: .LBB17_9: # %entry2035; CHECK-NOV-NEXT: sgtz a5, a72036; CHECK-NOV-NEXT: sgtz t0, a62037; CHECK-NOV-NEXT: sgtz t1, a42038; CHECK-NOV-NEXT: sgtz t2, a32039; CHECK-NOV-NEXT: sgtz t3, a22040; CHECK-NOV-NEXT: sgtz t4, a12041; CHECK-NOV-NEXT: sgtz t5, s12042; CHECK-NOV-NEXT: sgtz t6, a02043; CHECK-NOV-NEXT: neg t6, t62044; CHECK-NOV-NEXT: neg t5, t52045; CHECK-NOV-NEXT: neg t4, t42046; CHECK-NOV-NEXT: neg t3, t32047; CHECK-NOV-NEXT: neg t2, t22048; CHECK-NOV-NEXT: neg t1, t12049; CHECK-NOV-NEXT: neg t0, t02050; CHECK-NOV-NEXT: neg a5, a52051; CHECK-NOV-NEXT: and a0, t6, a02052; CHECK-NOV-NEXT: and t5, t5, s12053; CHECK-NOV-NEXT: and a1, t4, a12054; CHECK-NOV-NEXT: and a2, t3, a22055; CHECK-NOV-NEXT: and a3, t2, a32056; CHECK-NOV-NEXT: and a4, t1, a42057; CHECK-NOV-NEXT: and a6, t0, a62058; CHECK-NOV-NEXT: and a5, a5, a72059; CHECK-NOV-NEXT: sh a3, 8(s0)2060; CHECK-NOV-NEXT: sh a4, 10(s0)2061; CHECK-NOV-NEXT: sh a6, 12(s0)2062; CHECK-NOV-NEXT: sh a5, 14(s0)2063; CHECK-NOV-NEXT: sh a0, 0(s0)2064; CHECK-NOV-NEXT: sh t5, 2(s0)2065; CHECK-NOV-NEXT: sh a1, 4(s0)2066; CHECK-NOV-NEXT: sh a2, 6(s0)2067; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload2068; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload2069; CHECK-NOV-NEXT: ld s1, 104(sp) # 8-byte Folded Reload2070; CHECK-NOV-NEXT: ld s2, 96(sp) # 8-byte Folded Reload2071; CHECK-NOV-NEXT: ld s3, 88(sp) # 8-byte Folded Reload2072; CHECK-NOV-NEXT: ld s4, 80(sp) # 8-byte Folded Reload2073; CHECK-NOV-NEXT: ld s5, 72(sp) # 8-byte Folded Reload2074; CHECK-NOV-NEXT: ld s6, 64(sp) # 8-byte Folded Reload2075; CHECK-NOV-NEXT: ld s7, 56(sp) # 8-byte Folded Reload2076; CHECK-NOV-NEXT: fld fs0, 48(sp) # 8-byte Folded Reload2077; CHECK-NOV-NEXT: fld fs1, 40(sp) # 8-byte Folded Reload2078; CHECK-NOV-NEXT: fld fs2, 32(sp) # 8-byte Folded Reload2079; CHECK-NOV-NEXT: fld fs3, 24(sp) # 8-byte Folded Reload2080; CHECK-NOV-NEXT: fld fs4, 16(sp) # 8-byte Folded Reload2081; CHECK-NOV-NEXT: fld fs5, 8(sp) # 8-byte Folded Reload2082; CHECK-NOV-NEXT: fld fs6, 0(sp) # 8-byte Folded Reload2083; CHECK-NOV-NEXT: .cfi_restore ra2084; CHECK-NOV-NEXT: .cfi_restore s02085; CHECK-NOV-NEXT: .cfi_restore s12086; CHECK-NOV-NEXT: .cfi_restore s22087; CHECK-NOV-NEXT: .cfi_restore s32088; CHECK-NOV-NEXT: .cfi_restore s42089; CHECK-NOV-NEXT: .cfi_restore s52090; CHECK-NOV-NEXT: .cfi_restore s62091; CHECK-NOV-NEXT: .cfi_restore s72092; CHECK-NOV-NEXT: .cfi_restore fs02093; CHECK-NOV-NEXT: .cfi_restore fs12094; CHECK-NOV-NEXT: .cfi_restore fs22095; CHECK-NOV-NEXT: .cfi_restore fs32096; CHECK-NOV-NEXT: .cfi_restore fs42097; CHECK-NOV-NEXT: .cfi_restore fs52098; CHECK-NOV-NEXT: .cfi_restore fs62099; CHECK-NOV-NEXT: addi sp, sp, 1282100; CHECK-NOV-NEXT: .cfi_def_cfa_offset 02101; CHECK-NOV-NEXT: ret2102; CHECK-NOV-NEXT: .LBB17_10: # %entry2103; CHECK-NOV-NEXT: .cfi_restore_state2104; CHECK-NOV-NEXT: mv a0, a52105; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz2106; CHECK-NOV-NEXT: blt s1, a5, .LBB17_22107; CHECK-NOV-NEXT: .LBB17_11: # %entry2108; CHECK-NOV-NEXT: mv s1, a52109; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz2110; CHECK-NOV-NEXT: blt a1, a5, .LBB17_32111; CHECK-NOV-NEXT: .LBB17_12: # %entry2112; CHECK-NOV-NEXT: mv a1, a52113; CHECK-NOV-NEXT: fcvt.l.s a3, fs3, rtz2114; CHECK-NOV-NEXT: blt a2, a5, .LBB17_42115; CHECK-NOV-NEXT: .LBB17_13: # %entry2116; CHECK-NOV-NEXT: mv a2, a52117; CHECK-NOV-NEXT: fcvt.l.s a4, fs2, rtz2118; CHECK-NOV-NEXT: blt a3, a5, .LBB17_52119; CHECK-NOV-NEXT: .LBB17_14: # %entry2120; CHECK-NOV-NEXT: mv a3, a52121; CHECK-NOV-NEXT: fcvt.l.s a6, fs1, rtz2122; CHECK-NOV-NEXT: blt a4, a5, .LBB17_62123; CHECK-NOV-NEXT: .LBB17_15: # %entry2124; CHECK-NOV-NEXT: mv a4, a52125; CHECK-NOV-NEXT: fcvt.l.s a7, fs0, rtz2126; CHECK-NOV-NEXT: blt a6, a5, .LBB17_72127; CHECK-NOV-NEXT: .LBB17_16: # %entry2128; CHECK-NOV-NEXT: mv a6, a52129; CHECK-NOV-NEXT: bge a7, a5, .LBB17_82130; CHECK-NOV-NEXT: j .LBB17_92131;2132; CHECK-V-LABEL: ustest_f16i16:2133; CHECK-V: # %bb.0: # %entry2134; CHECK-V-NEXT: addi sp, sp, -802135; CHECK-V-NEXT: .cfi_def_cfa_offset 802136; CHECK-V-NEXT: sd ra, 72(sp) # 8-byte Folded Spill2137; CHECK-V-NEXT: sd s0, 64(sp) # 8-byte Folded Spill2138; CHECK-V-NEXT: sd s1, 56(sp) # 8-byte Folded Spill2139; CHECK-V-NEXT: sd s2, 48(sp) # 8-byte Folded Spill2140; CHECK-V-NEXT: sd s3, 40(sp) # 8-byte Folded Spill2141; CHECK-V-NEXT: sd s4, 32(sp) # 8-byte Folded Spill2142; CHECK-V-NEXT: sd s5, 24(sp) # 8-byte Folded Spill2143; CHECK-V-NEXT: sd s6, 16(sp) # 8-byte Folded Spill2144; CHECK-V-NEXT: .cfi_offset ra, -82145; CHECK-V-NEXT: .cfi_offset s0, -162146; CHECK-V-NEXT: .cfi_offset s1, -242147; CHECK-V-NEXT: .cfi_offset s2, -322148; CHECK-V-NEXT: .cfi_offset s3, -402149; CHECK-V-NEXT: .cfi_offset s4, -482150; CHECK-V-NEXT: .cfi_offset s5, -562151; CHECK-V-NEXT: .cfi_offset s6, -642152; CHECK-V-NEXT: csrr a1, vlenb2153; CHECK-V-NEXT: slli a1, a1, 22154; CHECK-V-NEXT: sub sp, sp, a12155; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x04, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 80 + 4 * vlenb2156; CHECK-V-NEXT: lhu s0, 0(a0)2157; CHECK-V-NEXT: lhu s1, 8(a0)2158; CHECK-V-NEXT: lhu s2, 16(a0)2159; CHECK-V-NEXT: lhu s3, 24(a0)2160; CHECK-V-NEXT: lhu s4, 32(a0)2161; CHECK-V-NEXT: lhu s5, 40(a0)2162; CHECK-V-NEXT: lhu s6, 48(a0)2163; CHECK-V-NEXT: lhu a0, 56(a0)2164; CHECK-V-NEXT: fmv.w.x fa0, a02165; CHECK-V-NEXT: call __extendhfsf22166; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2167; CHECK-V-NEXT: fmv.w.x fa0, s62168; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma2169; CHECK-V-NEXT: vmv.s.x v8, a02170; CHECK-V-NEXT: csrr a0, vlenb2171; CHECK-V-NEXT: slli a0, a0, 12172; CHECK-V-NEXT: add a0, sp, a02173; CHECK-V-NEXT: addi a0, a0, 162174; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2175; CHECK-V-NEXT: call __extendhfsf22176; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2177; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma2178; CHECK-V-NEXT: vmv.s.x v8, a02179; CHECK-V-NEXT: csrr a0, vlenb2180; CHECK-V-NEXT: slli a0, a0, 12181; CHECK-V-NEXT: add a0, sp, a02182; CHECK-V-NEXT: addi a0, a0, 162183; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload2184; CHECK-V-NEXT: vslideup.vi v8, v9, 12185; CHECK-V-NEXT: csrr a0, vlenb2186; CHECK-V-NEXT: add a0, sp, a02187; CHECK-V-NEXT: addi a0, a0, 162188; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2189; CHECK-V-NEXT: fmv.w.x fa0, s52190; CHECK-V-NEXT: call __extendhfsf22191; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2192; CHECK-V-NEXT: fmv.w.x fa0, s42193; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma2194; CHECK-V-NEXT: vmv.s.x v8, a02195; CHECK-V-NEXT: csrr a0, vlenb2196; CHECK-V-NEXT: slli a0, a0, 12197; CHECK-V-NEXT: add a0, sp, a02198; CHECK-V-NEXT: addi a0, a0, 162199; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2200; CHECK-V-NEXT: call __extendhfsf22201; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2202; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma2203; CHECK-V-NEXT: vmv.s.x v8, a02204; CHECK-V-NEXT: csrr a0, vlenb2205; CHECK-V-NEXT: slli a0, a0, 12206; CHECK-V-NEXT: add a0, sp, a02207; CHECK-V-NEXT: addi a0, a0, 162208; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload2209; CHECK-V-NEXT: vslideup.vi v8, v9, 12210; CHECK-V-NEXT: csrr a0, vlenb2211; CHECK-V-NEXT: add a0, sp, a02212; CHECK-V-NEXT: addi a0, a0, 162213; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload2214; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma2215; CHECK-V-NEXT: vslideup.vi v8, v9, 22216; CHECK-V-NEXT: csrr a0, vlenb2217; CHECK-V-NEXT: slli a0, a0, 12218; CHECK-V-NEXT: add a0, sp, a02219; CHECK-V-NEXT: addi a0, a0, 162220; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill2221; CHECK-V-NEXT: fmv.w.x fa0, s32222; CHECK-V-NEXT: call __extendhfsf22223; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2224; CHECK-V-NEXT: fmv.w.x fa0, s22225; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma2226; CHECK-V-NEXT: vmv.s.x v8, a02227; CHECK-V-NEXT: addi a0, sp, 162228; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2229; CHECK-V-NEXT: call __extendhfsf22230; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2231; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma2232; CHECK-V-NEXT: vmv.s.x v8, a02233; CHECK-V-NEXT: addi a0, sp, 162234; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload2235; CHECK-V-NEXT: vslideup.vi v8, v9, 12236; CHECK-V-NEXT: csrr a0, vlenb2237; CHECK-V-NEXT: add a0, sp, a02238; CHECK-V-NEXT: addi a0, a0, 162239; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2240; CHECK-V-NEXT: fmv.w.x fa0, s12241; CHECK-V-NEXT: call __extendhfsf22242; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2243; CHECK-V-NEXT: fmv.w.x fa0, s02244; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma2245; CHECK-V-NEXT: vmv.s.x v8, a02246; CHECK-V-NEXT: addi a0, sp, 162247; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2248; CHECK-V-NEXT: call __extendhfsf22249; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz2250; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma2251; CHECK-V-NEXT: vmv.s.x v8, a02252; CHECK-V-NEXT: addi a0, sp, 162253; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload2254; CHECK-V-NEXT: vslideup.vi v8, v9, 12255; CHECK-V-NEXT: csrr a0, vlenb2256; CHECK-V-NEXT: add a0, sp, a02257; CHECK-V-NEXT: addi a0, a0, 162258; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload2259; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma2260; CHECK-V-NEXT: vslideup.vi v8, v9, 22261; CHECK-V-NEXT: csrr a0, vlenb2262; CHECK-V-NEXT: slli a0, a0, 12263; CHECK-V-NEXT: add a0, sp, a02264; CHECK-V-NEXT: addi a0, a0, 162265; CHECK-V-NEXT: vl2r.v v10, (a0) # vscale x 16-byte Folded Reload2266; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma2267; CHECK-V-NEXT: vslideup.vi v8, v10, 42268; CHECK-V-NEXT: vmax.vx v10, v8, zero2269; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma2270; CHECK-V-NEXT: vnclipu.wi v8, v10, 02271; CHECK-V-NEXT: csrr a0, vlenb2272; CHECK-V-NEXT: slli a0, a0, 22273; CHECK-V-NEXT: add sp, sp, a02274; CHECK-V-NEXT: .cfi_def_cfa sp, 802275; CHECK-V-NEXT: ld ra, 72(sp) # 8-byte Folded Reload2276; CHECK-V-NEXT: ld s0, 64(sp) # 8-byte Folded Reload2277; CHECK-V-NEXT: ld s1, 56(sp) # 8-byte Folded Reload2278; CHECK-V-NEXT: ld s2, 48(sp) # 8-byte Folded Reload2279; CHECK-V-NEXT: ld s3, 40(sp) # 8-byte Folded Reload2280; CHECK-V-NEXT: ld s4, 32(sp) # 8-byte Folded Reload2281; CHECK-V-NEXT: ld s5, 24(sp) # 8-byte Folded Reload2282; CHECK-V-NEXT: ld s6, 16(sp) # 8-byte Folded Reload2283; CHECK-V-NEXT: .cfi_restore ra2284; CHECK-V-NEXT: .cfi_restore s02285; CHECK-V-NEXT: .cfi_restore s12286; CHECK-V-NEXT: .cfi_restore s22287; CHECK-V-NEXT: .cfi_restore s32288; CHECK-V-NEXT: .cfi_restore s42289; CHECK-V-NEXT: .cfi_restore s52290; CHECK-V-NEXT: .cfi_restore s62291; CHECK-V-NEXT: addi sp, sp, 802292; CHECK-V-NEXT: .cfi_def_cfa_offset 02293; CHECK-V-NEXT: ret2294entry:2295 %conv = fptosi <8 x half> %x to <8 x i32>2296 %0 = icmp slt <8 x i32> %conv, <i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535>2297 %spec.store.select = select <8 x i1> %0, <8 x i32> %conv, <8 x i32> <i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535>2298 %1 = icmp sgt <8 x i32> %spec.store.select, zeroinitializer2299 %spec.store.select7 = select <8 x i1> %1, <8 x i32> %spec.store.select, <8 x i32> zeroinitializer2300 %conv6 = trunc <8 x i32> %spec.store.select7 to <8 x i16>2301 ret <8 x i16> %conv62302}2303 2304; i64 saturate2305 2306define <2 x i64> @stest_f64i64(<2 x double> %x) {2307; CHECK-NOV-LABEL: stest_f64i64:2308; CHECK-NOV: # %bb.0: # %entry2309; CHECK-NOV-NEXT: addi sp, sp, -322310; CHECK-NOV-NEXT: .cfi_def_cfa_offset 322311; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill2312; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill2313; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill2314; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill2315; CHECK-NOV-NEXT: .cfi_offset ra, -82316; CHECK-NOV-NEXT: .cfi_offset s0, -162317; CHECK-NOV-NEXT: .cfi_offset s1, -242318; CHECK-NOV-NEXT: .cfi_offset fs0, -322319; CHECK-NOV-NEXT: fmv.d fs0, fa12320; CHECK-NOV-NEXT: call __fixdfti2321; CHECK-NOV-NEXT: mv s0, a02322; CHECK-NOV-NEXT: mv s1, a12323; CHECK-NOV-NEXT: fmv.d fa0, fs02324; CHECK-NOV-NEXT: call __fixdfti2325; CHECK-NOV-NEXT: mv a2, a02326; CHECK-NOV-NEXT: li a0, -12327; CHECK-NOV-NEXT: srli a3, a0, 12328; CHECK-NOV-NEXT: beqz a1, .LBB18_32329; CHECK-NOV-NEXT: # %bb.1: # %entry2330; CHECK-NOV-NEXT: srli a4, a1, 632331; CHECK-NOV-NEXT: bnez s1, .LBB18_42332; CHECK-NOV-NEXT: .LBB18_2:2333; CHECK-NOV-NEXT: sltu a5, s0, a32334; CHECK-NOV-NEXT: beqz a5, .LBB18_52335; CHECK-NOV-NEXT: j .LBB18_62336; CHECK-NOV-NEXT: .LBB18_3:2337; CHECK-NOV-NEXT: sltu a4, a2, a32338; CHECK-NOV-NEXT: beqz s1, .LBB18_22339; CHECK-NOV-NEXT: .LBB18_4: # %entry2340; CHECK-NOV-NEXT: srli a5, s1, 632341; CHECK-NOV-NEXT: bnez a5, .LBB18_62342; CHECK-NOV-NEXT: .LBB18_5: # %entry2343; CHECK-NOV-NEXT: mv s0, a32344; CHECK-NOV-NEXT: .LBB18_6: # %entry2345; CHECK-NOV-NEXT: neg a6, a52346; CHECK-NOV-NEXT: neg a5, a42347; CHECK-NOV-NEXT: and a5, a5, a12348; CHECK-NOV-NEXT: bnez a4, .LBB18_82349; CHECK-NOV-NEXT: # %bb.7: # %entry2350; CHECK-NOV-NEXT: mv a2, a32351; CHECK-NOV-NEXT: .LBB18_8: # %entry2352; CHECK-NOV-NEXT: and a4, a6, s12353; CHECK-NOV-NEXT: slli a1, a0, 632354; CHECK-NOV-NEXT: beq a5, a0, .LBB18_112355; CHECK-NOV-NEXT: # %bb.9: # %entry2356; CHECK-NOV-NEXT: srli a5, a5, 632357; CHECK-NOV-NEXT: xori a3, a5, 12358; CHECK-NOV-NEXT: bne a4, a0, .LBB18_122359; CHECK-NOV-NEXT: .LBB18_10:2360; CHECK-NOV-NEXT: sltu a0, a1, s02361; CHECK-NOV-NEXT: beqz a0, .LBB18_132362; CHECK-NOV-NEXT: j .LBB18_142363; CHECK-NOV-NEXT: .LBB18_11:2364; CHECK-NOV-NEXT: sltu a3, a1, a22365; CHECK-NOV-NEXT: beq a4, a0, .LBB18_102366; CHECK-NOV-NEXT: .LBB18_12: # %entry2367; CHECK-NOV-NEXT: srli a4, a4, 632368; CHECK-NOV-NEXT: xori a0, a4, 12369; CHECK-NOV-NEXT: bnez a0, .LBB18_142370; CHECK-NOV-NEXT: .LBB18_13: # %entry2371; CHECK-NOV-NEXT: mv s0, a12372; CHECK-NOV-NEXT: .LBB18_14: # %entry2373; CHECK-NOV-NEXT: bnez a3, .LBB18_162374; CHECK-NOV-NEXT: # %bb.15: # %entry2375; CHECK-NOV-NEXT: mv a2, a12376; CHECK-NOV-NEXT: .LBB18_16: # %entry2377; CHECK-NOV-NEXT: mv a0, s02378; CHECK-NOV-NEXT: mv a1, a22379; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload2380; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload2381; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload2382; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload2383; CHECK-NOV-NEXT: .cfi_restore ra2384; CHECK-NOV-NEXT: .cfi_restore s02385; CHECK-NOV-NEXT: .cfi_restore s12386; CHECK-NOV-NEXT: .cfi_restore fs02387; CHECK-NOV-NEXT: addi sp, sp, 322388; CHECK-NOV-NEXT: .cfi_def_cfa_offset 02389; CHECK-NOV-NEXT: ret2390;2391; CHECK-V-LABEL: stest_f64i64:2392; CHECK-V: # %bb.0: # %entry2393; CHECK-V-NEXT: addi sp, sp, -642394; CHECK-V-NEXT: .cfi_def_cfa_offset 642395; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill2396; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill2397; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill2398; CHECK-V-NEXT: .cfi_offset ra, -82399; CHECK-V-NEXT: .cfi_offset s0, -162400; CHECK-V-NEXT: .cfi_offset s1, -242401; CHECK-V-NEXT: csrr a0, vlenb2402; CHECK-V-NEXT: sub sp, sp, a02403; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb2404; CHECK-V-NEXT: addi a0, sp, 322405; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2406; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma2407; CHECK-V-NEXT: vslidedown.vi v9, v8, 12408; CHECK-V-NEXT: vfmv.f.s fa0, v92409; CHECK-V-NEXT: call __fixdfti2410; CHECK-V-NEXT: mv s0, a02411; CHECK-V-NEXT: mv s1, a12412; CHECK-V-NEXT: fld fa0, 32(sp) # 8-byte Folded Reload2413; CHECK-V-NEXT: call __fixdfti2414; CHECK-V-NEXT: li a2, -12415; CHECK-V-NEXT: srli a3, a2, 12416; CHECK-V-NEXT: beqz a1, .LBB18_32417; CHECK-V-NEXT: # %bb.1: # %entry2418; CHECK-V-NEXT: srli a4, a1, 632419; CHECK-V-NEXT: bnez s1, .LBB18_42420; CHECK-V-NEXT: .LBB18_2:2421; CHECK-V-NEXT: sltu a5, s0, a32422; CHECK-V-NEXT: beqz a5, .LBB18_52423; CHECK-V-NEXT: j .LBB18_62424; CHECK-V-NEXT: .LBB18_3:2425; CHECK-V-NEXT: sltu a4, a0, a32426; CHECK-V-NEXT: beqz s1, .LBB18_22427; CHECK-V-NEXT: .LBB18_4: # %entry2428; CHECK-V-NEXT: srli a5, s1, 632429; CHECK-V-NEXT: bnez a5, .LBB18_62430; CHECK-V-NEXT: .LBB18_5: # %entry2431; CHECK-V-NEXT: mv s0, a32432; CHECK-V-NEXT: .LBB18_6: # %entry2433; CHECK-V-NEXT: neg a6, a52434; CHECK-V-NEXT: neg a5, a42435; CHECK-V-NEXT: and a5, a5, a12436; CHECK-V-NEXT: bnez a4, .LBB18_82437; CHECK-V-NEXT: # %bb.7: # %entry2438; CHECK-V-NEXT: mv a0, a32439; CHECK-V-NEXT: .LBB18_8: # %entry2440; CHECK-V-NEXT: and a4, a6, s12441; CHECK-V-NEXT: slli a1, a2, 632442; CHECK-V-NEXT: beq a5, a2, .LBB18_112443; CHECK-V-NEXT: # %bb.9: # %entry2444; CHECK-V-NEXT: srli a5, a5, 632445; CHECK-V-NEXT: xori a3, a5, 12446; CHECK-V-NEXT: bne a4, a2, .LBB18_122447; CHECK-V-NEXT: .LBB18_10:2448; CHECK-V-NEXT: sltu a2, a1, s02449; CHECK-V-NEXT: beqz a2, .LBB18_132450; CHECK-V-NEXT: j .LBB18_142451; CHECK-V-NEXT: .LBB18_11:2452; CHECK-V-NEXT: sltu a3, a1, a02453; CHECK-V-NEXT: beq a4, a2, .LBB18_102454; CHECK-V-NEXT: .LBB18_12: # %entry2455; CHECK-V-NEXT: srli a4, a4, 632456; CHECK-V-NEXT: xori a2, a4, 12457; CHECK-V-NEXT: bnez a2, .LBB18_142458; CHECK-V-NEXT: .LBB18_13: # %entry2459; CHECK-V-NEXT: mv s0, a12460; CHECK-V-NEXT: .LBB18_14: # %entry2461; CHECK-V-NEXT: bnez a3, .LBB18_162462; CHECK-V-NEXT: # %bb.15: # %entry2463; CHECK-V-NEXT: mv a0, a12464; CHECK-V-NEXT: .LBB18_16: # %entry2465; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma2466; CHECK-V-NEXT: vmv.s.x v8, a02467; CHECK-V-NEXT: vmv.s.x v9, s02468; CHECK-V-NEXT: vslideup.vi v8, v9, 12469; CHECK-V-NEXT: csrr a0, vlenb2470; CHECK-V-NEXT: add sp, sp, a02471; CHECK-V-NEXT: .cfi_def_cfa sp, 642472; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload2473; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload2474; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload2475; CHECK-V-NEXT: .cfi_restore ra2476; CHECK-V-NEXT: .cfi_restore s02477; CHECK-V-NEXT: .cfi_restore s12478; CHECK-V-NEXT: addi sp, sp, 642479; CHECK-V-NEXT: .cfi_def_cfa_offset 02480; CHECK-V-NEXT: ret2481entry:2482 %conv = fptosi <2 x double> %x to <2 x i128>2483 %0 = icmp slt <2 x i128> %conv, <i128 9223372036854775807, i128 9223372036854775807>2484 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 9223372036854775807, i128 9223372036854775807>2485 %1 = icmp sgt <2 x i128> %spec.store.select, <i128 -9223372036854775808, i128 -9223372036854775808>2486 %spec.store.select7 = select <2 x i1> %1, <2 x i128> %spec.store.select, <2 x i128> <i128 -9223372036854775808, i128 -9223372036854775808>2487 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>2488 ret <2 x i64> %conv62489}2490 2491define <2 x i64> @utest_f64i64(<2 x double> %x) {2492; CHECK-NOV-LABEL: utest_f64i64:2493; CHECK-NOV: # %bb.0: # %entry2494; CHECK-NOV-NEXT: addi sp, sp, -322495; CHECK-NOV-NEXT: .cfi_def_cfa_offset 322496; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill2497; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill2498; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill2499; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill2500; CHECK-NOV-NEXT: .cfi_offset ra, -82501; CHECK-NOV-NEXT: .cfi_offset s0, -162502; CHECK-NOV-NEXT: .cfi_offset s1, -242503; CHECK-NOV-NEXT: .cfi_offset fs0, -322504; CHECK-NOV-NEXT: fmv.d fs0, fa12505; CHECK-NOV-NEXT: call __fixunsdfti2506; CHECK-NOV-NEXT: mv s0, a02507; CHECK-NOV-NEXT: mv s1, a12508; CHECK-NOV-NEXT: fmv.d fa0, fs02509; CHECK-NOV-NEXT: call __fixunsdfti2510; CHECK-NOV-NEXT: snez a1, a12511; CHECK-NOV-NEXT: snez a2, s12512; CHECK-NOV-NEXT: addi a2, a2, -12513; CHECK-NOV-NEXT: addi a1, a1, -12514; CHECK-NOV-NEXT: and a2, a2, s02515; CHECK-NOV-NEXT: and a1, a1, a02516; CHECK-NOV-NEXT: mv a0, a22517; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload2518; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload2519; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload2520; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload2521; CHECK-NOV-NEXT: .cfi_restore ra2522; CHECK-NOV-NEXT: .cfi_restore s02523; CHECK-NOV-NEXT: .cfi_restore s12524; CHECK-NOV-NEXT: .cfi_restore fs02525; CHECK-NOV-NEXT: addi sp, sp, 322526; CHECK-NOV-NEXT: .cfi_def_cfa_offset 02527; CHECK-NOV-NEXT: ret2528;2529; CHECK-V-LABEL: utest_f64i64:2530; CHECK-V: # %bb.0: # %entry2531; CHECK-V-NEXT: addi sp, sp, -642532; CHECK-V-NEXT: .cfi_def_cfa_offset 642533; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill2534; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill2535; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill2536; CHECK-V-NEXT: .cfi_offset ra, -82537; CHECK-V-NEXT: .cfi_offset s0, -162538; CHECK-V-NEXT: .cfi_offset s1, -242539; CHECK-V-NEXT: csrr a0, vlenb2540; CHECK-V-NEXT: sub sp, sp, a02541; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb2542; CHECK-V-NEXT: addi a0, sp, 322543; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2544; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma2545; CHECK-V-NEXT: vslidedown.vi v9, v8, 12546; CHECK-V-NEXT: vfmv.f.s fa0, v92547; CHECK-V-NEXT: call __fixunsdfti2548; CHECK-V-NEXT: mv s0, a02549; CHECK-V-NEXT: mv s1, a12550; CHECK-V-NEXT: fld fa0, 32(sp) # 8-byte Folded Reload2551; CHECK-V-NEXT: call __fixunsdfti2552; CHECK-V-NEXT: snez a1, a12553; CHECK-V-NEXT: snez a2, s12554; CHECK-V-NEXT: addi a2, a2, -12555; CHECK-V-NEXT: addi a1, a1, -12556; CHECK-V-NEXT: and a2, a2, s02557; CHECK-V-NEXT: and a0, a1, a02558; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma2559; CHECK-V-NEXT: vmv.s.x v8, a02560; CHECK-V-NEXT: vmv.s.x v9, a22561; CHECK-V-NEXT: vslideup.vi v8, v9, 12562; CHECK-V-NEXT: csrr a0, vlenb2563; CHECK-V-NEXT: add sp, sp, a02564; CHECK-V-NEXT: .cfi_def_cfa sp, 642565; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload2566; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload2567; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload2568; CHECK-V-NEXT: .cfi_restore ra2569; CHECK-V-NEXT: .cfi_restore s02570; CHECK-V-NEXT: .cfi_restore s12571; CHECK-V-NEXT: addi sp, sp, 642572; CHECK-V-NEXT: .cfi_def_cfa_offset 02573; CHECK-V-NEXT: ret2574entry:2575 %conv = fptoui <2 x double> %x to <2 x i128>2576 %0 = icmp ult <2 x i128> %conv, <i128 18446744073709551616, i128 18446744073709551616>2577 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>2578 %conv6 = trunc <2 x i128> %spec.store.select to <2 x i64>2579 ret <2 x i64> %conv62580}2581 2582define <2 x i64> @ustest_f64i64(<2 x double> %x) {2583; CHECK-NOV-LABEL: ustest_f64i64:2584; CHECK-NOV: # %bb.0: # %entry2585; CHECK-NOV-NEXT: addi sp, sp, -322586; CHECK-NOV-NEXT: .cfi_def_cfa_offset 322587; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill2588; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill2589; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill2590; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill2591; CHECK-NOV-NEXT: .cfi_offset ra, -82592; CHECK-NOV-NEXT: .cfi_offset s0, -162593; CHECK-NOV-NEXT: .cfi_offset s1, -242594; CHECK-NOV-NEXT: .cfi_offset fs0, -322595; CHECK-NOV-NEXT: fmv.d fs0, fa12596; CHECK-NOV-NEXT: call __fixdfti2597; CHECK-NOV-NEXT: mv s0, a02598; CHECK-NOV-NEXT: mv s1, a12599; CHECK-NOV-NEXT: fmv.d fa0, fs02600; CHECK-NOV-NEXT: call __fixdfti2601; CHECK-NOV-NEXT: mv a2, s12602; CHECK-NOV-NEXT: blez s1, .LBB20_22603; CHECK-NOV-NEXT: # %bb.1: # %entry2604; CHECK-NOV-NEXT: li a2, 12605; CHECK-NOV-NEXT: .LBB20_2: # %entry2606; CHECK-NOV-NEXT: slti a3, a1, 12607; CHECK-NOV-NEXT: slti a4, s1, 12608; CHECK-NOV-NEXT: blez a1, .LBB20_42609; CHECK-NOV-NEXT: # %bb.3: # %entry2610; CHECK-NOV-NEXT: li a1, 12611; CHECK-NOV-NEXT: .LBB20_4: # %entry2612; CHECK-NOV-NEXT: neg a4, a42613; CHECK-NOV-NEXT: neg a3, a32614; CHECK-NOV-NEXT: and a3, a3, a02615; CHECK-NOV-NEXT: beqz a1, .LBB20_72616; CHECK-NOV-NEXT: # %bb.5: # %entry2617; CHECK-NOV-NEXT: sgtz a0, a12618; CHECK-NOV-NEXT: and a1, a4, s02619; CHECK-NOV-NEXT: bnez a2, .LBB20_82620; CHECK-NOV-NEXT: .LBB20_6:2621; CHECK-NOV-NEXT: snez a2, a12622; CHECK-NOV-NEXT: j .LBB20_92623; CHECK-NOV-NEXT: .LBB20_7:2624; CHECK-NOV-NEXT: snez a0, a32625; CHECK-NOV-NEXT: and a1, a4, s02626; CHECK-NOV-NEXT: beqz a2, .LBB20_62627; CHECK-NOV-NEXT: .LBB20_8: # %entry2628; CHECK-NOV-NEXT: sgtz a2, a22629; CHECK-NOV-NEXT: .LBB20_9: # %entry2630; CHECK-NOV-NEXT: neg a2, a22631; CHECK-NOV-NEXT: neg a4, a02632; CHECK-NOV-NEXT: and a0, a2, a12633; CHECK-NOV-NEXT: and a1, a4, a32634; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload2635; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload2636; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload2637; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload2638; CHECK-NOV-NEXT: .cfi_restore ra2639; CHECK-NOV-NEXT: .cfi_restore s02640; CHECK-NOV-NEXT: .cfi_restore s12641; CHECK-NOV-NEXT: .cfi_restore fs02642; CHECK-NOV-NEXT: addi sp, sp, 322643; CHECK-NOV-NEXT: .cfi_def_cfa_offset 02644; CHECK-NOV-NEXT: ret2645;2646; CHECK-V-LABEL: ustest_f64i64:2647; CHECK-V: # %bb.0: # %entry2648; CHECK-V-NEXT: addi sp, sp, -642649; CHECK-V-NEXT: .cfi_def_cfa_offset 642650; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill2651; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill2652; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill2653; CHECK-V-NEXT: .cfi_offset ra, -82654; CHECK-V-NEXT: .cfi_offset s0, -162655; CHECK-V-NEXT: .cfi_offset s1, -242656; CHECK-V-NEXT: csrr a0, vlenb2657; CHECK-V-NEXT: sub sp, sp, a02658; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb2659; CHECK-V-NEXT: addi a0, sp, 322660; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2661; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma2662; CHECK-V-NEXT: vslidedown.vi v9, v8, 12663; CHECK-V-NEXT: vfmv.f.s fa0, v92664; CHECK-V-NEXT: call __fixdfti2665; CHECK-V-NEXT: mv s0, a02666; CHECK-V-NEXT: mv s1, a12667; CHECK-V-NEXT: fld fa0, 32(sp) # 8-byte Folded Reload2668; CHECK-V-NEXT: call __fixdfti2669; CHECK-V-NEXT: mv a2, s12670; CHECK-V-NEXT: blez s1, .LBB20_22671; CHECK-V-NEXT: # %bb.1: # %entry2672; CHECK-V-NEXT: li a2, 12673; CHECK-V-NEXT: .LBB20_2: # %entry2674; CHECK-V-NEXT: slti a4, a1, 12675; CHECK-V-NEXT: slti a3, s1, 12676; CHECK-V-NEXT: blez a1, .LBB20_42677; CHECK-V-NEXT: # %bb.3: # %entry2678; CHECK-V-NEXT: li a1, 12679; CHECK-V-NEXT: .LBB20_4: # %entry2680; CHECK-V-NEXT: neg a3, a32681; CHECK-V-NEXT: neg a4, a42682; CHECK-V-NEXT: and a0, a4, a02683; CHECK-V-NEXT: beqz a1, .LBB20_72684; CHECK-V-NEXT: # %bb.5: # %entry2685; CHECK-V-NEXT: sgtz a1, a12686; CHECK-V-NEXT: and a3, a3, s02687; CHECK-V-NEXT: bnez a2, .LBB20_82688; CHECK-V-NEXT: .LBB20_6:2689; CHECK-V-NEXT: snez a2, a32690; CHECK-V-NEXT: j .LBB20_92691; CHECK-V-NEXT: .LBB20_7:2692; CHECK-V-NEXT: snez a1, a02693; CHECK-V-NEXT: and a3, a3, s02694; CHECK-V-NEXT: beqz a2, .LBB20_62695; CHECK-V-NEXT: .LBB20_8: # %entry2696; CHECK-V-NEXT: sgtz a2, a22697; CHECK-V-NEXT: .LBB20_9: # %entry2698; CHECK-V-NEXT: neg a2, a22699; CHECK-V-NEXT: neg a1, a12700; CHECK-V-NEXT: and a2, a2, a32701; CHECK-V-NEXT: and a0, a1, a02702; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma2703; CHECK-V-NEXT: vmv.s.x v8, a02704; CHECK-V-NEXT: vmv.s.x v9, a22705; CHECK-V-NEXT: vslideup.vi v8, v9, 12706; CHECK-V-NEXT: csrr a0, vlenb2707; CHECK-V-NEXT: add sp, sp, a02708; CHECK-V-NEXT: .cfi_def_cfa sp, 642709; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload2710; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload2711; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload2712; CHECK-V-NEXT: .cfi_restore ra2713; CHECK-V-NEXT: .cfi_restore s02714; CHECK-V-NEXT: .cfi_restore s12715; CHECK-V-NEXT: addi sp, sp, 642716; CHECK-V-NEXT: .cfi_def_cfa_offset 02717; CHECK-V-NEXT: ret2718entry:2719 %conv = fptosi <2 x double> %x to <2 x i128>2720 %0 = icmp slt <2 x i128> %conv, <i128 18446744073709551616, i128 18446744073709551616>2721 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>2722 %1 = icmp sgt <2 x i128> %spec.store.select, zeroinitializer2723 %spec.store.select7 = select <2 x i1> %1, <2 x i128> %spec.store.select, <2 x i128> zeroinitializer2724 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>2725 ret <2 x i64> %conv62726}2727 2728define <2 x i64> @stest_f32i64(<2 x float> %x) {2729; CHECK-NOV-LABEL: stest_f32i64:2730; CHECK-NOV: # %bb.0: # %entry2731; CHECK-NOV-NEXT: addi sp, sp, -322732; CHECK-NOV-NEXT: .cfi_def_cfa_offset 322733; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill2734; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill2735; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill2736; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill2737; CHECK-NOV-NEXT: .cfi_offset ra, -82738; CHECK-NOV-NEXT: .cfi_offset s0, -162739; CHECK-NOV-NEXT: .cfi_offset s1, -242740; CHECK-NOV-NEXT: .cfi_offset fs0, -322741; CHECK-NOV-NEXT: fmv.s fs0, fa12742; CHECK-NOV-NEXT: call __fixsfti2743; CHECK-NOV-NEXT: mv s0, a02744; CHECK-NOV-NEXT: mv s1, a12745; CHECK-NOV-NEXT: fmv.s fa0, fs02746; CHECK-NOV-NEXT: call __fixsfti2747; CHECK-NOV-NEXT: mv a2, a02748; CHECK-NOV-NEXT: li a0, -12749; CHECK-NOV-NEXT: srli a3, a0, 12750; CHECK-NOV-NEXT: beqz a1, .LBB21_32751; CHECK-NOV-NEXT: # %bb.1: # %entry2752; CHECK-NOV-NEXT: srli a4, a1, 632753; CHECK-NOV-NEXT: bnez s1, .LBB21_42754; CHECK-NOV-NEXT: .LBB21_2:2755; CHECK-NOV-NEXT: sltu a5, s0, a32756; CHECK-NOV-NEXT: beqz a5, .LBB21_52757; CHECK-NOV-NEXT: j .LBB21_62758; CHECK-NOV-NEXT: .LBB21_3:2759; CHECK-NOV-NEXT: sltu a4, a2, a32760; CHECK-NOV-NEXT: beqz s1, .LBB21_22761; CHECK-NOV-NEXT: .LBB21_4: # %entry2762; CHECK-NOV-NEXT: srli a5, s1, 632763; CHECK-NOV-NEXT: bnez a5, .LBB21_62764; CHECK-NOV-NEXT: .LBB21_5: # %entry2765; CHECK-NOV-NEXT: mv s0, a32766; CHECK-NOV-NEXT: .LBB21_6: # %entry2767; CHECK-NOV-NEXT: neg a6, a52768; CHECK-NOV-NEXT: neg a5, a42769; CHECK-NOV-NEXT: and a5, a5, a12770; CHECK-NOV-NEXT: bnez a4, .LBB21_82771; CHECK-NOV-NEXT: # %bb.7: # %entry2772; CHECK-NOV-NEXT: mv a2, a32773; CHECK-NOV-NEXT: .LBB21_8: # %entry2774; CHECK-NOV-NEXT: and a4, a6, s12775; CHECK-NOV-NEXT: slli a1, a0, 632776; CHECK-NOV-NEXT: beq a5, a0, .LBB21_112777; CHECK-NOV-NEXT: # %bb.9: # %entry2778; CHECK-NOV-NEXT: srli a5, a5, 632779; CHECK-NOV-NEXT: xori a3, a5, 12780; CHECK-NOV-NEXT: bne a4, a0, .LBB21_122781; CHECK-NOV-NEXT: .LBB21_10:2782; CHECK-NOV-NEXT: sltu a0, a1, s02783; CHECK-NOV-NEXT: beqz a0, .LBB21_132784; CHECK-NOV-NEXT: j .LBB21_142785; CHECK-NOV-NEXT: .LBB21_11:2786; CHECK-NOV-NEXT: sltu a3, a1, a22787; CHECK-NOV-NEXT: beq a4, a0, .LBB21_102788; CHECK-NOV-NEXT: .LBB21_12: # %entry2789; CHECK-NOV-NEXT: srli a4, a4, 632790; CHECK-NOV-NEXT: xori a0, a4, 12791; CHECK-NOV-NEXT: bnez a0, .LBB21_142792; CHECK-NOV-NEXT: .LBB21_13: # %entry2793; CHECK-NOV-NEXT: mv s0, a12794; CHECK-NOV-NEXT: .LBB21_14: # %entry2795; CHECK-NOV-NEXT: bnez a3, .LBB21_162796; CHECK-NOV-NEXT: # %bb.15: # %entry2797; CHECK-NOV-NEXT: mv a2, a12798; CHECK-NOV-NEXT: .LBB21_16: # %entry2799; CHECK-NOV-NEXT: mv a0, s02800; CHECK-NOV-NEXT: mv a1, a22801; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload2802; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload2803; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload2804; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload2805; CHECK-NOV-NEXT: .cfi_restore ra2806; CHECK-NOV-NEXT: .cfi_restore s02807; CHECK-NOV-NEXT: .cfi_restore s12808; CHECK-NOV-NEXT: .cfi_restore fs02809; CHECK-NOV-NEXT: addi sp, sp, 322810; CHECK-NOV-NEXT: .cfi_def_cfa_offset 02811; CHECK-NOV-NEXT: ret2812;2813; CHECK-V-LABEL: stest_f32i64:2814; CHECK-V: # %bb.0: # %entry2815; CHECK-V-NEXT: addi sp, sp, -642816; CHECK-V-NEXT: .cfi_def_cfa_offset 642817; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill2818; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill2819; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill2820; CHECK-V-NEXT: .cfi_offset ra, -82821; CHECK-V-NEXT: .cfi_offset s0, -162822; CHECK-V-NEXT: .cfi_offset s1, -242823; CHECK-V-NEXT: csrr a0, vlenb2824; CHECK-V-NEXT: sub sp, sp, a02825; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb2826; CHECK-V-NEXT: addi a0, sp, 322827; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2828; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma2829; CHECK-V-NEXT: vslidedown.vi v9, v8, 12830; CHECK-V-NEXT: vfmv.f.s fa0, v92831; CHECK-V-NEXT: call __fixsfti2832; CHECK-V-NEXT: mv s0, a02833; CHECK-V-NEXT: mv s1, a12834; CHECK-V-NEXT: flw fa0, 32(sp) # 8-byte Folded Reload2835; CHECK-V-NEXT: call __fixsfti2836; CHECK-V-NEXT: li a2, -12837; CHECK-V-NEXT: srli a3, a2, 12838; CHECK-V-NEXT: beqz a1, .LBB21_32839; CHECK-V-NEXT: # %bb.1: # %entry2840; CHECK-V-NEXT: srli a4, a1, 632841; CHECK-V-NEXT: bnez s1, .LBB21_42842; CHECK-V-NEXT: .LBB21_2:2843; CHECK-V-NEXT: sltu a5, s0, a32844; CHECK-V-NEXT: beqz a5, .LBB21_52845; CHECK-V-NEXT: j .LBB21_62846; CHECK-V-NEXT: .LBB21_3:2847; CHECK-V-NEXT: sltu a4, a0, a32848; CHECK-V-NEXT: beqz s1, .LBB21_22849; CHECK-V-NEXT: .LBB21_4: # %entry2850; CHECK-V-NEXT: srli a5, s1, 632851; CHECK-V-NEXT: bnez a5, .LBB21_62852; CHECK-V-NEXT: .LBB21_5: # %entry2853; CHECK-V-NEXT: mv s0, a32854; CHECK-V-NEXT: .LBB21_6: # %entry2855; CHECK-V-NEXT: neg a6, a52856; CHECK-V-NEXT: neg a5, a42857; CHECK-V-NEXT: and a5, a5, a12858; CHECK-V-NEXT: bnez a4, .LBB21_82859; CHECK-V-NEXT: # %bb.7: # %entry2860; CHECK-V-NEXT: mv a0, a32861; CHECK-V-NEXT: .LBB21_8: # %entry2862; CHECK-V-NEXT: and a4, a6, s12863; CHECK-V-NEXT: slli a1, a2, 632864; CHECK-V-NEXT: beq a5, a2, .LBB21_112865; CHECK-V-NEXT: # %bb.9: # %entry2866; CHECK-V-NEXT: srli a5, a5, 632867; CHECK-V-NEXT: xori a3, a5, 12868; CHECK-V-NEXT: bne a4, a2, .LBB21_122869; CHECK-V-NEXT: .LBB21_10:2870; CHECK-V-NEXT: sltu a2, a1, s02871; CHECK-V-NEXT: beqz a2, .LBB21_132872; CHECK-V-NEXT: j .LBB21_142873; CHECK-V-NEXT: .LBB21_11:2874; CHECK-V-NEXT: sltu a3, a1, a02875; CHECK-V-NEXT: beq a4, a2, .LBB21_102876; CHECK-V-NEXT: .LBB21_12: # %entry2877; CHECK-V-NEXT: srli a4, a4, 632878; CHECK-V-NEXT: xori a2, a4, 12879; CHECK-V-NEXT: bnez a2, .LBB21_142880; CHECK-V-NEXT: .LBB21_13: # %entry2881; CHECK-V-NEXT: mv s0, a12882; CHECK-V-NEXT: .LBB21_14: # %entry2883; CHECK-V-NEXT: bnez a3, .LBB21_162884; CHECK-V-NEXT: # %bb.15: # %entry2885; CHECK-V-NEXT: mv a0, a12886; CHECK-V-NEXT: .LBB21_16: # %entry2887; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma2888; CHECK-V-NEXT: vmv.s.x v8, a02889; CHECK-V-NEXT: vmv.s.x v9, s02890; CHECK-V-NEXT: vslideup.vi v8, v9, 12891; CHECK-V-NEXT: csrr a0, vlenb2892; CHECK-V-NEXT: add sp, sp, a02893; CHECK-V-NEXT: .cfi_def_cfa sp, 642894; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload2895; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload2896; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload2897; CHECK-V-NEXT: .cfi_restore ra2898; CHECK-V-NEXT: .cfi_restore s02899; CHECK-V-NEXT: .cfi_restore s12900; CHECK-V-NEXT: addi sp, sp, 642901; CHECK-V-NEXT: .cfi_def_cfa_offset 02902; CHECK-V-NEXT: ret2903entry:2904 %conv = fptosi <2 x float> %x to <2 x i128>2905 %0 = icmp slt <2 x i128> %conv, <i128 9223372036854775807, i128 9223372036854775807>2906 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 9223372036854775807, i128 9223372036854775807>2907 %1 = icmp sgt <2 x i128> %spec.store.select, <i128 -9223372036854775808, i128 -9223372036854775808>2908 %spec.store.select7 = select <2 x i1> %1, <2 x i128> %spec.store.select, <2 x i128> <i128 -9223372036854775808, i128 -9223372036854775808>2909 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>2910 ret <2 x i64> %conv62911}2912 2913define <2 x i64> @utest_f32i64(<2 x float> %x) {2914; CHECK-NOV-LABEL: utest_f32i64:2915; CHECK-NOV: # %bb.0: # %entry2916; CHECK-NOV-NEXT: addi sp, sp, -322917; CHECK-NOV-NEXT: .cfi_def_cfa_offset 322918; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill2919; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill2920; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill2921; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill2922; CHECK-NOV-NEXT: .cfi_offset ra, -82923; CHECK-NOV-NEXT: .cfi_offset s0, -162924; CHECK-NOV-NEXT: .cfi_offset s1, -242925; CHECK-NOV-NEXT: .cfi_offset fs0, -322926; CHECK-NOV-NEXT: fmv.s fs0, fa12927; CHECK-NOV-NEXT: call __fixunssfti2928; CHECK-NOV-NEXT: mv s0, a02929; CHECK-NOV-NEXT: mv s1, a12930; CHECK-NOV-NEXT: fmv.s fa0, fs02931; CHECK-NOV-NEXT: call __fixunssfti2932; CHECK-NOV-NEXT: snez a1, a12933; CHECK-NOV-NEXT: snez a2, s12934; CHECK-NOV-NEXT: addi a2, a2, -12935; CHECK-NOV-NEXT: addi a1, a1, -12936; CHECK-NOV-NEXT: and a2, a2, s02937; CHECK-NOV-NEXT: and a1, a1, a02938; CHECK-NOV-NEXT: mv a0, a22939; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload2940; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload2941; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload2942; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload2943; CHECK-NOV-NEXT: .cfi_restore ra2944; CHECK-NOV-NEXT: .cfi_restore s02945; CHECK-NOV-NEXT: .cfi_restore s12946; CHECK-NOV-NEXT: .cfi_restore fs02947; CHECK-NOV-NEXT: addi sp, sp, 322948; CHECK-NOV-NEXT: .cfi_def_cfa_offset 02949; CHECK-NOV-NEXT: ret2950;2951; CHECK-V-LABEL: utest_f32i64:2952; CHECK-V: # %bb.0: # %entry2953; CHECK-V-NEXT: addi sp, sp, -642954; CHECK-V-NEXT: .cfi_def_cfa_offset 642955; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill2956; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill2957; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill2958; CHECK-V-NEXT: .cfi_offset ra, -82959; CHECK-V-NEXT: .cfi_offset s0, -162960; CHECK-V-NEXT: .cfi_offset s1, -242961; CHECK-V-NEXT: csrr a0, vlenb2962; CHECK-V-NEXT: sub sp, sp, a02963; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb2964; CHECK-V-NEXT: addi a0, sp, 322965; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill2966; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma2967; CHECK-V-NEXT: vslidedown.vi v9, v8, 12968; CHECK-V-NEXT: vfmv.f.s fa0, v92969; CHECK-V-NEXT: call __fixunssfti2970; CHECK-V-NEXT: mv s0, a02971; CHECK-V-NEXT: mv s1, a12972; CHECK-V-NEXT: flw fa0, 32(sp) # 8-byte Folded Reload2973; CHECK-V-NEXT: call __fixunssfti2974; CHECK-V-NEXT: snez a1, a12975; CHECK-V-NEXT: snez a2, s12976; CHECK-V-NEXT: addi a2, a2, -12977; CHECK-V-NEXT: addi a1, a1, -12978; CHECK-V-NEXT: and a2, a2, s02979; CHECK-V-NEXT: and a0, a1, a02980; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma2981; CHECK-V-NEXT: vmv.s.x v8, a02982; CHECK-V-NEXT: vmv.s.x v9, a22983; CHECK-V-NEXT: vslideup.vi v8, v9, 12984; CHECK-V-NEXT: csrr a0, vlenb2985; CHECK-V-NEXT: add sp, sp, a02986; CHECK-V-NEXT: .cfi_def_cfa sp, 642987; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload2988; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload2989; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload2990; CHECK-V-NEXT: .cfi_restore ra2991; CHECK-V-NEXT: .cfi_restore s02992; CHECK-V-NEXT: .cfi_restore s12993; CHECK-V-NEXT: addi sp, sp, 642994; CHECK-V-NEXT: .cfi_def_cfa_offset 02995; CHECK-V-NEXT: ret2996entry:2997 %conv = fptoui <2 x float> %x to <2 x i128>2998 %0 = icmp ult <2 x i128> %conv, <i128 18446744073709551616, i128 18446744073709551616>2999 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>3000 %conv6 = trunc <2 x i128> %spec.store.select to <2 x i64>3001 ret <2 x i64> %conv63002}3003 3004define <2 x i64> @ustest_f32i64(<2 x float> %x) {3005; CHECK-NOV-LABEL: ustest_f32i64:3006; CHECK-NOV: # %bb.0: # %entry3007; CHECK-NOV-NEXT: addi sp, sp, -323008; CHECK-NOV-NEXT: .cfi_def_cfa_offset 323009; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3010; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3011; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3012; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill3013; CHECK-NOV-NEXT: .cfi_offset ra, -83014; CHECK-NOV-NEXT: .cfi_offset s0, -163015; CHECK-NOV-NEXT: .cfi_offset s1, -243016; CHECK-NOV-NEXT: .cfi_offset fs0, -323017; CHECK-NOV-NEXT: fmv.s fs0, fa13018; CHECK-NOV-NEXT: call __fixsfti3019; CHECK-NOV-NEXT: mv s0, a03020; CHECK-NOV-NEXT: mv s1, a13021; CHECK-NOV-NEXT: fmv.s fa0, fs03022; CHECK-NOV-NEXT: call __fixsfti3023; CHECK-NOV-NEXT: mv a2, s13024; CHECK-NOV-NEXT: blez s1, .LBB23_23025; CHECK-NOV-NEXT: # %bb.1: # %entry3026; CHECK-NOV-NEXT: li a2, 13027; CHECK-NOV-NEXT: .LBB23_2: # %entry3028; CHECK-NOV-NEXT: slti a3, a1, 13029; CHECK-NOV-NEXT: slti a4, s1, 13030; CHECK-NOV-NEXT: blez a1, .LBB23_43031; CHECK-NOV-NEXT: # %bb.3: # %entry3032; CHECK-NOV-NEXT: li a1, 13033; CHECK-NOV-NEXT: .LBB23_4: # %entry3034; CHECK-NOV-NEXT: neg a4, a43035; CHECK-NOV-NEXT: neg a3, a33036; CHECK-NOV-NEXT: and a3, a3, a03037; CHECK-NOV-NEXT: beqz a1, .LBB23_73038; CHECK-NOV-NEXT: # %bb.5: # %entry3039; CHECK-NOV-NEXT: sgtz a0, a13040; CHECK-NOV-NEXT: and a1, a4, s03041; CHECK-NOV-NEXT: bnez a2, .LBB23_83042; CHECK-NOV-NEXT: .LBB23_6:3043; CHECK-NOV-NEXT: snez a2, a13044; CHECK-NOV-NEXT: j .LBB23_93045; CHECK-NOV-NEXT: .LBB23_7:3046; CHECK-NOV-NEXT: snez a0, a33047; CHECK-NOV-NEXT: and a1, a4, s03048; CHECK-NOV-NEXT: beqz a2, .LBB23_63049; CHECK-NOV-NEXT: .LBB23_8: # %entry3050; CHECK-NOV-NEXT: sgtz a2, a23051; CHECK-NOV-NEXT: .LBB23_9: # %entry3052; CHECK-NOV-NEXT: neg a2, a23053; CHECK-NOV-NEXT: neg a4, a03054; CHECK-NOV-NEXT: and a0, a2, a13055; CHECK-NOV-NEXT: and a1, a4, a33056; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3057; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3058; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3059; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload3060; CHECK-NOV-NEXT: .cfi_restore ra3061; CHECK-NOV-NEXT: .cfi_restore s03062; CHECK-NOV-NEXT: .cfi_restore s13063; CHECK-NOV-NEXT: .cfi_restore fs03064; CHECK-NOV-NEXT: addi sp, sp, 323065; CHECK-NOV-NEXT: .cfi_def_cfa_offset 03066; CHECK-NOV-NEXT: ret3067;3068; CHECK-V-LABEL: ustest_f32i64:3069; CHECK-V: # %bb.0: # %entry3070; CHECK-V-NEXT: addi sp, sp, -643071; CHECK-V-NEXT: .cfi_def_cfa_offset 643072; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill3073; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill3074; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill3075; CHECK-V-NEXT: .cfi_offset ra, -83076; CHECK-V-NEXT: .cfi_offset s0, -163077; CHECK-V-NEXT: .cfi_offset s1, -243078; CHECK-V-NEXT: csrr a0, vlenb3079; CHECK-V-NEXT: sub sp, sp, a03080; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb3081; CHECK-V-NEXT: addi a0, sp, 323082; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill3083; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma3084; CHECK-V-NEXT: vslidedown.vi v9, v8, 13085; CHECK-V-NEXT: vfmv.f.s fa0, v93086; CHECK-V-NEXT: call __fixsfti3087; CHECK-V-NEXT: mv s0, a03088; CHECK-V-NEXT: mv s1, a13089; CHECK-V-NEXT: flw fa0, 32(sp) # 8-byte Folded Reload3090; CHECK-V-NEXT: call __fixsfti3091; CHECK-V-NEXT: mv a2, s13092; CHECK-V-NEXT: blez s1, .LBB23_23093; CHECK-V-NEXT: # %bb.1: # %entry3094; CHECK-V-NEXT: li a2, 13095; CHECK-V-NEXT: .LBB23_2: # %entry3096; CHECK-V-NEXT: slti a4, a1, 13097; CHECK-V-NEXT: slti a3, s1, 13098; CHECK-V-NEXT: blez a1, .LBB23_43099; CHECK-V-NEXT: # %bb.3: # %entry3100; CHECK-V-NEXT: li a1, 13101; CHECK-V-NEXT: .LBB23_4: # %entry3102; CHECK-V-NEXT: neg a3, a33103; CHECK-V-NEXT: neg a4, a43104; CHECK-V-NEXT: and a0, a4, a03105; CHECK-V-NEXT: beqz a1, .LBB23_73106; CHECK-V-NEXT: # %bb.5: # %entry3107; CHECK-V-NEXT: sgtz a1, a13108; CHECK-V-NEXT: and a3, a3, s03109; CHECK-V-NEXT: bnez a2, .LBB23_83110; CHECK-V-NEXT: .LBB23_6:3111; CHECK-V-NEXT: snez a2, a33112; CHECK-V-NEXT: j .LBB23_93113; CHECK-V-NEXT: .LBB23_7:3114; CHECK-V-NEXT: snez a1, a03115; CHECK-V-NEXT: and a3, a3, s03116; CHECK-V-NEXT: beqz a2, .LBB23_63117; CHECK-V-NEXT: .LBB23_8: # %entry3118; CHECK-V-NEXT: sgtz a2, a23119; CHECK-V-NEXT: .LBB23_9: # %entry3120; CHECK-V-NEXT: neg a2, a23121; CHECK-V-NEXT: neg a1, a13122; CHECK-V-NEXT: and a2, a2, a33123; CHECK-V-NEXT: and a0, a1, a03124; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3125; CHECK-V-NEXT: vmv.s.x v8, a03126; CHECK-V-NEXT: vmv.s.x v9, a23127; CHECK-V-NEXT: vslideup.vi v8, v9, 13128; CHECK-V-NEXT: csrr a0, vlenb3129; CHECK-V-NEXT: add sp, sp, a03130; CHECK-V-NEXT: .cfi_def_cfa sp, 643131; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload3132; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload3133; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload3134; CHECK-V-NEXT: .cfi_restore ra3135; CHECK-V-NEXT: .cfi_restore s03136; CHECK-V-NEXT: .cfi_restore s13137; CHECK-V-NEXT: addi sp, sp, 643138; CHECK-V-NEXT: .cfi_def_cfa_offset 03139; CHECK-V-NEXT: ret3140entry:3141 %conv = fptosi <2 x float> %x to <2 x i128>3142 %0 = icmp slt <2 x i128> %conv, <i128 18446744073709551616, i128 18446744073709551616>3143 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>3144 %1 = icmp sgt <2 x i128> %spec.store.select, zeroinitializer3145 %spec.store.select7 = select <2 x i1> %1, <2 x i128> %spec.store.select, <2 x i128> zeroinitializer3146 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>3147 ret <2 x i64> %conv63148}3149 3150define <2 x i64> @stest_f16i64(<2 x half> %x) {3151; CHECK-NOV-LABEL: stest_f16i64:3152; CHECK-NOV: # %bb.0: # %entry3153; CHECK-NOV-NEXT: addi sp, sp, -323154; CHECK-NOV-NEXT: .cfi_def_cfa_offset 323155; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3156; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3157; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3158; CHECK-NOV-NEXT: sd s2, 0(sp) # 8-byte Folded Spill3159; CHECK-NOV-NEXT: .cfi_offset ra, -83160; CHECK-NOV-NEXT: .cfi_offset s0, -163161; CHECK-NOV-NEXT: .cfi_offset s1, -243162; CHECK-NOV-NEXT: .cfi_offset s2, -323163; CHECK-NOV-NEXT: mv s2, a13164; CHECK-NOV-NEXT: fmv.w.x fa0, a03165; CHECK-NOV-NEXT: call __extendhfsf23166; CHECK-NOV-NEXT: call __fixsfti3167; CHECK-NOV-NEXT: mv s0, a03168; CHECK-NOV-NEXT: mv s1, a13169; CHECK-NOV-NEXT: fmv.w.x fa0, s23170; CHECK-NOV-NEXT: call __extendhfsf23171; CHECK-NOV-NEXT: call __fixsfti3172; CHECK-NOV-NEXT: mv a2, a03173; CHECK-NOV-NEXT: li a0, -13174; CHECK-NOV-NEXT: srli a3, a0, 13175; CHECK-NOV-NEXT: beqz a1, .LBB24_33176; CHECK-NOV-NEXT: # %bb.1: # %entry3177; CHECK-NOV-NEXT: srli a4, a1, 633178; CHECK-NOV-NEXT: bnez s1, .LBB24_43179; CHECK-NOV-NEXT: .LBB24_2:3180; CHECK-NOV-NEXT: sltu a5, s0, a33181; CHECK-NOV-NEXT: beqz a5, .LBB24_53182; CHECK-NOV-NEXT: j .LBB24_63183; CHECK-NOV-NEXT: .LBB24_3:3184; CHECK-NOV-NEXT: sltu a4, a2, a33185; CHECK-NOV-NEXT: beqz s1, .LBB24_23186; CHECK-NOV-NEXT: .LBB24_4: # %entry3187; CHECK-NOV-NEXT: srli a5, s1, 633188; CHECK-NOV-NEXT: bnez a5, .LBB24_63189; CHECK-NOV-NEXT: .LBB24_5: # %entry3190; CHECK-NOV-NEXT: mv s0, a33191; CHECK-NOV-NEXT: .LBB24_6: # %entry3192; CHECK-NOV-NEXT: neg a6, a53193; CHECK-NOV-NEXT: neg a5, a43194; CHECK-NOV-NEXT: and a5, a5, a13195; CHECK-NOV-NEXT: bnez a4, .LBB24_83196; CHECK-NOV-NEXT: # %bb.7: # %entry3197; CHECK-NOV-NEXT: mv a2, a33198; CHECK-NOV-NEXT: .LBB24_8: # %entry3199; CHECK-NOV-NEXT: and a4, a6, s13200; CHECK-NOV-NEXT: slli a1, a0, 633201; CHECK-NOV-NEXT: beq a5, a0, .LBB24_113202; CHECK-NOV-NEXT: # %bb.9: # %entry3203; CHECK-NOV-NEXT: srli a5, a5, 633204; CHECK-NOV-NEXT: xori a3, a5, 13205; CHECK-NOV-NEXT: bne a4, a0, .LBB24_123206; CHECK-NOV-NEXT: .LBB24_10:3207; CHECK-NOV-NEXT: sltu a0, a1, s03208; CHECK-NOV-NEXT: beqz a0, .LBB24_133209; CHECK-NOV-NEXT: j .LBB24_143210; CHECK-NOV-NEXT: .LBB24_11:3211; CHECK-NOV-NEXT: sltu a3, a1, a23212; CHECK-NOV-NEXT: beq a4, a0, .LBB24_103213; CHECK-NOV-NEXT: .LBB24_12: # %entry3214; CHECK-NOV-NEXT: srli a4, a4, 633215; CHECK-NOV-NEXT: xori a0, a4, 13216; CHECK-NOV-NEXT: bnez a0, .LBB24_143217; CHECK-NOV-NEXT: .LBB24_13: # %entry3218; CHECK-NOV-NEXT: mv s0, a13219; CHECK-NOV-NEXT: .LBB24_14: # %entry3220; CHECK-NOV-NEXT: bnez a3, .LBB24_163221; CHECK-NOV-NEXT: # %bb.15: # %entry3222; CHECK-NOV-NEXT: mv a2, a13223; CHECK-NOV-NEXT: .LBB24_16: # %entry3224; CHECK-NOV-NEXT: mv a0, s03225; CHECK-NOV-NEXT: mv a1, a23226; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3227; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3228; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3229; CHECK-NOV-NEXT: ld s2, 0(sp) # 8-byte Folded Reload3230; CHECK-NOV-NEXT: .cfi_restore ra3231; CHECK-NOV-NEXT: .cfi_restore s03232; CHECK-NOV-NEXT: .cfi_restore s13233; CHECK-NOV-NEXT: .cfi_restore s23234; CHECK-NOV-NEXT: addi sp, sp, 323235; CHECK-NOV-NEXT: .cfi_def_cfa_offset 03236; CHECK-NOV-NEXT: ret3237;3238; CHECK-V-LABEL: stest_f16i64:3239; CHECK-V: # %bb.0: # %entry3240; CHECK-V-NEXT: addi sp, sp, -323241; CHECK-V-NEXT: .cfi_def_cfa_offset 323242; CHECK-V-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3243; CHECK-V-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3244; CHECK-V-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3245; CHECK-V-NEXT: sd s2, 0(sp) # 8-byte Folded Spill3246; CHECK-V-NEXT: .cfi_offset ra, -83247; CHECK-V-NEXT: .cfi_offset s0, -163248; CHECK-V-NEXT: .cfi_offset s1, -243249; CHECK-V-NEXT: .cfi_offset s2, -323250; CHECK-V-NEXT: mv s2, a13251; CHECK-V-NEXT: fmv.w.x fa0, a03252; CHECK-V-NEXT: call __extendhfsf23253; CHECK-V-NEXT: call __fixsfti3254; CHECK-V-NEXT: mv s0, a03255; CHECK-V-NEXT: mv s1, a13256; CHECK-V-NEXT: fmv.w.x fa0, s23257; CHECK-V-NEXT: call __extendhfsf23258; CHECK-V-NEXT: call __fixsfti3259; CHECK-V-NEXT: li a2, -13260; CHECK-V-NEXT: srli a3, a2, 13261; CHECK-V-NEXT: beqz a1, .LBB24_33262; CHECK-V-NEXT: # %bb.1: # %entry3263; CHECK-V-NEXT: srli a4, a1, 633264; CHECK-V-NEXT: bnez s1, .LBB24_43265; CHECK-V-NEXT: .LBB24_2:3266; CHECK-V-NEXT: sltu a5, s0, a33267; CHECK-V-NEXT: beqz a5, .LBB24_53268; CHECK-V-NEXT: j .LBB24_63269; CHECK-V-NEXT: .LBB24_3:3270; CHECK-V-NEXT: sltu a4, a0, a33271; CHECK-V-NEXT: beqz s1, .LBB24_23272; CHECK-V-NEXT: .LBB24_4: # %entry3273; CHECK-V-NEXT: srli a5, s1, 633274; CHECK-V-NEXT: bnez a5, .LBB24_63275; CHECK-V-NEXT: .LBB24_5: # %entry3276; CHECK-V-NEXT: mv s0, a33277; CHECK-V-NEXT: .LBB24_6: # %entry3278; CHECK-V-NEXT: neg a6, a53279; CHECK-V-NEXT: neg a5, a43280; CHECK-V-NEXT: and a5, a5, a13281; CHECK-V-NEXT: bnez a4, .LBB24_83282; CHECK-V-NEXT: # %bb.7: # %entry3283; CHECK-V-NEXT: mv a0, a33284; CHECK-V-NEXT: .LBB24_8: # %entry3285; CHECK-V-NEXT: and a4, a6, s13286; CHECK-V-NEXT: slli a1, a2, 633287; CHECK-V-NEXT: beq a5, a2, .LBB24_113288; CHECK-V-NEXT: # %bb.9: # %entry3289; CHECK-V-NEXT: srli a5, a5, 633290; CHECK-V-NEXT: xori a3, a5, 13291; CHECK-V-NEXT: bne a4, a2, .LBB24_123292; CHECK-V-NEXT: .LBB24_10:3293; CHECK-V-NEXT: sltu a2, a1, s03294; CHECK-V-NEXT: beqz a2, .LBB24_133295; CHECK-V-NEXT: j .LBB24_143296; CHECK-V-NEXT: .LBB24_11:3297; CHECK-V-NEXT: sltu a3, a1, a03298; CHECK-V-NEXT: beq a4, a2, .LBB24_103299; CHECK-V-NEXT: .LBB24_12: # %entry3300; CHECK-V-NEXT: srli a4, a4, 633301; CHECK-V-NEXT: xori a2, a4, 13302; CHECK-V-NEXT: bnez a2, .LBB24_143303; CHECK-V-NEXT: .LBB24_13: # %entry3304; CHECK-V-NEXT: mv s0, a13305; CHECK-V-NEXT: .LBB24_14: # %entry3306; CHECK-V-NEXT: bnez a3, .LBB24_163307; CHECK-V-NEXT: # %bb.15: # %entry3308; CHECK-V-NEXT: mv a0, a13309; CHECK-V-NEXT: .LBB24_16: # %entry3310; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3311; CHECK-V-NEXT: vmv.s.x v9, a03312; CHECK-V-NEXT: vmv.s.x v8, s03313; CHECK-V-NEXT: vslideup.vi v8, v9, 13314; CHECK-V-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3315; CHECK-V-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3316; CHECK-V-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3317; CHECK-V-NEXT: ld s2, 0(sp) # 8-byte Folded Reload3318; CHECK-V-NEXT: .cfi_restore ra3319; CHECK-V-NEXT: .cfi_restore s03320; CHECK-V-NEXT: .cfi_restore s13321; CHECK-V-NEXT: .cfi_restore s23322; CHECK-V-NEXT: addi sp, sp, 323323; CHECK-V-NEXT: .cfi_def_cfa_offset 03324; CHECK-V-NEXT: ret3325entry:3326 %conv = fptosi <2 x half> %x to <2 x i128>3327 %0 = icmp slt <2 x i128> %conv, <i128 9223372036854775807, i128 9223372036854775807>3328 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 9223372036854775807, i128 9223372036854775807>3329 %1 = icmp sgt <2 x i128> %spec.store.select, <i128 -9223372036854775808, i128 -9223372036854775808>3330 %spec.store.select7 = select <2 x i1> %1, <2 x i128> %spec.store.select, <2 x i128> <i128 -9223372036854775808, i128 -9223372036854775808>3331 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>3332 ret <2 x i64> %conv63333}3334 3335define <2 x i64> @utest_f16i64(<2 x half> %x) {3336; CHECK-NOV-LABEL: utest_f16i64:3337; CHECK-NOV: # %bb.0: # %entry3338; CHECK-NOV-NEXT: addi sp, sp, -323339; CHECK-NOV-NEXT: .cfi_def_cfa_offset 323340; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3341; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3342; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3343; CHECK-NOV-NEXT: sd s2, 0(sp) # 8-byte Folded Spill3344; CHECK-NOV-NEXT: .cfi_offset ra, -83345; CHECK-NOV-NEXT: .cfi_offset s0, -163346; CHECK-NOV-NEXT: .cfi_offset s1, -243347; CHECK-NOV-NEXT: .cfi_offset s2, -323348; CHECK-NOV-NEXT: mv s0, a13349; CHECK-NOV-NEXT: fmv.w.x fa0, a03350; CHECK-NOV-NEXT: call __extendhfsf23351; CHECK-NOV-NEXT: call __fixunssfti3352; CHECK-NOV-NEXT: mv s1, a03353; CHECK-NOV-NEXT: mv s2, a13354; CHECK-NOV-NEXT: fmv.w.x fa0, s03355; CHECK-NOV-NEXT: call __extendhfsf23356; CHECK-NOV-NEXT: call __fixunssfti3357; CHECK-NOV-NEXT: snez a1, a13358; CHECK-NOV-NEXT: snez a2, s23359; CHECK-NOV-NEXT: addi a2, a2, -13360; CHECK-NOV-NEXT: addi a1, a1, -13361; CHECK-NOV-NEXT: and a2, a2, s13362; CHECK-NOV-NEXT: and a1, a1, a03363; CHECK-NOV-NEXT: mv a0, a23364; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3365; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3366; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3367; CHECK-NOV-NEXT: ld s2, 0(sp) # 8-byte Folded Reload3368; CHECK-NOV-NEXT: .cfi_restore ra3369; CHECK-NOV-NEXT: .cfi_restore s03370; CHECK-NOV-NEXT: .cfi_restore s13371; CHECK-NOV-NEXT: .cfi_restore s23372; CHECK-NOV-NEXT: addi sp, sp, 323373; CHECK-NOV-NEXT: .cfi_def_cfa_offset 03374; CHECK-NOV-NEXT: ret3375;3376; CHECK-V-LABEL: utest_f16i64:3377; CHECK-V: # %bb.0: # %entry3378; CHECK-V-NEXT: addi sp, sp, -323379; CHECK-V-NEXT: .cfi_def_cfa_offset 323380; CHECK-V-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3381; CHECK-V-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3382; CHECK-V-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3383; CHECK-V-NEXT: sd s2, 0(sp) # 8-byte Folded Spill3384; CHECK-V-NEXT: .cfi_offset ra, -83385; CHECK-V-NEXT: .cfi_offset s0, -163386; CHECK-V-NEXT: .cfi_offset s1, -243387; CHECK-V-NEXT: .cfi_offset s2, -323388; CHECK-V-NEXT: mv s0, a13389; CHECK-V-NEXT: fmv.w.x fa0, a03390; CHECK-V-NEXT: call __extendhfsf23391; CHECK-V-NEXT: call __fixunssfti3392; CHECK-V-NEXT: mv s1, a03393; CHECK-V-NEXT: mv s2, a13394; CHECK-V-NEXT: fmv.w.x fa0, s03395; CHECK-V-NEXT: call __extendhfsf23396; CHECK-V-NEXT: call __fixunssfti3397; CHECK-V-NEXT: snez a1, a13398; CHECK-V-NEXT: snez a2, s23399; CHECK-V-NEXT: addi a2, a2, -13400; CHECK-V-NEXT: addi a1, a1, -13401; CHECK-V-NEXT: and a2, a2, s13402; CHECK-V-NEXT: and a0, a1, a03403; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3404; CHECK-V-NEXT: vmv.s.x v9, a03405; CHECK-V-NEXT: vmv.s.x v8, a23406; CHECK-V-NEXT: vslideup.vi v8, v9, 13407; CHECK-V-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3408; CHECK-V-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3409; CHECK-V-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3410; CHECK-V-NEXT: ld s2, 0(sp) # 8-byte Folded Reload3411; CHECK-V-NEXT: .cfi_restore ra3412; CHECK-V-NEXT: .cfi_restore s03413; CHECK-V-NEXT: .cfi_restore s13414; CHECK-V-NEXT: .cfi_restore s23415; CHECK-V-NEXT: addi sp, sp, 323416; CHECK-V-NEXT: .cfi_def_cfa_offset 03417; CHECK-V-NEXT: ret3418entry:3419 %conv = fptoui <2 x half> %x to <2 x i128>3420 %0 = icmp ult <2 x i128> %conv, <i128 18446744073709551616, i128 18446744073709551616>3421 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>3422 %conv6 = trunc <2 x i128> %spec.store.select to <2 x i64>3423 ret <2 x i64> %conv63424}3425 3426define <2 x i64> @ustest_f16i64(<2 x half> %x) {3427; CHECK-NOV-LABEL: ustest_f16i64:3428; CHECK-NOV: # %bb.0: # %entry3429; CHECK-NOV-NEXT: addi sp, sp, -323430; CHECK-NOV-NEXT: .cfi_def_cfa_offset 323431; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3432; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3433; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3434; CHECK-NOV-NEXT: sd s2, 0(sp) # 8-byte Folded Spill3435; CHECK-NOV-NEXT: .cfi_offset ra, -83436; CHECK-NOV-NEXT: .cfi_offset s0, -163437; CHECK-NOV-NEXT: .cfi_offset s1, -243438; CHECK-NOV-NEXT: .cfi_offset s2, -323439; CHECK-NOV-NEXT: mv s2, a13440; CHECK-NOV-NEXT: fmv.w.x fa0, a03441; CHECK-NOV-NEXT: call __extendhfsf23442; CHECK-NOV-NEXT: call __fixsfti3443; CHECK-NOV-NEXT: mv s0, a03444; CHECK-NOV-NEXT: mv s1, a13445; CHECK-NOV-NEXT: fmv.w.x fa0, s23446; CHECK-NOV-NEXT: call __extendhfsf23447; CHECK-NOV-NEXT: call __fixsfti3448; CHECK-NOV-NEXT: mv a2, s13449; CHECK-NOV-NEXT: blez s1, .LBB26_23450; CHECK-NOV-NEXT: # %bb.1: # %entry3451; CHECK-NOV-NEXT: li a2, 13452; CHECK-NOV-NEXT: .LBB26_2: # %entry3453; CHECK-NOV-NEXT: slti a3, a1, 13454; CHECK-NOV-NEXT: slti a4, s1, 13455; CHECK-NOV-NEXT: blez a1, .LBB26_43456; CHECK-NOV-NEXT: # %bb.3: # %entry3457; CHECK-NOV-NEXT: li a1, 13458; CHECK-NOV-NEXT: .LBB26_4: # %entry3459; CHECK-NOV-NEXT: neg a4, a43460; CHECK-NOV-NEXT: neg a3, a33461; CHECK-NOV-NEXT: and a3, a3, a03462; CHECK-NOV-NEXT: beqz a1, .LBB26_73463; CHECK-NOV-NEXT: # %bb.5: # %entry3464; CHECK-NOV-NEXT: sgtz a0, a13465; CHECK-NOV-NEXT: and a1, a4, s03466; CHECK-NOV-NEXT: bnez a2, .LBB26_83467; CHECK-NOV-NEXT: .LBB26_6:3468; CHECK-NOV-NEXT: snez a2, a13469; CHECK-NOV-NEXT: j .LBB26_93470; CHECK-NOV-NEXT: .LBB26_7:3471; CHECK-NOV-NEXT: snez a0, a33472; CHECK-NOV-NEXT: and a1, a4, s03473; CHECK-NOV-NEXT: beqz a2, .LBB26_63474; CHECK-NOV-NEXT: .LBB26_8: # %entry3475; CHECK-NOV-NEXT: sgtz a2, a23476; CHECK-NOV-NEXT: .LBB26_9: # %entry3477; CHECK-NOV-NEXT: neg a2, a23478; CHECK-NOV-NEXT: neg a4, a03479; CHECK-NOV-NEXT: and a0, a2, a13480; CHECK-NOV-NEXT: and a1, a4, a33481; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3482; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3483; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3484; CHECK-NOV-NEXT: ld s2, 0(sp) # 8-byte Folded Reload3485; CHECK-NOV-NEXT: .cfi_restore ra3486; CHECK-NOV-NEXT: .cfi_restore s03487; CHECK-NOV-NEXT: .cfi_restore s13488; CHECK-NOV-NEXT: .cfi_restore s23489; CHECK-NOV-NEXT: addi sp, sp, 323490; CHECK-NOV-NEXT: .cfi_def_cfa_offset 03491; CHECK-NOV-NEXT: ret3492;3493; CHECK-V-LABEL: ustest_f16i64:3494; CHECK-V: # %bb.0: # %entry3495; CHECK-V-NEXT: addi sp, sp, -323496; CHECK-V-NEXT: .cfi_def_cfa_offset 323497; CHECK-V-NEXT: sd ra, 24(sp) # 8-byte Folded Spill3498; CHECK-V-NEXT: sd s0, 16(sp) # 8-byte Folded Spill3499; CHECK-V-NEXT: sd s1, 8(sp) # 8-byte Folded Spill3500; CHECK-V-NEXT: sd s2, 0(sp) # 8-byte Folded Spill3501; CHECK-V-NEXT: .cfi_offset ra, -83502; CHECK-V-NEXT: .cfi_offset s0, -163503; CHECK-V-NEXT: .cfi_offset s1, -243504; CHECK-V-NEXT: .cfi_offset s2, -323505; CHECK-V-NEXT: mv s2, a13506; CHECK-V-NEXT: fmv.w.x fa0, a03507; CHECK-V-NEXT: call __extendhfsf23508; CHECK-V-NEXT: call __fixsfti3509; CHECK-V-NEXT: mv s0, a03510; CHECK-V-NEXT: mv s1, a13511; CHECK-V-NEXT: fmv.w.x fa0, s23512; CHECK-V-NEXT: call __extendhfsf23513; CHECK-V-NEXT: call __fixsfti3514; CHECK-V-NEXT: mv a2, s13515; CHECK-V-NEXT: blez s1, .LBB26_23516; CHECK-V-NEXT: # %bb.1: # %entry3517; CHECK-V-NEXT: li a2, 13518; CHECK-V-NEXT: .LBB26_2: # %entry3519; CHECK-V-NEXT: slti a4, a1, 13520; CHECK-V-NEXT: slti a3, s1, 13521; CHECK-V-NEXT: blez a1, .LBB26_43522; CHECK-V-NEXT: # %bb.3: # %entry3523; CHECK-V-NEXT: li a1, 13524; CHECK-V-NEXT: .LBB26_4: # %entry3525; CHECK-V-NEXT: neg a3, a33526; CHECK-V-NEXT: neg a4, a43527; CHECK-V-NEXT: and a0, a4, a03528; CHECK-V-NEXT: beqz a1, .LBB26_73529; CHECK-V-NEXT: # %bb.5: # %entry3530; CHECK-V-NEXT: sgtz a1, a13531; CHECK-V-NEXT: and a3, a3, s03532; CHECK-V-NEXT: bnez a2, .LBB26_83533; CHECK-V-NEXT: .LBB26_6:3534; CHECK-V-NEXT: snez a2, a33535; CHECK-V-NEXT: j .LBB26_93536; CHECK-V-NEXT: .LBB26_7:3537; CHECK-V-NEXT: snez a1, a03538; CHECK-V-NEXT: and a3, a3, s03539; CHECK-V-NEXT: beqz a2, .LBB26_63540; CHECK-V-NEXT: .LBB26_8: # %entry3541; CHECK-V-NEXT: sgtz a2, a23542; CHECK-V-NEXT: .LBB26_9: # %entry3543; CHECK-V-NEXT: neg a2, a23544; CHECK-V-NEXT: neg a1, a13545; CHECK-V-NEXT: and a2, a2, a33546; CHECK-V-NEXT: and a0, a1, a03547; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3548; CHECK-V-NEXT: vmv.s.x v9, a03549; CHECK-V-NEXT: vmv.s.x v8, a23550; CHECK-V-NEXT: vslideup.vi v8, v9, 13551; CHECK-V-NEXT: ld ra, 24(sp) # 8-byte Folded Reload3552; CHECK-V-NEXT: ld s0, 16(sp) # 8-byte Folded Reload3553; CHECK-V-NEXT: ld s1, 8(sp) # 8-byte Folded Reload3554; CHECK-V-NEXT: ld s2, 0(sp) # 8-byte Folded Reload3555; CHECK-V-NEXT: .cfi_restore ra3556; CHECK-V-NEXT: .cfi_restore s03557; CHECK-V-NEXT: .cfi_restore s13558; CHECK-V-NEXT: .cfi_restore s23559; CHECK-V-NEXT: addi sp, sp, 323560; CHECK-V-NEXT: .cfi_def_cfa_offset 03561; CHECK-V-NEXT: ret3562entry:3563 %conv = fptosi <2 x half> %x to <2 x i128>3564 %0 = icmp slt <2 x i128> %conv, <i128 18446744073709551616, i128 18446744073709551616>3565 %spec.store.select = select <2 x i1> %0, <2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>3566 %1 = icmp sgt <2 x i128> %spec.store.select, zeroinitializer3567 %spec.store.select7 = select <2 x i1> %1, <2 x i128> %spec.store.select, <2 x i128> zeroinitializer3568 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>3569 ret <2 x i64> %conv63570}3571 3572; i32 saturate3573 3574define <2 x i32> @stest_f64i32_mm(<2 x double> %x) {3575; CHECK-NOV-LABEL: stest_f64i32_mm:3576; CHECK-NOV: # %bb.0: # %entry3577; CHECK-NOV-NEXT: fcvt.l.d a1, fa1, rtz3578; CHECK-NOV-NEXT: lui a2, 5242883579; CHECK-NOV-NEXT: addiw a3, a2, -13580; CHECK-NOV-NEXT: fcvt.l.d a0, fa0, rtz3581; CHECK-NOV-NEXT: bge a1, a3, .LBB27_53582; CHECK-NOV-NEXT: # %bb.1: # %entry3583; CHECK-NOV-NEXT: bge a0, a3, .LBB27_63584; CHECK-NOV-NEXT: .LBB27_2: # %entry3585; CHECK-NOV-NEXT: bge a2, a0, .LBB27_73586; CHECK-NOV-NEXT: .LBB27_3: # %entry3587; CHECK-NOV-NEXT: bge a2, a1, .LBB27_83588; CHECK-NOV-NEXT: .LBB27_4: # %entry3589; CHECK-NOV-NEXT: ret3590; CHECK-NOV-NEXT: .LBB27_5: # %entry3591; CHECK-NOV-NEXT: mv a1, a33592; CHECK-NOV-NEXT: blt a0, a3, .LBB27_23593; CHECK-NOV-NEXT: .LBB27_6: # %entry3594; CHECK-NOV-NEXT: mv a0, a33595; CHECK-NOV-NEXT: blt a2, a3, .LBB27_33596; CHECK-NOV-NEXT: .LBB27_7: # %entry3597; CHECK-NOV-NEXT: lui a0, 5242883598; CHECK-NOV-NEXT: blt a2, a1, .LBB27_43599; CHECK-NOV-NEXT: .LBB27_8: # %entry3600; CHECK-NOV-NEXT: lui a1, 5242883601; CHECK-NOV-NEXT: ret3602;3603; CHECK-V-LABEL: stest_f64i32_mm:3604; CHECK-V: # %bb.0: # %entry3605; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3606; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v83607; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma3608; CHECK-V-NEXT: vnclip.wi v8, v8, 03609; CHECK-V-NEXT: ret3610entry:3611 %conv = fptosi <2 x double> %x to <2 x i64>3612 %spec.store.select = call <2 x i64> @llvm.smin.v2i64(<2 x i64> %conv, <2 x i64> <i64 2147483647, i64 2147483647>)3613 %spec.store.select7 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> %spec.store.select, <2 x i64> <i64 -2147483648, i64 -2147483648>)3614 %conv6 = trunc <2 x i64> %spec.store.select7 to <2 x i32>3615 ret <2 x i32> %conv63616}3617 3618define <2 x i32> @utest_f64i32_mm(<2 x double> %x) {3619; CHECK-NOV-LABEL: utest_f64i32_mm:3620; CHECK-NOV: # %bb.0: # %entry3621; CHECK-NOV-NEXT: fcvt.lu.d a0, fa0, rtz3622; CHECK-NOV-NEXT: li a2, -13623; CHECK-NOV-NEXT: srli a2, a2, 323624; CHECK-NOV-NEXT: fcvt.lu.d a1, fa1, rtz3625; CHECK-NOV-NEXT: bgeu a0, a2, .LBB28_33626; CHECK-NOV-NEXT: # %bb.1: # %entry3627; CHECK-NOV-NEXT: bgeu a1, a2, .LBB28_43628; CHECK-NOV-NEXT: .LBB28_2: # %entry3629; CHECK-NOV-NEXT: ret3630; CHECK-NOV-NEXT: .LBB28_3: # %entry3631; CHECK-NOV-NEXT: mv a0, a23632; CHECK-NOV-NEXT: bltu a1, a2, .LBB28_23633; CHECK-NOV-NEXT: .LBB28_4: # %entry3634; CHECK-NOV-NEXT: mv a1, a23635; CHECK-NOV-NEXT: ret3636;3637; CHECK-V-LABEL: utest_f64i32_mm:3638; CHECK-V: # %bb.0: # %entry3639; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3640; CHECK-V-NEXT: vfcvt.rtz.xu.f.v v8, v83641; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma3642; CHECK-V-NEXT: vnclipu.wi v8, v8, 03643; CHECK-V-NEXT: ret3644entry:3645 %conv = fptoui <2 x double> %x to <2 x i64>3646 %spec.store.select = call <2 x i64> @llvm.umin.v2i64(<2 x i64> %conv, <2 x i64> <i64 4294967295, i64 4294967295>)3647 %conv6 = trunc <2 x i64> %spec.store.select to <2 x i32>3648 ret <2 x i32> %conv63649}3650 3651define <2 x i32> @ustest_f64i32_mm(<2 x double> %x) {3652; CHECK-NOV-LABEL: ustest_f64i32_mm:3653; CHECK-NOV: # %bb.0: # %entry3654; CHECK-NOV-NEXT: fcvt.l.d a1, fa1, rtz3655; CHECK-NOV-NEXT: li a2, -13656; CHECK-NOV-NEXT: srli a2, a2, 323657; CHECK-NOV-NEXT: fcvt.l.d a0, fa0, rtz3658; CHECK-NOV-NEXT: blt a1, a2, .LBB29_23659; CHECK-NOV-NEXT: # %bb.1: # %entry3660; CHECK-NOV-NEXT: mv a1, a23661; CHECK-NOV-NEXT: .LBB29_2: # %entry3662; CHECK-NOV-NEXT: blt a0, a2, .LBB29_43663; CHECK-NOV-NEXT: # %bb.3: # %entry3664; CHECK-NOV-NEXT: mv a0, a23665; CHECK-NOV-NEXT: .LBB29_4: # %entry3666; CHECK-NOV-NEXT: sgtz a2, a03667; CHECK-NOV-NEXT: neg a2, a23668; CHECK-NOV-NEXT: and a0, a2, a03669; CHECK-NOV-NEXT: sgtz a2, a13670; CHECK-NOV-NEXT: neg a2, a23671; CHECK-NOV-NEXT: and a1, a2, a13672; CHECK-NOV-NEXT: ret3673;3674; CHECK-V-LABEL: ustest_f64i32_mm:3675; CHECK-V: # %bb.0: # %entry3676; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma3677; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v83678; CHECK-V-NEXT: vmax.vx v8, v8, zero3679; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma3680; CHECK-V-NEXT: vnclipu.wi v8, v8, 03681; CHECK-V-NEXT: ret3682entry:3683 %conv = fptosi <2 x double> %x to <2 x i64>3684 %spec.store.select = call <2 x i64> @llvm.smin.v2i64(<2 x i64> %conv, <2 x i64> <i64 4294967295, i64 4294967295>)3685 %spec.store.select7 = call <2 x i64> @llvm.smax.v2i64(<2 x i64> %spec.store.select, <2 x i64> zeroinitializer)3686 %conv6 = trunc <2 x i64> %spec.store.select7 to <2 x i32>3687 ret <2 x i32> %conv63688}3689 3690define <4 x i32> @stest_f32i32_mm(<4 x float> %x) {3691; CHECK-NOV-LABEL: stest_f32i32_mm:3692; CHECK-NOV: # %bb.0: # %entry3693; CHECK-NOV-NEXT: fcvt.l.s a1, fa3, rtz3694; CHECK-NOV-NEXT: lui a3, 5242883695; CHECK-NOV-NEXT: addiw a6, a3, -13696; CHECK-NOV-NEXT: fcvt.l.s a2, fa2, rtz3697; CHECK-NOV-NEXT: bge a1, a6, .LBB30_103698; CHECK-NOV-NEXT: # %bb.1: # %entry3699; CHECK-NOV-NEXT: fcvt.l.s a4, fa1, rtz3700; CHECK-NOV-NEXT: bge a2, a6, .LBB30_113701; CHECK-NOV-NEXT: .LBB30_2: # %entry3702; CHECK-NOV-NEXT: fcvt.l.s a5, fa0, rtz3703; CHECK-NOV-NEXT: bge a4, a6, .LBB30_123704; CHECK-NOV-NEXT: .LBB30_3: # %entry3705; CHECK-NOV-NEXT: bge a5, a6, .LBB30_133706; CHECK-NOV-NEXT: .LBB30_4: # %entry3707; CHECK-NOV-NEXT: bge a3, a5, .LBB30_143708; CHECK-NOV-NEXT: .LBB30_5: # %entry3709; CHECK-NOV-NEXT: bge a3, a4, .LBB30_153710; CHECK-NOV-NEXT: .LBB30_6: # %entry3711; CHECK-NOV-NEXT: bge a3, a2, .LBB30_163712; CHECK-NOV-NEXT: .LBB30_7: # %entry3713; CHECK-NOV-NEXT: blt a3, a1, .LBB30_93714; CHECK-NOV-NEXT: .LBB30_8: # %entry3715; CHECK-NOV-NEXT: lui a1, 5242883716; CHECK-NOV-NEXT: .LBB30_9: # %entry3717; CHECK-NOV-NEXT: sw a5, 0(a0)3718; CHECK-NOV-NEXT: sw a4, 4(a0)3719; CHECK-NOV-NEXT: sw a2, 8(a0)3720; CHECK-NOV-NEXT: sw a1, 12(a0)3721; CHECK-NOV-NEXT: ret3722; CHECK-NOV-NEXT: .LBB30_10: # %entry3723; CHECK-NOV-NEXT: mv a1, a63724; CHECK-NOV-NEXT: fcvt.l.s a4, fa1, rtz3725; CHECK-NOV-NEXT: blt a2, a6, .LBB30_23726; CHECK-NOV-NEXT: .LBB30_11: # %entry3727; CHECK-NOV-NEXT: mv a2, a63728; CHECK-NOV-NEXT: fcvt.l.s a5, fa0, rtz3729; CHECK-NOV-NEXT: blt a4, a6, .LBB30_33730; CHECK-NOV-NEXT: .LBB30_12: # %entry3731; CHECK-NOV-NEXT: mv a4, a63732; CHECK-NOV-NEXT: blt a5, a6, .LBB30_43733; CHECK-NOV-NEXT: .LBB30_13: # %entry3734; CHECK-NOV-NEXT: mv a5, a63735; CHECK-NOV-NEXT: blt a3, a6, .LBB30_53736; CHECK-NOV-NEXT: .LBB30_14: # %entry3737; CHECK-NOV-NEXT: lui a5, 5242883738; CHECK-NOV-NEXT: blt a3, a4, .LBB30_63739; CHECK-NOV-NEXT: .LBB30_15: # %entry3740; CHECK-NOV-NEXT: lui a4, 5242883741; CHECK-NOV-NEXT: blt a3, a2, .LBB30_73742; CHECK-NOV-NEXT: .LBB30_16: # %entry3743; CHECK-NOV-NEXT: lui a2, 5242883744; CHECK-NOV-NEXT: bge a3, a1, .LBB30_83745; CHECK-NOV-NEXT: j .LBB30_93746;3747; CHECK-V-LABEL: stest_f32i32_mm:3748; CHECK-V: # %bb.0: # %entry3749; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma3750; CHECK-V-NEXT: vfwcvt.rtz.x.f.v v10, v83751; CHECK-V-NEXT: vnclip.wi v8, v10, 03752; CHECK-V-NEXT: ret3753entry:3754 %conv = fptosi <4 x float> %x to <4 x i64>3755 %spec.store.select = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %conv, <4 x i64> <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>)3756 %spec.store.select7 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> %spec.store.select, <4 x i64> <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>)3757 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>3758 ret <4 x i32> %conv63759}3760 3761define <4 x i32> @utest_f32i32_mm(<4 x float> %x) {3762; CHECK-NOV-LABEL: utest_f32i32_mm:3763; CHECK-NOV: # %bb.0: # %entry3764; CHECK-NOV-NEXT: fcvt.lu.s a1, fa0, rtz3765; CHECK-NOV-NEXT: li a3, -13766; CHECK-NOV-NEXT: srli a3, a3, 323767; CHECK-NOV-NEXT: fcvt.lu.s a2, fa1, rtz3768; CHECK-NOV-NEXT: bgeu a1, a3, .LBB31_63769; CHECK-NOV-NEXT: # %bb.1: # %entry3770; CHECK-NOV-NEXT: fcvt.lu.s a4, fa2, rtz3771; CHECK-NOV-NEXT: bgeu a2, a3, .LBB31_73772; CHECK-NOV-NEXT: .LBB31_2: # %entry3773; CHECK-NOV-NEXT: fcvt.lu.s a5, fa3, rtz3774; CHECK-NOV-NEXT: bgeu a4, a3, .LBB31_83775; CHECK-NOV-NEXT: .LBB31_3: # %entry3776; CHECK-NOV-NEXT: bltu a5, a3, .LBB31_53777; CHECK-NOV-NEXT: .LBB31_4: # %entry3778; CHECK-NOV-NEXT: mv a5, a33779; CHECK-NOV-NEXT: .LBB31_5: # %entry3780; CHECK-NOV-NEXT: sw a1, 0(a0)3781; CHECK-NOV-NEXT: sw a2, 4(a0)3782; CHECK-NOV-NEXT: sw a4, 8(a0)3783; CHECK-NOV-NEXT: sw a5, 12(a0)3784; CHECK-NOV-NEXT: ret3785; CHECK-NOV-NEXT: .LBB31_6: # %entry3786; CHECK-NOV-NEXT: mv a1, a33787; CHECK-NOV-NEXT: fcvt.lu.s a4, fa2, rtz3788; CHECK-NOV-NEXT: bltu a2, a3, .LBB31_23789; CHECK-NOV-NEXT: .LBB31_7: # %entry3790; CHECK-NOV-NEXT: mv a2, a33791; CHECK-NOV-NEXT: fcvt.lu.s a5, fa3, rtz3792; CHECK-NOV-NEXT: bltu a4, a3, .LBB31_33793; CHECK-NOV-NEXT: .LBB31_8: # %entry3794; CHECK-NOV-NEXT: mv a4, a33795; CHECK-NOV-NEXT: bgeu a5, a3, .LBB31_43796; CHECK-NOV-NEXT: j .LBB31_53797;3798; CHECK-V-LABEL: utest_f32i32_mm:3799; CHECK-V: # %bb.0: # %entry3800; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma3801; CHECK-V-NEXT: vfwcvt.rtz.xu.f.v v10, v83802; CHECK-V-NEXT: vnclipu.wi v8, v10, 03803; CHECK-V-NEXT: ret3804entry:3805 %conv = fptoui <4 x float> %x to <4 x i64>3806 %spec.store.select = call <4 x i64> @llvm.umin.v4i64(<4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>)3807 %conv6 = trunc <4 x i64> %spec.store.select to <4 x i32>3808 ret <4 x i32> %conv63809}3810 3811define <4 x i32> @ustest_f32i32_mm(<4 x float> %x) {3812; CHECK-NOV-LABEL: ustest_f32i32_mm:3813; CHECK-NOV: # %bb.0: # %entry3814; CHECK-NOV-NEXT: fcvt.l.s a1, fa3, rtz3815; CHECK-NOV-NEXT: li a3, -13816; CHECK-NOV-NEXT: srli a3, a3, 323817; CHECK-NOV-NEXT: fcvt.l.s a2, fa2, rtz3818; CHECK-NOV-NEXT: bge a1, a3, .LBB32_63819; CHECK-NOV-NEXT: # %bb.1: # %entry3820; CHECK-NOV-NEXT: fcvt.l.s a4, fa1, rtz3821; CHECK-NOV-NEXT: bge a2, a3, .LBB32_73822; CHECK-NOV-NEXT: .LBB32_2: # %entry3823; CHECK-NOV-NEXT: fcvt.l.s a5, fa0, rtz3824; CHECK-NOV-NEXT: bge a4, a3, .LBB32_83825; CHECK-NOV-NEXT: .LBB32_3: # %entry3826; CHECK-NOV-NEXT: blt a5, a3, .LBB32_53827; CHECK-NOV-NEXT: .LBB32_4: # %entry3828; CHECK-NOV-NEXT: mv a5, a33829; CHECK-NOV-NEXT: .LBB32_5: # %entry3830; CHECK-NOV-NEXT: sgtz a3, a53831; CHECK-NOV-NEXT: neg a3, a33832; CHECK-NOV-NEXT: and a3, a3, a53833; CHECK-NOV-NEXT: sgtz a5, a43834; CHECK-NOV-NEXT: neg a5, a53835; CHECK-NOV-NEXT: and a4, a5, a43836; CHECK-NOV-NEXT: sgtz a5, a23837; CHECK-NOV-NEXT: neg a5, a53838; CHECK-NOV-NEXT: and a2, a5, a23839; CHECK-NOV-NEXT: sgtz a5, a13840; CHECK-NOV-NEXT: neg a5, a53841; CHECK-NOV-NEXT: and a1, a5, a13842; CHECK-NOV-NEXT: sw a3, 0(a0)3843; CHECK-NOV-NEXT: sw a4, 4(a0)3844; CHECK-NOV-NEXT: sw a2, 8(a0)3845; CHECK-NOV-NEXT: sw a1, 12(a0)3846; CHECK-NOV-NEXT: ret3847; CHECK-NOV-NEXT: .LBB32_6: # %entry3848; CHECK-NOV-NEXT: mv a1, a33849; CHECK-NOV-NEXT: fcvt.l.s a4, fa1, rtz3850; CHECK-NOV-NEXT: blt a2, a3, .LBB32_23851; CHECK-NOV-NEXT: .LBB32_7: # %entry3852; CHECK-NOV-NEXT: mv a2, a33853; CHECK-NOV-NEXT: fcvt.l.s a5, fa0, rtz3854; CHECK-NOV-NEXT: blt a4, a3, .LBB32_33855; CHECK-NOV-NEXT: .LBB32_8: # %entry3856; CHECK-NOV-NEXT: mv a4, a33857; CHECK-NOV-NEXT: bge a5, a3, .LBB32_43858; CHECK-NOV-NEXT: j .LBB32_53859;3860; CHECK-V-LABEL: ustest_f32i32_mm:3861; CHECK-V: # %bb.0: # %entry3862; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma3863; CHECK-V-NEXT: vfwcvt.rtz.x.f.v v10, v83864; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, ma3865; CHECK-V-NEXT: vmax.vx v10, v10, zero3866; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma3867; CHECK-V-NEXT: vnclipu.wi v8, v10, 03868; CHECK-V-NEXT: ret3869entry:3870 %conv = fptosi <4 x float> %x to <4 x i64>3871 %spec.store.select = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>)3872 %spec.store.select7 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> %spec.store.select, <4 x i64> zeroinitializer)3873 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>3874 ret <4 x i32> %conv63875}3876 3877define <4 x i32> @stest_f16i32_mm(<4 x half> %x) {3878; CHECK-NOV-LABEL: stest_f16i32_mm:3879; CHECK-NOV: # %bb.0: # %entry3880; CHECK-NOV-NEXT: addi sp, sp, -643881; CHECK-NOV-NEXT: .cfi_def_cfa_offset 643882; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill3883; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill3884; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill3885; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill3886; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill3887; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill3888; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill3889; CHECK-NOV-NEXT: fsd fs2, 0(sp) # 8-byte Folded Spill3890; CHECK-NOV-NEXT: .cfi_offset ra, -83891; CHECK-NOV-NEXT: .cfi_offset s0, -163892; CHECK-NOV-NEXT: .cfi_offset s1, -243893; CHECK-NOV-NEXT: .cfi_offset s2, -323894; CHECK-NOV-NEXT: .cfi_offset s3, -403895; CHECK-NOV-NEXT: .cfi_offset fs0, -483896; CHECK-NOV-NEXT: .cfi_offset fs1, -563897; CHECK-NOV-NEXT: .cfi_offset fs2, -643898; CHECK-NOV-NEXT: .cfi_remember_state3899; CHECK-NOV-NEXT: lhu s1, 0(a1)3900; CHECK-NOV-NEXT: lhu s2, 8(a1)3901; CHECK-NOV-NEXT: lhu a2, 16(a1)3902; CHECK-NOV-NEXT: lhu s3, 24(a1)3903; CHECK-NOV-NEXT: mv s0, a03904; CHECK-NOV-NEXT: fmv.w.x fa0, a23905; CHECK-NOV-NEXT: call __extendhfsf23906; CHECK-NOV-NEXT: fmv.s fs2, fa03907; CHECK-NOV-NEXT: fmv.w.x fa0, s23908; CHECK-NOV-NEXT: call __extendhfsf23909; CHECK-NOV-NEXT: fmv.s fs1, fa03910; CHECK-NOV-NEXT: fmv.w.x fa0, s13911; CHECK-NOV-NEXT: call __extendhfsf23912; CHECK-NOV-NEXT: fmv.s fs0, fa03913; CHECK-NOV-NEXT: fmv.w.x fa0, s33914; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz3915; CHECK-NOV-NEXT: call __extendhfsf23916; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz3917; CHECK-NOV-NEXT: lui a1, 5242883918; CHECK-NOV-NEXT: addiw a4, a1, -13919; CHECK-NOV-NEXT: bge a0, a4, .LBB33_103920; CHECK-NOV-NEXT: # %bb.1: # %entry3921; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz3922; CHECK-NOV-NEXT: bge s1, a4, .LBB33_113923; CHECK-NOV-NEXT: .LBB33_2: # %entry3924; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz3925; CHECK-NOV-NEXT: bge a2, a4, .LBB33_123926; CHECK-NOV-NEXT: .LBB33_3: # %entry3927; CHECK-NOV-NEXT: bge a3, a4, .LBB33_133928; CHECK-NOV-NEXT: .LBB33_4: # %entry3929; CHECK-NOV-NEXT: bge a1, a3, .LBB33_143930; CHECK-NOV-NEXT: .LBB33_5: # %entry3931; CHECK-NOV-NEXT: bge a1, a2, .LBB33_153932; CHECK-NOV-NEXT: .LBB33_6: # %entry3933; CHECK-NOV-NEXT: bge a1, s1, .LBB33_163934; CHECK-NOV-NEXT: .LBB33_7: # %entry3935; CHECK-NOV-NEXT: blt a1, a0, .LBB33_93936; CHECK-NOV-NEXT: .LBB33_8: # %entry3937; CHECK-NOV-NEXT: lui a0, 5242883938; CHECK-NOV-NEXT: .LBB33_9: # %entry3939; CHECK-NOV-NEXT: sw a3, 0(s0)3940; CHECK-NOV-NEXT: sw a2, 4(s0)3941; CHECK-NOV-NEXT: sw s1, 8(s0)3942; CHECK-NOV-NEXT: sw a0, 12(s0)3943; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload3944; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload3945; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload3946; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload3947; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload3948; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload3949; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload3950; CHECK-NOV-NEXT: fld fs2, 0(sp) # 8-byte Folded Reload3951; CHECK-NOV-NEXT: .cfi_restore ra3952; CHECK-NOV-NEXT: .cfi_restore s03953; CHECK-NOV-NEXT: .cfi_restore s13954; CHECK-NOV-NEXT: .cfi_restore s23955; CHECK-NOV-NEXT: .cfi_restore s33956; CHECK-NOV-NEXT: .cfi_restore fs03957; CHECK-NOV-NEXT: .cfi_restore fs13958; CHECK-NOV-NEXT: .cfi_restore fs23959; CHECK-NOV-NEXT: addi sp, sp, 643960; CHECK-NOV-NEXT: .cfi_def_cfa_offset 03961; CHECK-NOV-NEXT: ret3962; CHECK-NOV-NEXT: .LBB33_10: # %entry3963; CHECK-NOV-NEXT: .cfi_restore_state3964; CHECK-NOV-NEXT: mv a0, a43965; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz3966; CHECK-NOV-NEXT: blt s1, a4, .LBB33_23967; CHECK-NOV-NEXT: .LBB33_11: # %entry3968; CHECK-NOV-NEXT: mv s1, a43969; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz3970; CHECK-NOV-NEXT: blt a2, a4, .LBB33_33971; CHECK-NOV-NEXT: .LBB33_12: # %entry3972; CHECK-NOV-NEXT: mv a2, a43973; CHECK-NOV-NEXT: blt a3, a4, .LBB33_43974; CHECK-NOV-NEXT: .LBB33_13: # %entry3975; CHECK-NOV-NEXT: mv a3, a43976; CHECK-NOV-NEXT: blt a1, a4, .LBB33_53977; CHECK-NOV-NEXT: .LBB33_14: # %entry3978; CHECK-NOV-NEXT: lui a3, 5242883979; CHECK-NOV-NEXT: blt a1, a2, .LBB33_63980; CHECK-NOV-NEXT: .LBB33_15: # %entry3981; CHECK-NOV-NEXT: lui a2, 5242883982; CHECK-NOV-NEXT: blt a1, s1, .LBB33_73983; CHECK-NOV-NEXT: .LBB33_16: # %entry3984; CHECK-NOV-NEXT: lui s1, 5242883985; CHECK-NOV-NEXT: bge a1, a0, .LBB33_83986; CHECK-NOV-NEXT: j .LBB33_93987;3988; CHECK-V-LABEL: stest_f16i32_mm:3989; CHECK-V: # %bb.0: # %entry3990; CHECK-V-NEXT: addi sp, sp, -483991; CHECK-V-NEXT: .cfi_def_cfa_offset 483992; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill3993; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill3994; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill3995; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill3996; CHECK-V-NEXT: .cfi_offset ra, -83997; CHECK-V-NEXT: .cfi_offset s0, -163998; CHECK-V-NEXT: .cfi_offset s1, -243999; CHECK-V-NEXT: .cfi_offset s2, -324000; CHECK-V-NEXT: csrr a1, vlenb4001; CHECK-V-NEXT: slli a2, a1, 14002; CHECK-V-NEXT: add a1, a2, a14003; CHECK-V-NEXT: sub sp, sp, a14004; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x03, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 3 * vlenb4005; CHECK-V-NEXT: lhu s0, 0(a0)4006; CHECK-V-NEXT: lhu s1, 8(a0)4007; CHECK-V-NEXT: lhu s2, 16(a0)4008; CHECK-V-NEXT: lhu a0, 24(a0)4009; CHECK-V-NEXT: fmv.w.x fa0, a04010; CHECK-V-NEXT: call __extendhfsf24011; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4012; CHECK-V-NEXT: fmv.w.x fa0, s24013; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma4014; CHECK-V-NEXT: vmv.s.x v8, a04015; CHECK-V-NEXT: addi a0, sp, 164016; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill4017; CHECK-V-NEXT: call __extendhfsf24018; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4019; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma4020; CHECK-V-NEXT: vmv.s.x v8, a04021; CHECK-V-NEXT: addi a0, sp, 164022; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload4023; CHECK-V-NEXT: vslideup.vi v8, v9, 14024; CHECK-V-NEXT: csrr a0, vlenb4025; CHECK-V-NEXT: add a0, sp, a04026; CHECK-V-NEXT: addi a0, a0, 164027; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill4028; CHECK-V-NEXT: fmv.w.x fa0, s14029; CHECK-V-NEXT: call __extendhfsf24030; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4031; CHECK-V-NEXT: fmv.w.x fa0, s04032; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma4033; CHECK-V-NEXT: vmv.s.x v8, a04034; CHECK-V-NEXT: addi a0, sp, 164035; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill4036; CHECK-V-NEXT: call __extendhfsf24037; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4038; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma4039; CHECK-V-NEXT: vmv.s.x v10, a04040; CHECK-V-NEXT: addi a0, sp, 164041; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload4042; CHECK-V-NEXT: vslideup.vi v10, v8, 14043; CHECK-V-NEXT: csrr a0, vlenb4044; CHECK-V-NEXT: add a0, sp, a04045; CHECK-V-NEXT: addi a0, a0, 164046; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload4047; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma4048; CHECK-V-NEXT: vslideup.vi v10, v8, 24049; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma4050; CHECK-V-NEXT: vnclip.wi v8, v10, 04051; CHECK-V-NEXT: csrr a0, vlenb4052; CHECK-V-NEXT: slli a1, a0, 14053; CHECK-V-NEXT: add a0, a1, a04054; CHECK-V-NEXT: add sp, sp, a04055; CHECK-V-NEXT: .cfi_def_cfa sp, 484056; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload4057; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload4058; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload4059; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload4060; CHECK-V-NEXT: .cfi_restore ra4061; CHECK-V-NEXT: .cfi_restore s04062; CHECK-V-NEXT: .cfi_restore s14063; CHECK-V-NEXT: .cfi_restore s24064; CHECK-V-NEXT: addi sp, sp, 484065; CHECK-V-NEXT: .cfi_def_cfa_offset 04066; CHECK-V-NEXT: ret4067entry:4068 %conv = fptosi <4 x half> %x to <4 x i64>4069 %spec.store.select = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %conv, <4 x i64> <i64 2147483647, i64 2147483647, i64 2147483647, i64 2147483647>)4070 %spec.store.select7 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> %spec.store.select, <4 x i64> <i64 -2147483648, i64 -2147483648, i64 -2147483648, i64 -2147483648>)4071 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>4072 ret <4 x i32> %conv64073}4074 4075define <4 x i32> @utest_f16i32_mm(<4 x half> %x) {4076; CHECK-NOV-LABEL: utest_f16i32_mm:4077; CHECK-NOV: # %bb.0: # %entry4078; CHECK-NOV-NEXT: addi sp, sp, -644079; CHECK-NOV-NEXT: .cfi_def_cfa_offset 644080; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill4081; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill4082; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill4083; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill4084; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill4085; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill4086; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill4087; CHECK-NOV-NEXT: fsd fs2, 0(sp) # 8-byte Folded Spill4088; CHECK-NOV-NEXT: .cfi_offset ra, -84089; CHECK-NOV-NEXT: .cfi_offset s0, -164090; CHECK-NOV-NEXT: .cfi_offset s1, -244091; CHECK-NOV-NEXT: .cfi_offset s2, -324092; CHECK-NOV-NEXT: .cfi_offset s3, -404093; CHECK-NOV-NEXT: .cfi_offset fs0, -484094; CHECK-NOV-NEXT: .cfi_offset fs1, -564095; CHECK-NOV-NEXT: .cfi_offset fs2, -644096; CHECK-NOV-NEXT: .cfi_remember_state4097; CHECK-NOV-NEXT: lhu s1, 0(a1)4098; CHECK-NOV-NEXT: lhu a2, 8(a1)4099; CHECK-NOV-NEXT: lhu s2, 16(a1)4100; CHECK-NOV-NEXT: lhu s3, 24(a1)4101; CHECK-NOV-NEXT: mv s0, a04102; CHECK-NOV-NEXT: fmv.w.x fa0, a24103; CHECK-NOV-NEXT: call __extendhfsf24104; CHECK-NOV-NEXT: fmv.s fs2, fa04105; CHECK-NOV-NEXT: fmv.w.x fa0, s24106; CHECK-NOV-NEXT: call __extendhfsf24107; CHECK-NOV-NEXT: fmv.s fs1, fa04108; CHECK-NOV-NEXT: fmv.w.x fa0, s34109; CHECK-NOV-NEXT: call __extendhfsf24110; CHECK-NOV-NEXT: fmv.s fs0, fa04111; CHECK-NOV-NEXT: fmv.w.x fa0, s14112; CHECK-NOV-NEXT: fcvt.lu.s s1, fs2, rtz4113; CHECK-NOV-NEXT: call __extendhfsf24114; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz4115; CHECK-NOV-NEXT: li a1, -14116; CHECK-NOV-NEXT: srli a1, a1, 324117; CHECK-NOV-NEXT: bgeu a0, a1, .LBB34_64118; CHECK-NOV-NEXT: # %bb.1: # %entry4119; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz4120; CHECK-NOV-NEXT: bgeu s1, a1, .LBB34_74121; CHECK-NOV-NEXT: .LBB34_2: # %entry4122; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz4123; CHECK-NOV-NEXT: bgeu a2, a1, .LBB34_84124; CHECK-NOV-NEXT: .LBB34_3: # %entry4125; CHECK-NOV-NEXT: bltu a3, a1, .LBB34_54126; CHECK-NOV-NEXT: .LBB34_4: # %entry4127; CHECK-NOV-NEXT: mv a3, a14128; CHECK-NOV-NEXT: .LBB34_5: # %entry4129; CHECK-NOV-NEXT: sw a0, 0(s0)4130; CHECK-NOV-NEXT: sw s1, 4(s0)4131; CHECK-NOV-NEXT: sw a2, 8(s0)4132; CHECK-NOV-NEXT: sw a3, 12(s0)4133; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload4134; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload4135; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload4136; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload4137; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload4138; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload4139; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload4140; CHECK-NOV-NEXT: fld fs2, 0(sp) # 8-byte Folded Reload4141; CHECK-NOV-NEXT: .cfi_restore ra4142; CHECK-NOV-NEXT: .cfi_restore s04143; CHECK-NOV-NEXT: .cfi_restore s14144; CHECK-NOV-NEXT: .cfi_restore s24145; CHECK-NOV-NEXT: .cfi_restore s34146; CHECK-NOV-NEXT: .cfi_restore fs04147; CHECK-NOV-NEXT: .cfi_restore fs14148; CHECK-NOV-NEXT: .cfi_restore fs24149; CHECK-NOV-NEXT: addi sp, sp, 644150; CHECK-NOV-NEXT: .cfi_def_cfa_offset 04151; CHECK-NOV-NEXT: ret4152; CHECK-NOV-NEXT: .LBB34_6: # %entry4153; CHECK-NOV-NEXT: .cfi_restore_state4154; CHECK-NOV-NEXT: mv a0, a14155; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz4156; CHECK-NOV-NEXT: bltu s1, a1, .LBB34_24157; CHECK-NOV-NEXT: .LBB34_7: # %entry4158; CHECK-NOV-NEXT: mv s1, a14159; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz4160; CHECK-NOV-NEXT: bltu a2, a1, .LBB34_34161; CHECK-NOV-NEXT: .LBB34_8: # %entry4162; CHECK-NOV-NEXT: mv a2, a14163; CHECK-NOV-NEXT: bgeu a3, a1, .LBB34_44164; CHECK-NOV-NEXT: j .LBB34_54165;4166; CHECK-V-LABEL: utest_f16i32_mm:4167; CHECK-V: # %bb.0: # %entry4168; CHECK-V-NEXT: addi sp, sp, -484169; CHECK-V-NEXT: .cfi_def_cfa_offset 484170; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill4171; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill4172; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill4173; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill4174; CHECK-V-NEXT: .cfi_offset ra, -84175; CHECK-V-NEXT: .cfi_offset s0, -164176; CHECK-V-NEXT: .cfi_offset s1, -244177; CHECK-V-NEXT: .cfi_offset s2, -324178; CHECK-V-NEXT: csrr a1, vlenb4179; CHECK-V-NEXT: slli a2, a1, 14180; CHECK-V-NEXT: add a1, a2, a14181; CHECK-V-NEXT: sub sp, sp, a14182; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x03, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 3 * vlenb4183; CHECK-V-NEXT: lhu s0, 0(a0)4184; CHECK-V-NEXT: lhu s1, 8(a0)4185; CHECK-V-NEXT: lhu s2, 16(a0)4186; CHECK-V-NEXT: lhu a0, 24(a0)4187; CHECK-V-NEXT: fmv.w.x fa0, a04188; CHECK-V-NEXT: call __extendhfsf24189; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz4190; CHECK-V-NEXT: fmv.w.x fa0, s24191; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma4192; CHECK-V-NEXT: vmv.s.x v8, a04193; CHECK-V-NEXT: addi a0, sp, 164194; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill4195; CHECK-V-NEXT: call __extendhfsf24196; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz4197; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma4198; CHECK-V-NEXT: vmv.s.x v8, a04199; CHECK-V-NEXT: addi a0, sp, 164200; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload4201; CHECK-V-NEXT: vslideup.vi v8, v9, 14202; CHECK-V-NEXT: csrr a0, vlenb4203; CHECK-V-NEXT: add a0, sp, a04204; CHECK-V-NEXT: addi a0, a0, 164205; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill4206; CHECK-V-NEXT: fmv.w.x fa0, s14207; CHECK-V-NEXT: call __extendhfsf24208; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz4209; CHECK-V-NEXT: fmv.w.x fa0, s04210; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma4211; CHECK-V-NEXT: vmv.s.x v8, a04212; CHECK-V-NEXT: addi a0, sp, 164213; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill4214; CHECK-V-NEXT: call __extendhfsf24215; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz4216; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma4217; CHECK-V-NEXT: vmv.s.x v10, a04218; CHECK-V-NEXT: addi a0, sp, 164219; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload4220; CHECK-V-NEXT: vslideup.vi v10, v8, 14221; CHECK-V-NEXT: csrr a0, vlenb4222; CHECK-V-NEXT: add a0, sp, a04223; CHECK-V-NEXT: addi a0, a0, 164224; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload4225; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma4226; CHECK-V-NEXT: vslideup.vi v10, v8, 24227; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma4228; CHECK-V-NEXT: vnclipu.wi v8, v10, 04229; CHECK-V-NEXT: csrr a0, vlenb4230; CHECK-V-NEXT: slli a1, a0, 14231; CHECK-V-NEXT: add a0, a1, a04232; CHECK-V-NEXT: add sp, sp, a04233; CHECK-V-NEXT: .cfi_def_cfa sp, 484234; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload4235; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload4236; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload4237; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload4238; CHECK-V-NEXT: .cfi_restore ra4239; CHECK-V-NEXT: .cfi_restore s04240; CHECK-V-NEXT: .cfi_restore s14241; CHECK-V-NEXT: .cfi_restore s24242; CHECK-V-NEXT: addi sp, sp, 484243; CHECK-V-NEXT: .cfi_def_cfa_offset 04244; CHECK-V-NEXT: ret4245entry:4246 %conv = fptoui <4 x half> %x to <4 x i64>4247 %spec.store.select = call <4 x i64> @llvm.umin.v4i64(<4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>)4248 %conv6 = trunc <4 x i64> %spec.store.select to <4 x i32>4249 ret <4 x i32> %conv64250}4251 4252define <4 x i32> @ustest_f16i32_mm(<4 x half> %x) {4253; CHECK-NOV-LABEL: ustest_f16i32_mm:4254; CHECK-NOV: # %bb.0: # %entry4255; CHECK-NOV-NEXT: addi sp, sp, -644256; CHECK-NOV-NEXT: .cfi_def_cfa_offset 644257; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill4258; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill4259; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill4260; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill4261; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill4262; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill4263; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill4264; CHECK-NOV-NEXT: fsd fs2, 0(sp) # 8-byte Folded Spill4265; CHECK-NOV-NEXT: .cfi_offset ra, -84266; CHECK-NOV-NEXT: .cfi_offset s0, -164267; CHECK-NOV-NEXT: .cfi_offset s1, -244268; CHECK-NOV-NEXT: .cfi_offset s2, -324269; CHECK-NOV-NEXT: .cfi_offset s3, -404270; CHECK-NOV-NEXT: .cfi_offset fs0, -484271; CHECK-NOV-NEXT: .cfi_offset fs1, -564272; CHECK-NOV-NEXT: .cfi_offset fs2, -644273; CHECK-NOV-NEXT: .cfi_remember_state4274; CHECK-NOV-NEXT: lhu s1, 0(a1)4275; CHECK-NOV-NEXT: lhu s2, 8(a1)4276; CHECK-NOV-NEXT: lhu a2, 16(a1)4277; CHECK-NOV-NEXT: lhu s3, 24(a1)4278; CHECK-NOV-NEXT: mv s0, a04279; CHECK-NOV-NEXT: fmv.w.x fa0, a24280; CHECK-NOV-NEXT: call __extendhfsf24281; CHECK-NOV-NEXT: fmv.s fs2, fa04282; CHECK-NOV-NEXT: fmv.w.x fa0, s24283; CHECK-NOV-NEXT: call __extendhfsf24284; CHECK-NOV-NEXT: fmv.s fs1, fa04285; CHECK-NOV-NEXT: fmv.w.x fa0, s14286; CHECK-NOV-NEXT: call __extendhfsf24287; CHECK-NOV-NEXT: fmv.s fs0, fa04288; CHECK-NOV-NEXT: fmv.w.x fa0, s34289; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz4290; CHECK-NOV-NEXT: call __extendhfsf24291; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz4292; CHECK-NOV-NEXT: li a2, -14293; CHECK-NOV-NEXT: srli a2, a2, 324294; CHECK-NOV-NEXT: bge a0, a2, .LBB35_64295; CHECK-NOV-NEXT: # %bb.1: # %entry4296; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz4297; CHECK-NOV-NEXT: bge s1, a2, .LBB35_74298; CHECK-NOV-NEXT: .LBB35_2: # %entry4299; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz4300; CHECK-NOV-NEXT: bge a1, a2, .LBB35_84301; CHECK-NOV-NEXT: .LBB35_3: # %entry4302; CHECK-NOV-NEXT: blt a3, a2, .LBB35_54303; CHECK-NOV-NEXT: .LBB35_4: # %entry4304; CHECK-NOV-NEXT: mv a3, a24305; CHECK-NOV-NEXT: .LBB35_5: # %entry4306; CHECK-NOV-NEXT: sgtz a2, a34307; CHECK-NOV-NEXT: neg a2, a24308; CHECK-NOV-NEXT: and a2, a2, a34309; CHECK-NOV-NEXT: sgtz a3, a14310; CHECK-NOV-NEXT: neg a3, a34311; CHECK-NOV-NEXT: and a1, a3, a14312; CHECK-NOV-NEXT: sgtz a3, s14313; CHECK-NOV-NEXT: neg a3, a34314; CHECK-NOV-NEXT: and a3, a3, s14315; CHECK-NOV-NEXT: sgtz a4, a04316; CHECK-NOV-NEXT: neg a4, a44317; CHECK-NOV-NEXT: and a0, a4, a04318; CHECK-NOV-NEXT: sw a2, 0(s0)4319; CHECK-NOV-NEXT: sw a1, 4(s0)4320; CHECK-NOV-NEXT: sw a3, 8(s0)4321; CHECK-NOV-NEXT: sw a0, 12(s0)4322; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload4323; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload4324; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload4325; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload4326; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload4327; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload4328; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload4329; CHECK-NOV-NEXT: fld fs2, 0(sp) # 8-byte Folded Reload4330; CHECK-NOV-NEXT: .cfi_restore ra4331; CHECK-NOV-NEXT: .cfi_restore s04332; CHECK-NOV-NEXT: .cfi_restore s14333; CHECK-NOV-NEXT: .cfi_restore s24334; CHECK-NOV-NEXT: .cfi_restore s34335; CHECK-NOV-NEXT: .cfi_restore fs04336; CHECK-NOV-NEXT: .cfi_restore fs14337; CHECK-NOV-NEXT: .cfi_restore fs24338; CHECK-NOV-NEXT: addi sp, sp, 644339; CHECK-NOV-NEXT: .cfi_def_cfa_offset 04340; CHECK-NOV-NEXT: ret4341; CHECK-NOV-NEXT: .LBB35_6: # %entry4342; CHECK-NOV-NEXT: .cfi_restore_state4343; CHECK-NOV-NEXT: mv a0, a24344; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz4345; CHECK-NOV-NEXT: blt s1, a2, .LBB35_24346; CHECK-NOV-NEXT: .LBB35_7: # %entry4347; CHECK-NOV-NEXT: mv s1, a24348; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz4349; CHECK-NOV-NEXT: blt a1, a2, .LBB35_34350; CHECK-NOV-NEXT: .LBB35_8: # %entry4351; CHECK-NOV-NEXT: mv a1, a24352; CHECK-NOV-NEXT: bge a3, a2, .LBB35_44353; CHECK-NOV-NEXT: j .LBB35_54354;4355; CHECK-V-LABEL: ustest_f16i32_mm:4356; CHECK-V: # %bb.0: # %entry4357; CHECK-V-NEXT: addi sp, sp, -484358; CHECK-V-NEXT: .cfi_def_cfa_offset 484359; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill4360; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill4361; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill4362; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill4363; CHECK-V-NEXT: .cfi_offset ra, -84364; CHECK-V-NEXT: .cfi_offset s0, -164365; CHECK-V-NEXT: .cfi_offset s1, -244366; CHECK-V-NEXT: .cfi_offset s2, -324367; CHECK-V-NEXT: csrr a1, vlenb4368; CHECK-V-NEXT: slli a2, a1, 14369; CHECK-V-NEXT: add a1, a2, a14370; CHECK-V-NEXT: sub sp, sp, a14371; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x03, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 3 * vlenb4372; CHECK-V-NEXT: lhu s0, 0(a0)4373; CHECK-V-NEXT: lhu s1, 8(a0)4374; CHECK-V-NEXT: lhu s2, 16(a0)4375; CHECK-V-NEXT: lhu a0, 24(a0)4376; CHECK-V-NEXT: fmv.w.x fa0, a04377; CHECK-V-NEXT: call __extendhfsf24378; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4379; CHECK-V-NEXT: fmv.w.x fa0, s24380; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma4381; CHECK-V-NEXT: vmv.s.x v8, a04382; CHECK-V-NEXT: addi a0, sp, 164383; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill4384; CHECK-V-NEXT: call __extendhfsf24385; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4386; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma4387; CHECK-V-NEXT: vmv.s.x v8, a04388; CHECK-V-NEXT: addi a0, sp, 164389; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload4390; CHECK-V-NEXT: vslideup.vi v8, v9, 14391; CHECK-V-NEXT: csrr a0, vlenb4392; CHECK-V-NEXT: add a0, sp, a04393; CHECK-V-NEXT: addi a0, a0, 164394; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill4395; CHECK-V-NEXT: fmv.w.x fa0, s14396; CHECK-V-NEXT: call __extendhfsf24397; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4398; CHECK-V-NEXT: fmv.w.x fa0, s04399; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma4400; CHECK-V-NEXT: vmv.s.x v8, a04401; CHECK-V-NEXT: addi a0, sp, 164402; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill4403; CHECK-V-NEXT: call __extendhfsf24404; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz4405; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma4406; CHECK-V-NEXT: vmv.s.x v8, a04407; CHECK-V-NEXT: addi a0, sp, 164408; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload4409; CHECK-V-NEXT: vslideup.vi v8, v9, 14410; CHECK-V-NEXT: csrr a0, vlenb4411; CHECK-V-NEXT: add a0, sp, a04412; CHECK-V-NEXT: addi a0, a0, 164413; CHECK-V-NEXT: vl2r.v v10, (a0) # vscale x 16-byte Folded Reload4414; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma4415; CHECK-V-NEXT: vslideup.vi v8, v10, 24416; CHECK-V-NEXT: vmax.vx v10, v8, zero4417; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma4418; CHECK-V-NEXT: vnclipu.wi v8, v10, 04419; CHECK-V-NEXT: csrr a0, vlenb4420; CHECK-V-NEXT: slli a1, a0, 14421; CHECK-V-NEXT: add a0, a1, a04422; CHECK-V-NEXT: add sp, sp, a04423; CHECK-V-NEXT: .cfi_def_cfa sp, 484424; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload4425; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload4426; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload4427; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload4428; CHECK-V-NEXT: .cfi_restore ra4429; CHECK-V-NEXT: .cfi_restore s04430; CHECK-V-NEXT: .cfi_restore s14431; CHECK-V-NEXT: .cfi_restore s24432; CHECK-V-NEXT: addi sp, sp, 484433; CHECK-V-NEXT: .cfi_def_cfa_offset 04434; CHECK-V-NEXT: ret4435entry:4436 %conv = fptosi <4 x half> %x to <4 x i64>4437 %spec.store.select = call <4 x i64> @llvm.smin.v4i64(<4 x i64> %conv, <4 x i64> <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>)4438 %spec.store.select7 = call <4 x i64> @llvm.smax.v4i64(<4 x i64> %spec.store.select, <4 x i64> zeroinitializer)4439 %conv6 = trunc <4 x i64> %spec.store.select7 to <4 x i32>4440 ret <4 x i32> %conv64441}4442 4443; i16 saturate4444 4445define <2 x i16> @stest_f64i16_mm(<2 x double> %x) {4446; CHECK-NOV-LABEL: stest_f64i16_mm:4447; CHECK-NOV: # %bb.0: # %entry4448; CHECK-NOV-NEXT: fcvt.w.d a1, fa1, rtz4449; CHECK-NOV-NEXT: lui a2, 84450; CHECK-NOV-NEXT: addi a2, a2, -14451; CHECK-NOV-NEXT: fcvt.w.d a0, fa0, rtz4452; CHECK-NOV-NEXT: bge a1, a2, .LBB36_54453; CHECK-NOV-NEXT: # %bb.1: # %entry4454; CHECK-NOV-NEXT: bge a0, a2, .LBB36_64455; CHECK-NOV-NEXT: .LBB36_2: # %entry4456; CHECK-NOV-NEXT: lui a2, 10485684457; CHECK-NOV-NEXT: bge a2, a0, .LBB36_74458; CHECK-NOV-NEXT: .LBB36_3: # %entry4459; CHECK-NOV-NEXT: bge a2, a1, .LBB36_84460; CHECK-NOV-NEXT: .LBB36_4: # %entry4461; CHECK-NOV-NEXT: ret4462; CHECK-NOV-NEXT: .LBB36_5: # %entry4463; CHECK-NOV-NEXT: mv a1, a24464; CHECK-NOV-NEXT: blt a0, a2, .LBB36_24465; CHECK-NOV-NEXT: .LBB36_6: # %entry4466; CHECK-NOV-NEXT: mv a0, a24467; CHECK-NOV-NEXT: lui a2, 10485684468; CHECK-NOV-NEXT: blt a2, a0, .LBB36_34469; CHECK-NOV-NEXT: .LBB36_7: # %entry4470; CHECK-NOV-NEXT: lui a0, 10485684471; CHECK-NOV-NEXT: blt a2, a1, .LBB36_44472; CHECK-NOV-NEXT: .LBB36_8: # %entry4473; CHECK-NOV-NEXT: lui a1, 10485684474; CHECK-NOV-NEXT: ret4475;4476; CHECK-V-LABEL: stest_f64i16_mm:4477; CHECK-V: # %bb.0: # %entry4478; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4479; CHECK-V-NEXT: vfncvt.rtz.x.f.w v9, v84480; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma4481; CHECK-V-NEXT: vnclip.wi v8, v9, 04482; CHECK-V-NEXT: ret4483entry:4484 %conv = fptosi <2 x double> %x to <2 x i32>4485 %spec.store.select = call <2 x i32> @llvm.smin.v2i32(<2 x i32> %conv, <2 x i32> <i32 32767, i32 32767>)4486 %spec.store.select7 = call <2 x i32> @llvm.smax.v2i32(<2 x i32> %spec.store.select, <2 x i32> <i32 -32768, i32 -32768>)4487 %conv6 = trunc <2 x i32> %spec.store.select7 to <2 x i16>4488 ret <2 x i16> %conv64489}4490 4491define <2 x i16> @utest_f64i16_mm(<2 x double> %x) {4492; CHECK-NOV-LABEL: utest_f64i16_mm:4493; CHECK-NOV: # %bb.0: # %entry4494; CHECK-NOV-NEXT: fcvt.wu.d a0, fa0, rtz4495; CHECK-NOV-NEXT: lui a2, 164496; CHECK-NOV-NEXT: addi a2, a2, -14497; CHECK-NOV-NEXT: fcvt.wu.d a1, fa1, rtz4498; CHECK-NOV-NEXT: bgeu a0, a2, .LBB37_34499; CHECK-NOV-NEXT: # %bb.1: # %entry4500; CHECK-NOV-NEXT: bgeu a1, a2, .LBB37_44501; CHECK-NOV-NEXT: .LBB37_2: # %entry4502; CHECK-NOV-NEXT: ret4503; CHECK-NOV-NEXT: .LBB37_3: # %entry4504; CHECK-NOV-NEXT: mv a0, a24505; CHECK-NOV-NEXT: bltu a1, a2, .LBB37_24506; CHECK-NOV-NEXT: .LBB37_4: # %entry4507; CHECK-NOV-NEXT: mv a1, a24508; CHECK-NOV-NEXT: ret4509;4510; CHECK-V-LABEL: utest_f64i16_mm:4511; CHECK-V: # %bb.0: # %entry4512; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4513; CHECK-V-NEXT: vfncvt.rtz.xu.f.w v9, v84514; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma4515; CHECK-V-NEXT: vnclipu.wi v8, v9, 04516; CHECK-V-NEXT: ret4517entry:4518 %conv = fptoui <2 x double> %x to <2 x i32>4519 %spec.store.select = call <2 x i32> @llvm.umin.v2i32(<2 x i32> %conv, <2 x i32> <i32 65535, i32 65535>)4520 %conv6 = trunc <2 x i32> %spec.store.select to <2 x i16>4521 ret <2 x i16> %conv64522}4523 4524define <2 x i16> @ustest_f64i16_mm(<2 x double> %x) {4525; CHECK-NOV-LABEL: ustest_f64i16_mm:4526; CHECK-NOV: # %bb.0: # %entry4527; CHECK-NOV-NEXT: fcvt.w.d a1, fa1, rtz4528; CHECK-NOV-NEXT: lui a2, 164529; CHECK-NOV-NEXT: addi a2, a2, -14530; CHECK-NOV-NEXT: fcvt.w.d a0, fa0, rtz4531; CHECK-NOV-NEXT: blt a1, a2, .LBB38_24532; CHECK-NOV-NEXT: # %bb.1: # %entry4533; CHECK-NOV-NEXT: mv a1, a24534; CHECK-NOV-NEXT: .LBB38_2: # %entry4535; CHECK-NOV-NEXT: blt a0, a2, .LBB38_44536; CHECK-NOV-NEXT: # %bb.3: # %entry4537; CHECK-NOV-NEXT: mv a0, a24538; CHECK-NOV-NEXT: .LBB38_4: # %entry4539; CHECK-NOV-NEXT: sgtz a2, a04540; CHECK-NOV-NEXT: neg a2, a24541; CHECK-NOV-NEXT: and a0, a2, a04542; CHECK-NOV-NEXT: sgtz a2, a14543; CHECK-NOV-NEXT: neg a2, a24544; CHECK-NOV-NEXT: and a1, a2, a14545; CHECK-NOV-NEXT: ret4546;4547; CHECK-V-LABEL: ustest_f64i16_mm:4548; CHECK-V: # %bb.0: # %entry4549; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma4550; CHECK-V-NEXT: vfncvt.rtz.x.f.w v9, v84551; CHECK-V-NEXT: vmax.vx v8, v9, zero4552; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma4553; CHECK-V-NEXT: vnclipu.wi v8, v8, 04554; CHECK-V-NEXT: ret4555entry:4556 %conv = fptosi <2 x double> %x to <2 x i32>4557 %spec.store.select = call <2 x i32> @llvm.smin.v2i32(<2 x i32> %conv, <2 x i32> <i32 65535, i32 65535>)4558 %spec.store.select7 = call <2 x i32> @llvm.smax.v2i32(<2 x i32> %spec.store.select, <2 x i32> zeroinitializer)4559 %conv6 = trunc <2 x i32> %spec.store.select7 to <2 x i16>4560 ret <2 x i16> %conv64561}4562 4563define <4 x i16> @stest_f32i16_mm(<4 x float> %x) {4564; CHECK-NOV-LABEL: stest_f32i16_mm:4565; CHECK-NOV: # %bb.0: # %entry4566; CHECK-NOV-NEXT: fcvt.w.s a1, fa3, rtz4567; CHECK-NOV-NEXT: lui a5, 84568; CHECK-NOV-NEXT: addi a5, a5, -14569; CHECK-NOV-NEXT: fcvt.w.s a2, fa2, rtz4570; CHECK-NOV-NEXT: bge a1, a5, .LBB39_104571; CHECK-NOV-NEXT: # %bb.1: # %entry4572; CHECK-NOV-NEXT: fcvt.w.s a3, fa1, rtz4573; CHECK-NOV-NEXT: bge a2, a5, .LBB39_114574; CHECK-NOV-NEXT: .LBB39_2: # %entry4575; CHECK-NOV-NEXT: fcvt.w.s a4, fa0, rtz4576; CHECK-NOV-NEXT: bge a3, a5, .LBB39_124577; CHECK-NOV-NEXT: .LBB39_3: # %entry4578; CHECK-NOV-NEXT: bge a4, a5, .LBB39_134579; CHECK-NOV-NEXT: .LBB39_4: # %entry4580; CHECK-NOV-NEXT: lui a5, 10485684581; CHECK-NOV-NEXT: bge a5, a4, .LBB39_144582; CHECK-NOV-NEXT: .LBB39_5: # %entry4583; CHECK-NOV-NEXT: bge a5, a3, .LBB39_154584; CHECK-NOV-NEXT: .LBB39_6: # %entry4585; CHECK-NOV-NEXT: bge a5, a2, .LBB39_164586; CHECK-NOV-NEXT: .LBB39_7: # %entry4587; CHECK-NOV-NEXT: blt a5, a1, .LBB39_94588; CHECK-NOV-NEXT: .LBB39_8: # %entry4589; CHECK-NOV-NEXT: lui a1, 10485684590; CHECK-NOV-NEXT: .LBB39_9: # %entry4591; CHECK-NOV-NEXT: sh a4, 0(a0)4592; CHECK-NOV-NEXT: sh a3, 2(a0)4593; CHECK-NOV-NEXT: sh a2, 4(a0)4594; CHECK-NOV-NEXT: sh a1, 6(a0)4595; CHECK-NOV-NEXT: ret4596; CHECK-NOV-NEXT: .LBB39_10: # %entry4597; CHECK-NOV-NEXT: mv a1, a54598; CHECK-NOV-NEXT: fcvt.w.s a3, fa1, rtz4599; CHECK-NOV-NEXT: blt a2, a5, .LBB39_24600; CHECK-NOV-NEXT: .LBB39_11: # %entry4601; CHECK-NOV-NEXT: mv a2, a54602; CHECK-NOV-NEXT: fcvt.w.s a4, fa0, rtz4603; CHECK-NOV-NEXT: blt a3, a5, .LBB39_34604; CHECK-NOV-NEXT: .LBB39_12: # %entry4605; CHECK-NOV-NEXT: mv a3, a54606; CHECK-NOV-NEXT: blt a4, a5, .LBB39_44607; CHECK-NOV-NEXT: .LBB39_13: # %entry4608; CHECK-NOV-NEXT: mv a4, a54609; CHECK-NOV-NEXT: lui a5, 10485684610; CHECK-NOV-NEXT: blt a5, a4, .LBB39_54611; CHECK-NOV-NEXT: .LBB39_14: # %entry4612; CHECK-NOV-NEXT: lui a4, 10485684613; CHECK-NOV-NEXT: blt a5, a3, .LBB39_64614; CHECK-NOV-NEXT: .LBB39_15: # %entry4615; CHECK-NOV-NEXT: lui a3, 10485684616; CHECK-NOV-NEXT: blt a5, a2, .LBB39_74617; CHECK-NOV-NEXT: .LBB39_16: # %entry4618; CHECK-NOV-NEXT: lui a2, 10485684619; CHECK-NOV-NEXT: bge a5, a1, .LBB39_84620; CHECK-NOV-NEXT: j .LBB39_94621;4622; CHECK-V-LABEL: stest_f32i16_mm:4623; CHECK-V: # %bb.0: # %entry4624; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma4625; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v84626; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma4627; CHECK-V-NEXT: vnclip.wi v8, v8, 04628; CHECK-V-NEXT: ret4629entry:4630 %conv = fptosi <4 x float> %x to <4 x i32>4631 %spec.store.select = call <4 x i32> @llvm.smin.v4i32(<4 x i32> %conv, <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>)4632 %spec.store.select7 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %spec.store.select, <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>)4633 %conv6 = trunc <4 x i32> %spec.store.select7 to <4 x i16>4634 ret <4 x i16> %conv64635}4636 4637define <4 x i16> @utest_f32i16_mm(<4 x float> %x) {4638; CHECK-NOV-LABEL: utest_f32i16_mm:4639; CHECK-NOV: # %bb.0: # %entry4640; CHECK-NOV-NEXT: fcvt.wu.s a1, fa0, rtz4641; CHECK-NOV-NEXT: lui a3, 164642; CHECK-NOV-NEXT: addi a3, a3, -14643; CHECK-NOV-NEXT: fcvt.wu.s a2, fa1, rtz4644; CHECK-NOV-NEXT: bgeu a1, a3, .LBB40_64645; CHECK-NOV-NEXT: # %bb.1: # %entry4646; CHECK-NOV-NEXT: fcvt.wu.s a4, fa2, rtz4647; CHECK-NOV-NEXT: bgeu a2, a3, .LBB40_74648; CHECK-NOV-NEXT: .LBB40_2: # %entry4649; CHECK-NOV-NEXT: fcvt.wu.s a5, fa3, rtz4650; CHECK-NOV-NEXT: bgeu a4, a3, .LBB40_84651; CHECK-NOV-NEXT: .LBB40_3: # %entry4652; CHECK-NOV-NEXT: bltu a5, a3, .LBB40_54653; CHECK-NOV-NEXT: .LBB40_4: # %entry4654; CHECK-NOV-NEXT: mv a5, a34655; CHECK-NOV-NEXT: .LBB40_5: # %entry4656; CHECK-NOV-NEXT: sh a1, 0(a0)4657; CHECK-NOV-NEXT: sh a2, 2(a0)4658; CHECK-NOV-NEXT: sh a4, 4(a0)4659; CHECK-NOV-NEXT: sh a5, 6(a0)4660; CHECK-NOV-NEXT: ret4661; CHECK-NOV-NEXT: .LBB40_6: # %entry4662; CHECK-NOV-NEXT: mv a1, a34663; CHECK-NOV-NEXT: fcvt.wu.s a4, fa2, rtz4664; CHECK-NOV-NEXT: bltu a2, a3, .LBB40_24665; CHECK-NOV-NEXT: .LBB40_7: # %entry4666; CHECK-NOV-NEXT: mv a2, a34667; CHECK-NOV-NEXT: fcvt.wu.s a5, fa3, rtz4668; CHECK-NOV-NEXT: bltu a4, a3, .LBB40_34669; CHECK-NOV-NEXT: .LBB40_8: # %entry4670; CHECK-NOV-NEXT: mv a4, a34671; CHECK-NOV-NEXT: bgeu a5, a3, .LBB40_44672; CHECK-NOV-NEXT: j .LBB40_54673;4674; CHECK-V-LABEL: utest_f32i16_mm:4675; CHECK-V: # %bb.0: # %entry4676; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma4677; CHECK-V-NEXT: vfcvt.rtz.xu.f.v v8, v84678; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma4679; CHECK-V-NEXT: vnclipu.wi v8, v8, 04680; CHECK-V-NEXT: ret4681entry:4682 %conv = fptoui <4 x float> %x to <4 x i32>4683 %spec.store.select = call <4 x i32> @llvm.umin.v4i32(<4 x i32> %conv, <4 x i32> <i32 65535, i32 65535, i32 65535, i32 65535>)4684 %conv6 = trunc <4 x i32> %spec.store.select to <4 x i16>4685 ret <4 x i16> %conv64686}4687 4688define <4 x i16> @ustest_f32i16_mm(<4 x float> %x) {4689; CHECK-NOV-LABEL: ustest_f32i16_mm:4690; CHECK-NOV: # %bb.0: # %entry4691; CHECK-NOV-NEXT: fcvt.w.s a1, fa3, rtz4692; CHECK-NOV-NEXT: lui a3, 164693; CHECK-NOV-NEXT: addi a3, a3, -14694; CHECK-NOV-NEXT: fcvt.w.s a2, fa2, rtz4695; CHECK-NOV-NEXT: bge a1, a3, .LBB41_64696; CHECK-NOV-NEXT: # %bb.1: # %entry4697; CHECK-NOV-NEXT: fcvt.w.s a4, fa1, rtz4698; CHECK-NOV-NEXT: bge a2, a3, .LBB41_74699; CHECK-NOV-NEXT: .LBB41_2: # %entry4700; CHECK-NOV-NEXT: fcvt.w.s a5, fa0, rtz4701; CHECK-NOV-NEXT: bge a4, a3, .LBB41_84702; CHECK-NOV-NEXT: .LBB41_3: # %entry4703; CHECK-NOV-NEXT: blt a5, a3, .LBB41_54704; CHECK-NOV-NEXT: .LBB41_4: # %entry4705; CHECK-NOV-NEXT: mv a5, a34706; CHECK-NOV-NEXT: .LBB41_5: # %entry4707; CHECK-NOV-NEXT: sgtz a3, a54708; CHECK-NOV-NEXT: neg a3, a34709; CHECK-NOV-NEXT: and a3, a3, a54710; CHECK-NOV-NEXT: sgtz a5, a44711; CHECK-NOV-NEXT: neg a5, a54712; CHECK-NOV-NEXT: and a4, a5, a44713; CHECK-NOV-NEXT: sgtz a5, a24714; CHECK-NOV-NEXT: neg a5, a54715; CHECK-NOV-NEXT: and a2, a5, a24716; CHECK-NOV-NEXT: sgtz a5, a14717; CHECK-NOV-NEXT: neg a5, a54718; CHECK-NOV-NEXT: and a1, a5, a14719; CHECK-NOV-NEXT: sh a3, 0(a0)4720; CHECK-NOV-NEXT: sh a4, 2(a0)4721; CHECK-NOV-NEXT: sh a2, 4(a0)4722; CHECK-NOV-NEXT: sh a1, 6(a0)4723; CHECK-NOV-NEXT: ret4724; CHECK-NOV-NEXT: .LBB41_6: # %entry4725; CHECK-NOV-NEXT: mv a1, a34726; CHECK-NOV-NEXT: fcvt.w.s a4, fa1, rtz4727; CHECK-NOV-NEXT: blt a2, a3, .LBB41_24728; CHECK-NOV-NEXT: .LBB41_7: # %entry4729; CHECK-NOV-NEXT: mv a2, a34730; CHECK-NOV-NEXT: fcvt.w.s a5, fa0, rtz4731; CHECK-NOV-NEXT: blt a4, a3, .LBB41_34732; CHECK-NOV-NEXT: .LBB41_8: # %entry4733; CHECK-NOV-NEXT: mv a4, a34734; CHECK-NOV-NEXT: bge a5, a3, .LBB41_44735; CHECK-NOV-NEXT: j .LBB41_54736;4737; CHECK-V-LABEL: ustest_f32i16_mm:4738; CHECK-V: # %bb.0: # %entry4739; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma4740; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v84741; CHECK-V-NEXT: vmax.vx v8, v8, zero4742; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma4743; CHECK-V-NEXT: vnclipu.wi v8, v8, 04744; CHECK-V-NEXT: ret4745entry:4746 %conv = fptosi <4 x float> %x to <4 x i32>4747 %spec.store.select = call <4 x i32> @llvm.smin.v4i32(<4 x i32> %conv, <4 x i32> <i32 65535, i32 65535, i32 65535, i32 65535>)4748 %spec.store.select7 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %spec.store.select, <4 x i32> zeroinitializer)4749 %conv6 = trunc <4 x i32> %spec.store.select7 to <4 x i16>4750 ret <4 x i16> %conv64751}4752 4753define <8 x i16> @stest_f16i16_mm(<8 x half> %x) {4754; CHECK-NOV-LABEL: stest_f16i16_mm:4755; CHECK-NOV: # %bb.0: # %entry4756; CHECK-NOV-NEXT: addi sp, sp, -1284757; CHECK-NOV-NEXT: .cfi_def_cfa_offset 1284758; CHECK-NOV-NEXT: sd ra, 120(sp) # 8-byte Folded Spill4759; CHECK-NOV-NEXT: sd s0, 112(sp) # 8-byte Folded Spill4760; CHECK-NOV-NEXT: sd s1, 104(sp) # 8-byte Folded Spill4761; CHECK-NOV-NEXT: sd s2, 96(sp) # 8-byte Folded Spill4762; CHECK-NOV-NEXT: sd s3, 88(sp) # 8-byte Folded Spill4763; CHECK-NOV-NEXT: sd s4, 80(sp) # 8-byte Folded Spill4764; CHECK-NOV-NEXT: sd s5, 72(sp) # 8-byte Folded Spill4765; CHECK-NOV-NEXT: sd s6, 64(sp) # 8-byte Folded Spill4766; CHECK-NOV-NEXT: sd s7, 56(sp) # 8-byte Folded Spill4767; CHECK-NOV-NEXT: fsd fs0, 48(sp) # 8-byte Folded Spill4768; CHECK-NOV-NEXT: fsd fs1, 40(sp) # 8-byte Folded Spill4769; CHECK-NOV-NEXT: fsd fs2, 32(sp) # 8-byte Folded Spill4770; CHECK-NOV-NEXT: fsd fs3, 24(sp) # 8-byte Folded Spill4771; CHECK-NOV-NEXT: fsd fs4, 16(sp) # 8-byte Folded Spill4772; CHECK-NOV-NEXT: fsd fs5, 8(sp) # 8-byte Folded Spill4773; CHECK-NOV-NEXT: fsd fs6, 0(sp) # 8-byte Folded Spill4774; CHECK-NOV-NEXT: .cfi_offset ra, -84775; CHECK-NOV-NEXT: .cfi_offset s0, -164776; CHECK-NOV-NEXT: .cfi_offset s1, -244777; CHECK-NOV-NEXT: .cfi_offset s2, -324778; CHECK-NOV-NEXT: .cfi_offset s3, -404779; CHECK-NOV-NEXT: .cfi_offset s4, -484780; CHECK-NOV-NEXT: .cfi_offset s5, -564781; CHECK-NOV-NEXT: .cfi_offset s6, -644782; CHECK-NOV-NEXT: .cfi_offset s7, -724783; CHECK-NOV-NEXT: .cfi_offset fs0, -804784; CHECK-NOV-NEXT: .cfi_offset fs1, -884785; CHECK-NOV-NEXT: .cfi_offset fs2, -964786; CHECK-NOV-NEXT: .cfi_offset fs3, -1044787; CHECK-NOV-NEXT: .cfi_offset fs4, -1124788; CHECK-NOV-NEXT: .cfi_offset fs5, -1204789; CHECK-NOV-NEXT: .cfi_offset fs6, -1284790; CHECK-NOV-NEXT: .cfi_remember_state4791; CHECK-NOV-NEXT: lhu s1, 32(a1)4792; CHECK-NOV-NEXT: lhu s2, 40(a1)4793; CHECK-NOV-NEXT: lhu a2, 48(a1)4794; CHECK-NOV-NEXT: lhu s3, 56(a1)4795; CHECK-NOV-NEXT: lhu s4, 0(a1)4796; CHECK-NOV-NEXT: lhu s5, 8(a1)4797; CHECK-NOV-NEXT: lhu s6, 16(a1)4798; CHECK-NOV-NEXT: lhu s7, 24(a1)4799; CHECK-NOV-NEXT: mv s0, a04800; CHECK-NOV-NEXT: fmv.w.x fa0, a24801; CHECK-NOV-NEXT: call __extendhfsf24802; CHECK-NOV-NEXT: fmv.s fs6, fa04803; CHECK-NOV-NEXT: fmv.w.x fa0, s24804; CHECK-NOV-NEXT: call __extendhfsf24805; CHECK-NOV-NEXT: fmv.s fs5, fa04806; CHECK-NOV-NEXT: fmv.w.x fa0, s14807; CHECK-NOV-NEXT: call __extendhfsf24808; CHECK-NOV-NEXT: fmv.s fs4, fa04809; CHECK-NOV-NEXT: fmv.w.x fa0, s74810; CHECK-NOV-NEXT: call __extendhfsf24811; CHECK-NOV-NEXT: fmv.s fs3, fa04812; CHECK-NOV-NEXT: fmv.w.x fa0, s64813; CHECK-NOV-NEXT: call __extendhfsf24814; CHECK-NOV-NEXT: fmv.s fs2, fa04815; CHECK-NOV-NEXT: fmv.w.x fa0, s54816; CHECK-NOV-NEXT: call __extendhfsf24817; CHECK-NOV-NEXT: fmv.s fs1, fa04818; CHECK-NOV-NEXT: fmv.w.x fa0, s44819; CHECK-NOV-NEXT: call __extendhfsf24820; CHECK-NOV-NEXT: fmv.s fs0, fa04821; CHECK-NOV-NEXT: fmv.w.x fa0, s34822; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz4823; CHECK-NOV-NEXT: call __extendhfsf24824; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz4825; CHECK-NOV-NEXT: lui a7, 84826; CHECK-NOV-NEXT: addi a7, a7, -14827; CHECK-NOV-NEXT: bge a0, a7, .LBB42_184828; CHECK-NOV-NEXT: # %bb.1: # %entry4829; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz4830; CHECK-NOV-NEXT: bge s1, a7, .LBB42_194831; CHECK-NOV-NEXT: .LBB42_2: # %entry4832; CHECK-NOV-NEXT: fcvt.l.s a3, fs4, rtz4833; CHECK-NOV-NEXT: bge a1, a7, .LBB42_204834; CHECK-NOV-NEXT: .LBB42_3: # %entry4835; CHECK-NOV-NEXT: fcvt.l.s a2, fs3, rtz4836; CHECK-NOV-NEXT: bge a3, a7, .LBB42_214837; CHECK-NOV-NEXT: .LBB42_4: # %entry4838; CHECK-NOV-NEXT: fcvt.l.s a4, fs2, rtz4839; CHECK-NOV-NEXT: bge a2, a7, .LBB42_224840; CHECK-NOV-NEXT: .LBB42_5: # %entry4841; CHECK-NOV-NEXT: fcvt.l.s a5, fs1, rtz4842; CHECK-NOV-NEXT: bge a4, a7, .LBB42_234843; CHECK-NOV-NEXT: .LBB42_6: # %entry4844; CHECK-NOV-NEXT: fcvt.l.s a6, fs0, rtz4845; CHECK-NOV-NEXT: bge a5, a7, .LBB42_244846; CHECK-NOV-NEXT: .LBB42_7: # %entry4847; CHECK-NOV-NEXT: bge a6, a7, .LBB42_254848; CHECK-NOV-NEXT: .LBB42_8: # %entry4849; CHECK-NOV-NEXT: lui a7, 10485684850; CHECK-NOV-NEXT: bge a7, a6, .LBB42_264851; CHECK-NOV-NEXT: .LBB42_9: # %entry4852; CHECK-NOV-NEXT: bge a7, a5, .LBB42_274853; CHECK-NOV-NEXT: .LBB42_10: # %entry4854; CHECK-NOV-NEXT: bge a7, a4, .LBB42_284855; CHECK-NOV-NEXT: .LBB42_11: # %entry4856; CHECK-NOV-NEXT: bge a7, a2, .LBB42_294857; CHECK-NOV-NEXT: .LBB42_12: # %entry4858; CHECK-NOV-NEXT: bge a7, a3, .LBB42_304859; CHECK-NOV-NEXT: .LBB42_13: # %entry4860; CHECK-NOV-NEXT: bge a7, a1, .LBB42_314861; CHECK-NOV-NEXT: .LBB42_14: # %entry4862; CHECK-NOV-NEXT: bge a7, s1, .LBB42_324863; CHECK-NOV-NEXT: .LBB42_15: # %entry4864; CHECK-NOV-NEXT: blt a7, a0, .LBB42_174865; CHECK-NOV-NEXT: .LBB42_16: # %entry4866; CHECK-NOV-NEXT: lui a0, 10485684867; CHECK-NOV-NEXT: .LBB42_17: # %entry4868; CHECK-NOV-NEXT: sh a3, 8(s0)4869; CHECK-NOV-NEXT: sh a1, 10(s0)4870; CHECK-NOV-NEXT: sh s1, 12(s0)4871; CHECK-NOV-NEXT: sh a0, 14(s0)4872; CHECK-NOV-NEXT: sh a6, 0(s0)4873; CHECK-NOV-NEXT: sh a5, 2(s0)4874; CHECK-NOV-NEXT: sh a4, 4(s0)4875; CHECK-NOV-NEXT: sh a2, 6(s0)4876; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload4877; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload4878; CHECK-NOV-NEXT: ld s1, 104(sp) # 8-byte Folded Reload4879; CHECK-NOV-NEXT: ld s2, 96(sp) # 8-byte Folded Reload4880; CHECK-NOV-NEXT: ld s3, 88(sp) # 8-byte Folded Reload4881; CHECK-NOV-NEXT: ld s4, 80(sp) # 8-byte Folded Reload4882; CHECK-NOV-NEXT: ld s5, 72(sp) # 8-byte Folded Reload4883; CHECK-NOV-NEXT: ld s6, 64(sp) # 8-byte Folded Reload4884; CHECK-NOV-NEXT: ld s7, 56(sp) # 8-byte Folded Reload4885; CHECK-NOV-NEXT: fld fs0, 48(sp) # 8-byte Folded Reload4886; CHECK-NOV-NEXT: fld fs1, 40(sp) # 8-byte Folded Reload4887; CHECK-NOV-NEXT: fld fs2, 32(sp) # 8-byte Folded Reload4888; CHECK-NOV-NEXT: fld fs3, 24(sp) # 8-byte Folded Reload4889; CHECK-NOV-NEXT: fld fs4, 16(sp) # 8-byte Folded Reload4890; CHECK-NOV-NEXT: fld fs5, 8(sp) # 8-byte Folded Reload4891; CHECK-NOV-NEXT: fld fs6, 0(sp) # 8-byte Folded Reload4892; CHECK-NOV-NEXT: .cfi_restore ra4893; CHECK-NOV-NEXT: .cfi_restore s04894; CHECK-NOV-NEXT: .cfi_restore s14895; CHECK-NOV-NEXT: .cfi_restore s24896; CHECK-NOV-NEXT: .cfi_restore s34897; CHECK-NOV-NEXT: .cfi_restore s44898; CHECK-NOV-NEXT: .cfi_restore s54899; CHECK-NOV-NEXT: .cfi_restore s64900; CHECK-NOV-NEXT: .cfi_restore s74901; CHECK-NOV-NEXT: .cfi_restore fs04902; CHECK-NOV-NEXT: .cfi_restore fs14903; CHECK-NOV-NEXT: .cfi_restore fs24904; CHECK-NOV-NEXT: .cfi_restore fs34905; CHECK-NOV-NEXT: .cfi_restore fs44906; CHECK-NOV-NEXT: .cfi_restore fs54907; CHECK-NOV-NEXT: .cfi_restore fs64908; CHECK-NOV-NEXT: addi sp, sp, 1284909; CHECK-NOV-NEXT: .cfi_def_cfa_offset 04910; CHECK-NOV-NEXT: ret4911; CHECK-NOV-NEXT: .LBB42_18: # %entry4912; CHECK-NOV-NEXT: .cfi_restore_state4913; CHECK-NOV-NEXT: mv a0, a74914; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz4915; CHECK-NOV-NEXT: blt s1, a7, .LBB42_24916; CHECK-NOV-NEXT: .LBB42_19: # %entry4917; CHECK-NOV-NEXT: mv s1, a74918; CHECK-NOV-NEXT: fcvt.l.s a3, fs4, rtz4919; CHECK-NOV-NEXT: blt a1, a7, .LBB42_34920; CHECK-NOV-NEXT: .LBB42_20: # %entry4921; CHECK-NOV-NEXT: mv a1, a74922; CHECK-NOV-NEXT: fcvt.l.s a2, fs3, rtz4923; CHECK-NOV-NEXT: blt a3, a7, .LBB42_44924; CHECK-NOV-NEXT: .LBB42_21: # %entry4925; CHECK-NOV-NEXT: mv a3, a74926; CHECK-NOV-NEXT: fcvt.l.s a4, fs2, rtz4927; CHECK-NOV-NEXT: blt a2, a7, .LBB42_54928; CHECK-NOV-NEXT: .LBB42_22: # %entry4929; CHECK-NOV-NEXT: mv a2, a74930; CHECK-NOV-NEXT: fcvt.l.s a5, fs1, rtz4931; CHECK-NOV-NEXT: blt a4, a7, .LBB42_64932; CHECK-NOV-NEXT: .LBB42_23: # %entry4933; CHECK-NOV-NEXT: mv a4, a74934; CHECK-NOV-NEXT: fcvt.l.s a6, fs0, rtz4935; CHECK-NOV-NEXT: blt a5, a7, .LBB42_74936; CHECK-NOV-NEXT: .LBB42_24: # %entry4937; CHECK-NOV-NEXT: mv a5, a74938; CHECK-NOV-NEXT: blt a6, a7, .LBB42_84939; CHECK-NOV-NEXT: .LBB42_25: # %entry4940; CHECK-NOV-NEXT: mv a6, a74941; CHECK-NOV-NEXT: lui a7, 10485684942; CHECK-NOV-NEXT: blt a7, a6, .LBB42_94943; CHECK-NOV-NEXT: .LBB42_26: # %entry4944; CHECK-NOV-NEXT: lui a6, 10485684945; CHECK-NOV-NEXT: blt a7, a5, .LBB42_104946; CHECK-NOV-NEXT: .LBB42_27: # %entry4947; CHECK-NOV-NEXT: lui a5, 10485684948; CHECK-NOV-NEXT: blt a7, a4, .LBB42_114949; CHECK-NOV-NEXT: .LBB42_28: # %entry4950; CHECK-NOV-NEXT: lui a4, 10485684951; CHECK-NOV-NEXT: blt a7, a2, .LBB42_124952; CHECK-NOV-NEXT: .LBB42_29: # %entry4953; CHECK-NOV-NEXT: lui a2, 10485684954; CHECK-NOV-NEXT: blt a7, a3, .LBB42_134955; CHECK-NOV-NEXT: .LBB42_30: # %entry4956; CHECK-NOV-NEXT: lui a3, 10485684957; CHECK-NOV-NEXT: blt a7, a1, .LBB42_144958; CHECK-NOV-NEXT: .LBB42_31: # %entry4959; CHECK-NOV-NEXT: lui a1, 10485684960; CHECK-NOV-NEXT: blt a7, s1, .LBB42_154961; CHECK-NOV-NEXT: .LBB42_32: # %entry4962; CHECK-NOV-NEXT: lui s1, 10485684963; CHECK-NOV-NEXT: bge a7, a0, .LBB42_164964; CHECK-NOV-NEXT: j .LBB42_174965;4966; CHECK-V-LABEL: stest_f16i16_mm:4967; CHECK-V: # %bb.0: # %entry4968; CHECK-V-NEXT: addi sp, sp, -804969; CHECK-V-NEXT: .cfi_def_cfa_offset 804970; CHECK-V-NEXT: sd ra, 72(sp) # 8-byte Folded Spill4971; CHECK-V-NEXT: sd s0, 64(sp) # 8-byte Folded Spill4972; CHECK-V-NEXT: sd s1, 56(sp) # 8-byte Folded Spill4973; CHECK-V-NEXT: sd s2, 48(sp) # 8-byte Folded Spill4974; CHECK-V-NEXT: sd s3, 40(sp) # 8-byte Folded Spill4975; CHECK-V-NEXT: sd s4, 32(sp) # 8-byte Folded Spill4976; CHECK-V-NEXT: sd s5, 24(sp) # 8-byte Folded Spill4977; CHECK-V-NEXT: sd s6, 16(sp) # 8-byte Folded Spill4978; CHECK-V-NEXT: .cfi_offset ra, -84979; CHECK-V-NEXT: .cfi_offset s0, -164980; CHECK-V-NEXT: .cfi_offset s1, -244981; CHECK-V-NEXT: .cfi_offset s2, -324982; CHECK-V-NEXT: .cfi_offset s3, -404983; CHECK-V-NEXT: .cfi_offset s4, -484984; CHECK-V-NEXT: .cfi_offset s5, -564985; CHECK-V-NEXT: .cfi_offset s6, -644986; CHECK-V-NEXT: csrr a1, vlenb4987; CHECK-V-NEXT: slli a1, a1, 24988; CHECK-V-NEXT: sub sp, sp, a14989; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x04, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 80 + 4 * vlenb4990; CHECK-V-NEXT: lhu s0, 0(a0)4991; CHECK-V-NEXT: lhu s1, 8(a0)4992; CHECK-V-NEXT: lhu s2, 16(a0)4993; CHECK-V-NEXT: lhu s3, 24(a0)4994; CHECK-V-NEXT: lhu s4, 32(a0)4995; CHECK-V-NEXT: lhu s5, 40(a0)4996; CHECK-V-NEXT: lhu s6, 48(a0)4997; CHECK-V-NEXT: lhu a0, 56(a0)4998; CHECK-V-NEXT: fmv.w.x fa0, a04999; CHECK-V-NEXT: call __extendhfsf25000; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5001; CHECK-V-NEXT: fmv.w.x fa0, s65002; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5003; CHECK-V-NEXT: vmv.s.x v8, a05004; CHECK-V-NEXT: csrr a0, vlenb5005; CHECK-V-NEXT: slli a0, a0, 15006; CHECK-V-NEXT: add a0, sp, a05007; CHECK-V-NEXT: addi a0, a0, 165008; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5009; CHECK-V-NEXT: call __extendhfsf25010; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5011; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5012; CHECK-V-NEXT: vmv.s.x v8, a05013; CHECK-V-NEXT: csrr a0, vlenb5014; CHECK-V-NEXT: slli a0, a0, 15015; CHECK-V-NEXT: add a0, sp, a05016; CHECK-V-NEXT: addi a0, a0, 165017; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5018; CHECK-V-NEXT: vslideup.vi v8, v9, 15019; CHECK-V-NEXT: csrr a0, vlenb5020; CHECK-V-NEXT: add a0, sp, a05021; CHECK-V-NEXT: addi a0, a0, 165022; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5023; CHECK-V-NEXT: fmv.w.x fa0, s55024; CHECK-V-NEXT: call __extendhfsf25025; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5026; CHECK-V-NEXT: fmv.w.x fa0, s45027; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5028; CHECK-V-NEXT: vmv.s.x v8, a05029; CHECK-V-NEXT: csrr a0, vlenb5030; CHECK-V-NEXT: slli a0, a0, 15031; CHECK-V-NEXT: add a0, sp, a05032; CHECK-V-NEXT: addi a0, a0, 165033; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5034; CHECK-V-NEXT: call __extendhfsf25035; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5036; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5037; CHECK-V-NEXT: vmv.s.x v8, a05038; CHECK-V-NEXT: csrr a0, vlenb5039; CHECK-V-NEXT: slli a0, a0, 15040; CHECK-V-NEXT: add a0, sp, a05041; CHECK-V-NEXT: addi a0, a0, 165042; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5043; CHECK-V-NEXT: vslideup.vi v8, v9, 15044; CHECK-V-NEXT: csrr a0, vlenb5045; CHECK-V-NEXT: add a0, sp, a05046; CHECK-V-NEXT: addi a0, a0, 165047; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5048; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma5049; CHECK-V-NEXT: vslideup.vi v8, v9, 25050; CHECK-V-NEXT: csrr a0, vlenb5051; CHECK-V-NEXT: slli a0, a0, 15052; CHECK-V-NEXT: add a0, sp, a05053; CHECK-V-NEXT: addi a0, a0, 165054; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill5055; CHECK-V-NEXT: fmv.w.x fa0, s35056; CHECK-V-NEXT: call __extendhfsf25057; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5058; CHECK-V-NEXT: fmv.w.x fa0, s25059; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5060; CHECK-V-NEXT: vmv.s.x v8, a05061; CHECK-V-NEXT: addi a0, sp, 165062; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5063; CHECK-V-NEXT: call __extendhfsf25064; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5065; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5066; CHECK-V-NEXT: vmv.s.x v8, a05067; CHECK-V-NEXT: addi a0, sp, 165068; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5069; CHECK-V-NEXT: vslideup.vi v8, v9, 15070; CHECK-V-NEXT: csrr a0, vlenb5071; CHECK-V-NEXT: add a0, sp, a05072; CHECK-V-NEXT: addi a0, a0, 165073; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5074; CHECK-V-NEXT: fmv.w.x fa0, s15075; CHECK-V-NEXT: call __extendhfsf25076; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5077; CHECK-V-NEXT: fmv.w.x fa0, s05078; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5079; CHECK-V-NEXT: vmv.s.x v8, a05080; CHECK-V-NEXT: addi a0, sp, 165081; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5082; CHECK-V-NEXT: call __extendhfsf25083; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5084; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5085; CHECK-V-NEXT: vmv.s.x v10, a05086; CHECK-V-NEXT: addi a0, sp, 165087; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload5088; CHECK-V-NEXT: vslideup.vi v10, v8, 15089; CHECK-V-NEXT: csrr a0, vlenb5090; CHECK-V-NEXT: add a0, sp, a05091; CHECK-V-NEXT: addi a0, a0, 165092; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload5093; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma5094; CHECK-V-NEXT: vslideup.vi v10, v8, 25095; CHECK-V-NEXT: csrr a0, vlenb5096; CHECK-V-NEXT: slli a0, a0, 15097; CHECK-V-NEXT: add a0, sp, a05098; CHECK-V-NEXT: addi a0, a0, 165099; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload5100; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma5101; CHECK-V-NEXT: vslideup.vi v10, v8, 45102; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma5103; CHECK-V-NEXT: vnclip.wi v8, v10, 05104; CHECK-V-NEXT: csrr a0, vlenb5105; CHECK-V-NEXT: slli a0, a0, 25106; CHECK-V-NEXT: add sp, sp, a05107; CHECK-V-NEXT: .cfi_def_cfa sp, 805108; CHECK-V-NEXT: ld ra, 72(sp) # 8-byte Folded Reload5109; CHECK-V-NEXT: ld s0, 64(sp) # 8-byte Folded Reload5110; CHECK-V-NEXT: ld s1, 56(sp) # 8-byte Folded Reload5111; CHECK-V-NEXT: ld s2, 48(sp) # 8-byte Folded Reload5112; CHECK-V-NEXT: ld s3, 40(sp) # 8-byte Folded Reload5113; CHECK-V-NEXT: ld s4, 32(sp) # 8-byte Folded Reload5114; CHECK-V-NEXT: ld s5, 24(sp) # 8-byte Folded Reload5115; CHECK-V-NEXT: ld s6, 16(sp) # 8-byte Folded Reload5116; CHECK-V-NEXT: .cfi_restore ra5117; CHECK-V-NEXT: .cfi_restore s05118; CHECK-V-NEXT: .cfi_restore s15119; CHECK-V-NEXT: .cfi_restore s25120; CHECK-V-NEXT: .cfi_restore s35121; CHECK-V-NEXT: .cfi_restore s45122; CHECK-V-NEXT: .cfi_restore s55123; CHECK-V-NEXT: .cfi_restore s65124; CHECK-V-NEXT: addi sp, sp, 805125; CHECK-V-NEXT: .cfi_def_cfa_offset 05126; CHECK-V-NEXT: ret5127entry:5128 %conv = fptosi <8 x half> %x to <8 x i32>5129 %spec.store.select = call <8 x i32> @llvm.smin.v8i32(<8 x i32> %conv, <8 x i32> <i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767, i32 32767>)5130 %spec.store.select7 = call <8 x i32> @llvm.smax.v8i32(<8 x i32> %spec.store.select, <8 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768, i32 -32768>)5131 %conv6 = trunc <8 x i32> %spec.store.select7 to <8 x i16>5132 ret <8 x i16> %conv65133}5134 5135define <8 x i16> @utest_f16i16_mm(<8 x half> %x) {5136; CHECK-NOV-LABEL: utest_f16i16_mm:5137; CHECK-NOV: # %bb.0: # %entry5138; CHECK-NOV-NEXT: addi sp, sp, -1285139; CHECK-NOV-NEXT: .cfi_def_cfa_offset 1285140; CHECK-NOV-NEXT: sd ra, 120(sp) # 8-byte Folded Spill5141; CHECK-NOV-NEXT: sd s0, 112(sp) # 8-byte Folded Spill5142; CHECK-NOV-NEXT: sd s1, 104(sp) # 8-byte Folded Spill5143; CHECK-NOV-NEXT: sd s2, 96(sp) # 8-byte Folded Spill5144; CHECK-NOV-NEXT: sd s3, 88(sp) # 8-byte Folded Spill5145; CHECK-NOV-NEXT: sd s4, 80(sp) # 8-byte Folded Spill5146; CHECK-NOV-NEXT: sd s5, 72(sp) # 8-byte Folded Spill5147; CHECK-NOV-NEXT: sd s6, 64(sp) # 8-byte Folded Spill5148; CHECK-NOV-NEXT: sd s7, 56(sp) # 8-byte Folded Spill5149; CHECK-NOV-NEXT: fsd fs0, 48(sp) # 8-byte Folded Spill5150; CHECK-NOV-NEXT: fsd fs1, 40(sp) # 8-byte Folded Spill5151; CHECK-NOV-NEXT: fsd fs2, 32(sp) # 8-byte Folded Spill5152; CHECK-NOV-NEXT: fsd fs3, 24(sp) # 8-byte Folded Spill5153; CHECK-NOV-NEXT: fsd fs4, 16(sp) # 8-byte Folded Spill5154; CHECK-NOV-NEXT: fsd fs5, 8(sp) # 8-byte Folded Spill5155; CHECK-NOV-NEXT: fsd fs6, 0(sp) # 8-byte Folded Spill5156; CHECK-NOV-NEXT: .cfi_offset ra, -85157; CHECK-NOV-NEXT: .cfi_offset s0, -165158; CHECK-NOV-NEXT: .cfi_offset s1, -245159; CHECK-NOV-NEXT: .cfi_offset s2, -325160; CHECK-NOV-NEXT: .cfi_offset s3, -405161; CHECK-NOV-NEXT: .cfi_offset s4, -485162; CHECK-NOV-NEXT: .cfi_offset s5, -565163; CHECK-NOV-NEXT: .cfi_offset s6, -645164; CHECK-NOV-NEXT: .cfi_offset s7, -725165; CHECK-NOV-NEXT: .cfi_offset fs0, -805166; CHECK-NOV-NEXT: .cfi_offset fs1, -885167; CHECK-NOV-NEXT: .cfi_offset fs2, -965168; CHECK-NOV-NEXT: .cfi_offset fs3, -1045169; CHECK-NOV-NEXT: .cfi_offset fs4, -1125170; CHECK-NOV-NEXT: .cfi_offset fs5, -1205171; CHECK-NOV-NEXT: .cfi_offset fs6, -1285172; CHECK-NOV-NEXT: .cfi_remember_state5173; CHECK-NOV-NEXT: lhu s1, 32(a1)5174; CHECK-NOV-NEXT: lhu s2, 40(a1)5175; CHECK-NOV-NEXT: lhu s3, 48(a1)5176; CHECK-NOV-NEXT: lhu s4, 56(a1)5177; CHECK-NOV-NEXT: lhu s5, 0(a1)5178; CHECK-NOV-NEXT: lhu a2, 8(a1)5179; CHECK-NOV-NEXT: lhu s6, 16(a1)5180; CHECK-NOV-NEXT: lhu s7, 24(a1)5181; CHECK-NOV-NEXT: mv s0, a05182; CHECK-NOV-NEXT: fmv.w.x fa0, a25183; CHECK-NOV-NEXT: call __extendhfsf25184; CHECK-NOV-NEXT: fmv.s fs6, fa05185; CHECK-NOV-NEXT: fmv.w.x fa0, s65186; CHECK-NOV-NEXT: call __extendhfsf25187; CHECK-NOV-NEXT: fmv.s fs5, fa05188; CHECK-NOV-NEXT: fmv.w.x fa0, s75189; CHECK-NOV-NEXT: call __extendhfsf25190; CHECK-NOV-NEXT: fmv.s fs4, fa05191; CHECK-NOV-NEXT: fmv.w.x fa0, s15192; CHECK-NOV-NEXT: call __extendhfsf25193; CHECK-NOV-NEXT: fmv.s fs3, fa05194; CHECK-NOV-NEXT: fmv.w.x fa0, s25195; CHECK-NOV-NEXT: call __extendhfsf25196; CHECK-NOV-NEXT: fmv.s fs2, fa05197; CHECK-NOV-NEXT: fmv.w.x fa0, s35198; CHECK-NOV-NEXT: call __extendhfsf25199; CHECK-NOV-NEXT: fmv.s fs1, fa05200; CHECK-NOV-NEXT: fmv.w.x fa0, s45201; CHECK-NOV-NEXT: call __extendhfsf25202; CHECK-NOV-NEXT: fmv.s fs0, fa05203; CHECK-NOV-NEXT: fmv.w.x fa0, s55204; CHECK-NOV-NEXT: fcvt.lu.s s1, fs6, rtz5205; CHECK-NOV-NEXT: call __extendhfsf25206; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz5207; CHECK-NOV-NEXT: lui a3, 165208; CHECK-NOV-NEXT: addi a3, a3, -15209; CHECK-NOV-NEXT: bgeu a0, a3, .LBB43_105210; CHECK-NOV-NEXT: # %bb.1: # %entry5211; CHECK-NOV-NEXT: fcvt.lu.s a1, fs5, rtz5212; CHECK-NOV-NEXT: bgeu s1, a3, .LBB43_115213; CHECK-NOV-NEXT: .LBB43_2: # %entry5214; CHECK-NOV-NEXT: fcvt.lu.s a2, fs4, rtz5215; CHECK-NOV-NEXT: bgeu a1, a3, .LBB43_125216; CHECK-NOV-NEXT: .LBB43_3: # %entry5217; CHECK-NOV-NEXT: fcvt.lu.s a4, fs3, rtz5218; CHECK-NOV-NEXT: bgeu a2, a3, .LBB43_135219; CHECK-NOV-NEXT: .LBB43_4: # %entry5220; CHECK-NOV-NEXT: fcvt.lu.s a5, fs2, rtz5221; CHECK-NOV-NEXT: bgeu a4, a3, .LBB43_145222; CHECK-NOV-NEXT: .LBB43_5: # %entry5223; CHECK-NOV-NEXT: fcvt.lu.s a6, fs1, rtz5224; CHECK-NOV-NEXT: bgeu a5, a3, .LBB43_155225; CHECK-NOV-NEXT: .LBB43_6: # %entry5226; CHECK-NOV-NEXT: fcvt.lu.s a7, fs0, rtz5227; CHECK-NOV-NEXT: bgeu a6, a3, .LBB43_165228; CHECK-NOV-NEXT: .LBB43_7: # %entry5229; CHECK-NOV-NEXT: bltu a7, a3, .LBB43_95230; CHECK-NOV-NEXT: .LBB43_8: # %entry5231; CHECK-NOV-NEXT: mv a7, a35232; CHECK-NOV-NEXT: .LBB43_9: # %entry5233; CHECK-NOV-NEXT: sh a4, 8(s0)5234; CHECK-NOV-NEXT: sh a5, 10(s0)5235; CHECK-NOV-NEXT: sh a6, 12(s0)5236; CHECK-NOV-NEXT: sh a7, 14(s0)5237; CHECK-NOV-NEXT: sh a0, 0(s0)5238; CHECK-NOV-NEXT: sh s1, 2(s0)5239; CHECK-NOV-NEXT: sh a1, 4(s0)5240; CHECK-NOV-NEXT: sh a2, 6(s0)5241; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload5242; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload5243; CHECK-NOV-NEXT: ld s1, 104(sp) # 8-byte Folded Reload5244; CHECK-NOV-NEXT: ld s2, 96(sp) # 8-byte Folded Reload5245; CHECK-NOV-NEXT: ld s3, 88(sp) # 8-byte Folded Reload5246; CHECK-NOV-NEXT: ld s4, 80(sp) # 8-byte Folded Reload5247; CHECK-NOV-NEXT: ld s5, 72(sp) # 8-byte Folded Reload5248; CHECK-NOV-NEXT: ld s6, 64(sp) # 8-byte Folded Reload5249; CHECK-NOV-NEXT: ld s7, 56(sp) # 8-byte Folded Reload5250; CHECK-NOV-NEXT: fld fs0, 48(sp) # 8-byte Folded Reload5251; CHECK-NOV-NEXT: fld fs1, 40(sp) # 8-byte Folded Reload5252; CHECK-NOV-NEXT: fld fs2, 32(sp) # 8-byte Folded Reload5253; CHECK-NOV-NEXT: fld fs3, 24(sp) # 8-byte Folded Reload5254; CHECK-NOV-NEXT: fld fs4, 16(sp) # 8-byte Folded Reload5255; CHECK-NOV-NEXT: fld fs5, 8(sp) # 8-byte Folded Reload5256; CHECK-NOV-NEXT: fld fs6, 0(sp) # 8-byte Folded Reload5257; CHECK-NOV-NEXT: .cfi_restore ra5258; CHECK-NOV-NEXT: .cfi_restore s05259; CHECK-NOV-NEXT: .cfi_restore s15260; CHECK-NOV-NEXT: .cfi_restore s25261; CHECK-NOV-NEXT: .cfi_restore s35262; CHECK-NOV-NEXT: .cfi_restore s45263; CHECK-NOV-NEXT: .cfi_restore s55264; CHECK-NOV-NEXT: .cfi_restore s65265; CHECK-NOV-NEXT: .cfi_restore s75266; CHECK-NOV-NEXT: .cfi_restore fs05267; CHECK-NOV-NEXT: .cfi_restore fs15268; CHECK-NOV-NEXT: .cfi_restore fs25269; CHECK-NOV-NEXT: .cfi_restore fs35270; CHECK-NOV-NEXT: .cfi_restore fs45271; CHECK-NOV-NEXT: .cfi_restore fs55272; CHECK-NOV-NEXT: .cfi_restore fs65273; CHECK-NOV-NEXT: addi sp, sp, 1285274; CHECK-NOV-NEXT: .cfi_def_cfa_offset 05275; CHECK-NOV-NEXT: ret5276; CHECK-NOV-NEXT: .LBB43_10: # %entry5277; CHECK-NOV-NEXT: .cfi_restore_state5278; CHECK-NOV-NEXT: mv a0, a35279; CHECK-NOV-NEXT: fcvt.lu.s a1, fs5, rtz5280; CHECK-NOV-NEXT: bltu s1, a3, .LBB43_25281; CHECK-NOV-NEXT: .LBB43_11: # %entry5282; CHECK-NOV-NEXT: mv s1, a35283; CHECK-NOV-NEXT: fcvt.lu.s a2, fs4, rtz5284; CHECK-NOV-NEXT: bltu a1, a3, .LBB43_35285; CHECK-NOV-NEXT: .LBB43_12: # %entry5286; CHECK-NOV-NEXT: mv a1, a35287; CHECK-NOV-NEXT: fcvt.lu.s a4, fs3, rtz5288; CHECK-NOV-NEXT: bltu a2, a3, .LBB43_45289; CHECK-NOV-NEXT: .LBB43_13: # %entry5290; CHECK-NOV-NEXT: mv a2, a35291; CHECK-NOV-NEXT: fcvt.lu.s a5, fs2, rtz5292; CHECK-NOV-NEXT: bltu a4, a3, .LBB43_55293; CHECK-NOV-NEXT: .LBB43_14: # %entry5294; CHECK-NOV-NEXT: mv a4, a35295; CHECK-NOV-NEXT: fcvt.lu.s a6, fs1, rtz5296; CHECK-NOV-NEXT: bltu a5, a3, .LBB43_65297; CHECK-NOV-NEXT: .LBB43_15: # %entry5298; CHECK-NOV-NEXT: mv a5, a35299; CHECK-NOV-NEXT: fcvt.lu.s a7, fs0, rtz5300; CHECK-NOV-NEXT: bltu a6, a3, .LBB43_75301; CHECK-NOV-NEXT: .LBB43_16: # %entry5302; CHECK-NOV-NEXT: mv a6, a35303; CHECK-NOV-NEXT: bgeu a7, a3, .LBB43_85304; CHECK-NOV-NEXT: j .LBB43_95305;5306; CHECK-V-LABEL: utest_f16i16_mm:5307; CHECK-V: # %bb.0: # %entry5308; CHECK-V-NEXT: addi sp, sp, -805309; CHECK-V-NEXT: .cfi_def_cfa_offset 805310; CHECK-V-NEXT: sd ra, 72(sp) # 8-byte Folded Spill5311; CHECK-V-NEXT: sd s0, 64(sp) # 8-byte Folded Spill5312; CHECK-V-NEXT: sd s1, 56(sp) # 8-byte Folded Spill5313; CHECK-V-NEXT: sd s2, 48(sp) # 8-byte Folded Spill5314; CHECK-V-NEXT: sd s3, 40(sp) # 8-byte Folded Spill5315; CHECK-V-NEXT: sd s4, 32(sp) # 8-byte Folded Spill5316; CHECK-V-NEXT: sd s5, 24(sp) # 8-byte Folded Spill5317; CHECK-V-NEXT: sd s6, 16(sp) # 8-byte Folded Spill5318; CHECK-V-NEXT: .cfi_offset ra, -85319; CHECK-V-NEXT: .cfi_offset s0, -165320; CHECK-V-NEXT: .cfi_offset s1, -245321; CHECK-V-NEXT: .cfi_offset s2, -325322; CHECK-V-NEXT: .cfi_offset s3, -405323; CHECK-V-NEXT: .cfi_offset s4, -485324; CHECK-V-NEXT: .cfi_offset s5, -565325; CHECK-V-NEXT: .cfi_offset s6, -645326; CHECK-V-NEXT: csrr a1, vlenb5327; CHECK-V-NEXT: slli a1, a1, 25328; CHECK-V-NEXT: sub sp, sp, a15329; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x04, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 80 + 4 * vlenb5330; CHECK-V-NEXT: lhu s0, 0(a0)5331; CHECK-V-NEXT: lhu s1, 8(a0)5332; CHECK-V-NEXT: lhu s2, 16(a0)5333; CHECK-V-NEXT: lhu s3, 24(a0)5334; CHECK-V-NEXT: lhu s4, 32(a0)5335; CHECK-V-NEXT: lhu s5, 40(a0)5336; CHECK-V-NEXT: lhu s6, 48(a0)5337; CHECK-V-NEXT: lhu a0, 56(a0)5338; CHECK-V-NEXT: fmv.w.x fa0, a05339; CHECK-V-NEXT: call __extendhfsf25340; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5341; CHECK-V-NEXT: fmv.w.x fa0, s65342; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5343; CHECK-V-NEXT: vmv.s.x v8, a05344; CHECK-V-NEXT: csrr a0, vlenb5345; CHECK-V-NEXT: slli a0, a0, 15346; CHECK-V-NEXT: add a0, sp, a05347; CHECK-V-NEXT: addi a0, a0, 165348; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5349; CHECK-V-NEXT: call __extendhfsf25350; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5351; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5352; CHECK-V-NEXT: vmv.s.x v8, a05353; CHECK-V-NEXT: csrr a0, vlenb5354; CHECK-V-NEXT: slli a0, a0, 15355; CHECK-V-NEXT: add a0, sp, a05356; CHECK-V-NEXT: addi a0, a0, 165357; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5358; CHECK-V-NEXT: vslideup.vi v8, v9, 15359; CHECK-V-NEXT: csrr a0, vlenb5360; CHECK-V-NEXT: add a0, sp, a05361; CHECK-V-NEXT: addi a0, a0, 165362; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5363; CHECK-V-NEXT: fmv.w.x fa0, s55364; CHECK-V-NEXT: call __extendhfsf25365; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5366; CHECK-V-NEXT: fmv.w.x fa0, s45367; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5368; CHECK-V-NEXT: vmv.s.x v8, a05369; CHECK-V-NEXT: csrr a0, vlenb5370; CHECK-V-NEXT: slli a0, a0, 15371; CHECK-V-NEXT: add a0, sp, a05372; CHECK-V-NEXT: addi a0, a0, 165373; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5374; CHECK-V-NEXT: call __extendhfsf25375; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5376; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5377; CHECK-V-NEXT: vmv.s.x v8, a05378; CHECK-V-NEXT: csrr a0, vlenb5379; CHECK-V-NEXT: slli a0, a0, 15380; CHECK-V-NEXT: add a0, sp, a05381; CHECK-V-NEXT: addi a0, a0, 165382; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5383; CHECK-V-NEXT: vslideup.vi v8, v9, 15384; CHECK-V-NEXT: csrr a0, vlenb5385; CHECK-V-NEXT: add a0, sp, a05386; CHECK-V-NEXT: addi a0, a0, 165387; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5388; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma5389; CHECK-V-NEXT: vslideup.vi v8, v9, 25390; CHECK-V-NEXT: csrr a0, vlenb5391; CHECK-V-NEXT: slli a0, a0, 15392; CHECK-V-NEXT: add a0, sp, a05393; CHECK-V-NEXT: addi a0, a0, 165394; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill5395; CHECK-V-NEXT: fmv.w.x fa0, s35396; CHECK-V-NEXT: call __extendhfsf25397; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5398; CHECK-V-NEXT: fmv.w.x fa0, s25399; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5400; CHECK-V-NEXT: vmv.s.x v8, a05401; CHECK-V-NEXT: addi a0, sp, 165402; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5403; CHECK-V-NEXT: call __extendhfsf25404; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5405; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5406; CHECK-V-NEXT: vmv.s.x v8, a05407; CHECK-V-NEXT: addi a0, sp, 165408; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5409; CHECK-V-NEXT: vslideup.vi v8, v9, 15410; CHECK-V-NEXT: csrr a0, vlenb5411; CHECK-V-NEXT: add a0, sp, a05412; CHECK-V-NEXT: addi a0, a0, 165413; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5414; CHECK-V-NEXT: fmv.w.x fa0, s15415; CHECK-V-NEXT: call __extendhfsf25416; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5417; CHECK-V-NEXT: fmv.w.x fa0, s05418; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5419; CHECK-V-NEXT: vmv.s.x v8, a05420; CHECK-V-NEXT: addi a0, sp, 165421; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5422; CHECK-V-NEXT: call __extendhfsf25423; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz5424; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5425; CHECK-V-NEXT: vmv.s.x v10, a05426; CHECK-V-NEXT: addi a0, sp, 165427; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload5428; CHECK-V-NEXT: vslideup.vi v10, v8, 15429; CHECK-V-NEXT: csrr a0, vlenb5430; CHECK-V-NEXT: add a0, sp, a05431; CHECK-V-NEXT: addi a0, a0, 165432; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload5433; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma5434; CHECK-V-NEXT: vslideup.vi v10, v8, 25435; CHECK-V-NEXT: csrr a0, vlenb5436; CHECK-V-NEXT: slli a0, a0, 15437; CHECK-V-NEXT: add a0, sp, a05438; CHECK-V-NEXT: addi a0, a0, 165439; CHECK-V-NEXT: vl2r.v v8, (a0) # vscale x 16-byte Folded Reload5440; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma5441; CHECK-V-NEXT: vslideup.vi v10, v8, 45442; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma5443; CHECK-V-NEXT: vnclipu.wi v8, v10, 05444; CHECK-V-NEXT: csrr a0, vlenb5445; CHECK-V-NEXT: slli a0, a0, 25446; CHECK-V-NEXT: add sp, sp, a05447; CHECK-V-NEXT: .cfi_def_cfa sp, 805448; CHECK-V-NEXT: ld ra, 72(sp) # 8-byte Folded Reload5449; CHECK-V-NEXT: ld s0, 64(sp) # 8-byte Folded Reload5450; CHECK-V-NEXT: ld s1, 56(sp) # 8-byte Folded Reload5451; CHECK-V-NEXT: ld s2, 48(sp) # 8-byte Folded Reload5452; CHECK-V-NEXT: ld s3, 40(sp) # 8-byte Folded Reload5453; CHECK-V-NEXT: ld s4, 32(sp) # 8-byte Folded Reload5454; CHECK-V-NEXT: ld s5, 24(sp) # 8-byte Folded Reload5455; CHECK-V-NEXT: ld s6, 16(sp) # 8-byte Folded Reload5456; CHECK-V-NEXT: .cfi_restore ra5457; CHECK-V-NEXT: .cfi_restore s05458; CHECK-V-NEXT: .cfi_restore s15459; CHECK-V-NEXT: .cfi_restore s25460; CHECK-V-NEXT: .cfi_restore s35461; CHECK-V-NEXT: .cfi_restore s45462; CHECK-V-NEXT: .cfi_restore s55463; CHECK-V-NEXT: .cfi_restore s65464; CHECK-V-NEXT: addi sp, sp, 805465; CHECK-V-NEXT: .cfi_def_cfa_offset 05466; CHECK-V-NEXT: ret5467entry:5468 %conv = fptoui <8 x half> %x to <8 x i32>5469 %spec.store.select = call <8 x i32> @llvm.umin.v8i32(<8 x i32> %conv, <8 x i32> <i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535>)5470 %conv6 = trunc <8 x i32> %spec.store.select to <8 x i16>5471 ret <8 x i16> %conv65472}5473 5474define <8 x i16> @ustest_f16i16_mm(<8 x half> %x) {5475; CHECK-NOV-LABEL: ustest_f16i16_mm:5476; CHECK-NOV: # %bb.0: # %entry5477; CHECK-NOV-NEXT: addi sp, sp, -1285478; CHECK-NOV-NEXT: .cfi_def_cfa_offset 1285479; CHECK-NOV-NEXT: sd ra, 120(sp) # 8-byte Folded Spill5480; CHECK-NOV-NEXT: sd s0, 112(sp) # 8-byte Folded Spill5481; CHECK-NOV-NEXT: sd s1, 104(sp) # 8-byte Folded Spill5482; CHECK-NOV-NEXT: sd s2, 96(sp) # 8-byte Folded Spill5483; CHECK-NOV-NEXT: sd s3, 88(sp) # 8-byte Folded Spill5484; CHECK-NOV-NEXT: sd s4, 80(sp) # 8-byte Folded Spill5485; CHECK-NOV-NEXT: sd s5, 72(sp) # 8-byte Folded Spill5486; CHECK-NOV-NEXT: sd s6, 64(sp) # 8-byte Folded Spill5487; CHECK-NOV-NEXT: sd s7, 56(sp) # 8-byte Folded Spill5488; CHECK-NOV-NEXT: fsd fs0, 48(sp) # 8-byte Folded Spill5489; CHECK-NOV-NEXT: fsd fs1, 40(sp) # 8-byte Folded Spill5490; CHECK-NOV-NEXT: fsd fs2, 32(sp) # 8-byte Folded Spill5491; CHECK-NOV-NEXT: fsd fs3, 24(sp) # 8-byte Folded Spill5492; CHECK-NOV-NEXT: fsd fs4, 16(sp) # 8-byte Folded Spill5493; CHECK-NOV-NEXT: fsd fs5, 8(sp) # 8-byte Folded Spill5494; CHECK-NOV-NEXT: fsd fs6, 0(sp) # 8-byte Folded Spill5495; CHECK-NOV-NEXT: .cfi_offset ra, -85496; CHECK-NOV-NEXT: .cfi_offset s0, -165497; CHECK-NOV-NEXT: .cfi_offset s1, -245498; CHECK-NOV-NEXT: .cfi_offset s2, -325499; CHECK-NOV-NEXT: .cfi_offset s3, -405500; CHECK-NOV-NEXT: .cfi_offset s4, -485501; CHECK-NOV-NEXT: .cfi_offset s5, -565502; CHECK-NOV-NEXT: .cfi_offset s6, -645503; CHECK-NOV-NEXT: .cfi_offset s7, -725504; CHECK-NOV-NEXT: .cfi_offset fs0, -805505; CHECK-NOV-NEXT: .cfi_offset fs1, -885506; CHECK-NOV-NEXT: .cfi_offset fs2, -965507; CHECK-NOV-NEXT: .cfi_offset fs3, -1045508; CHECK-NOV-NEXT: .cfi_offset fs4, -1125509; CHECK-NOV-NEXT: .cfi_offset fs5, -1205510; CHECK-NOV-NEXT: .cfi_offset fs6, -1285511; CHECK-NOV-NEXT: .cfi_remember_state5512; CHECK-NOV-NEXT: lhu s1, 32(a1)5513; CHECK-NOV-NEXT: lhu s2, 40(a1)5514; CHECK-NOV-NEXT: lhu a2, 48(a1)5515; CHECK-NOV-NEXT: lhu s3, 56(a1)5516; CHECK-NOV-NEXT: lhu s4, 0(a1)5517; CHECK-NOV-NEXT: lhu s5, 8(a1)5518; CHECK-NOV-NEXT: lhu s6, 16(a1)5519; CHECK-NOV-NEXT: lhu s7, 24(a1)5520; CHECK-NOV-NEXT: mv s0, a05521; CHECK-NOV-NEXT: fmv.w.x fa0, a25522; CHECK-NOV-NEXT: call __extendhfsf25523; CHECK-NOV-NEXT: fmv.s fs6, fa05524; CHECK-NOV-NEXT: fmv.w.x fa0, s25525; CHECK-NOV-NEXT: call __extendhfsf25526; CHECK-NOV-NEXT: fmv.s fs5, fa05527; CHECK-NOV-NEXT: fmv.w.x fa0, s15528; CHECK-NOV-NEXT: call __extendhfsf25529; CHECK-NOV-NEXT: fmv.s fs4, fa05530; CHECK-NOV-NEXT: fmv.w.x fa0, s75531; CHECK-NOV-NEXT: call __extendhfsf25532; CHECK-NOV-NEXT: fmv.s fs3, fa05533; CHECK-NOV-NEXT: fmv.w.x fa0, s65534; CHECK-NOV-NEXT: call __extendhfsf25535; CHECK-NOV-NEXT: fmv.s fs2, fa05536; CHECK-NOV-NEXT: fmv.w.x fa0, s55537; CHECK-NOV-NEXT: call __extendhfsf25538; CHECK-NOV-NEXT: fmv.s fs1, fa05539; CHECK-NOV-NEXT: fmv.w.x fa0, s45540; CHECK-NOV-NEXT: call __extendhfsf25541; CHECK-NOV-NEXT: fmv.s fs0, fa05542; CHECK-NOV-NEXT: fmv.w.x fa0, s35543; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz5544; CHECK-NOV-NEXT: call __extendhfsf25545; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz5546; CHECK-NOV-NEXT: lui a3, 165547; CHECK-NOV-NEXT: addi a3, a3, -15548; CHECK-NOV-NEXT: bge a0, a3, .LBB44_105549; CHECK-NOV-NEXT: # %bb.1: # %entry5550; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz5551; CHECK-NOV-NEXT: bge s1, a3, .LBB44_115552; CHECK-NOV-NEXT: .LBB44_2: # %entry5553; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz5554; CHECK-NOV-NEXT: bge a1, a3, .LBB44_125555; CHECK-NOV-NEXT: .LBB44_3: # %entry5556; CHECK-NOV-NEXT: fcvt.l.s a4, fs3, rtz5557; CHECK-NOV-NEXT: bge a2, a3, .LBB44_135558; CHECK-NOV-NEXT: .LBB44_4: # %entry5559; CHECK-NOV-NEXT: fcvt.l.s a5, fs2, rtz5560; CHECK-NOV-NEXT: bge a4, a3, .LBB44_145561; CHECK-NOV-NEXT: .LBB44_5: # %entry5562; CHECK-NOV-NEXT: fcvt.l.s a6, fs1, rtz5563; CHECK-NOV-NEXT: bge a5, a3, .LBB44_155564; CHECK-NOV-NEXT: .LBB44_6: # %entry5565; CHECK-NOV-NEXT: fcvt.l.s a7, fs0, rtz5566; CHECK-NOV-NEXT: bge a6, a3, .LBB44_165567; CHECK-NOV-NEXT: .LBB44_7: # %entry5568; CHECK-NOV-NEXT: blt a7, a3, .LBB44_95569; CHECK-NOV-NEXT: .LBB44_8: # %entry5570; CHECK-NOV-NEXT: mv a7, a35571; CHECK-NOV-NEXT: .LBB44_9: # %entry5572; CHECK-NOV-NEXT: sgtz a3, a75573; CHECK-NOV-NEXT: neg a3, a35574; CHECK-NOV-NEXT: and a3, a3, a75575; CHECK-NOV-NEXT: sgtz a7, a65576; CHECK-NOV-NEXT: neg a7, a75577; CHECK-NOV-NEXT: and a6, a7, a65578; CHECK-NOV-NEXT: sgtz a7, a55579; CHECK-NOV-NEXT: neg a7, a75580; CHECK-NOV-NEXT: and a5, a7, a55581; CHECK-NOV-NEXT: sgtz a7, a45582; CHECK-NOV-NEXT: neg a7, a75583; CHECK-NOV-NEXT: and a4, a7, a45584; CHECK-NOV-NEXT: sgtz a7, a25585; CHECK-NOV-NEXT: neg a7, a75586; CHECK-NOV-NEXT: and a2, a7, a25587; CHECK-NOV-NEXT: sgtz a7, a15588; CHECK-NOV-NEXT: neg a7, a75589; CHECK-NOV-NEXT: and a1, a7, a15590; CHECK-NOV-NEXT: sgtz a7, s15591; CHECK-NOV-NEXT: neg a7, a75592; CHECK-NOV-NEXT: and a7, a7, s15593; CHECK-NOV-NEXT: sgtz t0, a05594; CHECK-NOV-NEXT: neg t0, t05595; CHECK-NOV-NEXT: and a0, t0, a05596; CHECK-NOV-NEXT: sh a2, 8(s0)5597; CHECK-NOV-NEXT: sh a1, 10(s0)5598; CHECK-NOV-NEXT: sh a7, 12(s0)5599; CHECK-NOV-NEXT: sh a0, 14(s0)5600; CHECK-NOV-NEXT: sh a3, 0(s0)5601; CHECK-NOV-NEXT: sh a6, 2(s0)5602; CHECK-NOV-NEXT: sh a5, 4(s0)5603; CHECK-NOV-NEXT: sh a4, 6(s0)5604; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload5605; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload5606; CHECK-NOV-NEXT: ld s1, 104(sp) # 8-byte Folded Reload5607; CHECK-NOV-NEXT: ld s2, 96(sp) # 8-byte Folded Reload5608; CHECK-NOV-NEXT: ld s3, 88(sp) # 8-byte Folded Reload5609; CHECK-NOV-NEXT: ld s4, 80(sp) # 8-byte Folded Reload5610; CHECK-NOV-NEXT: ld s5, 72(sp) # 8-byte Folded Reload5611; CHECK-NOV-NEXT: ld s6, 64(sp) # 8-byte Folded Reload5612; CHECK-NOV-NEXT: ld s7, 56(sp) # 8-byte Folded Reload5613; CHECK-NOV-NEXT: fld fs0, 48(sp) # 8-byte Folded Reload5614; CHECK-NOV-NEXT: fld fs1, 40(sp) # 8-byte Folded Reload5615; CHECK-NOV-NEXT: fld fs2, 32(sp) # 8-byte Folded Reload5616; CHECK-NOV-NEXT: fld fs3, 24(sp) # 8-byte Folded Reload5617; CHECK-NOV-NEXT: fld fs4, 16(sp) # 8-byte Folded Reload5618; CHECK-NOV-NEXT: fld fs5, 8(sp) # 8-byte Folded Reload5619; CHECK-NOV-NEXT: fld fs6, 0(sp) # 8-byte Folded Reload5620; CHECK-NOV-NEXT: .cfi_restore ra5621; CHECK-NOV-NEXT: .cfi_restore s05622; CHECK-NOV-NEXT: .cfi_restore s15623; CHECK-NOV-NEXT: .cfi_restore s25624; CHECK-NOV-NEXT: .cfi_restore s35625; CHECK-NOV-NEXT: .cfi_restore s45626; CHECK-NOV-NEXT: .cfi_restore s55627; CHECK-NOV-NEXT: .cfi_restore s65628; CHECK-NOV-NEXT: .cfi_restore s75629; CHECK-NOV-NEXT: .cfi_restore fs05630; CHECK-NOV-NEXT: .cfi_restore fs15631; CHECK-NOV-NEXT: .cfi_restore fs25632; CHECK-NOV-NEXT: .cfi_restore fs35633; CHECK-NOV-NEXT: .cfi_restore fs45634; CHECK-NOV-NEXT: .cfi_restore fs55635; CHECK-NOV-NEXT: .cfi_restore fs65636; CHECK-NOV-NEXT: addi sp, sp, 1285637; CHECK-NOV-NEXT: .cfi_def_cfa_offset 05638; CHECK-NOV-NEXT: ret5639; CHECK-NOV-NEXT: .LBB44_10: # %entry5640; CHECK-NOV-NEXT: .cfi_restore_state5641; CHECK-NOV-NEXT: mv a0, a35642; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz5643; CHECK-NOV-NEXT: blt s1, a3, .LBB44_25644; CHECK-NOV-NEXT: .LBB44_11: # %entry5645; CHECK-NOV-NEXT: mv s1, a35646; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz5647; CHECK-NOV-NEXT: blt a1, a3, .LBB44_35648; CHECK-NOV-NEXT: .LBB44_12: # %entry5649; CHECK-NOV-NEXT: mv a1, a35650; CHECK-NOV-NEXT: fcvt.l.s a4, fs3, rtz5651; CHECK-NOV-NEXT: blt a2, a3, .LBB44_45652; CHECK-NOV-NEXT: .LBB44_13: # %entry5653; CHECK-NOV-NEXT: mv a2, a35654; CHECK-NOV-NEXT: fcvt.l.s a5, fs2, rtz5655; CHECK-NOV-NEXT: blt a4, a3, .LBB44_55656; CHECK-NOV-NEXT: .LBB44_14: # %entry5657; CHECK-NOV-NEXT: mv a4, a35658; CHECK-NOV-NEXT: fcvt.l.s a6, fs1, rtz5659; CHECK-NOV-NEXT: blt a5, a3, .LBB44_65660; CHECK-NOV-NEXT: .LBB44_15: # %entry5661; CHECK-NOV-NEXT: mv a5, a35662; CHECK-NOV-NEXT: fcvt.l.s a7, fs0, rtz5663; CHECK-NOV-NEXT: blt a6, a3, .LBB44_75664; CHECK-NOV-NEXT: .LBB44_16: # %entry5665; CHECK-NOV-NEXT: mv a6, a35666; CHECK-NOV-NEXT: bge a7, a3, .LBB44_85667; CHECK-NOV-NEXT: j .LBB44_95668;5669; CHECK-V-LABEL: ustest_f16i16_mm:5670; CHECK-V: # %bb.0: # %entry5671; CHECK-V-NEXT: addi sp, sp, -805672; CHECK-V-NEXT: .cfi_def_cfa_offset 805673; CHECK-V-NEXT: sd ra, 72(sp) # 8-byte Folded Spill5674; CHECK-V-NEXT: sd s0, 64(sp) # 8-byte Folded Spill5675; CHECK-V-NEXT: sd s1, 56(sp) # 8-byte Folded Spill5676; CHECK-V-NEXT: sd s2, 48(sp) # 8-byte Folded Spill5677; CHECK-V-NEXT: sd s3, 40(sp) # 8-byte Folded Spill5678; CHECK-V-NEXT: sd s4, 32(sp) # 8-byte Folded Spill5679; CHECK-V-NEXT: sd s5, 24(sp) # 8-byte Folded Spill5680; CHECK-V-NEXT: sd s6, 16(sp) # 8-byte Folded Spill5681; CHECK-V-NEXT: .cfi_offset ra, -85682; CHECK-V-NEXT: .cfi_offset s0, -165683; CHECK-V-NEXT: .cfi_offset s1, -245684; CHECK-V-NEXT: .cfi_offset s2, -325685; CHECK-V-NEXT: .cfi_offset s3, -405686; CHECK-V-NEXT: .cfi_offset s4, -485687; CHECK-V-NEXT: .cfi_offset s5, -565688; CHECK-V-NEXT: .cfi_offset s6, -645689; CHECK-V-NEXT: csrr a1, vlenb5690; CHECK-V-NEXT: slli a1, a1, 25691; CHECK-V-NEXT: sub sp, sp, a15692; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xd0, 0x00, 0x22, 0x11, 0x04, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 80 + 4 * vlenb5693; CHECK-V-NEXT: lhu s0, 0(a0)5694; CHECK-V-NEXT: lhu s1, 8(a0)5695; CHECK-V-NEXT: lhu s2, 16(a0)5696; CHECK-V-NEXT: lhu s3, 24(a0)5697; CHECK-V-NEXT: lhu s4, 32(a0)5698; CHECK-V-NEXT: lhu s5, 40(a0)5699; CHECK-V-NEXT: lhu s6, 48(a0)5700; CHECK-V-NEXT: lhu a0, 56(a0)5701; CHECK-V-NEXT: fmv.w.x fa0, a05702; CHECK-V-NEXT: call __extendhfsf25703; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5704; CHECK-V-NEXT: fmv.w.x fa0, s65705; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5706; CHECK-V-NEXT: vmv.s.x v8, a05707; CHECK-V-NEXT: csrr a0, vlenb5708; CHECK-V-NEXT: slli a0, a0, 15709; CHECK-V-NEXT: add a0, sp, a05710; CHECK-V-NEXT: addi a0, a0, 165711; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5712; CHECK-V-NEXT: call __extendhfsf25713; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5714; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5715; CHECK-V-NEXT: vmv.s.x v8, a05716; CHECK-V-NEXT: csrr a0, vlenb5717; CHECK-V-NEXT: slli a0, a0, 15718; CHECK-V-NEXT: add a0, sp, a05719; CHECK-V-NEXT: addi a0, a0, 165720; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5721; CHECK-V-NEXT: vslideup.vi v8, v9, 15722; CHECK-V-NEXT: csrr a0, vlenb5723; CHECK-V-NEXT: add a0, sp, a05724; CHECK-V-NEXT: addi a0, a0, 165725; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5726; CHECK-V-NEXT: fmv.w.x fa0, s55727; CHECK-V-NEXT: call __extendhfsf25728; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5729; CHECK-V-NEXT: fmv.w.x fa0, s45730; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5731; CHECK-V-NEXT: vmv.s.x v8, a05732; CHECK-V-NEXT: csrr a0, vlenb5733; CHECK-V-NEXT: slli a0, a0, 15734; CHECK-V-NEXT: add a0, sp, a05735; CHECK-V-NEXT: addi a0, a0, 165736; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5737; CHECK-V-NEXT: call __extendhfsf25738; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5739; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5740; CHECK-V-NEXT: vmv.s.x v8, a05741; CHECK-V-NEXT: csrr a0, vlenb5742; CHECK-V-NEXT: slli a0, a0, 15743; CHECK-V-NEXT: add a0, sp, a05744; CHECK-V-NEXT: addi a0, a0, 165745; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5746; CHECK-V-NEXT: vslideup.vi v8, v9, 15747; CHECK-V-NEXT: csrr a0, vlenb5748; CHECK-V-NEXT: add a0, sp, a05749; CHECK-V-NEXT: addi a0, a0, 165750; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5751; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma5752; CHECK-V-NEXT: vslideup.vi v8, v9, 25753; CHECK-V-NEXT: csrr a0, vlenb5754; CHECK-V-NEXT: slli a0, a0, 15755; CHECK-V-NEXT: add a0, sp, a05756; CHECK-V-NEXT: addi a0, a0, 165757; CHECK-V-NEXT: vs2r.v v8, (a0) # vscale x 16-byte Folded Spill5758; CHECK-V-NEXT: fmv.w.x fa0, s35759; CHECK-V-NEXT: call __extendhfsf25760; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5761; CHECK-V-NEXT: fmv.w.x fa0, s25762; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5763; CHECK-V-NEXT: vmv.s.x v8, a05764; CHECK-V-NEXT: addi a0, sp, 165765; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5766; CHECK-V-NEXT: call __extendhfsf25767; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5768; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5769; CHECK-V-NEXT: vmv.s.x v8, a05770; CHECK-V-NEXT: addi a0, sp, 165771; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5772; CHECK-V-NEXT: vslideup.vi v8, v9, 15773; CHECK-V-NEXT: csrr a0, vlenb5774; CHECK-V-NEXT: add a0, sp, a05775; CHECK-V-NEXT: addi a0, a0, 165776; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5777; CHECK-V-NEXT: fmv.w.x fa0, s15778; CHECK-V-NEXT: call __extendhfsf25779; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5780; CHECK-V-NEXT: fmv.w.x fa0, s05781; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma5782; CHECK-V-NEXT: vmv.s.x v8, a05783; CHECK-V-NEXT: addi a0, sp, 165784; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5785; CHECK-V-NEXT: call __extendhfsf25786; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz5787; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma5788; CHECK-V-NEXT: vmv.s.x v8, a05789; CHECK-V-NEXT: addi a0, sp, 165790; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5791; CHECK-V-NEXT: vslideup.vi v8, v9, 15792; CHECK-V-NEXT: csrr a0, vlenb5793; CHECK-V-NEXT: add a0, sp, a05794; CHECK-V-NEXT: addi a0, a0, 165795; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload5796; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma5797; CHECK-V-NEXT: vslideup.vi v8, v9, 25798; CHECK-V-NEXT: csrr a0, vlenb5799; CHECK-V-NEXT: slli a0, a0, 15800; CHECK-V-NEXT: add a0, sp, a05801; CHECK-V-NEXT: addi a0, a0, 165802; CHECK-V-NEXT: vl2r.v v10, (a0) # vscale x 16-byte Folded Reload5803; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma5804; CHECK-V-NEXT: vslideup.vi v8, v10, 45805; CHECK-V-NEXT: vmax.vx v10, v8, zero5806; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma5807; CHECK-V-NEXT: vnclipu.wi v8, v10, 05808; CHECK-V-NEXT: csrr a0, vlenb5809; CHECK-V-NEXT: slli a0, a0, 25810; CHECK-V-NEXT: add sp, sp, a05811; CHECK-V-NEXT: .cfi_def_cfa sp, 805812; CHECK-V-NEXT: ld ra, 72(sp) # 8-byte Folded Reload5813; CHECK-V-NEXT: ld s0, 64(sp) # 8-byte Folded Reload5814; CHECK-V-NEXT: ld s1, 56(sp) # 8-byte Folded Reload5815; CHECK-V-NEXT: ld s2, 48(sp) # 8-byte Folded Reload5816; CHECK-V-NEXT: ld s3, 40(sp) # 8-byte Folded Reload5817; CHECK-V-NEXT: ld s4, 32(sp) # 8-byte Folded Reload5818; CHECK-V-NEXT: ld s5, 24(sp) # 8-byte Folded Reload5819; CHECK-V-NEXT: ld s6, 16(sp) # 8-byte Folded Reload5820; CHECK-V-NEXT: .cfi_restore ra5821; CHECK-V-NEXT: .cfi_restore s05822; CHECK-V-NEXT: .cfi_restore s15823; CHECK-V-NEXT: .cfi_restore s25824; CHECK-V-NEXT: .cfi_restore s35825; CHECK-V-NEXT: .cfi_restore s45826; CHECK-V-NEXT: .cfi_restore s55827; CHECK-V-NEXT: .cfi_restore s65828; CHECK-V-NEXT: addi sp, sp, 805829; CHECK-V-NEXT: .cfi_def_cfa_offset 05830; CHECK-V-NEXT: ret5831entry:5832 %conv = fptosi <8 x half> %x to <8 x i32>5833 %spec.store.select = call <8 x i32> @llvm.smin.v8i32(<8 x i32> %conv, <8 x i32> <i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535, i32 65535>)5834 %spec.store.select7 = call <8 x i32> @llvm.smax.v8i32(<8 x i32> %spec.store.select, <8 x i32> zeroinitializer)5835 %conv6 = trunc <8 x i32> %spec.store.select7 to <8 x i16>5836 ret <8 x i16> %conv65837}5838 5839; i64 saturate5840 5841define <2 x i64> @stest_f64i64_mm(<2 x double> %x) {5842; CHECK-NOV-LABEL: stest_f64i64_mm:5843; CHECK-NOV: # %bb.0: # %entry5844; CHECK-NOV-NEXT: addi sp, sp, -325845; CHECK-NOV-NEXT: .cfi_def_cfa_offset 325846; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill5847; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill5848; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill5849; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill5850; CHECK-NOV-NEXT: .cfi_offset ra, -85851; CHECK-NOV-NEXT: .cfi_offset s0, -165852; CHECK-NOV-NEXT: .cfi_offset s1, -245853; CHECK-NOV-NEXT: .cfi_offset fs0, -325854; CHECK-NOV-NEXT: fmv.d fs0, fa15855; CHECK-NOV-NEXT: call __fixdfti5856; CHECK-NOV-NEXT: mv s0, a05857; CHECK-NOV-NEXT: mv s1, a15858; CHECK-NOV-NEXT: fmv.d fa0, fs05859; CHECK-NOV-NEXT: call __fixdfti5860; CHECK-NOV-NEXT: mv a2, a05861; CHECK-NOV-NEXT: li a0, -15862; CHECK-NOV-NEXT: srli a3, a0, 15863; CHECK-NOV-NEXT: beqz a1, .LBB45_25864; CHECK-NOV-NEXT: # %bb.1: # %entry5865; CHECK-NOV-NEXT: srli a4, a1, 635866; CHECK-NOV-NEXT: beqz a4, .LBB45_35867; CHECK-NOV-NEXT: j .LBB45_45868; CHECK-NOV-NEXT: .LBB45_2:5869; CHECK-NOV-NEXT: sltu a4, a2, a35870; CHECK-NOV-NEXT: bnez a4, .LBB45_45871; CHECK-NOV-NEXT: .LBB45_3: # %entry5872; CHECK-NOV-NEXT: mv a2, a35873; CHECK-NOV-NEXT: .LBB45_4: # %entry5874; CHECK-NOV-NEXT: beqz s1, .LBB45_65875; CHECK-NOV-NEXT: # %bb.5: # %entry5876; CHECK-NOV-NEXT: srli a6, s1, 635877; CHECK-NOV-NEXT: j .LBB45_75878; CHECK-NOV-NEXT: .LBB45_6:5879; CHECK-NOV-NEXT: sltu a6, s0, a35880; CHECK-NOV-NEXT: .LBB45_7: # %entry5881; CHECK-NOV-NEXT: neg a5, a65882; CHECK-NOV-NEXT: and a5, a5, s15883; CHECK-NOV-NEXT: bnez a6, .LBB45_95884; CHECK-NOV-NEXT: # %bb.8: # %entry5885; CHECK-NOV-NEXT: mv s0, a35886; CHECK-NOV-NEXT: .LBB45_9: # %entry5887; CHECK-NOV-NEXT: neg a4, a45888; CHECK-NOV-NEXT: slli a3, a0, 635889; CHECK-NOV-NEXT: beq a5, a0, .LBB45_115890; CHECK-NOV-NEXT: # %bb.10: # %entry5891; CHECK-NOV-NEXT: srli a5, a5, 635892; CHECK-NOV-NEXT: xori a5, a5, 15893; CHECK-NOV-NEXT: and a1, a4, a15894; CHECK-NOV-NEXT: beqz a5, .LBB45_125895; CHECK-NOV-NEXT: j .LBB45_135896; CHECK-NOV-NEXT: .LBB45_11:5897; CHECK-NOV-NEXT: sltu a5, a3, s05898; CHECK-NOV-NEXT: and a1, a4, a15899; CHECK-NOV-NEXT: bnez a5, .LBB45_135900; CHECK-NOV-NEXT: .LBB45_12: # %entry5901; CHECK-NOV-NEXT: mv s0, a35902; CHECK-NOV-NEXT: .LBB45_13: # %entry5903; CHECK-NOV-NEXT: beq a1, a0, .LBB45_155904; CHECK-NOV-NEXT: # %bb.14: # %entry5905; CHECK-NOV-NEXT: srli a1, a1, 635906; CHECK-NOV-NEXT: xori a0, a1, 15907; CHECK-NOV-NEXT: beqz a0, .LBB45_165908; CHECK-NOV-NEXT: j .LBB45_175909; CHECK-NOV-NEXT: .LBB45_15:5910; CHECK-NOV-NEXT: sltu a0, a3, a25911; CHECK-NOV-NEXT: bnez a0, .LBB45_175912; CHECK-NOV-NEXT: .LBB45_16: # %entry5913; CHECK-NOV-NEXT: mv a2, a35914; CHECK-NOV-NEXT: .LBB45_17: # %entry5915; CHECK-NOV-NEXT: mv a0, s05916; CHECK-NOV-NEXT: mv a1, a25917; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload5918; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload5919; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload5920; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload5921; CHECK-NOV-NEXT: .cfi_restore ra5922; CHECK-NOV-NEXT: .cfi_restore s05923; CHECK-NOV-NEXT: .cfi_restore s15924; CHECK-NOV-NEXT: .cfi_restore fs05925; CHECK-NOV-NEXT: addi sp, sp, 325926; CHECK-NOV-NEXT: .cfi_def_cfa_offset 05927; CHECK-NOV-NEXT: ret5928;5929; CHECK-V-LABEL: stest_f64i64_mm:5930; CHECK-V: # %bb.0: # %entry5931; CHECK-V-NEXT: addi sp, sp, -645932; CHECK-V-NEXT: .cfi_def_cfa_offset 645933; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill5934; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill5935; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill5936; CHECK-V-NEXT: .cfi_offset ra, -85937; CHECK-V-NEXT: .cfi_offset s0, -165938; CHECK-V-NEXT: .cfi_offset s1, -245939; CHECK-V-NEXT: csrr a0, vlenb5940; CHECK-V-NEXT: sub sp, sp, a05941; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb5942; CHECK-V-NEXT: addi a0, sp, 325943; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill5944; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma5945; CHECK-V-NEXT: vslidedown.vi v9, v8, 15946; CHECK-V-NEXT: vfmv.f.s fa0, v95947; CHECK-V-NEXT: call __fixdfti5948; CHECK-V-NEXT: mv s0, a05949; CHECK-V-NEXT: mv s1, a15950; CHECK-V-NEXT: fld fa0, 32(sp) # 8-byte Folded Reload5951; CHECK-V-NEXT: call __fixdfti5952; CHECK-V-NEXT: li a2, -15953; CHECK-V-NEXT: srli a3, a2, 15954; CHECK-V-NEXT: beqz a1, .LBB45_25955; CHECK-V-NEXT: # %bb.1: # %entry5956; CHECK-V-NEXT: srli a4, a1, 635957; CHECK-V-NEXT: beqz a4, .LBB45_35958; CHECK-V-NEXT: j .LBB45_45959; CHECK-V-NEXT: .LBB45_2:5960; CHECK-V-NEXT: sltu a4, a0, a35961; CHECK-V-NEXT: bnez a4, .LBB45_45962; CHECK-V-NEXT: .LBB45_3: # %entry5963; CHECK-V-NEXT: mv a0, a35964; CHECK-V-NEXT: .LBB45_4: # %entry5965; CHECK-V-NEXT: beqz s1, .LBB45_65966; CHECK-V-NEXT: # %bb.5: # %entry5967; CHECK-V-NEXT: srli a6, s1, 635968; CHECK-V-NEXT: j .LBB45_75969; CHECK-V-NEXT: .LBB45_6:5970; CHECK-V-NEXT: sltu a6, s0, a35971; CHECK-V-NEXT: .LBB45_7: # %entry5972; CHECK-V-NEXT: neg a5, a65973; CHECK-V-NEXT: and a5, a5, s15974; CHECK-V-NEXT: bnez a6, .LBB45_95975; CHECK-V-NEXT: # %bb.8: # %entry5976; CHECK-V-NEXT: mv s0, a35977; CHECK-V-NEXT: .LBB45_9: # %entry5978; CHECK-V-NEXT: neg a4, a45979; CHECK-V-NEXT: slli a3, a2, 635980; CHECK-V-NEXT: beq a5, a2, .LBB45_115981; CHECK-V-NEXT: # %bb.10: # %entry5982; CHECK-V-NEXT: srli a5, a5, 635983; CHECK-V-NEXT: xori a5, a5, 15984; CHECK-V-NEXT: and a1, a4, a15985; CHECK-V-NEXT: beqz a5, .LBB45_125986; CHECK-V-NEXT: j .LBB45_135987; CHECK-V-NEXT: .LBB45_11:5988; CHECK-V-NEXT: sltu a5, a3, s05989; CHECK-V-NEXT: and a1, a4, a15990; CHECK-V-NEXT: bnez a5, .LBB45_135991; CHECK-V-NEXT: .LBB45_12: # %entry5992; CHECK-V-NEXT: mv s0, a35993; CHECK-V-NEXT: .LBB45_13: # %entry5994; CHECK-V-NEXT: beq a1, a2, .LBB45_155995; CHECK-V-NEXT: # %bb.14: # %entry5996; CHECK-V-NEXT: srli a1, a1, 635997; CHECK-V-NEXT: xori a1, a1, 15998; CHECK-V-NEXT: beqz a1, .LBB45_165999; CHECK-V-NEXT: j .LBB45_176000; CHECK-V-NEXT: .LBB45_15:6001; CHECK-V-NEXT: sltu a1, a3, a06002; CHECK-V-NEXT: bnez a1, .LBB45_176003; CHECK-V-NEXT: .LBB45_16: # %entry6004; CHECK-V-NEXT: mv a0, a36005; CHECK-V-NEXT: .LBB45_17: # %entry6006; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6007; CHECK-V-NEXT: vmv.s.x v8, a06008; CHECK-V-NEXT: vmv.s.x v9, s06009; CHECK-V-NEXT: vslideup.vi v8, v9, 16010; CHECK-V-NEXT: csrr a0, vlenb6011; CHECK-V-NEXT: add sp, sp, a06012; CHECK-V-NEXT: .cfi_def_cfa sp, 646013; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload6014; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload6015; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload6016; CHECK-V-NEXT: .cfi_restore ra6017; CHECK-V-NEXT: .cfi_restore s06018; CHECK-V-NEXT: .cfi_restore s16019; CHECK-V-NEXT: addi sp, sp, 646020; CHECK-V-NEXT: .cfi_def_cfa_offset 06021; CHECK-V-NEXT: ret6022entry:6023 %conv = fptosi <2 x double> %x to <2 x i128>6024 %spec.store.select = call <2 x i128> @llvm.smin.v2i128(<2 x i128> %conv, <2 x i128> <i128 9223372036854775807, i128 9223372036854775807>)6025 %spec.store.select7 = call <2 x i128> @llvm.smax.v2i128(<2 x i128> %spec.store.select, <2 x i128> <i128 -9223372036854775808, i128 -9223372036854775808>)6026 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>6027 ret <2 x i64> %conv66028}6029 6030define <2 x i64> @utest_f64i64_mm(<2 x double> %x) {6031; CHECK-NOV-LABEL: utest_f64i64_mm:6032; CHECK-NOV: # %bb.0: # %entry6033; CHECK-NOV-NEXT: addi sp, sp, -326034; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326035; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6036; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6037; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6038; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill6039; CHECK-NOV-NEXT: .cfi_offset ra, -86040; CHECK-NOV-NEXT: .cfi_offset s0, -166041; CHECK-NOV-NEXT: .cfi_offset s1, -246042; CHECK-NOV-NEXT: .cfi_offset fs0, -326043; CHECK-NOV-NEXT: fmv.d fs0, fa06044; CHECK-NOV-NEXT: fmv.d fa0, fa16045; CHECK-NOV-NEXT: call __fixunsdfti6046; CHECK-NOV-NEXT: mv s0, a06047; CHECK-NOV-NEXT: mv s1, a16048; CHECK-NOV-NEXT: fmv.d fa0, fs06049; CHECK-NOV-NEXT: call __fixunsdfti6050; CHECK-NOV-NEXT: snez a1, a16051; CHECK-NOV-NEXT: snez a2, s16052; CHECK-NOV-NEXT: addi a1, a1, -16053; CHECK-NOV-NEXT: addi a2, a2, -16054; CHECK-NOV-NEXT: and a0, a1, a06055; CHECK-NOV-NEXT: and a1, a2, s06056; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6057; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6058; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6059; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload6060; CHECK-NOV-NEXT: .cfi_restore ra6061; CHECK-NOV-NEXT: .cfi_restore s06062; CHECK-NOV-NEXT: .cfi_restore s16063; CHECK-NOV-NEXT: .cfi_restore fs06064; CHECK-NOV-NEXT: addi sp, sp, 326065; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06066; CHECK-NOV-NEXT: ret6067;6068; CHECK-V-LABEL: utest_f64i64_mm:6069; CHECK-V: # %bb.0: # %entry6070; CHECK-V-NEXT: addi sp, sp, -646071; CHECK-V-NEXT: .cfi_def_cfa_offset 646072; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill6073; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill6074; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill6075; CHECK-V-NEXT: .cfi_offset ra, -86076; CHECK-V-NEXT: .cfi_offset s0, -166077; CHECK-V-NEXT: .cfi_offset s1, -246078; CHECK-V-NEXT: csrr a0, vlenb6079; CHECK-V-NEXT: sub sp, sp, a06080; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb6081; CHECK-V-NEXT: addi a0, sp, 326082; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill6083; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma6084; CHECK-V-NEXT: vfmv.f.s fa0, v86085; CHECK-V-NEXT: call __fixunsdfti6086; CHECK-V-NEXT: mv s0, a06087; CHECK-V-NEXT: mv s1, a16088; CHECK-V-NEXT: addi a0, sp, 326089; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload6090; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma6091; CHECK-V-NEXT: vslidedown.vi v8, v8, 16092; CHECK-V-NEXT: vfmv.f.s fa0, v86093; CHECK-V-NEXT: call __fixunsdfti6094; CHECK-V-NEXT: snez a1, a16095; CHECK-V-NEXT: snez a2, s16096; CHECK-V-NEXT: addi a1, a1, -16097; CHECK-V-NEXT: addi a2, a2, -16098; CHECK-V-NEXT: and a0, a1, a06099; CHECK-V-NEXT: and a2, a2, s06100; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6101; CHECK-V-NEXT: vmv.s.x v8, a26102; CHECK-V-NEXT: vmv.s.x v9, a06103; CHECK-V-NEXT: vslideup.vi v8, v9, 16104; CHECK-V-NEXT: csrr a0, vlenb6105; CHECK-V-NEXT: add sp, sp, a06106; CHECK-V-NEXT: .cfi_def_cfa sp, 646107; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload6108; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload6109; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload6110; CHECK-V-NEXT: .cfi_restore ra6111; CHECK-V-NEXT: .cfi_restore s06112; CHECK-V-NEXT: .cfi_restore s16113; CHECK-V-NEXT: addi sp, sp, 646114; CHECK-V-NEXT: .cfi_def_cfa_offset 06115; CHECK-V-NEXT: ret6116entry:6117 %conv = fptoui <2 x double> %x to <2 x i128>6118 %spec.store.select = call <2 x i128> @llvm.umin.v2i128(<2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>)6119 %conv6 = trunc <2 x i128> %spec.store.select to <2 x i64>6120 ret <2 x i64> %conv66121}6122 6123define <2 x i64> @ustest_f64i64_mm(<2 x double> %x) {6124; CHECK-NOV-LABEL: ustest_f64i64_mm:6125; CHECK-NOV: # %bb.0: # %entry6126; CHECK-NOV-NEXT: addi sp, sp, -326127; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326128; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6129; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6130; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6131; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill6132; CHECK-NOV-NEXT: .cfi_offset ra, -86133; CHECK-NOV-NEXT: .cfi_offset s0, -166134; CHECK-NOV-NEXT: .cfi_offset s1, -246135; CHECK-NOV-NEXT: .cfi_offset fs0, -326136; CHECK-NOV-NEXT: fmv.d fs0, fa16137; CHECK-NOV-NEXT: call __fixdfti6138; CHECK-NOV-NEXT: mv s0, a06139; CHECK-NOV-NEXT: mv s1, a16140; CHECK-NOV-NEXT: fmv.d fa0, fs06141; CHECK-NOV-NEXT: call __fixdfti6142; CHECK-NOV-NEXT: mv a2, a16143; CHECK-NOV-NEXT: blez a1, .LBB47_26144; CHECK-NOV-NEXT: # %bb.1: # %entry6145; CHECK-NOV-NEXT: li a2, 16146; CHECK-NOV-NEXT: .LBB47_2: # %entry6147; CHECK-NOV-NEXT: mv a3, s16148; CHECK-NOV-NEXT: blez s1, .LBB47_46149; CHECK-NOV-NEXT: # %bb.3: # %entry6150; CHECK-NOV-NEXT: li a3, 16151; CHECK-NOV-NEXT: .LBB47_4: # %entry6152; CHECK-NOV-NEXT: slti a1, a1, 16153; CHECK-NOV-NEXT: slti a4, s1, 16154; CHECK-NOV-NEXT: srli a3, a3, 636155; CHECK-NOV-NEXT: srli a2, a2, 636156; CHECK-NOV-NEXT: neg a1, a16157; CHECK-NOV-NEXT: neg a4, a46158; CHECK-NOV-NEXT: addi a3, a3, -16159; CHECK-NOV-NEXT: addi a2, a2, -16160; CHECK-NOV-NEXT: and a1, a1, a06161; CHECK-NOV-NEXT: and a0, a4, s06162; CHECK-NOV-NEXT: and a0, a3, a06163; CHECK-NOV-NEXT: and a1, a2, a16164; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6165; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6166; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6167; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload6168; CHECK-NOV-NEXT: .cfi_restore ra6169; CHECK-NOV-NEXT: .cfi_restore s06170; CHECK-NOV-NEXT: .cfi_restore s16171; CHECK-NOV-NEXT: .cfi_restore fs06172; CHECK-NOV-NEXT: addi sp, sp, 326173; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06174; CHECK-NOV-NEXT: ret6175;6176; CHECK-V-LABEL: ustest_f64i64_mm:6177; CHECK-V: # %bb.0: # %entry6178; CHECK-V-NEXT: addi sp, sp, -646179; CHECK-V-NEXT: .cfi_def_cfa_offset 646180; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill6181; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill6182; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill6183; CHECK-V-NEXT: .cfi_offset ra, -86184; CHECK-V-NEXT: .cfi_offset s0, -166185; CHECK-V-NEXT: .cfi_offset s1, -246186; CHECK-V-NEXT: csrr a0, vlenb6187; CHECK-V-NEXT: sub sp, sp, a06188; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb6189; CHECK-V-NEXT: addi a0, sp, 326190; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill6191; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma6192; CHECK-V-NEXT: vslidedown.vi v9, v8, 16193; CHECK-V-NEXT: vfmv.f.s fa0, v96194; CHECK-V-NEXT: call __fixdfti6195; CHECK-V-NEXT: mv s0, a06196; CHECK-V-NEXT: mv s1, a16197; CHECK-V-NEXT: fld fa0, 32(sp) # 8-byte Folded Reload6198; CHECK-V-NEXT: call __fixdfti6199; CHECK-V-NEXT: mv a2, a16200; CHECK-V-NEXT: blez a1, .LBB47_26201; CHECK-V-NEXT: # %bb.1: # %entry6202; CHECK-V-NEXT: li a2, 16203; CHECK-V-NEXT: .LBB47_2: # %entry6204; CHECK-V-NEXT: mv a3, s16205; CHECK-V-NEXT: blez s1, .LBB47_46206; CHECK-V-NEXT: # %bb.3: # %entry6207; CHECK-V-NEXT: li a3, 16208; CHECK-V-NEXT: .LBB47_4: # %entry6209; CHECK-V-NEXT: slti a1, a1, 16210; CHECK-V-NEXT: slti a4, s1, 16211; CHECK-V-NEXT: srli a3, a3, 636212; CHECK-V-NEXT: srli a2, a2, 636213; CHECK-V-NEXT: neg a1, a16214; CHECK-V-NEXT: neg a4, a46215; CHECK-V-NEXT: addi a3, a3, -16216; CHECK-V-NEXT: addi a2, a2, -16217; CHECK-V-NEXT: and a0, a1, a06218; CHECK-V-NEXT: and a4, a4, s06219; CHECK-V-NEXT: and a3, a3, a46220; CHECK-V-NEXT: and a0, a2, a06221; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6222; CHECK-V-NEXT: vmv.s.x v8, a06223; CHECK-V-NEXT: vmv.s.x v9, a36224; CHECK-V-NEXT: vslideup.vi v8, v9, 16225; CHECK-V-NEXT: csrr a0, vlenb6226; CHECK-V-NEXT: add sp, sp, a06227; CHECK-V-NEXT: .cfi_def_cfa sp, 646228; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload6229; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload6230; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload6231; CHECK-V-NEXT: .cfi_restore ra6232; CHECK-V-NEXT: .cfi_restore s06233; CHECK-V-NEXT: .cfi_restore s16234; CHECK-V-NEXT: addi sp, sp, 646235; CHECK-V-NEXT: .cfi_def_cfa_offset 06236; CHECK-V-NEXT: ret6237entry:6238 %conv = fptosi <2 x double> %x to <2 x i128>6239 %spec.store.select = call <2 x i128> @llvm.smin.v2i128(<2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>)6240 %spec.store.select7 = call <2 x i128> @llvm.smax.v2i128(<2 x i128> %spec.store.select, <2 x i128> zeroinitializer)6241 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>6242 ret <2 x i64> %conv66243}6244 6245define <2 x i64> @stest_f32i64_mm(<2 x float> %x) {6246; CHECK-NOV-LABEL: stest_f32i64_mm:6247; CHECK-NOV: # %bb.0: # %entry6248; CHECK-NOV-NEXT: addi sp, sp, -326249; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326250; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6251; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6252; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6253; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill6254; CHECK-NOV-NEXT: .cfi_offset ra, -86255; CHECK-NOV-NEXT: .cfi_offset s0, -166256; CHECK-NOV-NEXT: .cfi_offset s1, -246257; CHECK-NOV-NEXT: .cfi_offset fs0, -326258; CHECK-NOV-NEXT: fmv.s fs0, fa16259; CHECK-NOV-NEXT: call __fixsfti6260; CHECK-NOV-NEXT: mv s0, a06261; CHECK-NOV-NEXT: mv s1, a16262; CHECK-NOV-NEXT: fmv.s fa0, fs06263; CHECK-NOV-NEXT: call __fixsfti6264; CHECK-NOV-NEXT: mv a2, a06265; CHECK-NOV-NEXT: li a0, -16266; CHECK-NOV-NEXT: srli a3, a0, 16267; CHECK-NOV-NEXT: beqz a1, .LBB48_26268; CHECK-NOV-NEXT: # %bb.1: # %entry6269; CHECK-NOV-NEXT: srli a4, a1, 636270; CHECK-NOV-NEXT: beqz a4, .LBB48_36271; CHECK-NOV-NEXT: j .LBB48_46272; CHECK-NOV-NEXT: .LBB48_2:6273; CHECK-NOV-NEXT: sltu a4, a2, a36274; CHECK-NOV-NEXT: bnez a4, .LBB48_46275; CHECK-NOV-NEXT: .LBB48_3: # %entry6276; CHECK-NOV-NEXT: mv a2, a36277; CHECK-NOV-NEXT: .LBB48_4: # %entry6278; CHECK-NOV-NEXT: beqz s1, .LBB48_66279; CHECK-NOV-NEXT: # %bb.5: # %entry6280; CHECK-NOV-NEXT: srli a6, s1, 636281; CHECK-NOV-NEXT: j .LBB48_76282; CHECK-NOV-NEXT: .LBB48_6:6283; CHECK-NOV-NEXT: sltu a6, s0, a36284; CHECK-NOV-NEXT: .LBB48_7: # %entry6285; CHECK-NOV-NEXT: neg a5, a66286; CHECK-NOV-NEXT: and a5, a5, s16287; CHECK-NOV-NEXT: bnez a6, .LBB48_96288; CHECK-NOV-NEXT: # %bb.8: # %entry6289; CHECK-NOV-NEXT: mv s0, a36290; CHECK-NOV-NEXT: .LBB48_9: # %entry6291; CHECK-NOV-NEXT: neg a4, a46292; CHECK-NOV-NEXT: slli a3, a0, 636293; CHECK-NOV-NEXT: beq a5, a0, .LBB48_116294; CHECK-NOV-NEXT: # %bb.10: # %entry6295; CHECK-NOV-NEXT: srli a5, a5, 636296; CHECK-NOV-NEXT: xori a5, a5, 16297; CHECK-NOV-NEXT: and a1, a4, a16298; CHECK-NOV-NEXT: beqz a5, .LBB48_126299; CHECK-NOV-NEXT: j .LBB48_136300; CHECK-NOV-NEXT: .LBB48_11:6301; CHECK-NOV-NEXT: sltu a5, a3, s06302; CHECK-NOV-NEXT: and a1, a4, a16303; CHECK-NOV-NEXT: bnez a5, .LBB48_136304; CHECK-NOV-NEXT: .LBB48_12: # %entry6305; CHECK-NOV-NEXT: mv s0, a36306; CHECK-NOV-NEXT: .LBB48_13: # %entry6307; CHECK-NOV-NEXT: beq a1, a0, .LBB48_156308; CHECK-NOV-NEXT: # %bb.14: # %entry6309; CHECK-NOV-NEXT: srli a1, a1, 636310; CHECK-NOV-NEXT: xori a0, a1, 16311; CHECK-NOV-NEXT: beqz a0, .LBB48_166312; CHECK-NOV-NEXT: j .LBB48_176313; CHECK-NOV-NEXT: .LBB48_15:6314; CHECK-NOV-NEXT: sltu a0, a3, a26315; CHECK-NOV-NEXT: bnez a0, .LBB48_176316; CHECK-NOV-NEXT: .LBB48_16: # %entry6317; CHECK-NOV-NEXT: mv a2, a36318; CHECK-NOV-NEXT: .LBB48_17: # %entry6319; CHECK-NOV-NEXT: mv a0, s06320; CHECK-NOV-NEXT: mv a1, a26321; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6322; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6323; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6324; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload6325; CHECK-NOV-NEXT: .cfi_restore ra6326; CHECK-NOV-NEXT: .cfi_restore s06327; CHECK-NOV-NEXT: .cfi_restore s16328; CHECK-NOV-NEXT: .cfi_restore fs06329; CHECK-NOV-NEXT: addi sp, sp, 326330; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06331; CHECK-NOV-NEXT: ret6332;6333; CHECK-V-LABEL: stest_f32i64_mm:6334; CHECK-V: # %bb.0: # %entry6335; CHECK-V-NEXT: addi sp, sp, -646336; CHECK-V-NEXT: .cfi_def_cfa_offset 646337; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill6338; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill6339; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill6340; CHECK-V-NEXT: .cfi_offset ra, -86341; CHECK-V-NEXT: .cfi_offset s0, -166342; CHECK-V-NEXT: .cfi_offset s1, -246343; CHECK-V-NEXT: csrr a0, vlenb6344; CHECK-V-NEXT: sub sp, sp, a06345; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb6346; CHECK-V-NEXT: addi a0, sp, 326347; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill6348; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma6349; CHECK-V-NEXT: vslidedown.vi v9, v8, 16350; CHECK-V-NEXT: vfmv.f.s fa0, v96351; CHECK-V-NEXT: call __fixsfti6352; CHECK-V-NEXT: mv s0, a06353; CHECK-V-NEXT: mv s1, a16354; CHECK-V-NEXT: flw fa0, 32(sp) # 8-byte Folded Reload6355; CHECK-V-NEXT: call __fixsfti6356; CHECK-V-NEXT: li a2, -16357; CHECK-V-NEXT: srli a3, a2, 16358; CHECK-V-NEXT: beqz a1, .LBB48_26359; CHECK-V-NEXT: # %bb.1: # %entry6360; CHECK-V-NEXT: srli a4, a1, 636361; CHECK-V-NEXT: beqz a4, .LBB48_36362; CHECK-V-NEXT: j .LBB48_46363; CHECK-V-NEXT: .LBB48_2:6364; CHECK-V-NEXT: sltu a4, a0, a36365; CHECK-V-NEXT: bnez a4, .LBB48_46366; CHECK-V-NEXT: .LBB48_3: # %entry6367; CHECK-V-NEXT: mv a0, a36368; CHECK-V-NEXT: .LBB48_4: # %entry6369; CHECK-V-NEXT: beqz s1, .LBB48_66370; CHECK-V-NEXT: # %bb.5: # %entry6371; CHECK-V-NEXT: srli a6, s1, 636372; CHECK-V-NEXT: j .LBB48_76373; CHECK-V-NEXT: .LBB48_6:6374; CHECK-V-NEXT: sltu a6, s0, a36375; CHECK-V-NEXT: .LBB48_7: # %entry6376; CHECK-V-NEXT: neg a5, a66377; CHECK-V-NEXT: and a5, a5, s16378; CHECK-V-NEXT: bnez a6, .LBB48_96379; CHECK-V-NEXT: # %bb.8: # %entry6380; CHECK-V-NEXT: mv s0, a36381; CHECK-V-NEXT: .LBB48_9: # %entry6382; CHECK-V-NEXT: neg a4, a46383; CHECK-V-NEXT: slli a3, a2, 636384; CHECK-V-NEXT: beq a5, a2, .LBB48_116385; CHECK-V-NEXT: # %bb.10: # %entry6386; CHECK-V-NEXT: srli a5, a5, 636387; CHECK-V-NEXT: xori a5, a5, 16388; CHECK-V-NEXT: and a1, a4, a16389; CHECK-V-NEXT: beqz a5, .LBB48_126390; CHECK-V-NEXT: j .LBB48_136391; CHECK-V-NEXT: .LBB48_11:6392; CHECK-V-NEXT: sltu a5, a3, s06393; CHECK-V-NEXT: and a1, a4, a16394; CHECK-V-NEXT: bnez a5, .LBB48_136395; CHECK-V-NEXT: .LBB48_12: # %entry6396; CHECK-V-NEXT: mv s0, a36397; CHECK-V-NEXT: .LBB48_13: # %entry6398; CHECK-V-NEXT: beq a1, a2, .LBB48_156399; CHECK-V-NEXT: # %bb.14: # %entry6400; CHECK-V-NEXT: srli a1, a1, 636401; CHECK-V-NEXT: xori a1, a1, 16402; CHECK-V-NEXT: beqz a1, .LBB48_166403; CHECK-V-NEXT: j .LBB48_176404; CHECK-V-NEXT: .LBB48_15:6405; CHECK-V-NEXT: sltu a1, a3, a06406; CHECK-V-NEXT: bnez a1, .LBB48_176407; CHECK-V-NEXT: .LBB48_16: # %entry6408; CHECK-V-NEXT: mv a0, a36409; CHECK-V-NEXT: .LBB48_17: # %entry6410; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6411; CHECK-V-NEXT: vmv.s.x v8, a06412; CHECK-V-NEXT: vmv.s.x v9, s06413; CHECK-V-NEXT: vslideup.vi v8, v9, 16414; CHECK-V-NEXT: csrr a0, vlenb6415; CHECK-V-NEXT: add sp, sp, a06416; CHECK-V-NEXT: .cfi_def_cfa sp, 646417; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload6418; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload6419; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload6420; CHECK-V-NEXT: .cfi_restore ra6421; CHECK-V-NEXT: .cfi_restore s06422; CHECK-V-NEXT: .cfi_restore s16423; CHECK-V-NEXT: addi sp, sp, 646424; CHECK-V-NEXT: .cfi_def_cfa_offset 06425; CHECK-V-NEXT: ret6426entry:6427 %conv = fptosi <2 x float> %x to <2 x i128>6428 %spec.store.select = call <2 x i128> @llvm.smin.v2i128(<2 x i128> %conv, <2 x i128> <i128 9223372036854775807, i128 9223372036854775807>)6429 %spec.store.select7 = call <2 x i128> @llvm.smax.v2i128(<2 x i128> %spec.store.select, <2 x i128> <i128 -9223372036854775808, i128 -9223372036854775808>)6430 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>6431 ret <2 x i64> %conv66432}6433 6434define <2 x i64> @utest_f32i64_mm(<2 x float> %x) {6435; CHECK-NOV-LABEL: utest_f32i64_mm:6436; CHECK-NOV: # %bb.0: # %entry6437; CHECK-NOV-NEXT: addi sp, sp, -326438; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326439; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6440; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6441; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6442; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill6443; CHECK-NOV-NEXT: .cfi_offset ra, -86444; CHECK-NOV-NEXT: .cfi_offset s0, -166445; CHECK-NOV-NEXT: .cfi_offset s1, -246446; CHECK-NOV-NEXT: .cfi_offset fs0, -326447; CHECK-NOV-NEXT: fmv.s fs0, fa06448; CHECK-NOV-NEXT: fmv.s fa0, fa16449; CHECK-NOV-NEXT: call __fixunssfti6450; CHECK-NOV-NEXT: mv s0, a06451; CHECK-NOV-NEXT: mv s1, a16452; CHECK-NOV-NEXT: fmv.s fa0, fs06453; CHECK-NOV-NEXT: call __fixunssfti6454; CHECK-NOV-NEXT: snez a1, a16455; CHECK-NOV-NEXT: snez a2, s16456; CHECK-NOV-NEXT: addi a1, a1, -16457; CHECK-NOV-NEXT: addi a2, a2, -16458; CHECK-NOV-NEXT: and a0, a1, a06459; CHECK-NOV-NEXT: and a1, a2, s06460; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6461; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6462; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6463; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload6464; CHECK-NOV-NEXT: .cfi_restore ra6465; CHECK-NOV-NEXT: .cfi_restore s06466; CHECK-NOV-NEXT: .cfi_restore s16467; CHECK-NOV-NEXT: .cfi_restore fs06468; CHECK-NOV-NEXT: addi sp, sp, 326469; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06470; CHECK-NOV-NEXT: ret6471;6472; CHECK-V-LABEL: utest_f32i64_mm:6473; CHECK-V: # %bb.0: # %entry6474; CHECK-V-NEXT: addi sp, sp, -646475; CHECK-V-NEXT: .cfi_def_cfa_offset 646476; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill6477; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill6478; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill6479; CHECK-V-NEXT: .cfi_offset ra, -86480; CHECK-V-NEXT: .cfi_offset s0, -166481; CHECK-V-NEXT: .cfi_offset s1, -246482; CHECK-V-NEXT: csrr a0, vlenb6483; CHECK-V-NEXT: sub sp, sp, a06484; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb6485; CHECK-V-NEXT: addi a0, sp, 326486; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill6487; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma6488; CHECK-V-NEXT: vfmv.f.s fa0, v86489; CHECK-V-NEXT: call __fixunssfti6490; CHECK-V-NEXT: mv s0, a06491; CHECK-V-NEXT: mv s1, a16492; CHECK-V-NEXT: addi a0, sp, 326493; CHECK-V-NEXT: vl1r.v v8, (a0) # vscale x 8-byte Folded Reload6494; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma6495; CHECK-V-NEXT: vslidedown.vi v8, v8, 16496; CHECK-V-NEXT: vfmv.f.s fa0, v86497; CHECK-V-NEXT: call __fixunssfti6498; CHECK-V-NEXT: snez a1, a16499; CHECK-V-NEXT: snez a2, s16500; CHECK-V-NEXT: addi a1, a1, -16501; CHECK-V-NEXT: addi a2, a2, -16502; CHECK-V-NEXT: and a0, a1, a06503; CHECK-V-NEXT: and a2, a2, s06504; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6505; CHECK-V-NEXT: vmv.s.x v8, a26506; CHECK-V-NEXT: vmv.s.x v9, a06507; CHECK-V-NEXT: vslideup.vi v8, v9, 16508; CHECK-V-NEXT: csrr a0, vlenb6509; CHECK-V-NEXT: add sp, sp, a06510; CHECK-V-NEXT: .cfi_def_cfa sp, 646511; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload6512; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload6513; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload6514; CHECK-V-NEXT: .cfi_restore ra6515; CHECK-V-NEXT: .cfi_restore s06516; CHECK-V-NEXT: .cfi_restore s16517; CHECK-V-NEXT: addi sp, sp, 646518; CHECK-V-NEXT: .cfi_def_cfa_offset 06519; CHECK-V-NEXT: ret6520entry:6521 %conv = fptoui <2 x float> %x to <2 x i128>6522 %spec.store.select = call <2 x i128> @llvm.umin.v2i128(<2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>)6523 %conv6 = trunc <2 x i128> %spec.store.select to <2 x i64>6524 ret <2 x i64> %conv66525}6526 6527define <2 x i64> @ustest_f32i64_mm(<2 x float> %x) {6528; CHECK-NOV-LABEL: ustest_f32i64_mm:6529; CHECK-NOV: # %bb.0: # %entry6530; CHECK-NOV-NEXT: addi sp, sp, -326531; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326532; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6533; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6534; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6535; CHECK-NOV-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill6536; CHECK-NOV-NEXT: .cfi_offset ra, -86537; CHECK-NOV-NEXT: .cfi_offset s0, -166538; CHECK-NOV-NEXT: .cfi_offset s1, -246539; CHECK-NOV-NEXT: .cfi_offset fs0, -326540; CHECK-NOV-NEXT: fmv.s fs0, fa16541; CHECK-NOV-NEXT: call __fixsfti6542; CHECK-NOV-NEXT: mv s0, a06543; CHECK-NOV-NEXT: mv s1, a16544; CHECK-NOV-NEXT: fmv.s fa0, fs06545; CHECK-NOV-NEXT: call __fixsfti6546; CHECK-NOV-NEXT: mv a2, a16547; CHECK-NOV-NEXT: blez a1, .LBB50_26548; CHECK-NOV-NEXT: # %bb.1: # %entry6549; CHECK-NOV-NEXT: li a2, 16550; CHECK-NOV-NEXT: .LBB50_2: # %entry6551; CHECK-NOV-NEXT: mv a3, s16552; CHECK-NOV-NEXT: blez s1, .LBB50_46553; CHECK-NOV-NEXT: # %bb.3: # %entry6554; CHECK-NOV-NEXT: li a3, 16555; CHECK-NOV-NEXT: .LBB50_4: # %entry6556; CHECK-NOV-NEXT: slti a1, a1, 16557; CHECK-NOV-NEXT: slti a4, s1, 16558; CHECK-NOV-NEXT: srli a3, a3, 636559; CHECK-NOV-NEXT: srli a2, a2, 636560; CHECK-NOV-NEXT: neg a1, a16561; CHECK-NOV-NEXT: neg a4, a46562; CHECK-NOV-NEXT: addi a3, a3, -16563; CHECK-NOV-NEXT: addi a2, a2, -16564; CHECK-NOV-NEXT: and a1, a1, a06565; CHECK-NOV-NEXT: and a0, a4, s06566; CHECK-NOV-NEXT: and a0, a3, a06567; CHECK-NOV-NEXT: and a1, a2, a16568; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6569; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6570; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6571; CHECK-NOV-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload6572; CHECK-NOV-NEXT: .cfi_restore ra6573; CHECK-NOV-NEXT: .cfi_restore s06574; CHECK-NOV-NEXT: .cfi_restore s16575; CHECK-NOV-NEXT: .cfi_restore fs06576; CHECK-NOV-NEXT: addi sp, sp, 326577; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06578; CHECK-NOV-NEXT: ret6579;6580; CHECK-V-LABEL: ustest_f32i64_mm:6581; CHECK-V: # %bb.0: # %entry6582; CHECK-V-NEXT: addi sp, sp, -646583; CHECK-V-NEXT: .cfi_def_cfa_offset 646584; CHECK-V-NEXT: sd ra, 56(sp) # 8-byte Folded Spill6585; CHECK-V-NEXT: sd s0, 48(sp) # 8-byte Folded Spill6586; CHECK-V-NEXT: sd s1, 40(sp) # 8-byte Folded Spill6587; CHECK-V-NEXT: .cfi_offset ra, -86588; CHECK-V-NEXT: .cfi_offset s0, -166589; CHECK-V-NEXT: .cfi_offset s1, -246590; CHECK-V-NEXT: csrr a0, vlenb6591; CHECK-V-NEXT: sub sp, sp, a06592; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0e, 0x72, 0x00, 0x11, 0xc0, 0x00, 0x22, 0x11, 0x01, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 64 + 1 * vlenb6593; CHECK-V-NEXT: addi a0, sp, 326594; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill6595; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma6596; CHECK-V-NEXT: vslidedown.vi v9, v8, 16597; CHECK-V-NEXT: vfmv.f.s fa0, v96598; CHECK-V-NEXT: call __fixsfti6599; CHECK-V-NEXT: mv s0, a06600; CHECK-V-NEXT: mv s1, a16601; CHECK-V-NEXT: flw fa0, 32(sp) # 8-byte Folded Reload6602; CHECK-V-NEXT: call __fixsfti6603; CHECK-V-NEXT: mv a2, a16604; CHECK-V-NEXT: blez a1, .LBB50_26605; CHECK-V-NEXT: # %bb.1: # %entry6606; CHECK-V-NEXT: li a2, 16607; CHECK-V-NEXT: .LBB50_2: # %entry6608; CHECK-V-NEXT: mv a3, s16609; CHECK-V-NEXT: blez s1, .LBB50_46610; CHECK-V-NEXT: # %bb.3: # %entry6611; CHECK-V-NEXT: li a3, 16612; CHECK-V-NEXT: .LBB50_4: # %entry6613; CHECK-V-NEXT: slti a1, a1, 16614; CHECK-V-NEXT: slti a4, s1, 16615; CHECK-V-NEXT: srli a3, a3, 636616; CHECK-V-NEXT: srli a2, a2, 636617; CHECK-V-NEXT: neg a1, a16618; CHECK-V-NEXT: neg a4, a46619; CHECK-V-NEXT: addi a3, a3, -16620; CHECK-V-NEXT: addi a2, a2, -16621; CHECK-V-NEXT: and a0, a1, a06622; CHECK-V-NEXT: and a4, a4, s06623; CHECK-V-NEXT: and a3, a3, a46624; CHECK-V-NEXT: and a0, a2, a06625; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6626; CHECK-V-NEXT: vmv.s.x v8, a06627; CHECK-V-NEXT: vmv.s.x v9, a36628; CHECK-V-NEXT: vslideup.vi v8, v9, 16629; CHECK-V-NEXT: csrr a0, vlenb6630; CHECK-V-NEXT: add sp, sp, a06631; CHECK-V-NEXT: .cfi_def_cfa sp, 646632; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload6633; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload6634; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload6635; CHECK-V-NEXT: .cfi_restore ra6636; CHECK-V-NEXT: .cfi_restore s06637; CHECK-V-NEXT: .cfi_restore s16638; CHECK-V-NEXT: addi sp, sp, 646639; CHECK-V-NEXT: .cfi_def_cfa_offset 06640; CHECK-V-NEXT: ret6641entry:6642 %conv = fptosi <2 x float> %x to <2 x i128>6643 %spec.store.select = call <2 x i128> @llvm.smin.v2i128(<2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>)6644 %spec.store.select7 = call <2 x i128> @llvm.smax.v2i128(<2 x i128> %spec.store.select, <2 x i128> zeroinitializer)6645 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>6646 ret <2 x i64> %conv66647}6648 6649define <2 x i64> @stest_f16i64_mm(<2 x half> %x) {6650; CHECK-NOV-LABEL: stest_f16i64_mm:6651; CHECK-NOV: # %bb.0: # %entry6652; CHECK-NOV-NEXT: addi sp, sp, -326653; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326654; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6655; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6656; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6657; CHECK-NOV-NEXT: sd s2, 0(sp) # 8-byte Folded Spill6658; CHECK-NOV-NEXT: .cfi_offset ra, -86659; CHECK-NOV-NEXT: .cfi_offset s0, -166660; CHECK-NOV-NEXT: .cfi_offset s1, -246661; CHECK-NOV-NEXT: .cfi_offset s2, -326662; CHECK-NOV-NEXT: mv s2, a16663; CHECK-NOV-NEXT: fmv.w.x fa0, a06664; CHECK-NOV-NEXT: call __extendhfsf26665; CHECK-NOV-NEXT: call __fixsfti6666; CHECK-NOV-NEXT: mv s0, a06667; CHECK-NOV-NEXT: mv s1, a16668; CHECK-NOV-NEXT: fmv.w.x fa0, s26669; CHECK-NOV-NEXT: call __extendhfsf26670; CHECK-NOV-NEXT: call __fixsfti6671; CHECK-NOV-NEXT: mv a2, a06672; CHECK-NOV-NEXT: li a0, -16673; CHECK-NOV-NEXT: srli a3, a0, 16674; CHECK-NOV-NEXT: beqz a1, .LBB51_26675; CHECK-NOV-NEXT: # %bb.1: # %entry6676; CHECK-NOV-NEXT: srli a4, a1, 636677; CHECK-NOV-NEXT: beqz a4, .LBB51_36678; CHECK-NOV-NEXT: j .LBB51_46679; CHECK-NOV-NEXT: .LBB51_2:6680; CHECK-NOV-NEXT: sltu a4, a2, a36681; CHECK-NOV-NEXT: bnez a4, .LBB51_46682; CHECK-NOV-NEXT: .LBB51_3: # %entry6683; CHECK-NOV-NEXT: mv a2, a36684; CHECK-NOV-NEXT: .LBB51_4: # %entry6685; CHECK-NOV-NEXT: beqz s1, .LBB51_66686; CHECK-NOV-NEXT: # %bb.5: # %entry6687; CHECK-NOV-NEXT: srli a6, s1, 636688; CHECK-NOV-NEXT: j .LBB51_76689; CHECK-NOV-NEXT: .LBB51_6:6690; CHECK-NOV-NEXT: sltu a6, s0, a36691; CHECK-NOV-NEXT: .LBB51_7: # %entry6692; CHECK-NOV-NEXT: neg a5, a66693; CHECK-NOV-NEXT: and a5, a5, s16694; CHECK-NOV-NEXT: bnez a6, .LBB51_96695; CHECK-NOV-NEXT: # %bb.8: # %entry6696; CHECK-NOV-NEXT: mv s0, a36697; CHECK-NOV-NEXT: .LBB51_9: # %entry6698; CHECK-NOV-NEXT: neg a4, a46699; CHECK-NOV-NEXT: slli a3, a0, 636700; CHECK-NOV-NEXT: beq a5, a0, .LBB51_116701; CHECK-NOV-NEXT: # %bb.10: # %entry6702; CHECK-NOV-NEXT: srli a5, a5, 636703; CHECK-NOV-NEXT: xori a5, a5, 16704; CHECK-NOV-NEXT: and a1, a4, a16705; CHECK-NOV-NEXT: beqz a5, .LBB51_126706; CHECK-NOV-NEXT: j .LBB51_136707; CHECK-NOV-NEXT: .LBB51_11:6708; CHECK-NOV-NEXT: sltu a5, a3, s06709; CHECK-NOV-NEXT: and a1, a4, a16710; CHECK-NOV-NEXT: bnez a5, .LBB51_136711; CHECK-NOV-NEXT: .LBB51_12: # %entry6712; CHECK-NOV-NEXT: mv s0, a36713; CHECK-NOV-NEXT: .LBB51_13: # %entry6714; CHECK-NOV-NEXT: beq a1, a0, .LBB51_156715; CHECK-NOV-NEXT: # %bb.14: # %entry6716; CHECK-NOV-NEXT: srli a1, a1, 636717; CHECK-NOV-NEXT: xori a0, a1, 16718; CHECK-NOV-NEXT: beqz a0, .LBB51_166719; CHECK-NOV-NEXT: j .LBB51_176720; CHECK-NOV-NEXT: .LBB51_15:6721; CHECK-NOV-NEXT: sltu a0, a3, a26722; CHECK-NOV-NEXT: bnez a0, .LBB51_176723; CHECK-NOV-NEXT: .LBB51_16: # %entry6724; CHECK-NOV-NEXT: mv a2, a36725; CHECK-NOV-NEXT: .LBB51_17: # %entry6726; CHECK-NOV-NEXT: mv a0, s06727; CHECK-NOV-NEXT: mv a1, a26728; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6729; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6730; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6731; CHECK-NOV-NEXT: ld s2, 0(sp) # 8-byte Folded Reload6732; CHECK-NOV-NEXT: .cfi_restore ra6733; CHECK-NOV-NEXT: .cfi_restore s06734; CHECK-NOV-NEXT: .cfi_restore s16735; CHECK-NOV-NEXT: .cfi_restore s26736; CHECK-NOV-NEXT: addi sp, sp, 326737; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06738; CHECK-NOV-NEXT: ret6739;6740; CHECK-V-LABEL: stest_f16i64_mm:6741; CHECK-V: # %bb.0: # %entry6742; CHECK-V-NEXT: addi sp, sp, -326743; CHECK-V-NEXT: .cfi_def_cfa_offset 326744; CHECK-V-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6745; CHECK-V-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6746; CHECK-V-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6747; CHECK-V-NEXT: sd s2, 0(sp) # 8-byte Folded Spill6748; CHECK-V-NEXT: .cfi_offset ra, -86749; CHECK-V-NEXT: .cfi_offset s0, -166750; CHECK-V-NEXT: .cfi_offset s1, -246751; CHECK-V-NEXT: .cfi_offset s2, -326752; CHECK-V-NEXT: mv s2, a16753; CHECK-V-NEXT: fmv.w.x fa0, a06754; CHECK-V-NEXT: call __extendhfsf26755; CHECK-V-NEXT: call __fixsfti6756; CHECK-V-NEXT: mv s0, a06757; CHECK-V-NEXT: mv s1, a16758; CHECK-V-NEXT: fmv.w.x fa0, s26759; CHECK-V-NEXT: call __extendhfsf26760; CHECK-V-NEXT: call __fixsfti6761; CHECK-V-NEXT: li a2, -16762; CHECK-V-NEXT: srli a3, a2, 16763; CHECK-V-NEXT: beqz a1, .LBB51_26764; CHECK-V-NEXT: # %bb.1: # %entry6765; CHECK-V-NEXT: srli a4, a1, 636766; CHECK-V-NEXT: beqz a4, .LBB51_36767; CHECK-V-NEXT: j .LBB51_46768; CHECK-V-NEXT: .LBB51_2:6769; CHECK-V-NEXT: sltu a4, a0, a36770; CHECK-V-NEXT: bnez a4, .LBB51_46771; CHECK-V-NEXT: .LBB51_3: # %entry6772; CHECK-V-NEXT: mv a0, a36773; CHECK-V-NEXT: .LBB51_4: # %entry6774; CHECK-V-NEXT: beqz s1, .LBB51_66775; CHECK-V-NEXT: # %bb.5: # %entry6776; CHECK-V-NEXT: srli a6, s1, 636777; CHECK-V-NEXT: j .LBB51_76778; CHECK-V-NEXT: .LBB51_6:6779; CHECK-V-NEXT: sltu a6, s0, a36780; CHECK-V-NEXT: .LBB51_7: # %entry6781; CHECK-V-NEXT: neg a5, a66782; CHECK-V-NEXT: and a5, a5, s16783; CHECK-V-NEXT: bnez a6, .LBB51_96784; CHECK-V-NEXT: # %bb.8: # %entry6785; CHECK-V-NEXT: mv s0, a36786; CHECK-V-NEXT: .LBB51_9: # %entry6787; CHECK-V-NEXT: neg a4, a46788; CHECK-V-NEXT: slli a3, a2, 636789; CHECK-V-NEXT: beq a5, a2, .LBB51_116790; CHECK-V-NEXT: # %bb.10: # %entry6791; CHECK-V-NEXT: srli a5, a5, 636792; CHECK-V-NEXT: xori a5, a5, 16793; CHECK-V-NEXT: and a1, a4, a16794; CHECK-V-NEXT: beqz a5, .LBB51_126795; CHECK-V-NEXT: j .LBB51_136796; CHECK-V-NEXT: .LBB51_11:6797; CHECK-V-NEXT: sltu a5, a3, s06798; CHECK-V-NEXT: and a1, a4, a16799; CHECK-V-NEXT: bnez a5, .LBB51_136800; CHECK-V-NEXT: .LBB51_12: # %entry6801; CHECK-V-NEXT: mv s0, a36802; CHECK-V-NEXT: .LBB51_13: # %entry6803; CHECK-V-NEXT: beq a1, a2, .LBB51_156804; CHECK-V-NEXT: # %bb.14: # %entry6805; CHECK-V-NEXT: srli a1, a1, 636806; CHECK-V-NEXT: xori a1, a1, 16807; CHECK-V-NEXT: beqz a1, .LBB51_166808; CHECK-V-NEXT: j .LBB51_176809; CHECK-V-NEXT: .LBB51_15:6810; CHECK-V-NEXT: sltu a1, a3, a06811; CHECK-V-NEXT: bnez a1, .LBB51_176812; CHECK-V-NEXT: .LBB51_16: # %entry6813; CHECK-V-NEXT: mv a0, a36814; CHECK-V-NEXT: .LBB51_17: # %entry6815; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6816; CHECK-V-NEXT: vmv.s.x v9, a06817; CHECK-V-NEXT: vmv.s.x v8, s06818; CHECK-V-NEXT: vslideup.vi v8, v9, 16819; CHECK-V-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6820; CHECK-V-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6821; CHECK-V-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6822; CHECK-V-NEXT: ld s2, 0(sp) # 8-byte Folded Reload6823; CHECK-V-NEXT: .cfi_restore ra6824; CHECK-V-NEXT: .cfi_restore s06825; CHECK-V-NEXT: .cfi_restore s16826; CHECK-V-NEXT: .cfi_restore s26827; CHECK-V-NEXT: addi sp, sp, 326828; CHECK-V-NEXT: .cfi_def_cfa_offset 06829; CHECK-V-NEXT: ret6830entry:6831 %conv = fptosi <2 x half> %x to <2 x i128>6832 %spec.store.select = call <2 x i128> @llvm.smin.v2i128(<2 x i128> %conv, <2 x i128> <i128 9223372036854775807, i128 9223372036854775807>)6833 %spec.store.select7 = call <2 x i128> @llvm.smax.v2i128(<2 x i128> %spec.store.select, <2 x i128> <i128 -9223372036854775808, i128 -9223372036854775808>)6834 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>6835 ret <2 x i64> %conv66836}6837 6838define <2 x i64> @utest_f16i64_mm(<2 x half> %x) {6839; CHECK-NOV-LABEL: utest_f16i64_mm:6840; CHECK-NOV: # %bb.0: # %entry6841; CHECK-NOV-NEXT: addi sp, sp, -326842; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326843; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6844; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6845; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6846; CHECK-NOV-NEXT: sd s2, 0(sp) # 8-byte Folded Spill6847; CHECK-NOV-NEXT: .cfi_offset ra, -86848; CHECK-NOV-NEXT: .cfi_offset s0, -166849; CHECK-NOV-NEXT: .cfi_offset s1, -246850; CHECK-NOV-NEXT: .cfi_offset s2, -326851; CHECK-NOV-NEXT: mv s0, a06852; CHECK-NOV-NEXT: fmv.w.x fa0, a16853; CHECK-NOV-NEXT: call __extendhfsf26854; CHECK-NOV-NEXT: call __fixunssfti6855; CHECK-NOV-NEXT: mv s1, a06856; CHECK-NOV-NEXT: mv s2, a16857; CHECK-NOV-NEXT: fmv.w.x fa0, s06858; CHECK-NOV-NEXT: call __extendhfsf26859; CHECK-NOV-NEXT: call __fixunssfti6860; CHECK-NOV-NEXT: snez a1, a16861; CHECK-NOV-NEXT: snez a2, s26862; CHECK-NOV-NEXT: addi a1, a1, -16863; CHECK-NOV-NEXT: addi a2, a2, -16864; CHECK-NOV-NEXT: and a0, a1, a06865; CHECK-NOV-NEXT: and a1, a2, s16866; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6867; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6868; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6869; CHECK-NOV-NEXT: ld s2, 0(sp) # 8-byte Folded Reload6870; CHECK-NOV-NEXT: .cfi_restore ra6871; CHECK-NOV-NEXT: .cfi_restore s06872; CHECK-NOV-NEXT: .cfi_restore s16873; CHECK-NOV-NEXT: .cfi_restore s26874; CHECK-NOV-NEXT: addi sp, sp, 326875; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06876; CHECK-NOV-NEXT: ret6877;6878; CHECK-V-LABEL: utest_f16i64_mm:6879; CHECK-V: # %bb.0: # %entry6880; CHECK-V-NEXT: addi sp, sp, -326881; CHECK-V-NEXT: .cfi_def_cfa_offset 326882; CHECK-V-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6883; CHECK-V-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6884; CHECK-V-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6885; CHECK-V-NEXT: sd s2, 0(sp) # 8-byte Folded Spill6886; CHECK-V-NEXT: .cfi_offset ra, -86887; CHECK-V-NEXT: .cfi_offset s0, -166888; CHECK-V-NEXT: .cfi_offset s1, -246889; CHECK-V-NEXT: .cfi_offset s2, -326890; CHECK-V-NEXT: mv s0, a06891; CHECK-V-NEXT: fmv.w.x fa0, a16892; CHECK-V-NEXT: call __extendhfsf26893; CHECK-V-NEXT: call __fixunssfti6894; CHECK-V-NEXT: mv s1, a06895; CHECK-V-NEXT: mv s2, a16896; CHECK-V-NEXT: fmv.w.x fa0, s06897; CHECK-V-NEXT: call __extendhfsf26898; CHECK-V-NEXT: call __fixunssfti6899; CHECK-V-NEXT: snez a1, a16900; CHECK-V-NEXT: snez a2, s26901; CHECK-V-NEXT: addi a1, a1, -16902; CHECK-V-NEXT: addi a2, a2, -16903; CHECK-V-NEXT: and a0, a1, a06904; CHECK-V-NEXT: and a2, a2, s16905; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma6906; CHECK-V-NEXT: vmv.s.x v9, a26907; CHECK-V-NEXT: vmv.s.x v8, a06908; CHECK-V-NEXT: vslideup.vi v8, v9, 16909; CHECK-V-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6910; CHECK-V-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6911; CHECK-V-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6912; CHECK-V-NEXT: ld s2, 0(sp) # 8-byte Folded Reload6913; CHECK-V-NEXT: .cfi_restore ra6914; CHECK-V-NEXT: .cfi_restore s06915; CHECK-V-NEXT: .cfi_restore s16916; CHECK-V-NEXT: .cfi_restore s26917; CHECK-V-NEXT: addi sp, sp, 326918; CHECK-V-NEXT: .cfi_def_cfa_offset 06919; CHECK-V-NEXT: ret6920entry:6921 %conv = fptoui <2 x half> %x to <2 x i128>6922 %spec.store.select = call <2 x i128> @llvm.umin.v2i128(<2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>)6923 %conv6 = trunc <2 x i128> %spec.store.select to <2 x i64>6924 ret <2 x i64> %conv66925}6926 6927define <2 x i64> @ustest_f16i64_mm(<2 x half> %x) {6928; CHECK-NOV-LABEL: ustest_f16i64_mm:6929; CHECK-NOV: # %bb.0: # %entry6930; CHECK-NOV-NEXT: addi sp, sp, -326931; CHECK-NOV-NEXT: .cfi_def_cfa_offset 326932; CHECK-NOV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6933; CHECK-NOV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6934; CHECK-NOV-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6935; CHECK-NOV-NEXT: sd s2, 0(sp) # 8-byte Folded Spill6936; CHECK-NOV-NEXT: .cfi_offset ra, -86937; CHECK-NOV-NEXT: .cfi_offset s0, -166938; CHECK-NOV-NEXT: .cfi_offset s1, -246939; CHECK-NOV-NEXT: .cfi_offset s2, -326940; CHECK-NOV-NEXT: mv s2, a16941; CHECK-NOV-NEXT: fmv.w.x fa0, a06942; CHECK-NOV-NEXT: call __extendhfsf26943; CHECK-NOV-NEXT: call __fixsfti6944; CHECK-NOV-NEXT: mv s0, a06945; CHECK-NOV-NEXT: mv s1, a16946; CHECK-NOV-NEXT: fmv.w.x fa0, s26947; CHECK-NOV-NEXT: call __extendhfsf26948; CHECK-NOV-NEXT: call __fixsfti6949; CHECK-NOV-NEXT: mv a2, a16950; CHECK-NOV-NEXT: blez a1, .LBB53_26951; CHECK-NOV-NEXT: # %bb.1: # %entry6952; CHECK-NOV-NEXT: li a2, 16953; CHECK-NOV-NEXT: .LBB53_2: # %entry6954; CHECK-NOV-NEXT: mv a3, s16955; CHECK-NOV-NEXT: blez s1, .LBB53_46956; CHECK-NOV-NEXT: # %bb.3: # %entry6957; CHECK-NOV-NEXT: li a3, 16958; CHECK-NOV-NEXT: .LBB53_4: # %entry6959; CHECK-NOV-NEXT: slti a1, a1, 16960; CHECK-NOV-NEXT: slti a4, s1, 16961; CHECK-NOV-NEXT: srli a3, a3, 636962; CHECK-NOV-NEXT: srli a2, a2, 636963; CHECK-NOV-NEXT: neg a1, a16964; CHECK-NOV-NEXT: neg a4, a46965; CHECK-NOV-NEXT: addi a3, a3, -16966; CHECK-NOV-NEXT: addi a2, a2, -16967; CHECK-NOV-NEXT: and a1, a1, a06968; CHECK-NOV-NEXT: and a0, a4, s06969; CHECK-NOV-NEXT: and a0, a3, a06970; CHECK-NOV-NEXT: and a1, a2, a16971; CHECK-NOV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload6972; CHECK-NOV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload6973; CHECK-NOV-NEXT: ld s1, 8(sp) # 8-byte Folded Reload6974; CHECK-NOV-NEXT: ld s2, 0(sp) # 8-byte Folded Reload6975; CHECK-NOV-NEXT: .cfi_restore ra6976; CHECK-NOV-NEXT: .cfi_restore s06977; CHECK-NOV-NEXT: .cfi_restore s16978; CHECK-NOV-NEXT: .cfi_restore s26979; CHECK-NOV-NEXT: addi sp, sp, 326980; CHECK-NOV-NEXT: .cfi_def_cfa_offset 06981; CHECK-NOV-NEXT: ret6982;6983; CHECK-V-LABEL: ustest_f16i64_mm:6984; CHECK-V: # %bb.0: # %entry6985; CHECK-V-NEXT: addi sp, sp, -326986; CHECK-V-NEXT: .cfi_def_cfa_offset 326987; CHECK-V-NEXT: sd ra, 24(sp) # 8-byte Folded Spill6988; CHECK-V-NEXT: sd s0, 16(sp) # 8-byte Folded Spill6989; CHECK-V-NEXT: sd s1, 8(sp) # 8-byte Folded Spill6990; CHECK-V-NEXT: sd s2, 0(sp) # 8-byte Folded Spill6991; CHECK-V-NEXT: .cfi_offset ra, -86992; CHECK-V-NEXT: .cfi_offset s0, -166993; CHECK-V-NEXT: .cfi_offset s1, -246994; CHECK-V-NEXT: .cfi_offset s2, -326995; CHECK-V-NEXT: mv s2, a16996; CHECK-V-NEXT: fmv.w.x fa0, a06997; CHECK-V-NEXT: call __extendhfsf26998; CHECK-V-NEXT: call __fixsfti6999; CHECK-V-NEXT: mv s0, a07000; CHECK-V-NEXT: mv s1, a17001; CHECK-V-NEXT: fmv.w.x fa0, s27002; CHECK-V-NEXT: call __extendhfsf27003; CHECK-V-NEXT: call __fixsfti7004; CHECK-V-NEXT: mv a2, a17005; CHECK-V-NEXT: blez a1, .LBB53_27006; CHECK-V-NEXT: # %bb.1: # %entry7007; CHECK-V-NEXT: li a2, 17008; CHECK-V-NEXT: .LBB53_2: # %entry7009; CHECK-V-NEXT: mv a3, s17010; CHECK-V-NEXT: blez s1, .LBB53_47011; CHECK-V-NEXT: # %bb.3: # %entry7012; CHECK-V-NEXT: li a3, 17013; CHECK-V-NEXT: .LBB53_4: # %entry7014; CHECK-V-NEXT: slti a1, a1, 17015; CHECK-V-NEXT: slti a4, s1, 17016; CHECK-V-NEXT: srli a3, a3, 637017; CHECK-V-NEXT: srli a2, a2, 637018; CHECK-V-NEXT: neg a1, a17019; CHECK-V-NEXT: neg a4, a47020; CHECK-V-NEXT: addi a3, a3, -17021; CHECK-V-NEXT: addi a2, a2, -17022; CHECK-V-NEXT: and a0, a1, a07023; CHECK-V-NEXT: and a4, a4, s07024; CHECK-V-NEXT: and a3, a3, a47025; CHECK-V-NEXT: and a0, a2, a07026; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma7027; CHECK-V-NEXT: vmv.s.x v9, a07028; CHECK-V-NEXT: vmv.s.x v8, a37029; CHECK-V-NEXT: vslideup.vi v8, v9, 17030; CHECK-V-NEXT: ld ra, 24(sp) # 8-byte Folded Reload7031; CHECK-V-NEXT: ld s0, 16(sp) # 8-byte Folded Reload7032; CHECK-V-NEXT: ld s1, 8(sp) # 8-byte Folded Reload7033; CHECK-V-NEXT: ld s2, 0(sp) # 8-byte Folded Reload7034; CHECK-V-NEXT: .cfi_restore ra7035; CHECK-V-NEXT: .cfi_restore s07036; CHECK-V-NEXT: .cfi_restore s17037; CHECK-V-NEXT: .cfi_restore s27038; CHECK-V-NEXT: addi sp, sp, 327039; CHECK-V-NEXT: .cfi_def_cfa_offset 07040; CHECK-V-NEXT: ret7041entry:7042 %conv = fptosi <2 x half> %x to <2 x i128>7043 %spec.store.select = call <2 x i128> @llvm.smin.v2i128(<2 x i128> %conv, <2 x i128> <i128 18446744073709551616, i128 18446744073709551616>)7044 %spec.store.select7 = call <2 x i128> @llvm.smax.v2i128(<2 x i128> %spec.store.select, <2 x i128> zeroinitializer)7045 %conv6 = trunc <2 x i128> %spec.store.select7 to <2 x i64>7046 ret <2 x i64> %conv67047}7048 7049; i32 non saturate7050 7051define <4 x i32> @ustest_f16i32_nsat(<4 x half> %x) {7052; CHECK-NOV-LABEL: ustest_f16i32_nsat:7053; CHECK-NOV: # %bb.0: # %entry7054; CHECK-NOV-NEXT: addi sp, sp, -647055; CHECK-NOV-NEXT: .cfi_def_cfa_offset 647056; CHECK-NOV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill7057; CHECK-NOV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill7058; CHECK-NOV-NEXT: sd s1, 40(sp) # 8-byte Folded Spill7059; CHECK-NOV-NEXT: sd s2, 32(sp) # 8-byte Folded Spill7060; CHECK-NOV-NEXT: sd s3, 24(sp) # 8-byte Folded Spill7061; CHECK-NOV-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill7062; CHECK-NOV-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill7063; CHECK-NOV-NEXT: .cfi_offset ra, -87064; CHECK-NOV-NEXT: .cfi_offset s0, -167065; CHECK-NOV-NEXT: .cfi_offset s1, -247066; CHECK-NOV-NEXT: .cfi_offset s2, -327067; CHECK-NOV-NEXT: .cfi_offset s3, -407068; CHECK-NOV-NEXT: .cfi_offset fs0, -487069; CHECK-NOV-NEXT: .cfi_offset fs1, -567070; CHECK-NOV-NEXT: lhu s1, 0(a1)7071; CHECK-NOV-NEXT: lhu s2, 8(a1)7072; CHECK-NOV-NEXT: lhu a2, 16(a1)7073; CHECK-NOV-NEXT: lhu s3, 24(a1)7074; CHECK-NOV-NEXT: mv s0, a07075; CHECK-NOV-NEXT: fmv.w.x fa0, a27076; CHECK-NOV-NEXT: call __extendhfsf27077; CHECK-NOV-NEXT: fmv.s fs0, fa07078; CHECK-NOV-NEXT: fmv.w.x fa0, s27079; CHECK-NOV-NEXT: call __extendhfsf27080; CHECK-NOV-NEXT: fmv.s fs1, fa07081; CHECK-NOV-NEXT: fmv.w.x fa0, s17082; CHECK-NOV-NEXT: call __extendhfsf27083; CHECK-NOV-NEXT: fcvt.l.s s1, fa0, rtz7084; CHECK-NOV-NEXT: fcvt.l.s s2, fs1, rtz7085; CHECK-NOV-NEXT: fmv.w.x fa0, s37086; CHECK-NOV-NEXT: fcvt.l.s s3, fs0, rtz7087; CHECK-NOV-NEXT: call __extendhfsf27088; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz7089; CHECK-NOV-NEXT: srai a1, s3, 637090; CHECK-NOV-NEXT: and a1, a1, s37091; CHECK-NOV-NEXT: srai a2, s2, 637092; CHECK-NOV-NEXT: and a2, a2, s27093; CHECK-NOV-NEXT: srai a3, s1, 637094; CHECK-NOV-NEXT: and a3, a3, s17095; CHECK-NOV-NEXT: srai a4, a0, 637096; CHECK-NOV-NEXT: and a0, a4, a07097; CHECK-NOV-NEXT: sgtz a4, a37098; CHECK-NOV-NEXT: neg a4, a47099; CHECK-NOV-NEXT: and a3, a4, a37100; CHECK-NOV-NEXT: sgtz a4, a27101; CHECK-NOV-NEXT: neg a4, a47102; CHECK-NOV-NEXT: and a2, a4, a27103; CHECK-NOV-NEXT: sgtz a4, a17104; CHECK-NOV-NEXT: neg a4, a47105; CHECK-NOV-NEXT: and a1, a4, a17106; CHECK-NOV-NEXT: sgtz a4, a07107; CHECK-NOV-NEXT: neg a4, a47108; CHECK-NOV-NEXT: and a0, a4, a07109; CHECK-NOV-NEXT: sw a3, 0(s0)7110; CHECK-NOV-NEXT: sw a2, 4(s0)7111; CHECK-NOV-NEXT: sw a1, 8(s0)7112; CHECK-NOV-NEXT: sw a0, 12(s0)7113; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload7114; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload7115; CHECK-NOV-NEXT: ld s1, 40(sp) # 8-byte Folded Reload7116; CHECK-NOV-NEXT: ld s2, 32(sp) # 8-byte Folded Reload7117; CHECK-NOV-NEXT: ld s3, 24(sp) # 8-byte Folded Reload7118; CHECK-NOV-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload7119; CHECK-NOV-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload7120; CHECK-NOV-NEXT: .cfi_restore ra7121; CHECK-NOV-NEXT: .cfi_restore s07122; CHECK-NOV-NEXT: .cfi_restore s17123; CHECK-NOV-NEXT: .cfi_restore s27124; CHECK-NOV-NEXT: .cfi_restore s37125; CHECK-NOV-NEXT: .cfi_restore fs07126; CHECK-NOV-NEXT: .cfi_restore fs17127; CHECK-NOV-NEXT: addi sp, sp, 647128; CHECK-NOV-NEXT: .cfi_def_cfa_offset 07129; CHECK-NOV-NEXT: ret7130;7131; CHECK-V-LABEL: ustest_f16i32_nsat:7132; CHECK-V: # %bb.0: # %entry7133; CHECK-V-NEXT: addi sp, sp, -487134; CHECK-V-NEXT: .cfi_def_cfa_offset 487135; CHECK-V-NEXT: sd ra, 40(sp) # 8-byte Folded Spill7136; CHECK-V-NEXT: sd s0, 32(sp) # 8-byte Folded Spill7137; CHECK-V-NEXT: sd s1, 24(sp) # 8-byte Folded Spill7138; CHECK-V-NEXT: sd s2, 16(sp) # 8-byte Folded Spill7139; CHECK-V-NEXT: .cfi_offset ra, -87140; CHECK-V-NEXT: .cfi_offset s0, -167141; CHECK-V-NEXT: .cfi_offset s1, -247142; CHECK-V-NEXT: .cfi_offset s2, -327143; CHECK-V-NEXT: csrr a1, vlenb7144; CHECK-V-NEXT: slli a1, a1, 17145; CHECK-V-NEXT: sub sp, sp, a17146; CHECK-V-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x02, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 2 * vlenb7147; CHECK-V-NEXT: lhu s0, 0(a0)7148; CHECK-V-NEXT: lhu s1, 8(a0)7149; CHECK-V-NEXT: lhu s2, 16(a0)7150; CHECK-V-NEXT: lhu a0, 24(a0)7151; CHECK-V-NEXT: fmv.w.x fa0, a07152; CHECK-V-NEXT: call __extendhfsf27153; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz7154; CHECK-V-NEXT: fmv.w.x fa0, s27155; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma7156; CHECK-V-NEXT: vmv.s.x v8, a07157; CHECK-V-NEXT: addi a0, sp, 167158; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill7159; CHECK-V-NEXT: call __extendhfsf27160; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz7161; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma7162; CHECK-V-NEXT: vmv.s.x v8, a07163; CHECK-V-NEXT: addi a0, sp, 167164; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload7165; CHECK-V-NEXT: vslideup.vi v8, v9, 17166; CHECK-V-NEXT: csrr a0, vlenb7167; CHECK-V-NEXT: add a0, sp, a07168; CHECK-V-NEXT: addi a0, a0, 167169; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill7170; CHECK-V-NEXT: fmv.w.x fa0, s17171; CHECK-V-NEXT: call __extendhfsf27172; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz7173; CHECK-V-NEXT: fmv.w.x fa0, s07174; CHECK-V-NEXT: vsetivli zero, 1, e32, m1, ta, ma7175; CHECK-V-NEXT: vmv.s.x v8, a07176; CHECK-V-NEXT: addi a0, sp, 167177; CHECK-V-NEXT: vs1r.v v8, (a0) # vscale x 8-byte Folded Spill7178; CHECK-V-NEXT: call __extendhfsf27179; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz7180; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma7181; CHECK-V-NEXT: vmv.s.x v8, a07182; CHECK-V-NEXT: addi a0, sp, 167183; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload7184; CHECK-V-NEXT: vslideup.vi v8, v9, 17185; CHECK-V-NEXT: csrr a0, vlenb7186; CHECK-V-NEXT: add a0, sp, a07187; CHECK-V-NEXT: addi a0, a0, 167188; CHECK-V-NEXT: vl1r.v v9, (a0) # vscale x 8-byte Folded Reload7189; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma7190; CHECK-V-NEXT: vslideup.vi v8, v9, 27191; CHECK-V-NEXT: vmin.vx v8, v8, zero7192; CHECK-V-NEXT: vmax.vx v8, v8, zero7193; CHECK-V-NEXT: csrr a0, vlenb7194; CHECK-V-NEXT: slli a0, a0, 17195; CHECK-V-NEXT: add sp, sp, a07196; CHECK-V-NEXT: .cfi_def_cfa sp, 487197; CHECK-V-NEXT: ld ra, 40(sp) # 8-byte Folded Reload7198; CHECK-V-NEXT: ld s0, 32(sp) # 8-byte Folded Reload7199; CHECK-V-NEXT: ld s1, 24(sp) # 8-byte Folded Reload7200; CHECK-V-NEXT: ld s2, 16(sp) # 8-byte Folded Reload7201; CHECK-V-NEXT: .cfi_restore ra7202; CHECK-V-NEXT: .cfi_restore s07203; CHECK-V-NEXT: .cfi_restore s17204; CHECK-V-NEXT: .cfi_restore s27205; CHECK-V-NEXT: addi sp, sp, 487206; CHECK-V-NEXT: .cfi_def_cfa_offset 07207; CHECK-V-NEXT: ret7208entry:7209 %conv = fptosi <4 x half> %x to <4 x i32>7210 %spec.store.select = call <4 x i32> @llvm.smin.v4i32(<4 x i32> zeroinitializer, <4 x i32> %conv)7211 %spec.store.select7 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %spec.store.select, <4 x i32> zeroinitializer)7212 ret <4 x i32> %spec.store.select77213}7214 7215