Skip to content

Commit 7b5de0a

Browse files
s-barannikovgithub-actions[bot]
authored andcommitted
Automerge: [AMDGPU] TableGen-erate SDNode descriptions (#168248)
This allows SDNodes to be validated against their expected type profiles and reduces the number of changes required to add a new node. Autogenerated node names start with "AMDGPUISD::", hence the changes in the tests. The few nodes defined in R600.td are *not* imported because TableGen processes AMDGPU.td that doesn't include R600.td. Ideally, we would have two sets of nodes, but that would require careful reorganization of td files since some nodes are shared between AMDGPU/R600. Not sure if it something worth looking into. Some nodes fail validation, those are listed in `AMDGPUSelectionDAGInfo::verifyTargetNode()`. Part of #119709. Pull Request: llvm/llvm-project#168248
2 parents 30fc4bd + 900c517 commit 7b5de0a

13 files changed

+135
-413
lines changed

llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUISELDAGTODAG_H
1515
#define LLVM_LIB_TARGET_AMDGPU_AMDGPUISELDAGTODAG_H
1616

17+
#include "AMDGPUSelectionDAGInfo.h"
1718
#include "GCNSubtarget.h"
1819
#include "SIMachineFunctionInfo.h"
1920
#include "SIModeRegisterDefaults.h"

llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

Lines changed: 1 addition & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "AMDGPUInstrInfo.h"
1818
#include "AMDGPUMachineFunction.h"
1919
#include "AMDGPUMemoryUtils.h"
20+
#include "AMDGPUSelectionDAGInfo.h"
2021
#include "SIMachineFunctionInfo.h"
2122
#include "llvm/CodeGen/Analysis.h"
2223
#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"
@@ -5650,169 +5651,6 @@ uint32_t AMDGPUTargetLowering::getImplicitParameterOffset(
56505651
return getImplicitParameterOffset(MFI->getExplicitKernArgSize(), Param);
56515652
}
56525653

5653-
#define NODE_NAME_CASE(node) case AMDGPUISD::node: return #node;
5654-
5655-
const char* AMDGPUTargetLowering::getTargetNodeName(unsigned Opcode) const {
5656-
switch ((AMDGPUISD::NodeType)Opcode) {
5657-
case AMDGPUISD::FIRST_NUMBER: break;
5658-
// AMDIL DAG nodes
5659-
NODE_NAME_CASE(BRANCH_COND);
5660-
5661-
// AMDGPU DAG nodes
5662-
NODE_NAME_CASE(IF)
5663-
NODE_NAME_CASE(ELSE)
5664-
NODE_NAME_CASE(LOOP)
5665-
NODE_NAME_CASE(CALL)
5666-
NODE_NAME_CASE(TC_RETURN)
5667-
NODE_NAME_CASE(TC_RETURN_GFX)
5668-
NODE_NAME_CASE(TC_RETURN_GFX_WholeWave)
5669-
NODE_NAME_CASE(TC_RETURN_CHAIN)
5670-
NODE_NAME_CASE(TC_RETURN_CHAIN_DVGPR)
5671-
NODE_NAME_CASE(TRAP)
5672-
NODE_NAME_CASE(RET_GLUE)
5673-
NODE_NAME_CASE(WAVE_ADDRESS)
5674-
NODE_NAME_CASE(RETURN_TO_EPILOG)
5675-
NODE_NAME_CASE(ENDPGM)
5676-
NODE_NAME_CASE(ENDPGM_TRAP)
5677-
NODE_NAME_CASE(SIMULATED_TRAP)
5678-
NODE_NAME_CASE(DWORDADDR)
5679-
NODE_NAME_CASE(FRACT)
5680-
NODE_NAME_CASE(SETCC)
5681-
NODE_NAME_CASE(DENORM_MODE)
5682-
NODE_NAME_CASE(FMA_W_CHAIN)
5683-
NODE_NAME_CASE(FMUL_W_CHAIN)
5684-
NODE_NAME_CASE(CLAMP)
5685-
NODE_NAME_CASE(COS_HW)
5686-
NODE_NAME_CASE(SIN_HW)
5687-
NODE_NAME_CASE(FMAX_LEGACY)
5688-
NODE_NAME_CASE(FMIN_LEGACY)
5689-
NODE_NAME_CASE(FMAX3)
5690-
NODE_NAME_CASE(SMAX3)
5691-
NODE_NAME_CASE(UMAX3)
5692-
NODE_NAME_CASE(FMIN3)
5693-
NODE_NAME_CASE(SMIN3)
5694-
NODE_NAME_CASE(UMIN3)
5695-
NODE_NAME_CASE(FMED3)
5696-
NODE_NAME_CASE(SMED3)
5697-
NODE_NAME_CASE(UMED3)
5698-
NODE_NAME_CASE(FMAXIMUM3)
5699-
NODE_NAME_CASE(FMINIMUM3)
5700-
NODE_NAME_CASE(FDOT2)
5701-
NODE_NAME_CASE(URECIP)
5702-
NODE_NAME_CASE(DIV_SCALE)
5703-
NODE_NAME_CASE(DIV_FMAS)
5704-
NODE_NAME_CASE(DIV_FIXUP)
5705-
NODE_NAME_CASE(FMAD_FTZ)
5706-
NODE_NAME_CASE(RCP)
5707-
NODE_NAME_CASE(RSQ)
5708-
NODE_NAME_CASE(RCP_LEGACY)
5709-
NODE_NAME_CASE(RCP_IFLAG)
5710-
NODE_NAME_CASE(LOG)
5711-
NODE_NAME_CASE(EXP)
5712-
NODE_NAME_CASE(FMUL_LEGACY)
5713-
NODE_NAME_CASE(RSQ_CLAMP)
5714-
NODE_NAME_CASE(FP_CLASS)
5715-
NODE_NAME_CASE(DOT4)
5716-
NODE_NAME_CASE(CARRY)
5717-
NODE_NAME_CASE(BORROW)
5718-
NODE_NAME_CASE(BFE_U32)
5719-
NODE_NAME_CASE(BFE_I32)
5720-
NODE_NAME_CASE(BFI)
5721-
NODE_NAME_CASE(BFM)
5722-
NODE_NAME_CASE(FFBH_U32)
5723-
NODE_NAME_CASE(FFBH_I32)
5724-
NODE_NAME_CASE(FFBL_B32)
5725-
NODE_NAME_CASE(MUL_U24)
5726-
NODE_NAME_CASE(MUL_I24)
5727-
NODE_NAME_CASE(MULHI_U24)
5728-
NODE_NAME_CASE(MULHI_I24)
5729-
NODE_NAME_CASE(MAD_U24)
5730-
NODE_NAME_CASE(MAD_I24)
5731-
NODE_NAME_CASE(MAD_I64_I32)
5732-
NODE_NAME_CASE(MAD_U64_U32)
5733-
NODE_NAME_CASE(PERM)
5734-
NODE_NAME_CASE(TEXTURE_FETCH)
5735-
NODE_NAME_CASE(R600_EXPORT)
5736-
NODE_NAME_CASE(CONST_ADDRESS)
5737-
NODE_NAME_CASE(REGISTER_LOAD)
5738-
NODE_NAME_CASE(REGISTER_STORE)
5739-
NODE_NAME_CASE(CVT_F32_UBYTE0)
5740-
NODE_NAME_CASE(CVT_F32_UBYTE1)
5741-
NODE_NAME_CASE(CVT_F32_UBYTE2)
5742-
NODE_NAME_CASE(CVT_F32_UBYTE3)
5743-
NODE_NAME_CASE(CVT_PKRTZ_F16_F32)
5744-
NODE_NAME_CASE(CVT_PKNORM_I16_F32)
5745-
NODE_NAME_CASE(CVT_PKNORM_U16_F32)
5746-
NODE_NAME_CASE(CVT_PK_I16_I32)
5747-
NODE_NAME_CASE(CVT_PK_U16_U32)
5748-
NODE_NAME_CASE(FP_TO_FP16)
5749-
NODE_NAME_CASE(BUILD_VERTICAL_VECTOR)
5750-
NODE_NAME_CASE(CONST_DATA_PTR)
5751-
NODE_NAME_CASE(PC_ADD_REL_OFFSET)
5752-
NODE_NAME_CASE(PC_ADD_REL_OFFSET64)
5753-
NODE_NAME_CASE(LDS)
5754-
NODE_NAME_CASE(DUMMY_CHAIN)
5755-
NODE_NAME_CASE(LOAD_D16_HI)
5756-
NODE_NAME_CASE(LOAD_D16_LO)
5757-
NODE_NAME_CASE(LOAD_D16_HI_I8)
5758-
NODE_NAME_CASE(LOAD_D16_HI_U8)
5759-
NODE_NAME_CASE(LOAD_D16_LO_I8)
5760-
NODE_NAME_CASE(LOAD_D16_LO_U8)
5761-
NODE_NAME_CASE(STORE_MSKOR)
5762-
NODE_NAME_CASE(TBUFFER_STORE_FORMAT)
5763-
NODE_NAME_CASE(TBUFFER_STORE_FORMAT_D16)
5764-
NODE_NAME_CASE(TBUFFER_LOAD_FORMAT)
5765-
NODE_NAME_CASE(TBUFFER_LOAD_FORMAT_D16)
5766-
NODE_NAME_CASE(DS_ORDERED_COUNT)
5767-
NODE_NAME_CASE(ATOMIC_CMP_SWAP)
5768-
NODE_NAME_CASE(BUFFER_LOAD)
5769-
NODE_NAME_CASE(BUFFER_LOAD_UBYTE)
5770-
NODE_NAME_CASE(BUFFER_LOAD_USHORT)
5771-
NODE_NAME_CASE(BUFFER_LOAD_BYTE)
5772-
NODE_NAME_CASE(BUFFER_LOAD_SHORT)
5773-
NODE_NAME_CASE(BUFFER_LOAD_TFE)
5774-
NODE_NAME_CASE(BUFFER_LOAD_UBYTE_TFE)
5775-
NODE_NAME_CASE(BUFFER_LOAD_USHORT_TFE)
5776-
NODE_NAME_CASE(BUFFER_LOAD_BYTE_TFE)
5777-
NODE_NAME_CASE(BUFFER_LOAD_SHORT_TFE)
5778-
NODE_NAME_CASE(BUFFER_LOAD_FORMAT)
5779-
NODE_NAME_CASE(BUFFER_LOAD_FORMAT_TFE)
5780-
NODE_NAME_CASE(BUFFER_LOAD_FORMAT_D16)
5781-
NODE_NAME_CASE(SBUFFER_LOAD)
5782-
NODE_NAME_CASE(SBUFFER_LOAD_BYTE)
5783-
NODE_NAME_CASE(SBUFFER_LOAD_UBYTE)
5784-
NODE_NAME_CASE(SBUFFER_LOAD_SHORT)
5785-
NODE_NAME_CASE(SBUFFER_LOAD_USHORT)
5786-
NODE_NAME_CASE(SBUFFER_PREFETCH_DATA)
5787-
NODE_NAME_CASE(BUFFER_STORE)
5788-
NODE_NAME_CASE(BUFFER_STORE_BYTE)
5789-
NODE_NAME_CASE(BUFFER_STORE_SHORT)
5790-
NODE_NAME_CASE(BUFFER_STORE_FORMAT)
5791-
NODE_NAME_CASE(BUFFER_STORE_FORMAT_D16)
5792-
NODE_NAME_CASE(BUFFER_ATOMIC_SWAP)
5793-
NODE_NAME_CASE(BUFFER_ATOMIC_ADD)
5794-
NODE_NAME_CASE(BUFFER_ATOMIC_SUB)
5795-
NODE_NAME_CASE(BUFFER_ATOMIC_SMIN)
5796-
NODE_NAME_CASE(BUFFER_ATOMIC_UMIN)
5797-
NODE_NAME_CASE(BUFFER_ATOMIC_SMAX)
5798-
NODE_NAME_CASE(BUFFER_ATOMIC_UMAX)
5799-
NODE_NAME_CASE(BUFFER_ATOMIC_AND)
5800-
NODE_NAME_CASE(BUFFER_ATOMIC_OR)
5801-
NODE_NAME_CASE(BUFFER_ATOMIC_XOR)
5802-
NODE_NAME_CASE(BUFFER_ATOMIC_INC)
5803-
NODE_NAME_CASE(BUFFER_ATOMIC_DEC)
5804-
NODE_NAME_CASE(BUFFER_ATOMIC_CMPSWAP)
5805-
NODE_NAME_CASE(BUFFER_ATOMIC_CSUB)
5806-
NODE_NAME_CASE(BUFFER_ATOMIC_FADD)
5807-
NODE_NAME_CASE(BUFFER_ATOMIC_FMIN)
5808-
NODE_NAME_CASE(BUFFER_ATOMIC_FMAX)
5809-
NODE_NAME_CASE(BUFFER_ATOMIC_COND_SUB_U32)
5810-
NODE_NAME_CASE(WHOLE_WAVE_SETUP)
5811-
NODE_NAME_CASE(WHOLE_WAVE_RETURN)
5812-
}
5813-
return nullptr;
5814-
}
5815-
58165654
SDValue AMDGPUTargetLowering::getSqrtEstimate(SDValue Operand,
58175655
SelectionDAG &DAG, int Enabled,
58185656
int &RefinementSteps,

0 commit comments

Comments
 (0)