Remove uses of reg_mod from s390x (#5073)

Remove uses of reg_mod from the s390x backend. This required moving away from using r0/r1 as the result registers from a few different pseudo instructions, standardizing instead on r2/r3. That change was necessary as regalloc2 will not correctly allocate registers that aren't listed in the allocatable set, which r0/r1 are not.

Co-authored-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Co-authored-by: Chris Fallin <chris@cfallin.org>
This commit is contained in:
Trevor Elliott
2022-10-21 09:22:16 -07:00
committed by GitHub
parent 204d4c332c
commit d9753fac2b
19 changed files with 1215 additions and 758 deletions

View File

@@ -701,24 +701,26 @@ block0(v0: i128, v1: i128):
return v2
}
; stmg %r13, %r15, 104(%r15)
; stmg %r6, %r15, 48(%r15)
; block0:
; lgr %r6, %r2
; vl %v0, 0(%r3)
; vl %v1, 0(%r4)
; lgdr %r5, %f0
; vlgvg %r3, %v0, 1
; lgdr %r4, %f1
; vlgvg %r1, %v1, 1
; lgr %r13, %r1
; mlgr %r0, %r3
; msgr %r3, %r4
; lgr %r4, %r13
; msgr %r5, %r4
; agr %r3, %r0
; agr %r5, %r3
; vlvgp %v5, %r5, %r1
; vst %v5, 0(%r2)
; lmg %r13, %r15, 104(%r15)
; vlgvg %r4, %v0, 1
; lgdr %r8, %f1
; vlgvg %r10, %v1, 1
; lgr %r3, %r4
; mlgr %r2, %r10
; lgr %r9, %r2
; msgr %r4, %r8
; msgrkc %r2, %r5, %r10
; agr %r4, %r9
; agr %r2, %r4
; vlvgp %v6, %r2, %r3
; lgr %r2, %r6
; vst %v6, 0(%r2)
; lmg %r6, %r15, 48(%r15)
; br %r14
function %imul_i64(i64, i64) -> i64 {
@@ -934,9 +936,10 @@ block0(v0: i64, v1: i64):
}
; block0:
; lgr %r1, %r3
; mlgr %r0, %r2
; lgr %r2, %r0
; lgr %r4, %r2
; lgr %r2, %r3
; lgr %r3, %r4
; mlgr %r2, %r2
; br %r14
function %umulhi_i32(i32, i32) -> i32 {
@@ -985,8 +988,7 @@ block0(v0: i64, v1: i64):
}
; block0:
; mgrk %r0, %r2, %r3
; lgr %r2, %r0
; mgrk %r2, %r2, %r3
; br %r14
function %smulhi_i32(i32, i32) -> i32 {
@@ -1035,14 +1037,15 @@ block0(v0: i64, v1: i64):
}
; block0:
; lgr %r1, %r2
; llihf %r4, 2147483647
; iilf %r4, 4294967295
; xgrk %r2, %r4, %r1
; ngrk %r4, %r2, %r3
; xgrk %r5, %r4, %r2
; ngrk %r4, %r5, %r3
; cgite %r4, -1
; dsgr %r0, %r3
; lgr %r2, %r1
; lgr %r4, %r3
; lgr %r3, %r2
; dsgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i64_imm(i64) -> i64 {
@@ -1053,10 +1056,10 @@ block0(v0: i64):
}
; block0:
; lgr %r1, %r2
; lghi %r2, 2
; dsgr %r0, %r2
; lgr %r2, %r1
; lgr %r3, %r2
; lghi %r5, 2
; dsgr %r2, %r5
; lgr %r2, %r3
; br %r14
function %sdiv_i32(i32, i32) -> i32 {
@@ -1066,13 +1069,15 @@ block0(v0: i32, v1: i32):
}
; block0:
; lgfr %r1, %r2
; lgr %r5, %r3
; lgfr %r3, %r2
; iilf %r4, 2147483647
; xrk %r5, %r4, %r1
; nrk %r4, %r5, %r3
; cite %r4, -1
; dsgfr %r0, %r3
; lgr %r2, %r1
; xrk %r2, %r4, %r3
; lgr %r4, %r5
; nrk %r5, %r2, %r4
; cite %r5, -1
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i32_imm(i32) -> i32 {
@@ -1083,10 +1088,10 @@ block0(v0: i32):
}
; block0:
; lgfr %r1, %r2
; lhi %r2, 2
; dsgfr %r0, %r2
; lgr %r2, %r1
; lgfr %r3, %r2
; lhi %r4, 2
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i16(i16, i16) -> i16 {
@@ -1096,14 +1101,16 @@ block0(v0: i16, v1: i16):
}
; block0:
; lghr %r1, %r2
; lhr %r3, %r3
; lhi %r5, 32767
; xrk %r4, %r5, %r1
; nrk %r5, %r4, %r3
; cite %r5, -1
; dsgfr %r0, %r3
; lgr %r2, %r1
; lghr %r2, %r2
; lgr %r5, %r2
; lhr %r4, %r3
; 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 {
@@ -1114,10 +1121,10 @@ block0(v0: i16):
}
; block0:
; lghr %r1, %r2
; lhi %r2, 2
; dsgfr %r0, %r2
; lgr %r2, %r1
; lghr %r3, %r2
; lhi %r4, 2
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i8(i8, i8) -> i8 {
@@ -1127,14 +1134,16 @@ block0(v0: i8, v1: i8):
}
; block0:
; lgbr %r1, %r2
; lbr %r3, %r3
; lhi %r5, 127
; xrk %r4, %r5, %r1
; nrk %r5, %r4, %r3
; cite %r5, -1
; dsgfr %r0, %r3
; lgr %r2, %r1
; lgbr %r2, %r2
; lgr %r5, %r2
; lbr %r4, %r3
; 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 {
@@ -1145,10 +1154,10 @@ block0(v0: i8):
}
; block0:
; lgbr %r1, %r2
; lhi %r2, 2
; dsgfr %r0, %r2
; lgr %r2, %r1
; lgbr %r3, %r2
; lhi %r4, 2
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i64(i64, i64) -> i64 {
@@ -1158,10 +1167,11 @@ block0(v0: i64, v1: i64):
}
; block0:
; lghi %r0, 0
; lgr %r1, %r2
; dlgr %r0, %r3
; lgr %r2, %r1
; lgr %r5, %r3
; lgr %r3, %r2
; lghi %r2, 0
; dlgr %r2, %r5
; lgr %r2, %r3
; br %r14
function %udiv_i64_imm(i64) -> i64 {
@@ -1172,11 +1182,11 @@ block0(v0: i64):
}
; block0:
; lghi %r0, 0
; lgr %r1, %r2
; lghi %r3, 2
; dlgr %r0, %r3
; lgr %r2, %r1
; lgr %r3, %r2
; lghi %r2, 0
; lghi %r4, 2
; dlgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i32(i32, i32) -> i32 {
@@ -1186,10 +1196,11 @@ block0(v0: i32, v1: i32):
}
; block0:
; lhi %r0, 0
; lgr %r1, %r2
; dlr %r0, %r3
; lgr %r2, %r1
; lgr %r5, %r3
; lgr %r3, %r2
; lhi %r2, 0
; dlr %r2, %r5
; lgr %r2, %r3
; br %r14
function %udiv_i32_imm(i32) -> i32 {
@@ -1200,11 +1211,11 @@ block0(v0: i32):
}
; block0:
; lhi %r0, 0
; lgr %r1, %r2
; lhi %r3, 2
; dlr %r0, %r3
; lgr %r2, %r1
; lgr %r3, %r2
; lhi %r2, 0
; lhi %r4, 2
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i16(i16, i16) -> i16 {
@@ -1214,11 +1225,15 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhi %r0, 0
; llhr %r1, %r2
; llhr %r4, %r3
; dlr %r0, %r4
; lgr %r2, %r1
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llhr %r3, %r2
; lgr %r2, %r4
; llhr %r4, %r2
; lgr %r2, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i16_imm(i16) -> i16 {
@@ -1229,11 +1244,13 @@ block0(v0: i16):
}
; block0:
; lhi %r0, 0
; llhr %r1, %r2
; lhi %r3, 2
; dlr %r0, %r3
; lgr %r2, %r1
; lhi %r5, 0
; lgr %r4, %r5
; llhr %r3, %r2
; lhi %r5, 2
; lgr %r2, %r4
; dlr %r2, %r5
; lgr %r2, %r3
; br %r14
function %udiv_i8(i8, i8) -> i8 {
@@ -1243,11 +1260,15 @@ block0(v0: i8, v1: i8):
}
; block0:
; lhi %r0, 0
; llcr %r1, %r2
; llcr %r4, %r3
; dlr %r0, %r4
; lgr %r2, %r1
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llcr %r3, %r2
; lgr %r2, %r4
; llcr %r4, %r2
; lgr %r2, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i8_imm(i8) -> i8 {
@@ -1258,11 +1279,13 @@ block0(v0: i8):
}
; block0:
; lhi %r0, 0
; llcr %r1, %r2
; lhi %r3, 2
; dlr %r0, %r3
; lgr %r2, %r1
; lhi %r5, 0
; lgr %r4, %r5
; llcr %r3, %r2
; lhi %r5, 2
; lgr %r2, %r4
; dlr %r2, %r5
; lgr %r2, %r3
; br %r14
function %srem_i64(i64, i64) -> i64 {
@@ -1272,11 +1295,11 @@ block0(v0: i64, v1: i64):
}
; block0:
; lgr %r1, %r2
; cghi %r3, -1
; locghie %r1, 0
; dsgr %r0, %r3
; lgr %r2, %r0
; lgr %r4, %r3
; lgr %r3, %r2
; locghie %r3, 0
; dsgr %r2, %r4
; br %r14
function %srem_i32(i32, i32) -> i32 {
@@ -1286,9 +1309,9 @@ block0(v0: i32, v1: i32):
}
; block0:
; lgfr %r1, %r2
; dsgfr %r0, %r3
; lgr %r2, %r0
; lgr %r4, %r3
; lgfr %r3, %r2
; dsgfr %r2, %r4
; br %r14
function %srem_i16(i16, i16) -> i16 {
@@ -1298,10 +1321,10 @@ block0(v0: i16, v1: i16):
}
; block0:
; lghr %r1, %r2
; lhr %r3, %r3
; dsgfr %r0, %r3
; lgr %r2, %r0
; lgr %r4, %r3
; lghr %r3, %r2
; lhr %r4, %r4
; dsgfr %r2, %r4
; br %r14
function %srem_i8(i8, i8) -> i8 {
@@ -1311,10 +1334,10 @@ block0(v0: i8, v1: i8):
}
; block0:
; lgbr %r1, %r2
; lbr %r3, %r3
; dsgfr %r0, %r3
; lgr %r2, %r0
; lgr %r4, %r3
; lgbr %r3, %r2
; lbr %r4, %r4
; dsgfr %r2, %r4
; br %r14
function %urem_i64(i64, i64) -> i64 {
@@ -1324,10 +1347,10 @@ block0(v0: i64, v1: i64):
}
; block0:
; lghi %r0, 0
; lgr %r1, %r2
; dlgr %r0, %r3
; lgr %r2, %r0
; lgr %r5, %r3
; lgr %r3, %r2
; lghi %r2, 0
; dlgr %r2, %r5
; br %r14
function %urem_i32(i32, i32) -> i32 {
@@ -1337,10 +1360,10 @@ block0(v0: i32, v1: i32):
}
; block0:
; lhi %r0, 0
; lgr %r1, %r2
; dlr %r0, %r3
; lgr %r2, %r0
; lgr %r5, %r3
; lgr %r3, %r2
; lhi %r2, 0
; dlr %r2, %r5
; br %r14
function %urem_i16(i16, i16) -> i16 {
@@ -1350,11 +1373,14 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhi %r0, 0
; llhr %r1, %r2
; llhr %r4, %r3
; dlr %r0, %r4
; lgr %r2, %r0
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llhr %r3, %r2
; lgr %r2, %r4
; llhr %r4, %r2
; lgr %r2, %r5
; dlr %r2, %r4
; br %r14
function %urem_i8(i8, i8) -> i8 {
@@ -1364,10 +1390,13 @@ block0(v0: i8, v1: i8):
}
; block0:
; lhi %r0, 0
; llcr %r1, %r2
; llcr %r4, %r3
; dlr %r0, %r4
; lgr %r2, %r0
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llcr %r3, %r2
; lgr %r2, %r4
; llcr %r4, %r2
; lgr %r2, %r5
; dlr %r2, %r4
; br %r14

View File

@@ -12,10 +12,10 @@ block0(v0: i64, v1: i64, v2: i64):
}
; block0:
; lrvgr %r2, %r2
; lrvgr %r5, %r3
; csg %r2, %r5, 0(%r4)
; lrvgr %r2, %r2
; lrvgr %r5, %r2
; lrvgr %r2, %r3
; csg %r5, %r2, 0(%r4)
; lrvgr %r2, %r5
; br %r14
function %atomic_cas_i32(i32, i32, i64) -> i32 {
@@ -25,10 +25,10 @@ block0(v0: i32, v1: i32, v2: i64):
}
; block0:
; lrvr %r2, %r2
; lrvr %r5, %r3
; cs %r2, %r5, 0(%r4)
; lrvr %r2, %r2
; lrvr %r5, %r2
; lrvr %r2, %r3
; cs %r5, %r2, 0(%r4)
; lrvr %r2, %r5
; br %r14
function %atomic_cas_i16(i64, i16, i16, i64) -> i16 {

View File

@@ -187,8 +187,7 @@ block0(v0: i64):
}
; block0:
; flogr %r0, %r2
; lgr %r2, %r0
; flogr %r2, %r2
; br %r14
function %clz_i32(i32) -> i32 {
@@ -199,8 +198,8 @@ block0(v0: i32):
; block0:
; llgfr %r5, %r2
; flogr %r0, %r5
; ahik %r2, %r0, -32
; flogr %r2, %r5
; ahi %r2, -32
; br %r14
function %clz_i16(i16) -> i16 {
@@ -211,8 +210,8 @@ block0(v0: i16):
; block0:
; llghr %r5, %r2
; flogr %r0, %r5
; ahik %r2, %r0, -48
; flogr %r2, %r5
; ahi %r2, -48
; br %r14
function %clz_i8(i8) -> i8 {
@@ -223,8 +222,8 @@ block0(v0: i8):
; block0:
; llgcr %r5, %r2
; flogr %r0, %r5
; ahik %r2, %r0, -56
; flogr %r2, %r5
; ahi %r2, -56
; br %r14
function %cls_i128(i128) -> i128 {
@@ -260,8 +259,8 @@ block0(v0: i64):
; block0:
; srag %r5, %r2, 63
; xgrk %r3, %r2, %r5
; flogr %r0, %r3
; aghik %r2, %r0, -1
; flogr %r2, %r3
; aghi %r2, -1
; br %r14
function %cls_i32(i32) -> i32 {
@@ -274,8 +273,8 @@ block0(v0: i32):
; lgfr %r5, %r2
; srag %r3, %r5, 63
; xgr %r5, %r3
; flogr %r0, %r5
; ahik %r2, %r0, -33
; flogr %r2, %r5
; ahi %r2, -33
; br %r14
function %cls_i16(i16) -> i16 {
@@ -288,8 +287,8 @@ block0(v0: i16):
; lghr %r5, %r2
; srag %r3, %r5, 63
; xgr %r5, %r3
; flogr %r0, %r5
; ahik %r2, %r0, -49
; flogr %r2, %r5
; ahi %r2, -49
; br %r14
function %cls_i8(i8) -> i8 {
@@ -302,8 +301,8 @@ block0(v0: i8):
; lgbr %r5, %r2
; srag %r3, %r5, 63
; xgr %r5, %r3
; flogr %r0, %r5
; ahik %r2, %r0, -57
; flogr %r2, %r5
; ahi %r2, -57
; br %r14
function %ctz_i128(i128) -> i128 {
@@ -334,10 +333,11 @@ block0(v0: i64):
; block0:
; lcgr %r5, %r2
; ngrk %r3, %r2, %r5
; flogr %r0, %r3
; locghie %r0, -1
; lghi %r3, 63
; sgrk %r2, %r3, %r0
; flogr %r2, %r3
; lgr %r4, %r2
; locghie %r4, -1
; lghi %r2, 63
; sgr %r2, %r4
; br %r14
function %ctz_i32(i32) -> i32 {
@@ -351,9 +351,9 @@ block0(v0: i32):
; oihl %r5, 1
; lcgr %r3, %r5
; ngr %r5, %r3
; flogr %r0, %r5
; lhi %r4, 63
; srk %r2, %r4, %r0
; flogr %r2, %r5
; lhi %r3, 63
; srk %r2, %r3, %r2
; br %r14
function %ctz_i16(i16) -> i16 {
@@ -367,9 +367,9 @@ block0(v0: i16):
; oilh %r5, 1
; lcgr %r3, %r5
; ngr %r5, %r3
; flogr %r0, %r5
; lhi %r4, 63
; srk %r2, %r4, %r0
; flogr %r2, %r5
; lhi %r3, 63
; srk %r2, %r3, %r2
; br %r14
function %ctz_i8(i8) -> i8 {
@@ -383,9 +383,9 @@ block0(v0: i8):
; oill %r5, 256
; lcgr %r3, %r5
; ngr %r5, %r3
; flogr %r0, %r5
; lhi %r4, 63
; srk %r2, %r4, %r0
; flogr %r2, %r5
; lhi %r3, 63
; srk %r2, %r3, %r2
; br %r14
function %popcnt_i128(i128) -> i128 {

View File

@@ -52,9 +52,9 @@ block0(v0: i32, v1: i8x16, v2: i8x16):
}
; block0:
; vlr %v16, %v24
; clfi %r2, 42
; vlr %v24, %v25
; jne 10 ; vlr %v24, %v16
; vlr %v6, %v25
; jne 10 ; vlr %v6, %v24
; vlr %v24, %v6
; br %r14

View File

@@ -8,9 +8,9 @@ block0(v0: i64):
}
; block0:
; vgbm %v4, 0
; vlvgg %v4, %r3, 1
; vst %v4, 0(%r2)
; vgbm %v5, 0
; vlvgg %v5, %r3, 1
; vst %v5, 0(%r2)
; br %r14
function %uextend_i32_i128(i32) -> i128 {
@@ -20,9 +20,9 @@ block0(v0: i32):
}
; block0:
; vgbm %v4, 0
; vlvgf %v4, %r3, 3
; vst %v4, 0(%r2)
; vgbm %v5, 0
; vlvgf %v5, %r3, 3
; vst %v5, 0(%r2)
; br %r14
function %uextend_i32_i64(i32) -> i64 {
@@ -42,9 +42,9 @@ block0(v0: i16):
}
; block0:
; vgbm %v4, 0
; vlvgh %v4, %r3, 7
; vst %v4, 0(%r2)
; vgbm %v5, 0
; vlvgh %v5, %r3, 7
; vst %v5, 0(%r2)
; br %r14
function %uextend_i16_i64(i16) -> i64 {
@@ -74,9 +74,9 @@ block0(v0: i8):
}
; block0:
; vgbm %v4, 0
; vlvgb %v4, %r3, 15
; vst %v4, 0(%r2)
; vgbm %v5, 0
; vlvgb %v5, %r3, 15
; vst %v5, 0(%r2)
; br %r14
function %uextend_i8_i64(i8) -> i64 {
@@ -336,8 +336,8 @@ block0(v0: i128):
; vceqgs %v7, %v0, %v5
; lghi %r3, 0
; locghine %r3, -1
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; vlvgp %v21, %r3, %r3
; vst %v21, 0(%r2)
; br %r14
function %bmask_i128_i64(i128) -> i64 {
@@ -406,8 +406,8 @@ block0(v0: i64, v1: i64):
; cghi %r4, 0
; lghi %r4, 0
; locghilh %r4, -1
; vlvgp %v17, %r4, %r4
; vst %v17, 0(%r2)
; vlvgp %v18, %r4, %r4
; vst %v18, 0(%r2)
; br %r14
function %bmask_i64_i64(i64, i64) -> i64 {
@@ -468,8 +468,8 @@ block0(v0: i32, v1: i32):
; chi %r4, 0
; lghi %r4, 0
; locghilh %r4, -1
; vlvgp %v17, %r4, %r4
; vst %v17, 0(%r2)
; vlvgp %v18, %r4, %r4
; vst %v18, 0(%r2)
; br %r14
function %bmask_i32_i64(i32, i32) -> i64 {
@@ -531,8 +531,8 @@ block0(v0: i16, v1: i16):
; chi %r3, 0
; lghi %r3, 0
; locghilh %r3, -1
; vlvgp %v19, %r3, %r3
; vst %v19, 0(%r2)
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; br %r14
function %bmask_i16_i64(i16, i16) -> i64 {
@@ -598,8 +598,8 @@ block0(v0: i8, v1: i8):
; chi %r3, 0
; lghi %r3, 0
; locghilh %r3, -1
; vlvgp %v19, %r3, %r3
; vst %v19, 0(%r2)
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; br %r14
function %bmask_i8_i64(i8, i8) -> i64 {
@@ -665,8 +665,8 @@ block0(v0: i8, v1: i8):
; chi %r3, 0
; lghi %r3, 0
; locghilh %r3, -1
; vlvgp %v19, %r3, %r3
; vst %v19, 0(%r2)
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; br %r14
function %bmask_i8_i64(i8, i8) -> i64 {

View File

@@ -13,15 +13,18 @@ block0(v0: i64, v1: i64):
}
; block0:
; lgr %r1, %r2
; cgite %r3, 0
; llihf %r4, 2147483647
; iilf %r4, 4294967295
; xgr %r4, %r1
; ngrk %r5, %r4, %r3
; cgite %r5, -1
; dsgr %r0, %r3
; lgr %r2, %r1
; 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 {
@@ -32,10 +35,10 @@ block0(v0: i64):
}
; block0:
; lgr %r1, %r2
; lghi %r2, 2
; dsgr %r0, %r2
; lgr %r2, %r1
; lgr %r3, %r2
; lghi %r5, 2
; dsgr %r2, %r5
; lgr %r2, %r3
; br %r14
function %sdiv_i32(i32, i32) -> i32 {
@@ -45,14 +48,18 @@ block0(v0: i32, v1: i32):
}
; block0:
; lgfr %r1, %r2
; lgfr %r2, %r2
; cite %r3, 0
; iilf %r4, 2147483647
; xrk %r2, %r4, %r1
; nrk %r4, %r2, %r3
; cite %r4, -1
; dsgfr %r0, %r3
; lgr %r2, %r1
; iilf %r5, 2147483647
; lgr %r4, %r2
; xr %r5, %r4
; nr %r5, %r3
; lgr %r4, %r3
; cite %r5, -1
; lgr %r3, %r2
; lgr %r2, %r4
; dsgfr %r2, %r2
; lgr %r2, %r3
; br %r14
function %sdiv_i32_imm(i32) -> i32 {
@@ -63,10 +70,10 @@ block0(v0: i32):
}
; block0:
; lgfr %r1, %r2
; lhi %r2, 2
; dsgfr %r0, %r2
; lgr %r2, %r1
; lgfr %r3, %r2
; lhi %r4, 2
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i16(i16, i16) -> i16 {
@@ -76,15 +83,16 @@ block0(v0: i16, v1: i16):
}
; block0:
; lghr %r1, %r2
; lhr %r3, %r3
; cite %r3, 0
; lhi %r2, 32767
; xrk %r4, %r2, %r1
; nrk %r2, %r4, %r3
; cite %r2, -1
; dsgfr %r0, %r3
; lgr %r2, %r1
; lghr %r2, %r2
; lhr %r4, %r3
; cite %r4, 0
; lhi %r5, 32767
; lgr %r3, %r2
; xr %r5, %r3
; nr %r5, %r4
; cite %r5, -1
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i16_imm(i16) -> i16 {
@@ -95,10 +103,10 @@ block0(v0: i16):
}
; block0:
; lghr %r1, %r2
; lhi %r2, 2
; dsgfr %r0, %r2
; lgr %r2, %r1
; lghr %r3, %r2
; lhi %r4, 2
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i8(i8, i8) -> i8 {
@@ -108,15 +116,16 @@ block0(v0: i8, v1: i8):
}
; block0:
; lgbr %r1, %r2
; lbr %r3, %r3
; cite %r3, 0
; lhi %r2, 127
; xrk %r4, %r2, %r1
; nrk %r2, %r4, %r3
; cite %r2, -1
; dsgfr %r0, %r3
; lgr %r2, %r1
; lgbr %r2, %r2
; lbr %r4, %r3
; cite %r4, 0
; lhi %r5, 127
; lgr %r3, %r2
; xr %r5, %r3
; nr %r5, %r4
; cite %r5, -1
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %sdiv_i8_imm(i8) -> i8 {
@@ -127,10 +136,10 @@ block0(v0: i8):
}
; block0:
; lgbr %r1, %r2
; lhi %r2, 2
; dsgfr %r0, %r2
; lgr %r2, %r1
; lgbr %r3, %r2
; lhi %r4, 2
; dsgfr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i64(i64, i64) -> i64 {
@@ -140,11 +149,14 @@ block0(v0: i64, v1: i64):
}
; block0:
; lghi %r0, 0
; lgr %r1, %r2
; lgr %r4, %r2
; lghi %r2, 0
; cgite %r3, 0
; dlgr %r0, %r3
; lgr %r2, %r1
; lgr %r5, %r3
; lgr %r3, %r4
; lgr %r4, %r5
; dlgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i64_imm(i64) -> i64 {
@@ -155,11 +167,11 @@ block0(v0: i64):
}
; block0:
; lghi %r0, 0
; lgr %r1, %r2
; lghi %r3, 2
; dlgr %r0, %r3
; lgr %r2, %r1
; lgr %r3, %r2
; lghi %r2, 0
; lghi %r4, 2
; dlgr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i32(i32, i32) -> i32 {
@@ -169,11 +181,14 @@ block0(v0: i32, v1: i32):
}
; block0:
; lhi %r0, 0
; lgr %r1, %r2
; lgr %r4, %r2
; lhi %r2, 0
; cite %r3, 0
; dlr %r0, %r3
; lgr %r2, %r1
; lgr %r5, %r3
; lgr %r3, %r4
; lgr %r4, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i32_imm(i32) -> i32 {
@@ -184,11 +199,11 @@ block0(v0: i32):
}
; block0:
; lhi %r0, 0
; lgr %r1, %r2
; lhi %r3, 2
; dlr %r0, %r3
; lgr %r2, %r1
; lgr %r3, %r2
; lhi %r2, 0
; lhi %r4, 2
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i16(i16, i16) -> i16 {
@@ -198,12 +213,16 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhi %r0, 0
; llhr %r1, %r2
; llhr %r4, %r3
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llhr %r3, %r2
; lgr %r2, %r4
; llhr %r4, %r2
; cite %r4, 0
; dlr %r0, %r4
; lgr %r2, %r1
; lgr %r2, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i16_imm(i16) -> i16 {
@@ -214,11 +233,13 @@ block0(v0: i16):
}
; block0:
; lhi %r0, 0
; llhr %r1, %r2
; lhi %r3, 2
; dlr %r0, %r3
; lgr %r2, %r1
; lhi %r5, 0
; lgr %r4, %r5
; llhr %r3, %r2
; lhi %r5, 2
; lgr %r2, %r4
; dlr %r2, %r5
; lgr %r2, %r3
; br %r14
function %udiv_i8(i8, i8) -> i8 {
@@ -228,12 +249,16 @@ block0(v0: i8, v1: i8):
}
; block0:
; lhi %r0, 0
; llcr %r1, %r2
; llcr %r4, %r3
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llcr %r3, %r2
; lgr %r2, %r4
; llcr %r4, %r2
; cite %r4, 0
; dlr %r0, %r4
; lgr %r2, %r1
; lgr %r2, %r5
; dlr %r2, %r4
; lgr %r2, %r3
; br %r14
function %udiv_i8_imm(i8) -> i8 {
@@ -244,11 +269,13 @@ block0(v0: i8):
}
; block0:
; lhi %r0, 0
; llcr %r1, %r2
; lhi %r3, 2
; dlr %r0, %r3
; lgr %r2, %r1
; lhi %r5, 0
; lgr %r4, %r5
; llcr %r3, %r2
; lhi %r5, 2
; lgr %r2, %r4
; dlr %r2, %r5
; lgr %r2, %r3
; br %r14
function %srem_i64(i64, i64) -> i64 {
@@ -258,12 +285,12 @@ block0(v0: i64, v1: i64):
}
; block0:
; lgr %r1, %r2
; cgite %r3, 0
; cghi %r3, -1
; locghie %r1, 0
; dsgr %r0, %r3
; lgr %r2, %r0
; lgr %r5, %r3
; lgr %r3, %r2
; locghie %r3, 0
; dsgr %r2, %r5
; br %r14
function %srem_i32(i32, i32) -> i32 {
@@ -273,10 +300,10 @@ block0(v0: i32, v1: i32):
}
; block0:
; lgfr %r1, %r2
; cite %r3, 0
; dsgfr %r0, %r3
; lgr %r2, %r0
; lgr %r4, %r3
; lgfr %r3, %r2
; cite %r4, 0
; dsgfr %r2, %r4
; br %r14
function %srem_i16(i16, i16) -> i16 {
@@ -286,11 +313,12 @@ block0(v0: i16, v1: i16):
}
; block0:
; lghr %r1, %r2
; lhr %r3, %r3
; cite %r3, 0
; dsgfr %r0, %r3
; lgr %r2, %r0
; lghr %r2, %r2
; lgr %r5, %r2
; lhr %r4, %r3
; cite %r4, 0
; lgr %r3, %r5
; dsgfr %r2, %r4
; br %r14
function %srem_i8(i8, i8) -> i8 {
@@ -300,11 +328,12 @@ block0(v0: i8, v1: i8):
}
; block0:
; lgbr %r1, %r2
; lbr %r3, %r3
; cite %r3, 0
; dsgfr %r0, %r3
; lgr %r2, %r0
; lgbr %r2, %r2
; lgr %r5, %r2
; lbr %r4, %r3
; cite %r4, 0
; lgr %r3, %r5
; dsgfr %r2, %r4
; br %r14
function %urem_i64(i64, i64) -> i64 {
@@ -314,11 +343,13 @@ block0(v0: i64, v1: i64):
}
; block0:
; lghi %r0, 0
; lgr %r1, %r2
; lgr %r4, %r2
; lghi %r2, 0
; cgite %r3, 0
; dlgr %r0, %r3
; lgr %r2, %r0
; lgr %r5, %r3
; lgr %r3, %r4
; lgr %r4, %r5
; dlgr %r2, %r4
; br %r14
function %urem_i32(i32, i32) -> i32 {
@@ -328,11 +359,13 @@ block0(v0: i32, v1: i32):
}
; block0:
; lhi %r0, 0
; lgr %r1, %r2
; lgr %r4, %r2
; lhi %r2, 0
; cite %r3, 0
; dlr %r0, %r3
; lgr %r2, %r0
; lgr %r5, %r3
; lgr %r3, %r4
; lgr %r4, %r5
; dlr %r2, %r4
; br %r14
function %urem_i16(i16, i16) -> i16 {
@@ -342,12 +375,15 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhi %r0, 0
; llhr %r1, %r2
; llhr %r4, %r3
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llhr %r3, %r2
; lgr %r2, %r4
; llhr %r4, %r2
; cite %r4, 0
; dlr %r0, %r4
; lgr %r2, %r0
; lgr %r2, %r5
; dlr %r2, %r4
; br %r14
function %urem_i8(i8, i8) -> i8 {
@@ -357,11 +393,14 @@ block0(v0: i8, v1: i8):
}
; block0:
; lhi %r0, 0
; llcr %r1, %r2
; llcr %r4, %r3
; lgr %r4, %r3
; lhi %r3, 0
; lgr %r5, %r3
; llcr %r3, %r2
; lgr %r2, %r4
; llcr %r4, %r2
; cite %r4, 0
; dlr %r0, %r4
; lgr %r2, %r0
; lgr %r2, %r5
; dlr %r2, %r4
; br %r14

View File

@@ -503,9 +503,8 @@ block0(v0: f32):
; block0:
; wclfeb %f3, %f0, 0, 5
; vlgvf %r3, %v3, 0
; lgr %r2, %r3
; clfi %r3, 256
; vlgvf %r2, %v3, 0
; clfi %r2, 256
; lochih %r2, 255
; br %r14
@@ -517,14 +516,12 @@ block0(v0: f32):
; block0:
; wcfeb %f3, %f0, 0, 5
; vlgvf %r3, %v3, 0
; vlgvf %r2, %v3, 0
; cebr %f0, %f0
; lochio %r3, 0
; lgr %r4, %r3
; chi %r3, 127
; lochih %r4, 127
; lgr %r2, %r4
; chi %r4, -128
; lochio %r2, 0
; chi %r2, 127
; lochih %r2, 127
; chi %r2, -128
; lochil %r2, -128
; br %r14
@@ -536,9 +533,8 @@ block0(v0: f32):
; block0:
; wclfeb %f3, %f0, 0, 5
; vlgvf %r3, %v3, 0
; lgr %r2, %r3
; clfi %r3, 65535
; vlgvf %r2, %v3, 0
; clfi %r2, 65535
; lochih %r2, -1
; br %r14
@@ -550,14 +546,12 @@ block0(v0: f32):
; block0:
; wcfeb %f3, %f0, 0, 5
; vlgvf %r3, %v3, 0
; vlgvf %r2, %v3, 0
; cebr %f0, %f0
; lochio %r3, 0
; lgr %r4, %r3
; chi %r3, 32767
; lochih %r4, 32767
; lgr %r2, %r4
; chi %r4, -32768
; lochio %r2, 0
; chi %r2, 32767
; lochih %r2, 32767
; chi %r2, -32768
; lochil %r2, -32768
; br %r14
@@ -619,9 +613,8 @@ block0(v0: f64):
; block0:
; wclgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgr %r2, %r3
; clgfi %r3, 256
; lgdr %r2, %f3
; clgfi %r2, 256
; locghih %r2, 255
; br %r14
@@ -633,14 +626,12 @@ block0(v0: f64):
; block0:
; wcgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgdr %r2, %f3
; cdbr %f0, %f0
; locghio %r3, 0
; lgr %r4, %r3
; cghi %r3, 127
; locghih %r4, 127
; lgr %r2, %r4
; cghi %r4, -128
; locghio %r2, 0
; cghi %r2, 127
; locghih %r2, 127
; cghi %r2, -128
; locghil %r2, -128
; br %r14
@@ -652,9 +643,8 @@ block0(v0: f64):
; block0:
; wclgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgr %r2, %r3
; clgfi %r3, 65535
; lgdr %r2, %f3
; clgfi %r2, 65535
; locghih %r2, -1
; br %r14
@@ -666,14 +656,12 @@ block0(v0: f64):
; block0:
; wcgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgdr %r2, %f3
; cdbr %f0, %f0
; locghio %r3, 0
; lgr %r4, %r3
; cghi %r3, 32767
; locghih %r4, 32767
; lgr %r2, %r4
; cghi %r4, -32768
; locghio %r2, 0
; cghi %r2, 32767
; locghih %r2, 32767
; cghi %r2, -32768
; locghil %r2, -32768
; br %r14
@@ -702,12 +690,12 @@ block0(v0: f64):
; lgdr %r2, %f3
; cdbr %f0, %f0
; locghio %r2, 0
; lgfi %r5, 2147483647
; lgfi %r4, 2147483647
; cgr %r2, %r4
; locgrh %r2, %r4
; lgfi %r5, -2147483648
; cgr %r2, %r5
; locgrh %r2, %r5
; lgfi %r3, -2147483648
; cgr %r2, %r3
; locgrl %r2, %r3
; locgrl %r2, %r5
; br %r14
function %fcvt_to_uint_sat_f64_i64(f64) -> i64 {

View File

@@ -927,9 +927,8 @@ block0(v0: f32):
; block0:
; ldebr %f3, %f0
; wclgdb %f5, %f3, 0, 5
; lgdr %r5, %f5
; lgr %r2, %r5
; clgfi %r5, 256
; lgdr %r2, %f5
; clgfi %r2, 256
; locghih %r2, 255
; br %r14
@@ -942,14 +941,12 @@ block0(v0: f32):
; block0:
; ldebr %f3, %f0
; wcgdb %f5, %f3, 0, 5
; lgdr %r5, %f5
; lgdr %r2, %f5
; cebr %f0, %f0
; locghio %r5, 0
; lgr %r4, %r5
; cghi %r5, 127
; locghih %r4, 127
; lgr %r2, %r4
; cghi %r4, -128
; locghio %r2, 0
; cghi %r2, 127
; locghih %r2, 127
; cghi %r2, -128
; locghil %r2, -128
; br %r14
@@ -962,9 +959,8 @@ block0(v0: f32):
; block0:
; ldebr %f3, %f0
; wclgdb %f5, %f3, 0, 5
; lgdr %r5, %f5
; lgr %r2, %r5
; clgfi %r5, 65535
; lgdr %r2, %f5
; clgfi %r2, 65535
; locghih %r2, -1
; br %r14
@@ -977,14 +973,12 @@ block0(v0: f32):
; block0:
; ldebr %f3, %f0
; wcgdb %f5, %f3, 0, 5
; lgdr %r5, %f5
; lgdr %r2, %f5
; cebr %f0, %f0
; locghio %r5, 0
; lgr %r4, %r5
; cghi %r5, 32767
; locghih %r4, 32767
; lgr %r2, %r4
; cghi %r4, -32768
; locghio %r2, 0
; cghi %r2, 32767
; locghih %r2, 32767
; cghi %r2, -32768
; locghil %r2, -32768
; br %r14
@@ -1018,9 +1012,9 @@ block0(v0: f32):
; lgfi %r3, 2147483647
; cgr %r2, %r3
; locgrh %r2, %r3
; lgfi %r5, -2147483648
; cgr %r2, %r5
; locgrl %r2, %r5
; lgfi %r3, -2147483648
; cgr %r2, %r3
; locgrl %r2, %r3
; br %r14
function %fcvt_to_uint_sat_f32_i64(f32) -> i64 {
@@ -1057,9 +1051,8 @@ block0(v0: f64):
; block0:
; wclgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgr %r2, %r3
; clgfi %r3, 256
; lgdr %r2, %f3
; clgfi %r2, 256
; locghih %r2, 255
; br %r14
@@ -1071,14 +1064,12 @@ block0(v0: f64):
; block0:
; wcgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgdr %r2, %f3
; cdbr %f0, %f0
; locghio %r3, 0
; lgr %r4, %r3
; cghi %r3, 127
; locghih %r4, 127
; lgr %r2, %r4
; cghi %r4, -128
; locghio %r2, 0
; cghi %r2, 127
; locghih %r2, 127
; cghi %r2, -128
; locghil %r2, -128
; br %r14
@@ -1090,9 +1081,8 @@ block0(v0: f64):
; block0:
; wclgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgr %r2, %r3
; clgfi %r3, 65535
; lgdr %r2, %f3
; clgfi %r2, 65535
; locghih %r2, -1
; br %r14
@@ -1104,14 +1094,12 @@ block0(v0: f64):
; block0:
; wcgdb %f3, %f0, 0, 5
; lgdr %r3, %f3
; lgdr %r2, %f3
; cdbr %f0, %f0
; locghio %r3, 0
; lgr %r4, %r3
; cghi %r3, 32767
; locghih %r4, 32767
; lgr %r2, %r4
; cghi %r4, -32768
; locghio %r2, 0
; cghi %r2, 32767
; locghih %r2, 32767
; cghi %r2, -32768
; locghil %r2, -32768
; br %r14
@@ -1140,12 +1128,12 @@ block0(v0: f64):
; lgdr %r2, %f3
; cdbr %f0, %f0
; locghio %r2, 0
; lgfi %r5, 2147483647
; lgfi %r4, 2147483647
; cgr %r2, %r4
; locgrh %r2, %r4
; lgfi %r5, -2147483648
; cgr %r2, %r5
; locgrh %r2, %r5
; lgfi %r3, -2147483648
; cgr %r2, %r3
; locgrl %r2, %r3
; locgrl %r2, %r5
; br %r14
function %fcvt_to_uint_sat_f64_i64(f64) -> i64 {

View File

@@ -459,8 +459,8 @@ block0(v0: i64, v1: i64):
}
; block0:
; llgh %r3, 0(%r3)
; clgr %r2, %r3
; llgh %r4, 0(%r3)
; clgr %r2, %r4
; lhi %r2, 0
; lochil %r2, 1
; br %r14
@@ -554,8 +554,8 @@ block0(v0: i32, v1: i64):
}
; block0:
; llh %r3, 0(%r3)
; clr %r2, %r3
; llh %r4, 0(%r3)
; clr %r2, %r4
; lhi %r2, 0
; lochil %r2, 1
; br %r14

View File

@@ -18,9 +18,9 @@ block0(v0: i32):
; bras %r1, 12 ; data userextname0@tlsgd ; lg %r2, 0(%r1)
; brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
; ear %r3, %a0
; sllg %r4, %r3, 32
; ear %r4, %a1
; agr %r2, %r4
; sllg %r5, %r3, 32
; ear %r5, %a1
; agr %r2, %r5
; lmg %r12, %r15, 256(%r15)
; br %r14

View File

@@ -696,14 +696,15 @@ block0(v0: i64x2, v1: i64x2):
}
; block0:
; vlgvg %r2, %v24, 0
; vlgvg %r1, %v25, 0
; mlgr %r0, %r2
; lgr %r3, %r0
; vlgvg %r2, %v24, 1
; vlgvg %r1, %v25, 1
; mlgr %r0, %r2
; vlvgp %v24, %r3, %r0
; vlgvg %r3, %v24, 0
; vlgvg %r4, %v25, 0
; mlgr %r2, %r4
; lgr %r4, %r2
; vlgvg %r3, %v24, 1
; vlgvg %r5, %v25, 1
; mlgr %r2, %r5
; lgr %r3, %r2
; vlvgp %v24, %r4, %r3
; br %r14
function %umulhi_i32x4(i32x4, i32x4) -> i32x4 {
@@ -745,13 +746,13 @@ block0(v0: i64x2, v1: i64x2):
; block0:
; vlgvg %r2, %v24, 0
; vlgvg %r4, %v25, 0
; mgrk %r0, %r2, %r4
; lgr %r2, %r0
; vlgvg %r5, %v24, 1
; vlgvg %r3, %v25, 1
; mgrk %r0, %r5, %r3
; mgrk %r2, %r2, %r4
; lgr %r5, %r2
; vlvgp %v24, %r5, %r0
; vlgvg %r4, %v24, 1
; vlgvg %r2, %v25, 1
; mgrk %r2, %r4, %r2
; lgr %r3, %r2
; vlvgp %v24, %r5, %r3
; br %r14
function %smulhi_i32x4(i32x4, i32x4) -> i32x4 {