Go version
master
Output of go env
in your module/workspace:
GOARCH=ppc64le
What did you do?
Adding the following codegen test to bitRotateAndMask
:
// ppc64x: "MOVWZ", "RLWNM\t[$]1, R[0-9]*, [$]28, [$]3, R"
io64[3] = uint64(bits.RotateLeft32(io32[0],1) & 0xF000000F)
What did you see happen?
The MOVWZ is missing.
What did you expect to see?
The MOVWZ opcode should be present for certain usages of RLWINM to ensure the upper 32 bits are cleared when the value is expected to be zero-extended.
Comment From: gopherbot
Change https://go.dev/cl/590896 mentions this issue: cmd/compile/ssa: fix (MOVWZreg (RLWINM)) lowering on PPC64
Comment From: gopherbot
Change https://go.dev/cl/590896 mentions this issue: cmd/compile/ssa: fix (MOVWZreg (RLWINM)) folding on PPC64
Comment From: randall77
Do we need this fix backported?
Comment From: pmur
No, I added this rule in 1.23.