You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
go version devel +570a2b0 Thu Mar 24 14:15:17 2016 +0000 linux/ppc64le
What operating system and processor architecture are you using (go env)?
linux ppc64le
What did you do?
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.
In looking at gc generated code, I have seen many examples where there are several extra shift instructions, shifting the same registers back and forth unnecessarily.
What did you expect to see?
Only the shifts needed to perform the operation.
What did you see instead?
Multiple extra unnecessary shift instructions.
Here is an example from the compile of runtime.scanobject. This one has more shifts than I usually see, probably because of what the bits() function is doing.
/home/boger/golang/plain/go/src/runtime/mgcmark.go:997
}
// During checkmarking, 1-word objects store the checkmark
// in the type bit for the one word. The only one-word objects
// are pointers, or else they'd be merged with other non-pointer
// data into larger allocations.
bits := hbits.bits()
.........
Please answer these questions before submitting your issue. Thanks!
go version
)?go version devel +570a2b0 Thu Mar 24 14:15:17 2016 +0000 linux/ppc64le
go env
)?linux ppc64le
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.
In looking at gc generated code, I have seen many examples where there are several extra shift instructions, shifting the same registers back and forth unnecessarily.
Only the shifts needed to perform the operation.
Multiple extra unnecessary shift instructions.
Here is an example from the compile of runtime.scanobject. This one has more shifts than I usually see, probably because of what the bits() function is doing.
/home/boger/golang/plain/go/src/runtime/mgcmark.go:997
}
// During checkmarking, 1-word objects store the checkmark
// in the type bit for the one word. The only one-word objects
// are pointers, or else they'd be merged with other non-pointer
// data into larger allocations.
bits := hbits.bits()
.........
2f32c: 28 00 64 78 rldic r4,r3,0,32
2f330: 28 00 82 78 rldic r2,r4,0,32
2f334: 28 00 43 78 rldic r3,r2,0,32
2f338: 28 00 62 78 rldic r2,r3,0,32
2f33c: 28 00 44 78 rldic r4,r2,0,32
The text was updated successfully, but these errors were encountered: