LLVM 18.0.0git
Namespaces | Macros | Typedefs | Functions
SPIRVInstructionSelector.cpp File Reference
#include "MCTargetDesc/SPIRVBaseInfo.h"
#include "MCTargetDesc/SPIRVMCTargetDesc.h"
#include "SPIRV.h"
#include "SPIRVGlobalRegistry.h"
#include "SPIRVInstrInfo.h"
#include "SPIRVRegisterBankInfo.h"
#include "SPIRVRegisterInfo.h"
#include "SPIRVTargetMachine.h"
#include "SPIRVUtils.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h"
#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"
#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/IR/IntrinsicsSPIRV.h"
#include "llvm/Support/Debug.h"
#include "SPIRVGenGlobalISel.inc"

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DEBUG_TYPE   "spirv-isel"
 
#define GET_GLOBALISEL_PREDICATE_BITSET
 
#define GET_GLOBALISEL_PREDICATES_DECL
 
#define GET_GLOBALISEL_TEMPORARIES_DECL
 
#define GET_GLOBALISEL_IMPL
 
#define GET_GLOBALISEL_PREDICATES_INIT
 
#define GET_GLOBALISEL_TEMPORARIES_INIT
 

Typedefs

using ExtInstList = std::vector< std::pair< SPIRV::InstructionSet::InstructionSet, uint32_t > >
 

Functions

static bool isImm (const MachineOperand &MO, MachineRegisterInfo *MRI)
 
bool isTypeFoldingSupported (unsigned Opcode)
 
static SPIRV::Scope::Scope getScope (SyncScope::ID Ord)
 
static void addMemoryOperands (MachineMemOperand *MemOp, MachineInstrBuilder &MIB)
 
static void addMemoryOperands (uint64_t Flags, MachineInstrBuilder &MIB)
 
static bool isGenericCastablePtr (SPIRV::StorageClass::StorageClass SC)
 
static unsigned getFCmpOpcode (unsigned PredNum)
 
static unsigned getICmpOpcode (unsigned PredNum)
 
static unsigned getPtrCmpOpcode (unsigned Pred)
 
static unsigned getBoolCmpOpcode (unsigned PredNum)
 
static int64_t foldImm (const MachineOperand &MO, MachineRegisterInfo *MRI)
 
InstructionSelectorllvm::createSPIRVInstructionSelector (const SPIRVTargetMachine &TM, const SPIRVSubtarget &Subtarget, const RegisterBankInfo &RBI)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "spirv-isel"

Definition at line 33 of file SPIRVInstructionSelector.cpp.

◆ GET_GLOBALISEL_IMPL

#define GET_GLOBALISEL_IMPL

Definition at line 191 of file SPIRVInstructionSelector.cpp.

◆ GET_GLOBALISEL_PREDICATE_BITSET

#define GET_GLOBALISEL_PREDICATE_BITSET

Definition at line 44 of file SPIRVInstructionSelector.cpp.

◆ GET_GLOBALISEL_PREDICATES_DECL

#define GET_GLOBALISEL_PREDICATES_DECL

Definition at line 67 of file SPIRVInstructionSelector.cpp.

◆ GET_GLOBALISEL_PREDICATES_INIT

#define GET_GLOBALISEL_PREDICATES_INIT

◆ GET_GLOBALISEL_TEMPORARIES_DECL

#define GET_GLOBALISEL_TEMPORARIES_DECL

Definition at line 71 of file SPIRVInstructionSelector.cpp.

◆ GET_GLOBALISEL_TEMPORARIES_INIT

#define GET_GLOBALISEL_TEMPORARIES_INIT

Typedef Documentation

◆ ExtInstList

using ExtInstList = std::vector<std::pair<SPIRV::InstructionSet::InstructionSet, uint32_t> >

Definition at line 39 of file SPIRVInstructionSelector.cpp.

Function Documentation

◆ addMemoryOperands() [1/2]

static void addMemoryOperands ( MachineMemOperand MemOp,
MachineInstrBuilder MIB 
)
static

Definition at line 569 of file SPIRVInstructionSelector.cpp.

References llvm::MachineInstrBuilder::addImm().

◆ addMemoryOperands() [2/2]

static void addMemoryOperands ( uint64_t  Flags,
MachineInstrBuilder MIB 
)
static

Definition at line 586 of file SPIRVInstructionSelector.cpp.

References llvm::MachineInstrBuilder::addImm().

◆ foldImm()

static int64_t foldImm ( const MachineOperand MO,
MachineRegisterInfo MRI 
)
static

◆ getBoolCmpOpcode()

static unsigned getBoolCmpOpcode ( unsigned  PredNum)
static

◆ getFCmpOpcode()

static unsigned getFCmpOpcode ( unsigned  PredNum)
static

◆ getICmpOpcode()

static unsigned getICmpOpcode ( unsigned  PredNum)
static

◆ getPtrCmpOpcode()

static unsigned getPtrCmpOpcode ( unsigned  Pred)
static

◆ getScope()

static SPIRV::Scope::Scope getScope ( SyncScope::ID  Ord)
static

◆ isGenericCastablePtr()

static bool isGenericCastablePtr ( SPIRV::StorageClass::StorageClass  SC)
static

Definition at line 793 of file SPIRVInstructionSelector.cpp.

◆ isImm()

static bool isImm ( const MachineOperand MO,
MachineRegisterInfo MRI 
)
static

◆ isTypeFoldingSupported()

bool isTypeFoldingSupported ( unsigned  Opcode)

Definition at line 53 of file SPIRVLegalizerInfo.cpp.

References Opcode, and TypeFoldingSupportingOpcs.

Referenced by llvm::SPIRVLegalizerInfo::legalizeCustom().