LLVM 22.0.0git
SPIRVEmitIntrinsics.cpp File Reference
#include "SPIRV.h"
#include "SPIRVBuiltins.h"
#include "SPIRVSubtarget.h"
#include "SPIRVTargetMachine.h"
#include "SPIRVUtils.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/IntrinsicsSPIRV.h"
#include "llvm/IR/PatternMatch.h"
#include "llvm/IR/TypedPointerType.h"
#include "llvm/Transforms/Utils/Local.h"
#include <queue>
#include <unordered_set>
#include "SPIRVGenTables.inc"

Go to the source code of this file.

Namespaces

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

Macros

#define GET_BuiltinGroup_DECL

Functions

 INITIALIZE_PASS (SPIRVEmitIntrinsics, "emit-intrinsics", "SPIRV emit intrinsics", false, false) static inline bool isAssignTypeInstr(const Instruction *I)
static bool isMemInstrToReplace (Instruction *I)
static bool isAggrConstForceInt32 (const Value *V)
static void setInsertPointSkippingPhis (IRBuilder<> &B, Instruction *I)
static void setInsertPointAfterDef (IRBuilder<> &B, Instruction *I)
static bool requireAssignType (Instruction *I)
static void reportFatalOnTokenType (const Instruction *I)
static void emitAssignName (Instruction *I, IRBuilder<> &B)
static bool IsKernelArgInt8 (Function *F, StoreInst *SI)
static TyperestoreMutatedType (SPIRVGlobalRegistry *GR, Instruction *I, Type *Ty)
static TypegetPointeeTypeByCallInst (StringRef DemangledName, Function *CalledF, unsigned OpIdx)
static TypegetAtomicElemTy (SPIRVGlobalRegistry *GR, Instruction *I, Value *PointerOperand)
static void createDecorationIntrinsic (Instruction *I, MDNode *Node, IRBuilder<> &B)
static void createRoundingModeDecoration (Instruction *I, unsigned RoundingModeDeco, IRBuilder<> &B)
static void createSaturatedConversionDecoration (Instruction *I, IRBuilder<> &B)
static void addSaturatedDecorationToIntrinsic (Instruction *I, IRBuilder<> &B)
static FunctionTypegetFunctionPointerElemType (Function *F, SPIRVGlobalRegistry *GR)

Macro Definition Documentation

◆ GET_BuiltinGroup_DECL

#define GET_BuiltinGroup_DECL

Definition at line 52 of file SPIRVEmitIntrinsics.cpp.

Function Documentation

◆ addSaturatedDecorationToIntrinsic()

void addSaturatedDecorationToIntrinsic ( Instruction * I,
IRBuilder<> & B )
static

◆ createDecorationIntrinsic()

void createDecorationIntrinsic ( Instruction * I,
MDNode * Node,
IRBuilder<> & B )
static

◆ createRoundingModeDecoration()

void createRoundingModeDecoration ( Instruction * I,
unsigned RoundingModeDeco,
IRBuilder<> & B )
static

◆ createSaturatedConversionDecoration()

void createSaturatedConversionDecoration ( Instruction * I,
IRBuilder<> & B )
static

◆ emitAssignName()

◆ getAtomicElemTy()

◆ getFunctionPointerElemType()

◆ getPointeeTypeByCallInst()

Type * getPointeeTypeByCallInst ( StringRef DemangledName,
Function * CalledF,
unsigned OpIdx )
static

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( SPIRVEmitIntrinsics ,
"emit-intrinsics" ,
"SPIRV emit intrinsics" ,
false ,
false  ) const

Definition at line 304 of file SPIRVEmitIntrinsics.cpp.

References llvm::cast(), const, I, inline, and llvm::isa().

◆ isAggrConstForceInt32()

bool isAggrConstForceInt32 ( const Value * V)
static

Definition at line 317 of file SPIRVEmitIntrinsics.cpp.

References llvm::isa().

◆ IsKernelArgInt8()

bool IsKernelArgInt8 ( Function * F,
StoreInst * SI )
static

◆ isMemInstrToReplace()

bool isMemInstrToReplace ( Instruction * I)
static

Definition at line 312 of file SPIRVEmitIntrinsics.cpp.

References I, and llvm::isa().

◆ reportFatalOnTokenType()

void reportFatalOnTokenType ( const Instruction * I)
inlinestatic

Definition at line 349 of file SPIRVEmitIntrinsics.cpp.

References I, and llvm::report_fatal_error().

Referenced by emitAssignName().

◆ requireAssignType()

bool requireAssignType ( Instruction * I)
static

Definition at line 338 of file SPIRVEmitIntrinsics.cpp.

References llvm::dyn_cast(), and I.

◆ restoreMutatedType()

◆ setInsertPointAfterDef()

void setInsertPointAfterDef ( IRBuilder<> & B,
Instruction * I )
static

Definition at line 330 of file SPIRVEmitIntrinsics.cpp.

References B(), and I.

Referenced by createDecorationIntrinsic(), and emitAssignName().

◆ setInsertPointSkippingPhis()

void setInsertPointSkippingPhis ( IRBuilder<> & B,
Instruction * I )
static

Definition at line 323 of file SPIRVEmitIntrinsics.cpp.

References B(), I, and llvm::isa().