Skip to content

Commit bb48272

Browse files
HeliC829gopherbot
authored andcommitted
cmd/compile: simplify zerorange on mips64
Change-Id: I488b55a21eaaf74373c2789a34bf9b3945ced072 Reviewed-on: https://go-review.googlesource.com/c/go/+/700936 Reviewed-by: Michael Pratt <[email protected]> Reviewed-by: Keith Randall <[email protected]> Reviewed-by: Keith Randall <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Auto-Submit: Keith Randall <[email protected]>
1 parent d52a56c commit bb48272

File tree

1 file changed

+7
-31
lines changed
  • src/cmd/compile/internal/mips64

1 file changed

+7
-31
lines changed

src/cmd/compile/internal/mips64/ggen.go

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,21 @@
55
package mips64
66

77
import (
8-
"cmd/compile/internal/ir"
98
"cmd/compile/internal/objw"
109
"cmd/compile/internal/types"
1110
"cmd/internal/obj"
1211
"cmd/internal/obj/mips"
1312
)
1413

1514
func zerorange(pp *objw.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
16-
if cnt == 0 {
17-
return p
15+
if cnt%int64(types.PtrSize) != 0 {
16+
panic("zeroed region not aligned")
1817
}
19-
if cnt < int64(4*types.PtrSize) {
20-
for i := int64(0); i < cnt; i += int64(types.PtrSize) {
21-
p = pp.Append(p, mips.AMOVV, obj.TYPE_REG, mips.REGZERO, 0, obj.TYPE_MEM, mips.REGSP, 8+off+i)
22-
}
23-
} else if cnt <= int64(128*types.PtrSize) {
24-
p = pp.Append(p, mips.AADDV, obj.TYPE_CONST, 0, 8+off-8, obj.TYPE_REG, mips.REGRT1, 0)
25-
p.Reg = mips.REGSP
26-
p = pp.Append(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0)
27-
p.To.Name = obj.NAME_EXTERN
28-
p.To.Sym = ir.Syms.Duffzero
29-
p.To.Offset = 8 * (128 - cnt/int64(types.PtrSize))
30-
} else {
31-
// ADDV $(8+frame+lo-8), SP, r1
32-
// ADDV $cnt, r1, r2
33-
// loop:
34-
// MOVV R0, (Widthptr)r1
35-
// ADDV $Widthptr, r1
36-
// BNE r1, r2, loop
37-
p = pp.Append(p, mips.AADDV, obj.TYPE_CONST, 0, 8+off-8, obj.TYPE_REG, mips.REGRT1, 0)
38-
p.Reg = mips.REGSP
39-
p = pp.Append(p, mips.AADDV, obj.TYPE_CONST, 0, cnt, obj.TYPE_REG, mips.REGRT2, 0)
40-
p.Reg = mips.REGRT1
41-
p = pp.Append(p, mips.AMOVV, obj.TYPE_REG, mips.REGZERO, 0, obj.TYPE_MEM, mips.REGRT1, int64(types.PtrSize))
42-
p1 := p
43-
p = pp.Append(p, mips.AADDV, obj.TYPE_CONST, 0, int64(types.PtrSize), obj.TYPE_REG, mips.REGRT1, 0)
44-
p = pp.Append(p, mips.ABNE, obj.TYPE_REG, mips.REGRT1, 0, obj.TYPE_BRANCH, 0, 0)
45-
p.Reg = mips.REGRT2
46-
p.To.SetTarget(p1)
18+
19+
for cnt != 0 {
20+
p = pp.Append(p, mips.AMOVV, obj.TYPE_REG, mips.REGZERO, 0, obj.TYPE_MEM, mips.REGSP, off)
21+
cnt -= int64(types.PtrSize)
22+
off += int64(types.PtrSize)
4723
}
4824

4925
return p

0 commit comments

Comments
 (0)