This switches from a custom list of architectures to use the target-lexicon crate. - "set is_64bit=1; isa x86" is replaced with "target x86_64", and similar for other architectures, and the `is_64bit` flag is removed entirely. - The `is_compressed` flag is removed too; it's no longer being used to control REX prefixes on x86-64, ARM and Thumb are separate architectures in target-lexicon, and we can figure out how to select RISC-V compressed encodings when we're ready.
56 lines
1.5 KiB
Plaintext
56 lines
1.5 KiB
Plaintext
; Test the legalization of EBB arguments that are split.
|
|
test legalizer
|
|
target riscv32
|
|
|
|
; 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, $(link=$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, $link
|
|
}
|
|
|
|
function %multi(i64) -> i64 {
|
|
ebb1(v1: i64):
|
|
; check: ebb1($(v1l=$V): i32, $(v1h=$V): i32, $(link=$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, $link
|
|
}
|
|
|
|
function %loop(i64, i64) -> i64 {
|
|
ebb0(v1: i64, v2: i64):
|
|
; check: ebb0($(v1l=$V): i32, $(v1h=$V): i32, $(v2l=$V): i32, $(v2h=$V): i32, $(link=$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)
|
|
}
|