- Fix encoding of the AHY instruction. - Fix disassembly format of FIEBR, FIDBR, and LEDBRA instructions.
725 lines
13 KiB
Plaintext
725 lines
13 KiB
Plaintext
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
|
|
|