mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: add support for arm64 bit-test instructions
Add support for generating TBZ/TBNZ instructions. The bit-test-and-branch pattern shows up in a number of important places, including the runtime (gc bitmaps). Before this change, there were 3 TB[N]?Z instructions in the Go tool, all of which were in hand-written assembly. After this change, there are 285. Also, the go1 benchmark binary gets about 4.5kB smaller. Fixes #21361 Change-Id: I170c138b852754b9b8df149966ca5e62e6dfa771 Reviewed-on: https://go-review.googlesource.com/54470 Run-TryBot: Philip Hofer <phofer@umich.edu> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
583a941d4e
commit
c59b495963
15 changed files with 743 additions and 50 deletions
|
|
@ -26475,6 +26475,7 @@ func rewriteBlockgeneric(b *Block) bool {
|
|||
cond := v.Args[0]
|
||||
b.Kind = BlockIf
|
||||
b.SetControl(cond)
|
||||
b.Aux = nil
|
||||
b.swapSuccessors()
|
||||
return true
|
||||
}
|
||||
|
|
@ -26492,6 +26493,7 @@ func rewriteBlockgeneric(b *Block) bool {
|
|||
}
|
||||
b.Kind = BlockFirst
|
||||
b.SetControl(nil)
|
||||
b.Aux = nil
|
||||
return true
|
||||
}
|
||||
// match: (If (ConstBool [c]) yes no)
|
||||
|
|
@ -26508,6 +26510,7 @@ func rewriteBlockgeneric(b *Block) bool {
|
|||
}
|
||||
b.Kind = BlockFirst
|
||||
b.SetControl(nil)
|
||||
b.Aux = nil
|
||||
b.swapSuccessors()
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue