Legalize entry block arguments to match ABI types.
Insert conversion code that reconstructs the original function argument types from the legalized ABI signature. Add abi::legalize_abi_value(). This function is used when adapting code to a legalized function signature.
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
test legalizer
|
||||
isa riscv
|
||||
|
||||
; regex: V=v\d+
|
||||
; regex: VX=vx\d+
|
||||
|
||||
function f(i32) {
|
||||
sig0 = signature(i32) -> i32
|
||||
|
||||
@@ -21,3 +24,11 @@ function f(i32) {
|
||||
ebb0(v0: i32):
|
||||
return_reg v0
|
||||
}
|
||||
|
||||
function int_split_args(i64) -> i64 {
|
||||
ebb0(v0: i64):
|
||||
; check: $ebb0($(v0l=$VX): i32, $(v0h=$VX): i32):
|
||||
; check: iconcat_lohi $v0l, $v0h
|
||||
v1 = iadd_imm v0, 1
|
||||
return v0
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ ebb0(v1: i64, v2: i64):
|
||||
v3 = band v1, v2
|
||||
return v3
|
||||
}
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi $v1
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi $v2
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi
|
||||
; check: [R#ec
|
||||
; sameln: $(v3l=$V) = band $v1l, $v2l
|
||||
; check: [R#ec
|
||||
@@ -23,8 +23,8 @@ ebb0(v1: i64, v2: i64):
|
||||
v3 = bor v1, v2
|
||||
return v3
|
||||
}
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi $v1
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi $v2
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi
|
||||
; check: [R#cc
|
||||
; sameln: $(v3l=$V) = bor $v1l, $v2l
|
||||
; check: [R#cc
|
||||
@@ -36,8 +36,8 @@ ebb0(v1: i64, v2: i64):
|
||||
v3 = bxor v1, v2
|
||||
return v3
|
||||
}
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi $v1
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi $v2
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi
|
||||
; check: [R#8c
|
||||
; sameln: $(v3l=$V) = bxor $v1l, $v2l
|
||||
; check: [R#8c
|
||||
@@ -52,8 +52,8 @@ ebb0(v1: i64, v2: i64):
|
||||
v3 = iadd v1, v2
|
||||
return v3
|
||||
}
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi $v1
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi $v2
|
||||
; check: $(v1l=$V), $(v1h=$VX) = isplit_lohi
|
||||
; check: $(v2l=$V), $(v2h=$VX) = isplit_lohi
|
||||
; check: [R#0c
|
||||
; sameln: $(v3l=$V) = iadd $v1l, $v2l
|
||||
; check: $(c=$V) = icmp ult, $v3l, $v1l
|
||||
|
||||
Reference in New Issue
Block a user