attempt to make register allocation deterministic
This commit is contained in:
@@ -3,16 +3,16 @@
|
||||
|
||||
// func Sum(xs []uint64) uint64
|
||||
TEXT ·Sum(SB),0,$0-32
|
||||
MOVQ xs_base(FP), DX
|
||||
MOVQ xs_len+8(FP), AX
|
||||
XORQ CX, CX
|
||||
MOVQ xs_base(FP), AX
|
||||
MOVQ xs_len+8(FP), CX
|
||||
XORQ DX, DX
|
||||
loop:
|
||||
CMPQ AX, $0x0
|
||||
CMPQ CX, $0x0
|
||||
JE done
|
||||
ADDQ (DX), CX
|
||||
ADDQ $0x8, DX
|
||||
DECQ AX
|
||||
ADDQ (AX), DX
|
||||
ADDQ $0x8, AX
|
||||
DECQ CX
|
||||
JMP loop
|
||||
done:
|
||||
MOVQ CX, ret+24(FP)
|
||||
MOVQ DX, ret+24(FP)
|
||||
RET
|
||||
|
||||
@@ -111,7 +111,7 @@ func (a *Allocator) mostrestricted() reg.Virtual {
|
||||
n := int(math.MaxInt32)
|
||||
var v reg.Virtual
|
||||
for r, p := range a.possible {
|
||||
if len(p) < n {
|
||||
if len(p) < n || (len(p) == n && v != nil && r.VirtualID() < v.VirtualID()) {
|
||||
n = len(p)
|
||||
v = r
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user