Files
wasmtime/cranelift/filetests/filetests/isa/s390x/vec-abi.clif
Ulrich Weigand 9dadba60a0 s390x: use constraints for call arguments and return values (#5092)
Use the regalloc constraint-based CallArgList / CallRetList
mechanism instead of directly using physregs in instructions.
2022-10-21 11:01:22 -07:00

128 lines
3.2 KiB
Plaintext

test compile precise-output
target s390x
function %caller_be_to_be(i64x2, i32x4, i16x8, i8x16) -> i32x4 {
fn0 = %callee_be(i64x2, i32x4, i16x8, i8x16) -> i32x4
block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
v4 = call fn0(v0, v1, v2, v3)
return v4
}
; stmg %r14, %r15, 112(%r15)
; aghi %r15, -160
; virtual_sp_offset_adjust 160
; block0:
; bras %r1, 12 ; data %callee_be + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; lmg %r14, %r15, 272(%r15)
; br %r14
function %caller_be_to_le(i64x2, i32x4, i16x8, i8x16) -> i32x4 {
fn0 = %callee_le(i64x2, i32x4, i16x8, i8x16) -> i32x4 wasmtime_system_v
block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
v4 = call fn0(v0, v1, v2, v3)
return v4
}
; stmg %r14, %r15, 112(%r15)
; aghi %r15, -224
; virtual_sp_offset_adjust 160
; std %f8, 160(%r15)
; std %f9, 168(%r15)
; std %f10, 176(%r15)
; std %f11, 184(%r15)
; std %f12, 192(%r15)
; std %f13, 200(%r15)
; std %f14, 208(%r15)
; std %f15, 216(%r15)
; block0:
; vpdi %v24, %v24, %v24, 4
; vpdi %v16, %v25, %v25, 4
; verllg %v25, %v16, 32
; vpdi %v20, %v26, %v26, 4
; verllg %v22, %v20, 32
; verllf %v26, %v22, 16
; vpdi %v27, %v27, %v27, 4
; verllg %v28, %v27, 32
; verllf %v30, %v28, 16
; verllh %v27, %v30, 8
; bras %r1, 12 ; data %callee_le + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; vpdi %v6, %v24, %v24, 4
; verllg %v24, %v6, 32
; ld %f8, 160(%r15)
; ld %f9, 168(%r15)
; ld %f10, 176(%r15)
; ld %f11, 184(%r15)
; ld %f12, 192(%r15)
; ld %f13, 200(%r15)
; ld %f14, 208(%r15)
; ld %f15, 216(%r15)
; lmg %r14, %r15, 336(%r15)
; br %r14
function %caller_le_to_be(i64x2, i32x4, i16x8, i8x16) -> i32x4 wasmtime_system_v {
fn0 = %callee_be(i64x2, i32x4, i16x8, i8x16) -> i32x4
block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
v4 = call fn0(v0, v1, v2, v3)
return v4
}
; stmg %r14, %r15, 112(%r15)
; aghi %r15, -224
; virtual_sp_offset_adjust 160
; std %f8, 160(%r15)
; std %f9, 168(%r15)
; std %f10, 176(%r15)
; std %f11, 184(%r15)
; std %f12, 192(%r15)
; std %f13, 200(%r15)
; std %f14, 208(%r15)
; std %f15, 216(%r15)
; block0:
; vpdi %v24, %v24, %v24, 4
; vpdi %v16, %v25, %v25, 4
; verllg %v25, %v16, 32
; vpdi %v20, %v26, %v26, 4
; verllg %v22, %v20, 32
; verllf %v26, %v22, 16
; vpdi %v27, %v27, %v27, 4
; verllg %v28, %v27, 32
; verllf %v30, %v28, 16
; verllh %v27, %v30, 8
; bras %r1, 12 ; data %callee_be + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; vpdi %v6, %v24, %v24, 4
; verllg %v24, %v6, 32
; ld %f8, 160(%r15)
; ld %f9, 168(%r15)
; ld %f10, 176(%r15)
; ld %f11, 184(%r15)
; ld %f12, 192(%r15)
; ld %f13, 200(%r15)
; ld %f14, 208(%r15)
; ld %f15, 216(%r15)
; lmg %r14, %r15, 336(%r15)
; br %r14
function %caller_le_to_le(i64x2, i32x4, i16x8, i8x16) -> i32x4 wasmtime_system_v {
fn0 = %callee_le(i64x2, i32x4, i16x8, i8x16) -> i32x4 wasmtime_system_v
block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
v4 = call fn0(v0, v1, v2, v3)
return v4
}
; stmg %r14, %r15, 112(%r15)
; aghi %r15, -160
; virtual_sp_offset_adjust 160
; block0:
; bras %r1, 12 ; data %callee_le + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; lmg %r14, %r15, 272(%r15)
; br %r14