diff options
| author | Jorropo <jorropo.pgm@gmail.com> | 2025-10-27 13:05:41 +0100 |
|---|---|---|
| committer | Jorropo <jorropo.pgm@gmail.com> | 2025-10-27 23:24:54 -0700 |
| commit | 73d7635fae502f63a3774e1265f739bff8778113 (patch) | |
| tree | b2344011061d52a6ba5313ec4a2ae43f7ce2caa8 /test/codegen | |
| parent | 1662d552474f9811589b9abfc02d923b3b94d787 (diff) | |
| download | go-73d7635fae502f63a3774e1265f739bff8778113.tar.xz | |
cmd/compile: add generic rules to remove bool → int → bool roundtrips
Change-Id: I8b0a3b64c89fe167d304f901a5d38470f35400ab
Reviewed-on: https://go-review.googlesource.com/c/go/+/715200
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Jorropo <jorropo.pgm@gmail.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'test/codegen')
| -rw-r--r-- | test/codegen/condmove.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/codegen/condmove.go b/test/codegen/condmove.go index 97be0ced75..6d3a46b03c 100644 --- a/test/codegen/condmove.go +++ b/test/codegen/condmove.go @@ -507,3 +507,23 @@ func cmovmathhalveu(a uint, b bool) uint { // wasm:"I64ShrU", -"Select" return a } + +func branchlessBoolToUint8(b bool) (r uint8) { + if b { + r = 1 + } + return +} + +func cmovFromMulFromFlags64(x uint64, b bool) uint64 { + // amd64:-"MOVB.ZX" + r := uint64(branchlessBoolToUint8(b)) + // amd64:"CMOV",-"MOVB.ZX",-"MUL" + return x * r +} +func cmovFromMulFromFlags64sext(x int64, b bool) int64 { + // amd64:-"MOVB.ZX" + r := int64(int8(branchlessBoolToUint8(b))) + // amd64:"CMOV",-"MOVB.ZX",-"MUL" + return x * r +} |
