145 std::optional<Reloc::Model>
RM,
146 std::optional<CodeModel::Model> CM,
158#define GET_PASS_REGISTRY "DirectXPassRegistry.def"
203 bool DisableVerify) {
213 return Subtarget.get();
#define LLVM_EXTERNAL_VISIBILITY
This file provides a bitcode writing pass.
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeDirectXTarget()
This file contains an interface for creating legacy passes to print out IR in various granularities.
PassBuilder PB(Mod->getContext(), Machine, PassOpts->PTO, std::nullopt, &PIC)
This pass converts vector operations into scalar operations (or, optionally, operations on smaller ve...
Target-Independent Code Generator Pass Configuration Options pass.
Defines the llvm::VersionTuple class, which represents a version in the form major[....
DXILTargetObjectFile()=default
MCSection * SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override
MCSection * getExplicitSectionGlobal(const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const override
Targets should implement this method to assign a section to globals with an explicit section specfied...
FunctionPass * createTargetRegisterAllocator(bool) override
createTargetRegisterAllocator - Create the register allocator pass for this target at the current opt...
void addCodeGenPrepare() override
Add pass to prepare the LLVM IR for code generation.
DirectXPassConfig(DirectXTargetMachine &TM, PassManagerBase &PM)
DirectXTargetMachine & getDirectXTargetMachine() const
CodeGenTargetMachineImpl(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOptLevel OL)
bool addAsmPrinter(PassManagerBase &PM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, MCContext &Context) override
Adds an AsmPrinter pass to the pipeline that prints assembly or machine code from the MI representati...
const DirectXRegisterInfo * getRegisterInfo() const override
DirectXTargetLowering(const DirectXTargetMachine &TM, const DirectXSubtarget &STI)
TargetPassConfig * createPassConfig(PassManagerBase &PM) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
TargetTransformInfo getTargetTransformInfo(const Function &F) const override
Get a TargetTransformInfo implementation for the target.
~DirectXTargetMachine() override
DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM, CodeGenOptLevel OL, bool JIT)
const DirectXSubtarget * getSubtargetImpl(const Function &) const override
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...
bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, bool DisableVerify, MachineModuleInfoWrapperPass *MMIWP) override
Add passes to the specified pass manager to get the specified file emitted.
bool addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx, raw_pwrite_stream &Out, bool DisableVerify) override
Add passes to the specified pass manager to get machine code emitted with the MCJIT.
void registerPassBuilderCallbacks(PassBuilder &PB) override
Allow the target to modify the pass pipeline.
FunctionPass class - This class is used to implement most global optimizations.
StringRef getSection() const
Get the custom section of this global if it has one.
Context object for machine code objects.
LLVM_ABI MCSectionDXContainer * getDXContainerSection(StringRef Section, SectionKind K)
Get the section for the provided Section name.
MCContext & getContext() const
Instances of this class represent a uniqued identifier for a section in the current translation unit.
MachineModuleInfo & getMMI()
const MCContext & getContext() const
This class provides access to building LLVM's passes.
static LLVM_ABI PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
SectionKind - This is a simple POD value that classifies the properties of a section.
Represent a constant reference to a string, i.e.
void computeRegisterProperties(const TargetRegisterInfo *TRI)
Once all of the register classes are added, this allows us to compute derived properties we expose.
void addRegisterClass(MVT VT, const TargetRegisterClass *RC)
Add the specified register class as an available regclass for the specified value type.
TargetLoweringObjectFile()=default
TargetLowering(const TargetLowering &)=delete
Primary interface to the complete machine description for the target machine.
CodeGenOptLevel getOptLevel() const
Returns the optimization level: None, Less, Default, or Aggressive.
TargetIRAnalysis getTargetIRAnalysis() const
Get a TargetIRAnalysis appropriate for the target.
Target-Independent Code Generator Pass Configuration Options.
virtual void addCodeGenPrepare()
Add pass to prepare the LLVM IR for code generation.
bool willCompleteCodeGenPipeline() const
Returns true if none of the -stop-before and -stop-after options is set.
AnalysisID addPass(AnalysisID PassID)
Utilities for targets to add passes to the pass manager.
TargetPassConfig(TargetMachine &TM, PassManagerBase &PM)
TMC & getTM() const
Get the right type of TargetMachine for this target.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
Represents a version number in the form major[.minor[.subminor[.build]]].
PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...
virtual void add(Pass *P)=0
Add a pass to the queue of passes to run.
An abstract base class for streams implementations that also support a pwrite operation.
Interfaces for registering analysis passes, producing common pass manager configurations,...
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI void initializeDSELegacyPassPass(PassRegistry &)
void initializeDXILContainerGlobalsLegacyPass(PassRegistry &)
Initializer for DXILContainerGlobals pass.
void initializeShaderFlagsAnalysisWrapperPass(PassRegistry &)
Initializer for dxil::ShaderFlagsAnalysisWrapper pass.
LLVM_ABI void initializeStripConvergenceIntrinsicsLegacyPassPass(PassRegistry &)
FunctionPass * createDXILLegalizeLegacyPass()
void initializeDXILPrepareModuleLegacyPass(PassRegistry &)
Initializer for DXIL-prepare.
void initializeDXILPrettyPrinterLegacyPass(PassRegistry &)
Initializer for DXILPrettyPrinter.
ModulePass * createDXILDataScalarizationLegacyPass()
ModulePass * createDXILWriterPass(raw_ostream &Str)
Create and return a pass that writes the module to the specified ostream.
ModulePass * createDXILContainerPDBLegacyPass()
ModulePass * createDXILPostOptimizationValidationLegacyPass()
ModulePass * createDXILTranslateMetadataLegacyPass()
void initializeDXILCBufferAccessLegacyPass(PassRegistry &)
Initializer for DXIL CBuffer Access Pass.
void initializeDXILFlattenArraysLegacyPass(PassRegistry &)
Initializer for DXIL Array Flatten Pass.
void initializeRootSignatureAnalysisWrapperPass(PassRegistry &)
Initializer for dxil::RootSignatureAnalysisWrapper pass.
ModulePass * createDXILDebugInfoLegacyPass()
ModulePass * createDXILCBufferAccessLegacyPass()
LLVM_ABI ModulePass * createGlobalDCEPass()
ModulePass * createDXILFlattenArraysLegacyPass()
ModulePass * createDXILResourceImplicitBindingLegacyPass()
Target & getTheDirectXTarget()
LLVM_ABI void initializeGlobalDCELegacyPassPass(PassRegistry &)
FunctionPass * createDXILResourceAccessLegacyPass()
CodeGenFileType
These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit,...
void initializeDXILResourceImplicitBindingLegacyPass(PassRegistry &)
Initializer for DXILResourceImplicitBindingLegacyPass.
void initializeDXILForwardHandleAccessesLegacyPass(PassRegistry &)
Initializer for DXIL Forward Handle Accesses Pass.
void initializeDXILDataScalarizationLegacyPass(PassRegistry &)
Initializer for DXIL Data Scalarization Pass.
ModulePass * createDXILFinalizeLinkageLegacyPass()
void initializeEmbedDXILPassPass(PassRegistry &)
Initializer for dxil embedder pass.
void initializeSignatureAnalysisWrapperPass(PassRegistry &)
Initializer for dxil::SignatureAnalysisWrapper pass.
CodeGenOptLevel
Code generation optimization level.
ModulePass * createDXILIntrinsicExpansionLegacyPass()
ModulePass * createDXILPrepareModuleLegacyPass()
LLVM_ABI FunctionPass * createStripConvergenceIntrinsicsPass()
void initializeDXILFinalizeLinkageLegacyPass(PassRegistry &)
Initializer for DXILFinalizeLinkage pass.
void initializeDXILContainerPDBLegacyPass(PassRegistry &)
Initializer for DXILContainerPDB pass.
void initializeDXILIntrinsicExpansionLegacyPass(PassRegistry &)
Initializer for DXIL Intrinsic Expansion.
void initializeDXILLegalizeLegacyPass(PassRegistry &)
Initializer DXIL legalizationPass.
LLVM_ABI ImmutablePass * createTargetTransformInfoWrapperPass(TargetIRAnalysis TIRA)
Create an analysis pass wrapper around a TTI object.
ModulePass * createDXILEmbedderPass()
Create and return a pass that writes the module to a global variable in the module for later emission...
FunctionPass * createDXILRemoveUnusedResourcesLegacyPass()
LLVM_ABI FunctionPass * createScalarizerPass(const ScalarizerPassOptions &Options=ScalarizerPassOptions())
Create a legacy pass manager instance of the Scalarizer pass.
void initializeDXILDebugInfoLegacyPass(PassRegistry &)
Initializer for DXIL debug info lowering.
void initializeDXILMemIntrinsicsLegacyPass(PassRegistry &)
Initializer for DXIL Mem Intrinsics.
ModulePass * createDXILMemIntrinsicsLegacyPass()
ModulePass * createDXILOpLoweringLegacyPass()
LLVM_ABI FunctionPass * createDeadStoreEliminationPass()
void initializeDXILPostOptimizationValidationLegacyPass(PassRegistry &)
Initializer for DXILPostOptimizationValidation.
void initializeDXILOpLoweringLegacyPass(PassRegistry &)
Initializer for DXILOpLowering.
void initializeWriteDXILPassPass(PassRegistry &)
Initializer for dxil writer pass.
ModulePass * createDXILPrettyPrinterLegacyPass(raw_ostream &OS)
void initializeDXILRemoveUnusedResourcesLegacyPass(PassRegistry &)
Initializer for DXILRemoveUnusedResources.
LLVM_ABI void initializeScalarizerLegacyPassPass(PassRegistry &)
FunctionPass * createDXILForwardHandleAccessesLegacyPass()
ModulePass * createDXILContainerGlobalsLegacyPass()
void initializeDXILResourceAccessLegacyPass(PassRegistry &)
Initializer for DXILResourceAccess.
void initializeDXILTranslateMetadataLegacyPass(PassRegistry &)
Initializer for DXILTranslateMetadata.
Implement std::hash so that hash_code can be used in STL containers.
RegisterTargetMachine - Helper template for registering a target machine implementation,...
bool ScalarizeLoadStore
Allow the scalarizer pass to scalarize loads and store.