Skip to content

Commit 06e791c

Browse files
HeliC829gopherbot
authored andcommitted
cmd/compile: simplify zerorange on mips
Change-Id: I9feffa3906f1e1e9fd54f24113130322411cc9d4 Reviewed-on: https://go-review.googlesource.com/c/go/+/701155 Auto-Submit: Keith Randall <[email protected]> Reviewed-by: Mark Freeman <[email protected]> Reviewed-by: Keith Randall <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Keith Randall <[email protected]>
1 parent cf42b78 commit 06e791c

File tree

1 file changed

+7
-27
lines changed
  • src/cmd/compile/internal/mips

1 file changed

+7
-27
lines changed

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

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,41 +5,21 @@
55
package mips
66

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

15-
// TODO(mips): implement DUFFZERO
1614
func zerorange(pp *objw.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog {
17-
18-
if cnt == 0 {
19-
return p
15+
if cnt%int64(types.PtrSize) != 0 {
16+
panic("zeroed region not aligned")
2017
}
21-
if cnt < int64(4*types.PtrSize) {
22-
for i := int64(0); i < cnt; i += int64(types.PtrSize) {
23-
p = pp.Append(p, mips.AMOVW, obj.TYPE_REG, mips.REGZERO, 0, obj.TYPE_MEM, mips.REGSP, base.Ctxt.Arch.FixedFrameSize+off+i)
24-
}
25-
} else {
26-
//fmt.Printf("zerorange frame:%v, lo: %v, hi:%v \n", frame ,lo, hi)
27-
// ADD $(FIXED_FRAME+frame+lo-4), SP, r1
28-
// ADD $cnt, r1, r2
29-
// loop:
30-
// MOVW R0, (Widthptr)r1
31-
// ADD $Widthptr, r1
32-
// BNE r1, r2, loop
33-
p = pp.Append(p, mips.AADD, obj.TYPE_CONST, 0, base.Ctxt.Arch.FixedFrameSize+off-4, obj.TYPE_REG, mips.REGRT1, 0)
34-
p.Reg = mips.REGSP
35-
p = pp.Append(p, mips.AADD, obj.TYPE_CONST, 0, cnt, obj.TYPE_REG, mips.REGRT2, 0)
36-
p.Reg = mips.REGRT1
37-
p = pp.Append(p, mips.AMOVW, obj.TYPE_REG, mips.REGZERO, 0, obj.TYPE_MEM, mips.REGRT1, int64(types.PtrSize))
38-
p1 := p
39-
p = pp.Append(p, mips.AADD, obj.TYPE_CONST, 0, int64(types.PtrSize), obj.TYPE_REG, mips.REGRT1, 0)
40-
p = pp.Append(p, mips.ABNE, obj.TYPE_REG, mips.REGRT1, 0, obj.TYPE_BRANCH, 0, 0)
41-
p.Reg = mips.REGRT2
42-
p.To.SetTarget(p1)
18+
19+
for cnt != 0 {
20+
p = pp.Append(p, mips.AMOVW, obj.TYPE_REG, mips.REGZERO, 0, obj.TYPE_MEM, mips.REGSP, off)
21+
cnt -= int64(types.PtrSize)
22+
off += int64(types.PtrSize)
4323
}
4424

4525
return p

0 commit comments

Comments
 (0)