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
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
; Test the legalization of function signatures.
|
|
test legalizer
|
|
isa riscv
|
|
|
|
; regex: V=v\d+
|
|
|
|
function f(i32) {
|
|
sig0 = signature(i32) -> i32
|
|
; check: sig0 = signature(i32 [%x10]) -> i32 [%x10]
|
|
|
|
sig1 = signature(i64) -> b1
|
|
; check: sig1 = signature(i32 [%x10], i32 [%x11]) -> b1 [%x10]
|
|
|
|
; The i64 argument must go in an even-odd register pair.
|
|
sig2 = signature(f32, i64) -> f64
|
|
; check: sig2 = signature(f32 [%f10], i32 [%x12], i32 [%x13]) -> f64 [%f10]
|
|
|
|
; Spilling into the stack args.
|
|
sig3 = signature(f64, f64, f64, f64, f64, f64, f64, i64) -> f64
|
|
; check: sig3 = signature(f64 [%f10], f64 [%f11], f64 [%f12], f64 [%f13], f64 [%f14], f64 [%f15], f64 [%f16], i32 [0], i32 [4]) -> f64 [%f10]
|
|
|
|
; Splitting vectors.
|
|
sig4 = signature(i32x4)
|
|
; check: sig4 = signature(i32 [%x10], i32 [%x11], i32 [%x12], i32 [%x13])
|
|
|
|
; Splitting vectors, then splitting ints.
|
|
sig5 = signature(i64x4)
|
|
; check: sig5 = signature(i32 [%x10], i32 [%x11], i32 [%x12], i32 [%x13], i32 [%x14], i32 [%x15], i32 [%x16], i32 [%x17])
|
|
|
|
ebb0(v0: i32):
|
|
return_reg v0
|
|
}
|