LLVM 20.0.0git
Macros | Functions | Variables
AMDGPUISelDAGToDAG.cpp File Reference

Defines an instruction selector for the AMDGPU target. More...

#include "AMDGPUISelDAGToDAG.h"
#include "AMDGPU.h"
#include "AMDGPUInstrInfo.h"
#include "AMDGPUSubtarget.h"
#include "AMDGPUTargetMachine.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "MCTargetDesc/R600MCTargetDesc.h"
#include "R600RegisterInfo.h"
#include "SIISelLowering.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/Analysis/UniformityAnalysis.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/CodeGen/FunctionLoweringInfo.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/CodeGen/SelectionDAGNodes.h"
#include "llvm/IR/IntrinsicsAMDGPU.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/ErrorHandling.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "amdgpu-isel"
 

Functions

 INITIALIZE_PASS_BEGIN (AMDGPUDAGToDAGISelLegacy, "amdgpu-isel", "AMDGPU DAG->DAG Pattern Instruction Selection", false, false) INITIALIZE_PASS_END(AMDGPUDAGToDAGISelLegacy
 
static bool getBaseWithOffsetUsingSplitOR (SelectionDAG &DAG, SDValue Addr, SDValue &N0, SDValue &N1)
 
static bool isNoUnsignedWrap (SDValue Addr)
 
static bool IsCopyFromSGPR (const SIRegisterInfo &TRI, SDValue Val)
 
static MemSDNodefindMemSDNode (SDNode *N)
 
static SDValue matchZExtFromI32 (SDValue Op)
 
static SDValue SelectSAddrFI (SelectionDAG *CurDAG, SDValue SAddr)
 
static SDValue combineBallotPattern (SDValue VCMP, bool &Negate)
 
static unsigned gwsIntrinToOpcode (unsigned IntrID)
 
static MachineSDNodebuildRegSequence32 (SmallVectorImpl< SDValue > &Elts, llvm::SelectionDAG *CurDAG, const SDLoc &DL)
 
static MachineSDNodebuildRegSequence16 (SmallVectorImpl< SDValue > &Elts, llvm::SelectionDAG *CurDAG, const SDLoc &DL)
 
static MachineSDNodebuildRegSequence (SmallVectorImpl< SDValue > &Elts, llvm::SelectionDAG *CurDAG, const SDLoc &DL, unsigned ElementSize)
 
static void selectWMMAModsNegAbs (unsigned ModOpcode, unsigned &Mods, SmallVectorImpl< SDValue > &Elts, SDValue &Src, llvm::SelectionDAG *CurDAG, const SDLoc &DL, unsigned ElementSize)
 
static void checkWMMAElementsModifiersF16 (BuildVectorSDNode *BV, std::function< bool(SDValue)> ModifierCheck)
 

Variables

amdgpu isel
 
amdgpu AMDGPU DAG DAG Pattern Instruction Selection
 
amdgpu AMDGPU DAG DAG Pattern Instruction false
 

Detailed Description

Defines an instruction selector for the AMDGPU target.

Definition in file AMDGPUISelDAGToDAG.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "amdgpu-isel"

Definition at line 39 of file AMDGPUISelDAGToDAG.cpp.

Function Documentation

◆ buildRegSequence()

static MachineSDNode * buildRegSequence ( SmallVectorImpl< SDValue > &  Elts,
llvm::SelectionDAG CurDAG,
const SDLoc DL,
unsigned  ElementSize 
)
static

◆ buildRegSequence16()

static MachineSDNode * buildRegSequence16 ( SmallVectorImpl< SDValue > &  Elts,
llvm::SelectionDAG CurDAG,
const SDLoc DL 
)
static

◆ buildRegSequence32()

static MachineSDNode * buildRegSequence32 ( SmallVectorImpl< SDValue > &  Elts,
llvm::SelectionDAG CurDAG,
const SDLoc DL 
)
static

◆ checkWMMAElementsModifiersF16()

static void checkWMMAElementsModifiersF16 ( BuildVectorSDNode BV,
std::function< bool(SDValue)>  ModifierCheck 
)
static

◆ combineBallotPattern()

static SDValue combineBallotPattern ( SDValue  VCMP,
bool Negate 
)
static

◆ findMemSDNode()

static MemSDNode * findMemSDNode ( SDNode N)
static

◆ getBaseWithOffsetUsingSplitOR()

static bool getBaseWithOffsetUsingSplitOR ( SelectionDAG DAG,
SDValue  Addr,
SDValue N0,
SDValue N1 
)
static

◆ gwsIntrinToOpcode()

static unsigned gwsIntrinToOpcode ( unsigned  IntrID)
static

Definition at line 2587 of file AMDGPUISelDAGToDAG.cpp.

References llvm_unreachable.

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( AMDGPUDAGToDAGISelLegacy  ,
"amdgpu-isel"  ,
"AMDGPU DAG->DAG Pattern Instruction Selection"  ,
false  ,
false   
)

◆ IsCopyFromSGPR()

static bool IsCopyFromSGPR ( const SIRegisterInfo TRI,
SDValue  Val 
)
static

◆ isNoUnsignedWrap()

static bool isNoUnsignedWrap ( SDValue  Addr)
static

Definition at line 1171 of file AMDGPUISelDAGToDAG.cpp.

References llvm::ISD::ADD, Addr, and llvm::ISD::OR.

◆ matchZExtFromI32()

static SDValue matchZExtFromI32 ( SDValue  Op)
static

◆ SelectSAddrFI()

static SDValue SelectSAddrFI ( SelectionDAG CurDAG,
SDValue  SAddr 
)
static

◆ selectWMMAModsNegAbs()

static void selectWMMAModsNegAbs ( unsigned  ModOpcode,
unsigned Mods,
SmallVectorImpl< SDValue > &  Elts,
SDValue Src,
llvm::SelectionDAG CurDAG,
const SDLoc DL,
unsigned  ElementSize 
)
static

Variable Documentation

◆ false

amdgpu AMDGPU DAG DAG Pattern Instruction false

Definition at line 112 of file AMDGPUISelDAGToDAG.cpp.

◆ isel

amdgpu isel

Definition at line 111 of file AMDGPUISelDAGToDAG.cpp.

◆ Selection

amdgpu AMDGPU DAG DAG Pattern Instruction Selection