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.
This commit is contained in:
Trevor Elliott
2022-11-08 16:00:49 -08:00
committed by GitHub
parent d59caf39b6
commit b077854b57
171 changed files with 6368 additions and 6364 deletions

View File

@@ -8,9 +8,9 @@ block0(v0: i64):
}
; block0:
; vgbm %v5, 0
; vlvgg %v5, %r3, 1
; vst %v5, 0(%r2)
; vgbm %v4, 0
; vlvgg %v4, %r3, 1
; vst %v4, 0(%r2)
; br %r14
function %uextend_i32_i128(i32) -> i128 {
@@ -20,9 +20,9 @@ block0(v0: i32):
}
; block0:
; vgbm %v5, 0
; vlvgf %v5, %r3, 3
; vst %v5, 0(%r2)
; vgbm %v4, 0
; vlvgf %v4, %r3, 3
; vst %v4, 0(%r2)
; br %r14
function %uextend_i32_i64(i32) -> i64 {
@@ -42,9 +42,9 @@ block0(v0: i16):
}
; block0:
; vgbm %v5, 0
; vlvgh %v5, %r3, 7
; vst %v5, 0(%r2)
; vgbm %v4, 0
; vlvgh %v4, %r3, 7
; vst %v4, 0(%r2)
; br %r14
function %uextend_i16_i64(i16) -> i64 {
@@ -74,9 +74,9 @@ block0(v0: i8):
}
; block0:
; vgbm %v5, 0
; vlvgb %v5, %r3, 15
; vst %v5, 0(%r2)
; vgbm %v4, 0
; vlvgb %v4, %r3, 15
; vst %v4, 0(%r2)
; br %r14
function %uextend_i8_i64(i8) -> i64 {
@@ -116,9 +116,9 @@ block0(v0: i64):
}
; block0:
; srag %r4, %r3, 63
; vlvgp %v6, %r4, %r3
; vst %v6, 0(%r2)
; srag %r5, %r3, 63
; vlvgp %v5, %r5, %r3
; vst %v5, 0(%r2)
; br %r14
function %sextend_i32_i128(i32) -> i128 {
@@ -128,10 +128,10 @@ block0(v0: i32):
}
; block0:
; lgfr %r3, %r3
; srag %r4, %r3, 63
; vlvgp %v16, %r4, %r3
; vst %v16, 0(%r2)
; lgfr %r5, %r3
; srag %r3, %r5, 63
; vlvgp %v7, %r3, %r5
; vst %v7, 0(%r2)
; br %r14
function %sextend_i32_i64(i32) -> i64 {
@@ -151,10 +151,10 @@ block0(v0: i16):
}
; block0:
; lghr %r3, %r3
; srag %r4, %r3, 63
; vlvgp %v16, %r4, %r3
; vst %v16, 0(%r2)
; lghr %r5, %r3
; srag %r3, %r5, 63
; vlvgp %v7, %r3, %r5
; vst %v7, 0(%r2)
; br %r14
function %sextend_i16_i64(i16) -> i64 {
@@ -184,10 +184,10 @@ block0(v0: i8):
}
; block0:
; lgbr %r3, %r3
; srag %r4, %r3, 63
; vlvgp %v16, %r4, %r3
; vst %v16, 0(%r2)
; lgbr %r5, %r3
; srag %r3, %r5, 63
; vlvgp %v7, %r3, %r5
; vst %v7, 0(%r2)
; br %r14
function %sextend_i8_i64(i8) -> i64 {
@@ -332,12 +332,12 @@ block0(v0: i128):
; block0:
; vl %v0, 0(%r3)
; vgbm %v5, 0
; vceqgs %v7, %v0, %v5
; lghi %r4, 0
; locghine %r4, -1
; vlvgp %v21, %r4, %r4
; vst %v21, 0(%r2)
; vgbm %v4, 0
; vceqgs %v6, %v0, %v4
; lghi %r3, 0
; locghine %r3, -1
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; br %r14
function %bmask_i128_i64(i128) -> i64 {
@@ -348,8 +348,8 @@ block0(v0: i128):
; block0:
; vl %v0, 0(%r2)
; vgbm %v3, 0
; vceqgs %v5, %v0, %v3
; vgbm %v2, 0
; vceqgs %v4, %v0, %v2
; lghi %r2, 0
; locghine %r2, -1
; br %r14
@@ -362,8 +362,8 @@ block0(v0: i128):
; block0:
; vl %v0, 0(%r2)
; vgbm %v3, 0
; vceqgs %v5, %v0, %v3
; vgbm %v2, 0
; vceqgs %v4, %v0, %v2
; lhi %r2, 0
; lochine %r2, -1
; br %r14
@@ -376,8 +376,8 @@ block0(v0: i128):
; block0:
; vl %v0, 0(%r2)
; vgbm %v3, 0
; vceqgs %v5, %v0, %v3
; vgbm %v2, 0
; vceqgs %v4, %v0, %v2
; lhi %r2, 0
; lochine %r2, -1
; br %r14
@@ -390,8 +390,8 @@ block0(v0: i128):
; block0:
; vl %v0, 0(%r2)
; vgbm %v3, 0
; vceqgs %v5, %v0, %v3
; vgbm %v2, 0
; vceqgs %v4, %v0, %v2
; lhi %r2, 0
; lochine %r2, -1
; br %r14
@@ -404,10 +404,10 @@ block0(v0: i64, v1: i64):
; block0:
; cghi %r4, 0
; lghi %r5, 0
; locghilh %r5, -1
; vlvgp %v18, %r5, %r5
; vst %v18, 0(%r2)
; lghi %r4, 0
; locghilh %r4, -1
; vlvgp %v17, %r4, %r4
; vst %v17, 0(%r2)
; br %r14
function %bmask_i64_i64(i64, i64) -> i64 {
@@ -466,10 +466,10 @@ block0(v0: i32, v1: i32):
; block0:
; chi %r4, 0
; lghi %r5, 0
; locghilh %r5, -1
; vlvgp %v18, %r5, %r5
; vst %v18, 0(%r2)
; lghi %r4, 0
; locghilh %r4, -1
; vlvgp %v17, %r4, %r4
; vst %v17, 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 %v20, %r3, %r3
; vst %v20, 0(%r2)
; vlvgp %v19, %r3, %r3
; vst %v19, 0(%r2)
; br %r14
function %bmask_i16_i64(i16, i16) -> i64 {
@@ -542,8 +542,8 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhr %r2, %r3
; chi %r2, 0
; lhr %r5, %r3
; chi %r5, 0
; lghi %r2, 0
; locghilh %r2, -1
; br %r14
@@ -555,8 +555,8 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhr %r2, %r3
; chi %r2, 0
; lhr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -568,8 +568,8 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhr %r2, %r3
; chi %r2, 0
; lhr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -581,8 +581,8 @@ block0(v0: i16, v1: i16):
}
; block0:
; lhr %r2, %r3
; chi %r2, 0
; lhr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -598,8 +598,8 @@ block0(v0: i8, v1: i8):
; chi %r3, 0
; lghi %r3, 0
; locghilh %r3, -1
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; vlvgp %v19, %r3, %r3
; vst %v19, 0(%r2)
; br %r14
function %bmask_i8_i64(i8, i8) -> i64 {
@@ -609,8 +609,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lghi %r2, 0
; locghilh %r2, -1
; br %r14
@@ -622,8 +622,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -635,8 +635,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -648,8 +648,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -665,8 +665,8 @@ block0(v0: i8, v1: i8):
; chi %r3, 0
; lghi %r3, 0
; locghilh %r3, -1
; vlvgp %v20, %r3, %r3
; vst %v20, 0(%r2)
; vlvgp %v19, %r3, %r3
; vst %v19, 0(%r2)
; br %r14
function %bmask_i8_i64(i8, i8) -> i64 {
@@ -676,8 +676,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lghi %r2, 0
; locghilh %r2, -1
; br %r14
@@ -689,8 +689,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -702,8 +702,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14
@@ -715,8 +715,8 @@ block0(v0: i8, v1: i8):
}
; block0:
; lbr %r2, %r3
; chi %r2, 0
; lbr %r5, %r3
; chi %r5, 0
; lhi %r2, 0
; lochilh %r2, -1
; br %r14