]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: absorb NEG into branch when possible on riscv64
authorJoel Sing <joel@sing.id.au>
Tue, 17 Aug 2021 09:09:33 +0000 (19:09 +1000)
committerJoel Sing <joel@sing.id.au>
Sat, 21 Aug 2021 11:23:14 +0000 (11:23 +0000)
commit8fff20ffebadfea2c5c3dd58f7007246f3408495
tree739f18cf244cbcd00e50d5aa8849e3be73117b89
parentbcd146d398da2a873bb3f5a6e026c70b411a4486
cmd/compile: absorb NEG into branch when possible on riscv64

We can end up with this situation due to our equality tests being based on
'SEQZ (SUB x y)' - if x is a zero valued constant, 'SUB x y' can be converted
to 'NEG x'. When used with a branch the SEQZ can be absorbed, leading to
'BNEZ (NEG x)' where the NEG is redundant.

Removes around 1700 instructions from the go binary on riscv64.

Change-Id: I947a080d8bf7d2d6378ab114172e2342ce2c51db
Reviewed-on: https://go-review.googlesource.com/c/go/+/342850
Trust: Joel Sing <joel@sing.id.au>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
src/cmd/compile/internal/ssa/gen/RISCV64.rules
src/cmd/compile/internal/ssa/rewriteRISCV64.go