]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: deadcode for LoweredMuluhilo on riscv64
authorWayne Zuo <wdvxdr@golangcn.org>
Wed, 24 Aug 2022 14:17:51 +0000 (22:17 +0800)
committerGopher Robot <gobot@golang.org>
Wed, 24 Aug 2022 18:08:33 +0000 (18:08 +0000)
commitb60432df143475b575a9da1f2a179ac35c399ed0
treeb17da6ffe91707d6486b2694ff2329c614ed2b95
parentcfae70ccb141ffc3c087bc0b5f927acbdb934c6f
cmd/compile: deadcode for LoweredMuluhilo on riscv64

This is a follow up of CL 425101 on RISCV64.

According to RISCV Volume 1, Unprivileged Spec v. 20191213 Chapter 7.1:
If both the high and low bits of the same product are required, then the
recommended code sequence is: MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2
(source register specifiers must be in same order and rdh cannot be the
same as rs1 or rs2). Microarchitectures can then fuse these into a single
multiply operation instead of performing two separate multiplies.

So we should not split Muluhilo to separate instructions.

Updates #54607

Change-Id: If47461f3aaaf00e27cd583a9990e144fb8bcdb17
Reviewed-on: https://go-review.googlesource.com/c/go/+/425203
Auto-Submit: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/compile/internal/ssa/gen/RISCV64.rules
src/cmd/compile/internal/ssa/rewriteRISCV64.go
test/codegen/mathbits.go