]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix the error of absorbing boolean tests into block(FGE, FGT)
authorfanzha02 <fannie.zhang@arm.com>
Sun, 5 May 2019 03:35:37 +0000 (03:35 +0000)
committerCherry Zhang <cherryyz@google.com>
Thu, 16 May 2019 13:46:25 +0000 (13:46 +0000)
commit822a9f537fb49f56d405f265fa4d1d3e9ddc0531
tree759993949b1a6b83d0829ec6f08d84834c29a8ca
parent12279faa727696a78d849be8a16c470a344b24a8
cmd/compile: fix the error of absorbing boolean tests into block(FGE, FGT)

The CL 164718 mistyped the comparison flags. The rules for floating
point comparison should be GreaterThanF and GreaterEqualF. Fortunately,
the wrong optimizations were overwritten by other integer rules, so the
issue won't cause failure but just some performance impact.

The fixed CL optimizes the floating point test as follows.

source code: func foo(f float64) bool { return f > 4 || f < -4}
previous version: "FCMPD", "CSET\tGT", "CBZ"
fixed version: "FCMPD", BLE"

Add the test case.

Change-Id: Iea954fdbb8272b2d642dae0f816dc77286e6e1fa
Reviewed-on: https://go-review.googlesource.com/c/go/+/177121
Reviewed-by: Ben Shi <powerman1st@163.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Ben Shi <powerman1st@163.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/cmd/compile/internal/ssa/gen/ARM64.rules
src/cmd/compile/internal/ssa/rewriteARM64.go
test/codegen/floats.go