Files
wasmtime/cranelift/filetests/filetests/isa/s390x/multivalue-ret.clif
Trevor Elliott b077854b57 Generate SSA code from returns (#5172)
Modify return pseudo-instructions to have pairs of registers: virtual and real. This allows us to constrain the virtual registers to the real ones specified by the abi, instead of directly emitting moves to those real registers.
2022-11-08 16:00:49 -08:00

84 lines
1.7 KiB
Plaintext

test compile precise-output
target s390x
function %f1() -> i64, i64, i64, i64 {
block1:
v0 = iconst.i64 1
v1 = iconst.i64 2
v2 = iconst.i64 3
v3 = iconst.i64 4
return v0, v1, v2, v3
}
; block0:
; lghi %r2, 1
; lghi %r3, 2
; lghi %r4, 3
; lghi %r5, 4
; br %r14
function %f1() -> i64, i64, i64, i64, i64, i64 {
block1:
v0 = iconst.i64 1
v1 = iconst.i64 2
v2 = iconst.i64 3
v3 = iconst.i64 4
v4 = iconst.i64 5
v5 = iconst.i64 6
return v0, v1, v2, v3, v4, v5
}
; stmg %r7, %r15, 56(%r15)
; block0:
; lghi %r4, 1
; lgr %r14, %r4
; lghi %r3, 2
; lghi %r4, 3
; lghi %r5, 4
; lghi %r7, 5
; lghi %r9, 6
; stg %r7, 0(%r2)
; stg %r9, 8(%r2)
; lgr %r2, %r14
; lmg %r7, %r15, 56(%r15)
; br %r14
function %f3() -> f64, f64, f64, f64 {
block1:
v0 = f64const 0x0.0
v1 = f64const 0x1.0
v2 = f64const 0x2.0
v3 = f64const 0x3.0
return v0, v1, v2, v3
}
; block0:
; bras %r1, 12 ; data.f64 0 ; ld %f0, 0(%r1)
; bras %r1, 12 ; data.f64 1 ; ld %f2, 0(%r1)
; bras %r1, 12 ; data.f64 2 ; ld %f4, 0(%r1)
; bras %r1, 12 ; data.f64 3 ; ld %f6, 0(%r1)
; br %r14
function %f4() -> f64, f64, f64, f64, f64, f64 {
block1:
v0 = f64const 0x0.0
v1 = f64const 0x1.0
v2 = f64const 0x2.0
v3 = f64const 0x3.0
v4 = f64const 0x4.0
v5 = f64const 0x5.0
return v0, v1, v2, v3, v4, v5
}
; block0:
; bras %r1, 12 ; data.f64 0 ; ld %f0, 0(%r1)
; bras %r1, 12 ; data.f64 1 ; ld %f2, 0(%r1)
; bras %r1, 12 ; data.f64 2 ; ld %f4, 0(%r1)
; bras %r1, 12 ; data.f64 3 ; ld %f6, 0(%r1)
; bras %r1, 12 ; data.f64 4 ; vleg %v18, 0(%r1), 0
; bras %r1, 12 ; data.f64 5 ; vleg %v20, 0(%r1), 0
; vsteg %v18, 0(%r2), 0
; vsteg %v20, 8(%r2), 0
; br %r14