LLVM 22.0.0git
Classes | Macros | Functions | Variables
DXILDataScalarization.cpp File Reference
#include "DXILDataScalarization.h"
#include "DirectX.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/ReplaceConstant.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/Casting.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/Local.h"

Go to the source code of this file.

Classes

class  DXILDataScalarizationLegacy
 
class  DataScalarizerVisitor
 

Macros

#define DEBUG_TYPE   "dxil-data-scalarization"
 

Functions

static TypeequivalentArrayTypeFromVector (Type *T)
 
static bool findAndReplaceVectors (Module &M)
 
static bool isVectorOrArrayOfVectors (Type *T)
 
static std::pair< Value *, Value * > dynamicallyLoadArray (IRBuilder<> &Builder, AllocaInst *ArrAlloca, Value *Index, const Twine &Name="")
 Returns a pair of Value* with the first being a GEP into ArrAlloca using indices {0, Index}, and the second Value* being a Load of the GEP.
 
static ConstanttransformInitializer (Constant *Init, Type *OrigType, Type *NewType, LLVMContext &Ctx)
 
 INITIALIZE_PASS_BEGIN (DXILDataScalarizationLegacy, DEBUG_TYPE, "DXIL Data Scalarization", false, false) INITIALIZE_PASS_END(DXILDataScalarizationLegacy
 

Variables

static const int MaxVecSize = 4
 
 DEBUG_TYPE
 
DXIL Data Scalarization
 
DXIL Data false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "dxil-data-scalarization"

Definition at line 27 of file DXILDataScalarization.cpp.

Function Documentation

◆ dynamicallyLoadArray()

static std::pair< Value *, Value * > dynamicallyLoadArray ( IRBuilder<> &  Builder,
AllocaInst ArrAlloca,
Value Index,
const Twine Name = "" 
)
static

Returns a pair of Value* with the first being a GEP into ArrAlloca using indices {0, Index}, and the second Value* being a Load of the GEP.

Definition at line 223 of file DXILDataScalarization.cpp.

References llvm::IRBuilderBase::CreateInBoundsGEP(), llvm::IRBuilderBase::CreateLoad(), GEP, llvm::AllocaInst::getAllocatedType(), llvm::Type::getArrayElementType(), llvm::IRBuilderBase::getInt32(), and Name.

◆ equivalentArrayTypeFromVector()

static Type * equivalentArrayTypeFromVector ( Type T)
static

◆ findAndReplaceVectors()

static bool findAndReplaceVectors ( llvm::Module M)
static

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( DXILDataScalarizationLegacy  ,
DEBUG_TYPE  ,
"DXIL Data Scalarization"  ,
false  ,
false   
)

◆ isVectorOrArrayOfVectors()

static bool isVectorOrArrayOfVectors ( Type T)
static

◆ transformInitializer()

static Constant * transformInitializer ( Constant Init,
Type OrigType,
Type NewType,
LLVMContext Ctx 
)
static

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 471 of file DXILDataScalarization.cpp.

◆ false

DXIL Data false

Definition at line 472 of file DXILDataScalarization.cpp.

◆ MaxVecSize

const int MaxVecSize = 4
static

◆ Scalarization

DXIL Data Scalarization

Definition at line 472 of file DXILDataScalarization.cpp.