To keep cross-compiling straightforward, Cretonne shouldn't have any behavior that depends on the host. This renames the "Native" calling convention to "SystemV", which has a defined meaning for each target, so that it's clear that the calling convention doesn't change depending on what host Cretonne is running on.
33 lines
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
; Test the legalization of function signatures.
|
|
test legalizer
|
|
set is_64bit
|
|
isa intel
|
|
|
|
; regex: V=v\d+
|
|
|
|
function %f() {
|
|
sig0 = (i32) -> i32 system_v
|
|
; check: sig0 = (i32 [%rdi]) -> i32 [%rax] system_v
|
|
|
|
sig1 = (i64) -> b1 system_v
|
|
; check: sig1 = (i64 [%rdi]) -> b1 [%rax] system_v
|
|
|
|
sig2 = (f32, i64) -> f64 system_v
|
|
; check: sig2 = (f32 [%xmm0], i64 [%rdi]) -> f64 [%xmm0] system_v
|
|
|
|
ebb0:
|
|
return
|
|
}
|
|
|
|
function %pass_stack_int64(i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 vmctx) spiderwasm {
|
|
sig0 = (i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 vmctx) spiderwasm
|
|
fn0 = sig0 u0:0
|
|
|
|
ebb0(v0: i64, v1: i64, v2: i64, v3: i64, v4: i64, v5: i64, v6: i64, v7: i64, v8: i64, v9: i64, v10: i64, v11: i64, v12: i64, v13: i64, v14: i64, v15: i64, v16: i64, v17: i64, v18: i64, v19: i64, v20: i64):
|
|
call fn0(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
|
|
jump ebb1
|
|
|
|
ebb1:
|
|
return
|
|
}
|