Skip to content

Commit 6447ff4

Browse files
sophie-zhaogopherbot
authored andcommitted
cmd/compile: fold constant in ADDshift op on loong64
Removes 918 instructions from the go binary on loong64. file before after Δ go 1633120 1632948 -172 gofmt 323470 323334 -136 asm 568024 568024 -0 cgo 488030 487890 -140 compile 2501050 2500728 -322 cover 530124 530124 -0 link 723532 723520 -12 preprofile 240568 240568 -0 vet 819392 819256 -136 Change-Id: Id4015c66b2073323b7ad257b3ed05bb99f81e9a1 Reviewed-on: https://go-review.googlesource.com/c/go/+/701655 LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Keith Randall <[email protected]> Reviewed-by: Keith Randall <[email protected]> Auto-Submit: Keith Randall <[email protected]> Reviewed-by: Mark Freeman <[email protected]>
1 parent 5b21846 commit 6447ff4

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/cmd/compile/internal/ssa/_gen/LOONG64.rules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,9 @@
730730

731731
(ADDV x0 x1:(SLLVconst [c] y)) && x1.Uses == 1 && c > 0 && c <= 4 => (ADDshiftLLV x0 y [c])
732732

733+
// fold constant in ADDshift op
734+
(ADDshiftLLV x (MOVVconst [c]) [d]) && is12Bit(c<<d) => (ADDVconst x [c<<d])
735+
733736
// div by constant
734737
(DIVVU x (MOVVconst [1])) => x
735738
(DIVVU x (MOVVconst [c])) && isPowerOfTwo(c) => (SRLVconst [log64(c)] x)

src/cmd/compile/internal/ssa/rewriteLOONG64.go

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)