[PATCH] D136236: [AMDGPU][GISel] Allow VReg srcs in (build_vector undef, i16) pattern

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 19 11:45:32 PDT 2022


foad added inline comments.


================
Comment at: llvm/lib/Target/AMDGPU/SIInstructions.td:2740-2741
 def : GCNPat <
-  (v2i16 (DivergentBinFrag<build_vector> (i16 undef), (i16 SReg_32:$src1))),
+  (v2i16 (DivergentBinFrag<build_vector> (i16 undef), (i16 VS_32:$src1))),
   (v2i16 (V_LSHLREV_B32_e64 (i32 16), SReg_32:$src1))
 >;
----------------
arsenm wrote:
> foad wrote:
> > Why does this pattern use SReg_32? That doesn't make any sense to me.
> The output should change to match.
> 
> It makes sense for the old DAG select everything to scalar and hack up to vector later approach 
Well I still don't get why it ever made sense. I know we used to select SALU instructions by default, but this is a VALU instruction with an SGPR operand. I thought we always used VGPR operands by default for VALU instructions, to avoid having to think about constant bus restrictions until SIFoldOperands.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136236/new/

https://reviews.llvm.org/D136236



More information about the llvm-commits mailing list