Files
wasmtime/cranelift/filetests/filetests/isa/s390x/div-traps.clif
Trevor Elliott b077854b57 Generate SSA code from returns (#5172)
Modify return pseudo-instructions to have pairs of registers: virtual and real. This allows us to constrain the virtual registers to the real ones specified by the abi, instead of directly emitting moves to those real registers.
2022-11-08 16:00:49 -08:00

418 lines
6.4 KiB
Plaintext

test compile precise-output
set avoid_div_traps=1
target s390x
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SDIV
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
function %sdiv_i64(i64, i64) -> i64 {
block0(v0: i64, v1: i64):
v2 = sdiv.i64 v0, v1
return v2
}
; block0:
; cgite %r3, 0
; llihf %r4, 2147483647
; iilf %r4, 4294967295
; xgr %r4, %r2
; lgr %r5, %r2
; ngr %r4, %r3
; lgr %r2, %r3
; cgite %r4, -1
; lgr %r4, %r2
; lgr %r3, %r5
; dsgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i64_imm(i64) -> i64 {
block0(v0: i64):
v1 = iconst.i64 2
v2 = sdiv.i64 v0, v1
return v2
}
; block0:
; lgr %r3, %r2
; lghi %r4, 2
; dsgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i32(i32, i32) -> i32 {
block0(v0: i32, v1: i32):
v2 = sdiv.i32 v0, v1
return v2
}
; stmg %r7, %r15, 56(%r15)
; block0:
; lgfr %r5, %r2
; lgr %r7, %r5
; cite %r3, 0
; iilf %r5, 2147483647
; lgr %r4, %r7
; xrk %r2, %r5, %r4
; nrk %r4, %r2, %r3
; lgr %r5, %r3
; cite %r4, -1
; lgr %r3, %r7
; dsgfr %r2, %r5
; lgr %r2, %r3
; lmg %r7, %r15, 56(%r15)
; br %r14
function %sdiv_i32_imm(i32) -> i32 {
block0(v0: i32):
v1 = iconst.i32 2
v2 = sdiv.i32 v0, v1
return v2
}
; block0:
; lgfr %r3, %r2
; lhi %r2, 2
; dsgfr %r2, %r2
; lgr %r2, %r3
; br %r14
function %sdiv_i16(i16, i16) -> i16 {
block0(v0: i16, v1: i16):
v2 = sdiv.i16 v0, v1
return v2
}
; block0:
; lghr %r5, %r2
; lhr %r4, %r3
; cite %r4, 0
; lhi %r2, 32767
; lgr %r3, %r5
; xrk %r5, %r2, %r3
; nrk %r2, %r5, %r4
; cite %r2, -1
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i16_imm(i16) -> i16 {
block0(v0: i16):
v1 = iconst.i16 2
v2 = sdiv.i16 v0, v1
return v2
}
; block0:
; lghr %r3, %r2
; lhi %r2, 2
; dsgfr %r2, %r2
; lgr %r2, %r3
; br %r14
function %sdiv_i8(i8, i8) -> i8 {
block0(v0: i8, v1: i8):
v2 = sdiv.i8 v0, v1
return v2
}
; block0:
; lgbr %r5, %r2
; lbr %r4, %r3
; cite %r4, 0
; lhi %r2, 127
; lgr %r3, %r5
; xrk %r5, %r2, %r3
; nrk %r2, %r5, %r4
; cite %r2, -1
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i8_imm(i8) -> i8 {
block0(v0: i8):
v1 = iconst.i8 2
v2 = sdiv.i8 v0, v1
return v2
}
; block0:
; lgbr %r3, %r2
; lhi %r2, 2
; dsgfr %r2, %r2
; lgr %r2, %r3
; br %r14
function %udiv_i64(i64, i64) -> i64 {
block0(v0: i64, v1: i64):
v2 = udiv.i64 v0, v1
return v2
}
; block0:
; lgr %r5, %r2
; lghi %r2, 0
; cgite %r3, 0
; lgr %r4, %r3
; lgr %r3, %r5
; lgr %r5, %r4
; dlgr %r2, %r5
; lgr %r2, %r3
; br %r14
function %udiv_i64_imm(i64) -> i64 {
block0(v0: i64):
v1 = iconst.i64 2
v2 = udiv.i64 v0, v1
return v2
}
; block0:
; lgr %r3, %r2
; lghi %r2, 0
; lghi %r4, 2
; dlgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i32(i32, i32) -> i32 {
block0(v0: i32, v1: i32):
v2 = udiv.i32 v0, v1
return v2
}
; block0:
; lgr %r5, %r2
; lhi %r2, 0
; cite %r3, 0
; lgr %r4, %r3
; lgr %r3, %r5
; lgr %r5, %r4
; dlr %r2, %r5
; lgr %r2, %r3
; br %r14
function %udiv_i32_imm(i32) -> i32 {
block0(v0: i32):
v1 = iconst.i32 2
v2 = udiv.i32 v0, v1
return v2
}
; block0:
; lgr %r3, %r2
; lhi %r2, 0
; lhi %r4, 2
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i16(i16, i16) -> i16 {
block0(v0: i16, v1: i16):
v2 = udiv.i16 v0, v1
return v2
}
; stmg %r8, %r15, 64(%r15)
; block0:
; lgr %r4, %r3
; lhi %r5, 0
; lgr %r8, %r5
; llhr %r3, %r2
; lgr %r5, %r4
; llhr %r5, %r5
; cite %r5, 0
; lgr %r2, %r8
; dlr %r2, %r5
; lgr %r2, %r3
; lmg %r8, %r15, 64(%r15)
; br %r14
function %udiv_i16_imm(i16) -> i16 {
block0(v0: i16):
v1 = iconst.i16 2
v2 = udiv.i16 v0, v1
return v2
}
; block0:
; lhi %r4, 0
; lgr %r5, %r4
; llhr %r3, %r2
; lhi %r4, 2
; lgr %r2, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i8(i8, i8) -> i8 {
block0(v0: i8, v1: i8):
v2 = udiv.i8 v0, v1
return v2
}
; stmg %r8, %r15, 64(%r15)
; block0:
; lgr %r4, %r3
; lhi %r5, 0
; lgr %r8, %r5
; llcr %r3, %r2
; lgr %r5, %r4
; llcr %r5, %r5
; cite %r5, 0
; lgr %r2, %r8
; dlr %r2, %r5
; lgr %r2, %r3
; lmg %r8, %r15, 64(%r15)
; br %r14
function %udiv_i8_imm(i8) -> i8 {
block0(v0: i8):
v1 = iconst.i8 2
v2 = udiv.i8 v0, v1
return v2
}
; block0:
; lhi %r4, 0
; lgr %r5, %r4
; llcr %r3, %r2
; lhi %r4, 2
; lgr %r2, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %srem_i64(i64, i64) -> i64 {
block0(v0: i64, v1: i64):
v2 = srem.i64 v0, v1
return v2
}
; block0:
; cgite %r3, 0
; cghi %r3, -1
; lgr %r4, %r3
; lgr %r3, %r2
; locghie %r3, 0
; dsgr %r2, %r4
; br %r14
function %srem_i32(i32, i32) -> i32 {
block0(v0: i32, v1: i32):
v2 = srem.i32 v0, v1
return v2
}
; block0:
; lgr %r5, %r3
; lgfr %r3, %r2
; lgr %r2, %r5
; cite %r2, 0
; dsgfr %r2, %r2
; br %r14
function %srem_i16(i16, i16) -> i16 {
block0(v0: i16, v1: i16):
v2 = srem.i16 v0, v1
return v2
}
; block0:
; lghr %r5, %r2
; lgr %r2, %r5
; lhr %r4, %r3
; cite %r4, 0
; lgr %r3, %r2
; dsgfr %r2, %r4
; br %r14
function %srem_i8(i8, i8) -> i8 {
block0(v0: i8, v1: i8):
v2 = srem.i8 v0, v1
return v2
}
; block0:
; lgbr %r5, %r2
; lgr %r2, %r5
; lbr %r4, %r3
; cite %r4, 0
; lgr %r3, %r2
; dsgfr %r2, %r4
; br %r14
function %urem_i64(i64, i64) -> i64 {
block0(v0: i64, v1: i64):
v2 = urem.i64 v0, v1
return v2
}
; block0:
; lgr %r5, %r2
; lghi %r2, 0
; cgite %r3, 0
; lgr %r4, %r3
; lgr %r3, %r5
; lgr %r5, %r4
; dlgr %r2, %r5
; br %r14
function %urem_i32(i32, i32) -> i32 {
block0(v0: i32, v1: i32):
v2 = urem.i32 v0, v1
return v2
}
; block0:
; lgr %r5, %r2
; lhi %r2, 0
; cite %r3, 0
; lgr %r4, %r3
; lgr %r3, %r5
; lgr %r5, %r4
; dlr %r2, %r5
; br %r14
function %urem_i16(i16, i16) -> i16 {
block0(v0: i16, v1: i16):
v2 = urem.i16 v0, v1
return v2
}
; stmg %r8, %r15, 64(%r15)
; block0:
; lgr %r4, %r3
; lhi %r5, 0
; lgr %r8, %r5
; llhr %r3, %r2
; lgr %r5, %r4
; llhr %r5, %r5
; cite %r5, 0
; lgr %r2, %r8
; dlr %r2, %r5
; lmg %r8, %r15, 64(%r15)
; br %r14
function %urem_i8(i8, i8) -> i8 {
block0(v0: i8, v1: i8):
v2 = urem.i8 v0, v1
return v2
}
; stmg %r8, %r15, 64(%r15)
; block0:
; lgr %r4, %r3
; lhi %r5, 0
; lgr %r8, %r5
; llcr %r3, %r2
; lgr %r5, %r4
; llcr %r5, %r5
; cite %r5, 0
; lgr %r2, %r8
; dlr %r2, %r5
; lmg %r8, %r15, 64(%r15)
; br %r14