All values are now references into the value table, so drop the distinction between direct and table values. Direct values don't exist any more. Also remove the parser support for the 'vxNN' syntax. Only 'vNN' values can be parsed now.
56 lines
1.4 KiB
Plaintext
56 lines
1.4 KiB
Plaintext
; Test the legalization of EBB arguments that are split.
|
|
test legalizer
|
|
isa riscv
|
|
|
|
; regex: V=v\d+
|
|
|
|
function simple(i64, i64) -> i64 {
|
|
ebb0(v1: i64, v2: i64):
|
|
; check: $ebb0($(v1l=$V): i32, $(v1h=$V): i32, $(v2l=$V): i32, $(v2h=$V): i32):
|
|
jump ebb1(v1)
|
|
; check: jump $ebb1($v1l, $v1h)
|
|
|
|
ebb1(v3: i64):
|
|
; check: $ebb1($(v3l=$V): i32, $(v3h=$V): i32):
|
|
v4 = band v3, v2
|
|
; check: $(v4l=$V) = band $v3l, $v2l
|
|
; check: $(v4h=$V) = band $v3h, $v2h
|
|
return v4
|
|
; check: return $v4l, $v4h
|
|
}
|
|
|
|
function multi(i64) -> i64 {
|
|
ebb1(v1: i64):
|
|
; check: $ebb1($(v1l=$V): i32, $(v1h=$V): i32):
|
|
jump ebb2(v1, v1)
|
|
; check: jump $ebb2($v1l, $v1l, $v1h, $v1h)
|
|
|
|
ebb2(v2: i64, v3: i64):
|
|
; check: $ebb2($(v2l=$V): i32, $(v3l=$V): i32, $(v2h=$V): i32, $(v3h=$V): i32):
|
|
jump ebb3(v2)
|
|
; check: jump $ebb3($v2l, $v2h)
|
|
|
|
ebb3(v4: i64):
|
|
; check: $ebb3($(v4l=$V): i32, $(v4h=$V): i32):
|
|
v5 = band v4, v3
|
|
; check: $(v5l=$V) = band $v4l, $v3l
|
|
; check: $(v5h=$V) = band $v4h, $v3h
|
|
return v5
|
|
; check: return $v5l, $v5h
|
|
}
|
|
|
|
function loop(i64, i64) -> i64 {
|
|
ebb0(v1: i64, v2: i64):
|
|
; check: $ebb0($(v1l=$V): i32, $(v1h=$V): i32, $(v2l=$V): i32, $(v2h=$V): i32):
|
|
jump ebb1(v1)
|
|
; check: jump $ebb1($v1l, $v1h)
|
|
|
|
ebb1(v3: i64):
|
|
; check: $ebb1($(v3l=$V): i32, $(v3h=$V): i32):
|
|
v4 = band v3, v2
|
|
; check: $(v4l=$V) = band $v3l, $v2l
|
|
; check: $(v4h=$V) = band $v3h, $v2h
|
|
jump ebb1(v4)
|
|
; check: jump $ebb1($v4l, $v4h)
|
|
}
|