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