Files
wasmtime/cranelift/filetests/filetests/isa/s390x/floating-point-arch13.clif
Ulrich Weigand 305000d14b s390x: Fix instruction encoding and disassembly format bugs (#5786)
- Fix encoding of the AHY instruction.
- Fix disassembly format of FIEBR, FIDBR, and LEDBRA instructions.
2023-02-15 08:36:44 -08:00

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