Changeset View
Standalone View
llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h
- This file was added.
//===-- AMDGPUISelDAGToDAG.h - A dag to dag inst selector for AMDGPU ----===// | |||||
// | |||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |||||
// See https://llvm.org/LICENSE.txt for license information. | |||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |||||
// | |||||
//==-----------------------------------------------------------------------===// | |||||
// | |||||
/// \file | |||||
/// Defines an instruction selector for the AMDGPU target. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUISELDAGTODAG_H | |||||
#define LLVM_LIB_TARGET_AMDGPU_AMDGPUISELDAGTODAG_H | |||||
arsenm: What's the point of splitting this out? Nothing outside needs to access this | |||||
New "R600ISelDAGToDAG.cpp" uses class AMDGPUDAGToDAGISel declared below in the header. dfukalov: New "R600ISelDAGToDAG.cpp" uses `class AMDGPUDAGToDAGISel` declared below in the header. | |||||
#include "GCNSubtarget.h" | |||||
#include "SIMachineFunctionInfo.h" | |||||
#include "llvm/CodeGen/SelectionDAGISel.h" | |||||
#include "llvm/Target/TargetMachine.h" | |||||
using namespace llvm; | |||||
namespace { | |||||
static inline bool isNullConstantOrUndef(SDValue V) { | |||||
if (V.isUndef()) | |||||
Not Done ReplyInline ActionsBot is warning you to add inlines arsenm: Bot is warning you to add inlines | |||||
return true; | |||||
ConstantSDNode *Const = dyn_cast<ConstantSDNode>(V); | |||||
return Const != nullptr && Const->isNullValue(); | |||||
} | |||||
static inline bool getConstantValue(SDValue N, uint32_t &Out) { | |||||
// This is only used for packed vectors, where ussing 0 for undef should | |||||
// always be good. | |||||
if (N.isUndef()) { | |||||
Out = 0; | |||||
return true; | |||||
} | |||||
if (const ConstantSDNode *C = dyn_cast<ConstantSDNode>(N)) { | |||||
Out = C->getAPIntValue().getSExtValue(); | |||||
return true; | |||||
} | |||||
if (const ConstantFPSDNode *C = dyn_cast<ConstantFPSDNode>(N)) { | |||||
Out = C->getValueAPF().bitcastToAPInt().getSExtValue(); | |||||
return true; | |||||
} | |||||
return false; | |||||
} | |||||
// TODO: Handle undef as zero | |||||
static inline SDNode *packConstantV2I16(const SDNode *N, SelectionDAG &DAG, | |||||
bool Negate = false) { | |||||
assert(N->getOpcode() == ISD::BUILD_VECTOR && N->getNumOperands() == 2); | |||||
uint32_t LHSVal, RHSVal; | |||||
if (getConstantValue(N->getOperand(0), LHSVal) && | |||||
getConstantValue(N->getOperand(1), RHSVal)) { | |||||
SDLoc SL(N); | |||||
uint32_t K = Negate ? (-LHSVal & 0xffff) | (-RHSVal << 16) | |||||
: (LHSVal & 0xffff) | (RHSVal << 16); | |||||
return DAG.getMachineNode(AMDGPU::S_MOV_B32, SL, N->getValueType(0), | |||||
DAG.getTargetConstant(K, SL, MVT::i32)); | |||||
} | |||||
return nullptr; | |||||
} | |||||
static inline SDNode *packNegConstantV2I16(const SDNode *N, SelectionDAG &DAG) { | |||||
return packConstantV2I16(N, DAG, true); | |||||
FWIW, I would recommend static, or anonymous namespaces rather than inline. jdoerfert: FWIW, I would recommend static, or anonymous namespaces rather than inline. | |||||
} | |||||
} // namespace | |||||
/// AMDGPU specific code to select AMDGPU machine instructions for | |||||
/// SelectionDAG operations. | |||||
class AMDGPUDAGToDAGISel : public SelectionDAGISel { | |||||
// Subtarget - Keep a pointer to the AMDGPU Subtarget around so that we can | |||||
// make the right decision when generating code for different targets. | |||||
const GCNSubtarget *Subtarget; | |||||
// Default FP mode for the current function. | |||||
AMDGPU::SIModeRegisterDefaults Mode; | |||||
bool EnableLateStructurizeCFG; | |||||
// Instructions that will be lowered with a final instruction that zeros the | |||||
// high result bits. | |||||
bool fp16SrcZerosHighBits(unsigned Opc) const; | |||||
public: | |||||
explicit AMDGPUDAGToDAGISel(TargetMachine *TM = nullptr, | |||||
CodeGenOpt::Level OptLevel = CodeGenOpt::Default); | |||||
~AMDGPUDAGToDAGISel() override = default; | |||||
void getAnalysisUsage(AnalysisUsage &AU) const override; | |||||
bool matchLoadD16FromBuildVector(SDNode *N) const; | |||||
bool runOnMachineFunction(MachineFunction &MF) override; | |||||
void PreprocessISelDAG() override; | |||||
void Select(SDNode *N) override; | |||||
StringRef getPassName() const override; | |||||
void PostprocessISelDAG() override; | |||||
protected: | |||||
void SelectBuildVector(SDNode *N, unsigned RegClassID); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectBuildVector' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectBuildVector' [readability… | |||||
private: | |||||
std::pair<SDValue, SDValue> foldFrameIndex(SDValue N) const; | |||||
bool isNoNanSrc(SDValue N) const; | |||||
bool isInlineImmediate(const SDNode *N, bool Negated = false) const; | |||||
bool isNegInlineImmediate(const SDNode *N) const { | |||||
return isInlineImmediate(N, true); | |||||
} | |||||
bool isInlineImmediate16(int64_t Imm) const { | |||||
return AMDGPU::isInlinableLiteral16(Imm, Subtarget->hasInv2PiInlineImm()); | |||||
} | |||||
bool isInlineImmediate32(int64_t Imm) const { | |||||
return AMDGPU::isInlinableLiteral32(Imm, Subtarget->hasInv2PiInlineImm()); | |||||
} | |||||
bool isInlineImmediate64(int64_t Imm) const { | |||||
return AMDGPU::isInlinableLiteral64(Imm, Subtarget->hasInv2PiInlineImm()); | |||||
} | |||||
bool isInlineImmediate(const APFloat &Imm) const { | |||||
return Subtarget->getInstrInfo()->isInlineConstant(Imm); | |||||
} | |||||
bool isVGPRImm(const SDNode *N) const; | |||||
bool isUniformLoad(const SDNode *N) const; | |||||
bool isUniformBr(const SDNode *N) const; | |||||
bool isBaseWithConstantOffset64(SDValue Addr, SDValue &LHS, | |||||
SDValue &RHS) const; | |||||
MachineSDNode *buildSMovImm64(SDLoc &DL, uint64_t Val, EVT VT) const; | |||||
SDNode *glueCopyToOp(SDNode *N, SDValue NewChain, SDValue Glue) const; | |||||
SDNode *glueCopyToM0(SDNode *N, SDValue Val) const; | |||||
SDNode *glueCopyToM0LDSInit(SDNode *N) const; | |||||
const TargetRegisterClass *getOperandRegClass(SDNode *N, unsigned OpNo) const; | |||||
virtual bool SelectADDRVTX_READ(SDValue Addr, SDValue &Base, SDValue &Offset); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectADDRVTX_READ' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectADDRVTX_READ' [readability… | |||||
virtual bool SelectADDRIndirect(SDValue Addr, SDValue &Base, SDValue &Offset); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectADDRIndirect' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectADDRIndirect' [readability… | |||||
bool isDSOffsetLegal(SDValue Base, unsigned Offset) const; | |||||
bool isDSOffset2Legal(SDValue Base, unsigned Offset0, unsigned Offset1, | |||||
unsigned Size) const; | |||||
bool SelectDS1Addr1Offset(SDValue Ptr, SDValue &Base, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDS1Addr1Offset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDS1Addr1Offset' [readability… | |||||
bool SelectDS64Bit4ByteAligned(SDValue Ptr, SDValue &Base, SDValue &Offset0, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDS64Bit4ByteAligned' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDS64Bit4ByteAligned' [readability… | |||||
SDValue &Offset1) const; | |||||
bool SelectDS128Bit8ByteAligned(SDValue Ptr, SDValue &Base, SDValue &Offset0, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDS128Bit8ByteAligned' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDS128Bit8ByteAligned' [readability… | |||||
SDValue &Offset1) const; | |||||
bool SelectDSReadWrite2(SDValue Ptr, SDValue &Base, SDValue &Offset0, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDSReadWrite2' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDSReadWrite2' [readability… | |||||
SDValue &Offset1, unsigned Size) const; | |||||
bool SelectMUBUF(SDValue Addr, SDValue &SRsrc, SDValue &VAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMUBUF' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMUBUF' [readability-identifier… | |||||
SDValue &SOffset, SDValue &Offset, SDValue &Offen, | |||||
SDValue &Idxen, SDValue &Addr64) const; | |||||
bool SelectMUBUFAddr64(SDValue Addr, SDValue &SRsrc, SDValue &VAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMUBUFAddr64' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMUBUFAddr64' [readability… | |||||
SDValue &SOffset, SDValue &Offset) const; | |||||
bool SelectMUBUFScratchOffen(SDNode *Parent, SDValue Addr, SDValue &RSrc, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMUBUFScratchOffen' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMUBUFScratchOffen' [readability… | |||||
SDValue &VAddr, SDValue &SOffset, | |||||
SDValue &ImmOffset) const; | |||||
bool SelectMUBUFScratchOffset(SDNode *Parent, SDValue Addr, SDValue &SRsrc, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMUBUFScratchOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMUBUFScratchOffset' [readability… | |||||
SDValue &Soffset, SDValue &Offset) const; | |||||
bool SelectMUBUFOffset(SDValue Addr, SDValue &SRsrc, SDValue &Soffset, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMUBUFOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMUBUFOffset' [readability… | |||||
SDValue &Offset) const; | |||||
bool SelectFlatOffsetImpl(SDNode *N, SDValue Addr, SDValue &VAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectFlatOffsetImpl' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectFlatOffsetImpl' [readability… | |||||
SDValue &Offset, uint64_t FlatVariant) const; | |||||
bool SelectFlatOffset(SDNode *N, SDValue Addr, SDValue &VAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectFlatOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectFlatOffset' [readability-identifier… | |||||
SDValue &Offset) const; | |||||
bool SelectGlobalOffset(SDNode *N, SDValue Addr, SDValue &VAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectGlobalOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectGlobalOffset' [readability… | |||||
SDValue &Offset) const; | |||||
bool SelectScratchOffset(SDNode *N, SDValue Addr, SDValue &VAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectScratchOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectScratchOffset' [readability… | |||||
SDValue &Offset) const; | |||||
bool SelectGlobalSAddr(SDNode *N, SDValue Addr, SDValue &SAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectGlobalSAddr' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectGlobalSAddr' [readability… | |||||
SDValue &VOffset, SDValue &Offset) const; | |||||
bool SelectScratchSAddr(SDNode *N, SDValue Addr, SDValue &SAddr, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectScratchSAddr' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectScratchSAddr' [readability… | |||||
SDValue &Offset) const; | |||||
bool SelectSMRDOffset(SDValue ByteOffsetNode, SDValue &Offset, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRDOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRDOffset' [readability-identifier… | |||||
bool &Imm) const; | |||||
SDValue Expand32BitAddress(SDValue Addr) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'Expand32BitAddress' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'Expand32BitAddress' [readability… | |||||
bool SelectSMRD(SDValue Addr, SDValue &SBase, SDValue &Offset, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRD' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRD' [readability-identifier… | |||||
bool &Imm) const; | |||||
bool SelectSMRDImm(SDValue Addr, SDValue &SBase, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRDImm' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRDImm' [readability-identifier… | |||||
bool SelectSMRDImm32(SDValue Addr, SDValue &SBase, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRDImm32' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRDImm32' [readability-identifier… | |||||
bool SelectSMRDSgpr(SDValue Addr, SDValue &SBase, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRDSgpr' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRDSgpr' [readability-identifier… | |||||
bool SelectSMRDBufferImm(SDValue Addr, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRDBufferImm' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRDBufferImm' [readability… | |||||
bool SelectSMRDBufferImm32(SDValue Addr, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectSMRDBufferImm32' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectSMRDBufferImm32' [readability… | |||||
bool SelectMOVRELOffset(SDValue Index, SDValue &Base, SDValue &Offset) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMOVRELOffset' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMOVRELOffset' [readability… | |||||
bool SelectVOP3Mods_NNaN(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3Mods_NNaN' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3Mods_NNaN' [readability… | |||||
bool SelectVOP3ModsImpl(SDValue In, SDValue &Src, unsigned &SrcMods, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3ModsImpl' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3ModsImpl' [readability… | |||||
bool AllowAbs = true) const; | |||||
bool SelectVOP3Mods(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3Mods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3Mods' [readability-identifier… | |||||
bool SelectVOP3BMods(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3BMods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3BMods' [readability-identifier… | |||||
bool SelectVOP3NoMods(SDValue In, SDValue &Src) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3NoMods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3NoMods' [readability-identifier… | |||||
bool SelectVOP3Mods0(SDValue In, SDValue &Src, SDValue &SrcMods, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3Mods0' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3Mods0' [readability-identifier… | |||||
SDValue &Clamp, SDValue &Omod) const; | |||||
bool SelectVOP3BMods0(SDValue In, SDValue &Src, SDValue &SrcMods, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3BMods0' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3BMods0' [readability-identifier… | |||||
SDValue &Clamp, SDValue &Omod) const; | |||||
bool SelectVOP3NoMods0(SDValue In, SDValue &Src, SDValue &SrcMods, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3NoMods0' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3NoMods0' [readability… | |||||
SDValue &Clamp, SDValue &Omod) const; | |||||
bool SelectVOP3OMods(SDValue In, SDValue &Src, SDValue &Clamp, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3OMods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3OMods' [readability-identifier… | |||||
SDValue &Omod) const; | |||||
bool SelectVOP3PMods(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3PMods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3PMods' [readability-identifier… | |||||
bool SelectVOP3OpSel(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3OpSel' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3OpSel' [readability-identifier… | |||||
bool SelectVOP3OpSelMods(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3OpSelMods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3OpSelMods' [readability… | |||||
bool SelectVOP3PMadMixModsImpl(SDValue In, SDValue &Src, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3PMadMixModsImpl' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3PMadMixModsImpl' [readability… | |||||
unsigned &Mods) const; | |||||
bool SelectVOP3PMadMixMods(SDValue In, SDValue &Src, SDValue &SrcMods) const; | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectVOP3PMadMixMods' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectVOP3PMadMixMods' [readability… | |||||
SDValue getHi16Elt(SDValue In) const; | |||||
SDValue getMaterializedScalarImm32(int64_t Val, const SDLoc &DL) const; | |||||
void SelectADD_SUB_I64(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectADD_SUB_I64' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectADD_SUB_I64' [readability… | |||||
void SelectAddcSubb(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectAddcSubb' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectAddcSubb' [readability-identifier… | |||||
void SelectUADDO_USUBO(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectUADDO_USUBO' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectUADDO_USUBO' [readability… | |||||
void SelectDIV_SCALE(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDIV_SCALE' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDIV_SCALE' [readability-identifier… | |||||
void SelectMAD_64_32(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectMAD_64_32' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectMAD_64_32' [readability-identifier… | |||||
void SelectFMA_W_CHAIN(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectFMA_W_CHAIN' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectFMA_W_CHAIN' [readability… | |||||
void SelectFMUL_W_CHAIN(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectFMUL_W_CHAIN' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectFMUL_W_CHAIN' [readability… | |||||
SDNode *getS_BFE(unsigned Opcode, const SDLoc &DL, SDValue Val, | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'getS_BFE' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'getS_BFE' [readability-identifier-naming]… | |||||
uint32_t Offset, uint32_t Width); | |||||
void SelectS_BFEFromShifts(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectS_BFEFromShifts' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectS_BFEFromShifts' [readability… | |||||
void SelectS_BFE(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectS_BFE' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectS_BFE' [readability-identifier… | |||||
bool isCBranchSCC(const SDNode *N) const; | |||||
void SelectBRCOND(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectBRCOND' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectBRCOND' [readability-identifier… | |||||
void SelectFMAD_FMA(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectFMAD_FMA' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectFMAD_FMA' [readability-identifier… | |||||
void SelectATOMIC_CMP_SWAP(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectATOMIC_CMP_SWAP' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectATOMIC_CMP_SWAP' [readability… | |||||
void SelectDSAppendConsume(SDNode *N, unsigned IntrID); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDSAppendConsume' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDSAppendConsume' [readability… | |||||
void SelectDS_GWS(SDNode *N, unsigned IntrID); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectDS_GWS' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectDS_GWS' [readability-identifier… | |||||
void SelectInterpP1F16(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectInterpP1F16' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectInterpP1F16' [readability… | |||||
void SelectINTRINSIC_W_CHAIN(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectINTRINSIC_W_CHAIN' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectINTRINSIC_W_CHAIN' [readability… | |||||
void SelectINTRINSIC_WO_CHAIN(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectINTRINSIC_WO_CHAIN' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectINTRINSIC_WO_CHAIN' [readability… | |||||
void SelectINTRINSIC_VOID(SDNode *N); | |||||
Lint: Pre-merge checks clang-tidy: warning: invalid case style for function 'SelectINTRINSIC_VOID' [readability-identifier-naming] Lint: Pre-merge checks: clang-tidy: warning: invalid case style for function 'SelectINTRINSIC_VOID' [readability… | |||||
protected: | |||||
// Include the pieces autogenerated from the target description. | |||||
#include "AMDGPUGenDAGISel.inc" | |||||
}; | |||||
#endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUISELDAGTODAG_H |
What's the point of splitting this out? Nothing outside needs to access this