test compile precise-output target s390x arch13 function %fcvt_to_uint_f32_i8(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint.i8 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 256 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -1 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wclfeb %v20, %f0, 0, 5 ; vlgvf %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f32_i8(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint.i8 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 128 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -129 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wcfeb %v20, %f0, 0, 5 ; vlgvf %r2, %v20, 0 ; br %r14 function %fcvt_to_uint_f32_i16(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint.i16 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 65536 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -1 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wclfeb %v20, %f0, 0, 5 ; vlgvf %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f32_i16(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint.i16 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 32768 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -32769 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wcfeb %v20, %f0, 0, 5 ; vlgvf %r2, %v20, 0 ; br %r14 function %fcvt_to_uint_f32_i32(f32) -> i32 { block0(v0: f32): v1 = fcvt_to_uint.i32 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 4294967300 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -1 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wclfeb %v20, %f0, 0, 5 ; vlgvf %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f32_i32(f32) -> i32 { block0(v0: f32): v1 = fcvt_to_sint.i32 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 2147483600 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -2147484000 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wcfeb %v20, %f0, 0, 5 ; vlgvf %r2, %v20, 0 ; br %r14 function %fcvt_to_uint_f32_i64(f32) -> i64 { block0(v0: f32): v1 = fcvt_to_uint.i64 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 18446744000000000000 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -1 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wldeb %v20, %f0 ; wclgdb %v22, %v20, 0, 5 ; vlgvg %r2, %v22, 0 ; br %r14 function %fcvt_to_sint_f32_i64(f32) -> i64 { block0(v0: f32): v1 = fcvt_to_sint.i64 v0 return v1 } ; block0: ; cebr %f0, %f0 ; jno 6 ; trap ; bras %r1, 8 ; data.f32 9223372000000000000 ; le %f4, 0(%r1) ; cebr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 8 ; data.f32 -9223373000000000000 ; vlef %v16, 0(%r1), 0 ; wfcsb %f0, %v16 ; jnle 6 ; trap ; wldeb %v20, %f0 ; wcgdb %v22, %v20, 0, 5 ; vlgvg %r2, %v22, 0 ; br %r14 function %fcvt_to_uint_f64_i8(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint.i8 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 256 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -1 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wclgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f64_i8(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint.i8 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 128 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -129 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wcgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_uint_f64_i16(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint.i16 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 65536 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -1 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wclgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f64_i16(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint.i16 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 32768 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -32769 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wcgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_uint_f64_i32(f64) -> i32 { block0(v0: f64): v1 = fcvt_to_uint.i32 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 4294967296 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -1 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wclgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f64_i32(f64) -> i32 { block0(v0: f64): v1 = fcvt_to_sint.i32 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 2147483648 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -2147483649 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wcgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_uint_f64_i64(f64) -> i64 { block0(v0: f64): v1 = fcvt_to_uint.i64 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 18446744073709552000 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -1 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wclgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_to_sint_f64_i64(f64) -> i64 { block0(v0: f64): v1 = fcvt_to_sint.i64 v0 return v1 } ; block0: ; cdbr %f0, %f0 ; jno 6 ; trap ; bras %r1, 12 ; data.f64 9223372036854776000 ; ld %f4, 0(%r1) ; cdbr %f0, %f4 ; jnhe 6 ; trap ; bras %r1, 12 ; data.f64 -9223372036854778000 ; vleg %v16, 0(%r1), 0 ; wfcdb %f0, %v16 ; jnle 6 ; trap ; wcgdb %v20, %f0, 0, 5 ; vlgvg %r2, %v20, 0 ; br %r14 function %fcvt_from_uint_i8_f32(i8) -> f32 { block0(v0: i8): v1 = fcvt_from_uint.f32 v0 return v1 } ; block0: ; llcr %r4, %r2 ; vlvgf %v4, %r4, 0 ; wcelfb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_sint_i8_f32(i8) -> f32 { block0(v0: i8): v1 = fcvt_from_sint.f32 v0 return v1 } ; block0: ; lbr %r4, %r2 ; vlvgf %v4, %r4, 0 ; wcefb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_uint_i16_f32(i16) -> f32 { block0(v0: i16): v1 = fcvt_from_uint.f32 v0 return v1 } ; block0: ; llhr %r4, %r2 ; vlvgf %v4, %r4, 0 ; wcelfb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_sint_i16_f32(i16) -> f32 { block0(v0: i16): v1 = fcvt_from_sint.f32 v0 return v1 } ; block0: ; lhr %r4, %r2 ; vlvgf %v4, %r4, 0 ; wcefb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_uint_i32_f32(i32) -> f32 { block0(v0: i32): v1 = fcvt_from_uint.f32 v0 return v1 } ; block0: ; vlvgf %v2, %r2, 0 ; wcelfb %f0, %f2, 0, 4 ; br %r14 function %fcvt_from_sint_i32_f32(i32) -> f32 { block0(v0: i32): v1 = fcvt_from_sint.f32 v0 return v1 } ; block0: ; vlvgf %v2, %r2, 0 ; wcefb %f0, %f2, 0, 4 ; br %r14 function %fcvt_from_uint_i64_f32(i64) -> f32 { block0(v0: i64): v1 = fcvt_from_uint.f32 v0 return v1 } ; block0: ; ldgr %f2, %r2 ; wcdlgb %f4, %f2, 0, 3 ; ledbra %f0, 4, %f4, 0 ; br %r14 function %fcvt_from_sint_i64_f32(i64) -> f32 { block0(v0: i64): v1 = fcvt_from_sint.f32 v0 return v1 } ; block0: ; ldgr %f2, %r2 ; wcdgb %f4, %f2, 0, 3 ; ledbra %f0, 4, %f4, 0 ; br %r14 function %fcvt_from_uint_i8_f64(i8) -> f64 { block0(v0: i8): v1 = fcvt_from_uint.f64 v0 return v1 } ; block0: ; llgcr %r4, %r2 ; ldgr %f4, %r4 ; wcdlgb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_sint_i8_f64(i8) -> f64 { block0(v0: i8): v1 = fcvt_from_sint.f64 v0 return v1 } ; block0: ; lgbr %r4, %r2 ; ldgr %f4, %r4 ; wcdgb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_uint_i16_f64(i16) -> f64 { block0(v0: i16): v1 = fcvt_from_uint.f64 v0 return v1 } ; block0: ; llghr %r4, %r2 ; ldgr %f4, %r4 ; wcdlgb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_sint_i16_f64(i16) -> f64 { block0(v0: i16): v1 = fcvt_from_sint.f64 v0 return v1 } ; block0: ; lghr %r4, %r2 ; ldgr %f4, %r4 ; wcdgb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_uint_i32_f64(i32) -> f64 { block0(v0: i32): v1 = fcvt_from_uint.f64 v0 return v1 } ; block0: ; llgfr %r4, %r2 ; ldgr %f4, %r4 ; wcdlgb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_sint_i32_f64(i32) -> f64 { block0(v0: i32): v1 = fcvt_from_sint.f64 v0 return v1 } ; block0: ; lgfr %r4, %r2 ; ldgr %f4, %r4 ; wcdgb %f0, %f4, 0, 4 ; br %r14 function %fcvt_from_uint_i64_f64(i64) -> f64 { block0(v0: i64): v1 = fcvt_from_uint.f64 v0 return v1 } ; block0: ; ldgr %f2, %r2 ; wcdlgb %f0, %f2, 0, 4 ; br %r14 function %fcvt_from_sint_i64_f64(i64) -> f64 { block0(v0: i64): v1 = fcvt_from_sint.f64 v0 return v1 } ; block0: ; ldgr %f2, %r2 ; wcdgb %f0, %f2, 0, 4 ; br %r14 function %fcvt_to_uint_sat_f32_i8(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_uint_sat.i8 v0 return v1 } ; block0: ; wclfeb %f2, %f0, 0, 5 ; vlgvf %r2, %v2, 0 ; clfi %r2, 256 ; lochih %r2, 255 ; br %r14 function %fcvt_to_sint_sat_f32_i8(f32) -> i8 { block0(v0: f32): v1 = fcvt_to_sint_sat.i8 v0 return v1 } ; block0: ; wcfeb %f2, %f0, 0, 5 ; vlgvf %r2, %v2, 0 ; cebr %f0, %f0 ; lochio %r2, 0 ; chi %r2, 127 ; lochih %r2, 127 ; chi %r2, -128 ; lochil %r2, -128 ; br %r14 function %fcvt_to_uint_sat_f32_i16(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_uint_sat.i16 v0 return v1 } ; block0: ; wclfeb %f2, %f0, 0, 5 ; vlgvf %r2, %v2, 0 ; clfi %r2, 65535 ; lochih %r2, -1 ; br %r14 function %fcvt_to_sint_sat_f32_i16(f32) -> i16 { block0(v0: f32): v1 = fcvt_to_sint_sat.i16 v0 return v1 } ; block0: ; wcfeb %f2, %f0, 0, 5 ; vlgvf %r2, %v2, 0 ; cebr %f0, %f0 ; lochio %r2, 0 ; chi %r2, 32767 ; lochih %r2, 32767 ; chi %r2, -32768 ; lochil %r2, -32768 ; br %r14 function %fcvt_to_uint_sat_f32_i32(f32) -> i32 { block0(v0: f32): v1 = fcvt_to_uint_sat.i32 v0 return v1 } ; block0: ; wclfeb %f2, %f0, 0, 5 ; vlgvf %r2, %v2, 0 ; br %r14 function %fcvt_to_sint_sat_f32_i32(f32) -> i32 { block0(v0: f32): v1 = fcvt_to_sint_sat.i32 v0 return v1 } ; block0: ; wcfeb %f2, %f0, 0, 5 ; vlgvf %r2, %v2, 0 ; cebr %f0, %f0 ; lochio %r2, 0 ; br %r14 function %fcvt_to_uint_sat_f32_i64(f32) -> i64 { block0(v0: f32): v1 = fcvt_to_uint_sat.i64 v0 return v1 } ; block0: ; ldebr %f2, %f0 ; wclgdb %f4, %f2, 0, 5 ; lgdr %r2, %f4 ; br %r14 function %fcvt_to_sint_sat_f32_i64(f32) -> i64 { block0(v0: f32): v1 = fcvt_to_sint_sat.i64 v0 return v1 } ; block0: ; ldebr %f2, %f0 ; wcgdb %f4, %f2, 0, 5 ; lgdr %r2, %f4 ; cebr %f0, %f0 ; locghio %r2, 0 ; br %r14 function %fcvt_to_uint_sat_f64_i8(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_uint_sat.i8 v0 return v1 } ; block0: ; wclgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; clgfi %r2, 256 ; locghih %r2, 255 ; br %r14 function %fcvt_to_sint_sat_f64_i8(f64) -> i8 { block0(v0: f64): v1 = fcvt_to_sint_sat.i8 v0 return v1 } ; block0: ; wcgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; cdbr %f0, %f0 ; locghio %r2, 0 ; cghi %r2, 127 ; locghih %r2, 127 ; cghi %r2, -128 ; locghil %r2, -128 ; br %r14 function %fcvt_to_uint_sat_f64_i16(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_uint_sat.i16 v0 return v1 } ; block0: ; wclgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; clgfi %r2, 65535 ; locghih %r2, -1 ; br %r14 function %fcvt_to_sint_sat_f64_i16(f64) -> i16 { block0(v0: f64): v1 = fcvt_to_sint_sat.i16 v0 return v1 } ; block0: ; wcgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; cdbr %f0, %f0 ; locghio %r2, 0 ; cghi %r2, 32767 ; locghih %r2, 32767 ; cghi %r2, -32768 ; locghil %r2, -32768 ; br %r14 function %fcvt_to_uint_sat_f64_i32(f64) -> i32 { block0(v0: f64): v1 = fcvt_to_uint_sat.i32 v0 return v1 } ; block0: ; wclgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; llilf %r4, 4294967295 ; clgr %r2, %r4 ; locgrh %r2, %r4 ; br %r14 function %fcvt_to_sint_sat_f64_i32(f64) -> i32 { block0(v0: f64): v1 = fcvt_to_sint_sat.i32 v0 return v1 } ; block0: ; wcgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; cdbr %f0, %f0 ; locghio %r2, 0 ; lgfi %r3, 2147483647 ; cgr %r2, %r3 ; locgrh %r2, %r3 ; lgfi %r4, -2147483648 ; cgr %r2, %r4 ; locgrl %r2, %r4 ; br %r14 function %fcvt_to_uint_sat_f64_i64(f64) -> i64 { block0(v0: f64): v1 = fcvt_to_uint_sat.i64 v0 return v1 } ; block0: ; wclgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; br %r14 function %fcvt_to_sint_sat_f64_i64(f64) -> i64 { block0(v0: f64): v1 = fcvt_to_sint_sat.i64 v0 return v1 } ; block0: ; wcgdb %f2, %f0, 0, 5 ; lgdr %r2, %f2 ; cdbr %f0, %f0 ; locghio %r2, 0 ; br %r14