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.
This commit is contained in:
Ulrich Weigand
2022-10-21 20:01:22 +02:00
committed by GitHub
parent 86e77953f8
commit 9dadba60a0
10 changed files with 317 additions and 240 deletions

View File

@@ -35,8 +35,8 @@ block0(v0: i32):
; virtual_sp_offset_adjust 160
; block0:
; llgfr %r2, %r2
; bras %r1, 12 ; data %g + 0 ; lg %r3, 0(%r1)
; basr %r14, %r3
; bras %r1, 12 ; data %g + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; lmg %r14, %r15, 272(%r15)
; br %r14
@@ -63,8 +63,8 @@ block0(v0: i32):
; virtual_sp_offset_adjust 160
; block0:
; lgfr %r2, %r2
; bras %r1, 12 ; data %g + 0 ; lg %r3, 0(%r1)
; basr %r14, %r3
; bras %r1, 12 ; data %g + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; lmg %r14, %r15, 272(%r15)
; br %r14
@@ -107,8 +107,8 @@ block0(v0: i32):
; virtual_sp_offset_adjust 160
; block0:
; llgfr %r2, %r2
; bras %r1, 12 ; data %g + 0 ; lg %r3, 0(%r1)
; basr %r14, %r3
; bras %r1, 12 ; data %g + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; lmg %r14, %r15, 272(%r15)
; br %r14

View File

@@ -69,15 +69,15 @@ block3(v7: r64, v8: r64):
; aghi %r15, -184
; virtual_sp_offset_adjust 160
; block0:
; stg %r3, 176(%r15)
; stg %r2, 168(%r15)
; bras %r1, 12 ; data %f + 0 ; lg %r3, 0(%r1)
; basr %r14, %r3
; la %r5, 160(%r15)
; stg %r3, 176(%r15)
; bras %r1, 12 ; data %f + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; la %r4, 160(%r15)
; lg %r3, 168(%r15)
; stg %r3, 0(%r5)
; lbr %r2, %r2
; chi %r2, 0
; stg %r3, 0(%r4)
; lbr %r5, %r2
; chi %r5, 0
; jgnlh label1 ; jg label3
; block1:
; jg label2

View File

@@ -103,22 +103,22 @@ block0(v0: i64, v1: i64, v2: i64):
return v3
}
; stmg %r7, %r15, 56(%r15)
; stmg %r8, %r15, 64(%r15)
; aghi %r15, -1248
; virtual_sp_offset_adjust 1248
; block0:
; lgr %r7, %r2
; lgr %r9, %r4
; lgr %r8, %r2
; lgr %r10, %r4
; la %r2, 160(%r15)
; la %r3, 0(%r3)
; lghi %r4, 1024
; brasl %r14, %Memcpy
; lgr %r4, %r9
; lgr %r4, %r10
; mvc 1184(63,%r15), 0(%r4)
; lgr %r2, %r7
; la %r3, 160(%r15)
; la %r4, 1184(%r15)
; lgr %r2, %r8
; brasl %r14, userextname0
; lmg %r7, %r15, 1304(%r15)
; lmg %r8, %r15, 1312(%r15)
; br %r14

View File

@@ -18,9 +18,9 @@ block0(v0: i32):
; bras %r1, 12 ; data userextname0@tlsgd ; lg %r2, 0(%r1)
; brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
; ear %r3, %a0
; sllg %r5, %r3, 32
; ear %r5, %a1
; agr %r2, %r5
; sllg %r3, %r3, 32
; ear %r3, %a1
; agr %r2, %r3
; lmg %r12, %r15, 256(%r15)
; br %r14

View File

@@ -13,8 +13,8 @@ block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
; aghi %r15, -160
; virtual_sp_offset_adjust 160
; block0:
; bras %r1, 12 ; data %callee_be + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; bras %r1, 12 ; data %callee_be + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; lmg %r14, %r15, 272(%r15)
; br %r14
@@ -39,19 +39,19 @@ block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
; std %f15, 216(%r15)
; block0:
; vpdi %v24, %v24, %v24, 4
; vpdi %v17, %v25, %v25, 4
; verllg %v25, %v17, 32
; vpdi %v22, %v26, %v26, 4
; verllg %v26, %v22, 32
; verllf %v26, %v26, 16
; vpdi %v29, %v27, %v27, 4
; verllg %v31, %v29, 32
; verllf %v1, %v31, 16
; verllh %v27, %v1, 8
; bras %r1, 12 ; data %callee_le + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; vpdi %v19, %v24, %v24, 4
; verllg %v24, %v19, 32
; 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)
@@ -84,19 +84,19 @@ block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
; std %f15, 216(%r15)
; block0:
; vpdi %v24, %v24, %v24, 4
; vpdi %v17, %v25, %v25, 4
; verllg %v25, %v17, 32
; vpdi %v22, %v26, %v26, 4
; verllg %v26, %v22, 32
; verllf %v26, %v26, 16
; vpdi %v29, %v27, %v27, 4
; verllg %v31, %v29, 32
; verllf %v1, %v31, 16
; verllh %v27, %v1, 8
; bras %r1, 12 ; data %callee_be + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; vpdi %v19, %v24, %v24, 4
; verllg %v24, %v19, 32
; 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)
@@ -120,8 +120,8 @@ block0(v0: i64x2, v1: i32x4, v2: i16x8, v3: i8x16):
; aghi %r15, -160
; virtual_sp_offset_adjust 160
; block0:
; bras %r1, 12 ; data %callee_le + 0 ; lg %r4, 0(%r1)
; basr %r14, %r4
; bras %r1, 12 ; data %callee_le + 0 ; lg %r5, 0(%r1)
; basr %r14, %r5
; lmg %r14, %r15, 272(%r15)
; br %r14