[PATCH] D134433: [AMDGPU][GISel] Enable Matching of V2S16 G_BUILD_VECTOR
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 26 07:21:39 PDT 2022
arsenm added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp:632-633
const RegisterBank *DstBank = RBI.getRegBank(Dst, *MRI, TRI);
- if (DstBank->getID() != AMDGPU::SGPRRegBankID)
- return false;
-
- Register Src0 = MI.getOperand(1).getReg();
- Register Src1 = MI.getOperand(2).getReg();
- if (MRI->getType(Src0) != S32)
- return false;
+ assert(DstBank->getID() == AMDGPU::SGPRRegBankID ||
+ DstBank->getID() == AMDGPU::VGPRRegBankID);
+ const bool IsVector = DstBank->getID() == AMDGPU::VGPRRegBankID;
----------------
We don't want to die on AGPR vectors. Should return false if not handling them for now
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp:639-641
+ // First, before trying TableGen patterns, check if both sources are
+ // constants. In those cases, we can trivially compute the final constant
+ // and emit a simple move.
----------------
We could technically do this in tablegen. Not sure why this was manual in the DAG path
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp:684
+ // TODO: Can be improved?
+ if (IsVector) {
+ Register TmpReg = MRI->createVirtualRegister(&AMDGPU::VGPR_32RegClass);
----------------
D134463 switches to using v_perm_b32 here. Most everything in this function should be handled by tablegen though
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134433/new/
https://reviews.llvm.org/D134433
More information about the llvm-commits
mailing list