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.