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.
33 lines
799 B
Plaintext
33 lines
799 B
Plaintext
; Test the legalization of i32 instructions that don't have RISC-V versions.
|
|
test legalizer
|
|
|
|
set is_64bit=0
|
|
isa riscv supports_m=1
|
|
|
|
set is_64bit=1
|
|
isa riscv supports_m=1
|
|
|
|
; regex: V=v\d+
|
|
|
|
function carry_out(i32, i32) -> i32, b1 {
|
|
ebb0(v1: i32, v2: i32):
|
|
v3, v4 = iadd_cout v1, v2
|
|
return v3, v4
|
|
}
|
|
; check: $v3 = iadd $v1, $v2
|
|
; check: $(cout=$V) = icmp ult $v3, $v1
|
|
; It's possible the legalizer will rewrite these value aliases in the future.
|
|
; check: $v4 -> $cout
|
|
; check: return $v3, $v4
|
|
|
|
; Expanding illegal immediate constants.
|
|
; Note that at some point we'll probably expand the iconst as well.
|
|
function large_imm(i32) -> i32 {
|
|
ebb0(v0: i32):
|
|
v1 = iadd_imm v0, 1000000000
|
|
return v1
|
|
}
|
|
; check: $(cst=$V) = iconst.i32 0x3b9a_ca00
|
|
; check: $v1 = iadd $v0, $cst
|
|
; check: return $v1
|