mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/internal/obj/loong64: simplify buildop
The length of array optab is readily available, remove the sentinel and sentinel scan, like arm64. Change-Id: Iceeed22587ce2beeedeb5babdde3474e75d70f89 Reviewed-on: https://go-review.googlesource.com/c/go/+/699095 Reviewed-by: abner chenc <chenguoqi@loongson.cn> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Meidan Li <limeidan@loongson.cn>
This commit is contained in:
parent
765905e3bd
commit
6b837a64db
1 changed files with 16 additions and 22 deletions
|
|
@ -438,8 +438,6 @@ var optab = []Optab{
|
||||||
{obj.ANOP, C_FREG, C_NONE, C_NONE, C_NONE, C_NONE, 0, 0, 0, 0},
|
{obj.ANOP, C_FREG, C_NONE, C_NONE, C_NONE, C_NONE, 0, 0, 0, 0},
|
||||||
{obj.ADUFFZERO, C_NONE, C_NONE, C_NONE, C_BRAN, C_NONE, 11, 4, 0, 0}, // same as AJMP
|
{obj.ADUFFZERO, C_NONE, C_NONE, C_NONE, C_BRAN, C_NONE, 11, 4, 0, 0}, // same as AJMP
|
||||||
{obj.ADUFFCOPY, C_NONE, C_NONE, C_NONE, C_BRAN, C_NONE, 11, 4, 0, 0}, // same as AJMP
|
{obj.ADUFFCOPY, C_NONE, C_NONE, C_NONE, C_BRAN, C_NONE, 11, 4, 0, 0}, // same as AJMP
|
||||||
|
|
||||||
{obj.AXXX, C_NONE, C_NONE, C_NONE, C_NONE, C_NONE, 0, 4, 0, 0},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var atomicInst = map[obj.As]uint32{
|
var atomicInst = map[obj.As]uint32{
|
||||||
|
|
@ -1303,31 +1301,27 @@ func buildop(ctxt *obj.Link) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var n int
|
for i := range C_NCLASS {
|
||||||
|
for j := range C_NCLASS {
|
||||||
for i := 0; i < C_NCLASS; i++ {
|
if cmp(j, i) {
|
||||||
for n = 0; n < C_NCLASS; n++ {
|
xcmp[i][j] = true
|
||||||
if cmp(n, i) {
|
|
||||||
xcmp[i][n] = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for n = 0; optab[n].as != obj.AXXX; n++ {
|
|
||||||
}
|
|
||||||
slices.SortFunc(optab[:n], ocmp)
|
|
||||||
for i := 0; i < n; i++ {
|
|
||||||
r := optab[i].as
|
|
||||||
r0 := r & obj.AMask
|
|
||||||
start := i
|
|
||||||
for optab[i].as == r {
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
oprange[r0] = optab[start:i]
|
|
||||||
i--
|
|
||||||
|
|
||||||
switch r {
|
slices.SortFunc(optab, ocmp)
|
||||||
|
for i := 0; i < len(optab); i++ {
|
||||||
|
as, start := optab[i].as, i
|
||||||
|
for ; i < len(optab)-1; i++ {
|
||||||
|
if optab[i+1].as != as {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r0 := as & obj.AMask
|
||||||
|
oprange[r0] = optab[start : i+1]
|
||||||
|
switch as {
|
||||||
default:
|
default:
|
||||||
ctxt.Diag("unknown op in build: %v", r)
|
ctxt.Diag("unknown op in build: %v", as)
|
||||||
ctxt.DiagFlush()
|
ctxt.DiagFlush()
|
||||||
log.Fatalf("bad code")
|
log.Fatalf("bad code")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue