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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user