Upgrade to regalloc2 0.1.3. (#4157)
* Upgrade to regalloc2 0.1.3. This pulls in bytecodealliance/regalloc2#49, which slightly improves codegen in some cases where a safepoint (for reference-typed values) occurs in the same liverange as a register-constrained use. For example, in bytecodealliance/wasmtime#3785, an extra move instruction appeared and a callee-save register was used (necessitating a more expensive prologue) because of suboptimal splitting heuristics, which this PR fixes. The updated RA2 heuristics appear to have no measured downsides in existing benchmarks and improve the manually-observed codegen issue. * Update filetests where regalloc2 improvement altered behavior with reftypes.
This commit is contained in:
@@ -67,28 +67,25 @@ block3(v7: r64, v8: r64):
|
||||
; mov fp, sp
|
||||
; sub sp, sp, #32
|
||||
; block0:
|
||||
; mov x4, x1
|
||||
; mov x2, x0
|
||||
; str x1, [sp, #16]
|
||||
; str x0, [sp, #8]
|
||||
; ldr x3, 8 ; b 12 ; data TestCase { length: 1, ascii: [102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } + 0
|
||||
; str x2, [sp, #8]
|
||||
; str x4, [sp, #16]
|
||||
; blr x3
|
||||
; ldr x2, [sp, #8]
|
||||
; mov x9, sp
|
||||
; mov x12, x2
|
||||
; str x12, [x9]
|
||||
; ldr x10, [sp, #8]
|
||||
; str x10, [x9]
|
||||
; and w7, w0, #1
|
||||
; cbz x7, label1 ; b label3
|
||||
; block1:
|
||||
; b label2
|
||||
; block2:
|
||||
; mov x1, x12
|
||||
; mov x1, x10
|
||||
; ldr x0, [sp, #16]
|
||||
; b label5
|
||||
; block3:
|
||||
; b label4
|
||||
; block4:
|
||||
; mov x0, x12
|
||||
; mov x0, x10
|
||||
; ldr x1, [sp, #16]
|
||||
; b label5
|
||||
; block5:
|
||||
|
||||
@@ -69,27 +69,26 @@ block3(v7: r64, v8: r64):
|
||||
; aghi %r15, -184
|
||||
; virtual_sp_offset_adjust 160
|
||||
; block0:
|
||||
; lgr %r4, %r3
|
||||
; lgr %r3, %r2
|
||||
; stg %r3, 176(%r15)
|
||||
; stg %r2, 168(%r15)
|
||||
; bras %r1, 12 ; data %f + 0 ; lg %r5, 0(%r1)
|
||||
; stg %r3, 168(%r15)
|
||||
; stg %r4, 176(%r15)
|
||||
; basr %r14, %r5
|
||||
; lg %r3, 168(%r15)
|
||||
; la %r4, 160(%r15)
|
||||
; stg %r3, 0(%r4)
|
||||
; llcr %r4, %r2
|
||||
; chi %r4, 0
|
||||
; la %r3, 160(%r15)
|
||||
; lg %r4, 168(%r15)
|
||||
; stg %r4, 0(%r3)
|
||||
; llcr %r5, %r2
|
||||
; chi %r5, 0
|
||||
; jgnlh label1 ; jg label3
|
||||
; block1:
|
||||
; jg label2
|
||||
; block2:
|
||||
; lgr %r3, %r4
|
||||
; lg %r2, 176(%r15)
|
||||
; jg label5
|
||||
; block3:
|
||||
; jg label4
|
||||
; block4:
|
||||
; lgr %r2, %r3
|
||||
; lgr %r2, %r4
|
||||
; lg %r3, 176(%r15)
|
||||
; jg label5
|
||||
; block5:
|
||||
|
||||
Reference in New Issue
Block a user