[llvm-dev] globalisel: cross-bank constant propagation?
Nicolai Hähnle via llvm-dev
llvm-dev at lists.llvm.org
Sat Mar 27 00:57:49 PDT 2021
Hi Jay,
Where does the copy of a constant from SGPR to VGPR come from? Naively, I'd
think that better GMIR would be
%3:sgpr(s32) = G_CONSTANT i32 5
...
%8:vgpr(s64) = G_LSHR %7, %3(s32)
Cheers,
Nicolai
On Fri, Mar 26, 2021 at 3:43 PM Jay Foad via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hi,
>
> While experimenting with alternative ways of lowering funnel shifts on
> AMDGPU I have run into a case where this GMIR:
>
> %0:vgpr(s32) = COPY $vgpr0
> %1:vgpr(s32) = COPY $vgpr1
> %2:sgpr_64 = COPY $sgpr30_sgpr31
> %3:sgpr(s32) = G_CONSTANT i32 5
> %7:vgpr(s64) = G_MERGE_VALUES %1(s32), %0(s32)
> %9:vgpr(s32) = COPY %3(s32)
> %8:vgpr(s64) = G_LSHR %7, %9(s32)
> %4:vgpr(s32) = G_TRUNC %8(s64)
> $vgpr0 = COPY %4(s32)
> %5:ccr_sgpr_64 = COPY %2
> S_SETPC_B64_return %5, implicit $vgpr0
>
> does not get matched by this selection pattern:
>
> def : GCNPat<(i32 (trunc (srl i64:$src0, (i32 ShiftAmt32Imm:$src1)))),
> (V_ALIGNBIT_B32_e64 (i32 (EXTRACT_SUBREG VReg_64:$src0, sub1)),
> (i32 (EXTRACT_SUBREG VReg_64:$src0, sub0)),
> VSrc_b32:$src1)>;
>
> because the COPY of G_CONSTANT 5 from sgpr to vgpr gets in the way of
> matching the (i32 ShiftAmt32Imm:$src1).
>
> What's a good way of fixing this? I know there has been some
> discussion before about whether the generated matcher should look
> through copies, either automatically or only when the tablegen pattern
> is augmented with some kind of "please look through copies here" node.
>
> As an alternative, would it make sense to run some cross-bank constant
> propagation after regbankselect? It seems pretty obvious to me that %9
> above should be simplified to:
>
> %9:vgpr(s32) = G_CONSTANT i32 5
>
> so long as it's legal, which we can easily check, can't we?
>
> Thanks,
> Jay.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
--
Lerne, wie die Welt wirklich ist,
aber vergiss niemals, wie sie sein sollte.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210327/87aa5b94/attachment.html>
More information about the llvm-dev
mailing list