LLVM 18.0.0git
DXILOpBuilder.h
Go to the documentation of this file.
1//===- DXILOpBuilder.h - Helper class for build DIXLOp functions ----------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file This file contains class to help build DXIL op functions.
10//===----------------------------------------------------------------------===//
11
12#ifndef LLVM_LIB_TARGET_DIRECTX_DXILOPBUILDER_H
13#define LLVM_LIB_TARGET_DIRECTX_DXILOPBUILDER_H
14
15#include "DXILConstants.h"
17
18namespace llvm {
19class Module;
20class IRBuilderBase;
21class CallInst;
22class Value;
23class Type;
24class FunctionType;
25class Use;
26
27namespace dxil {
28
30public:
31 DXILOpBuilder(Module &M, IRBuilderBase &B) : M(M), B(B) {}
32 CallInst *createDXILOpCall(dxil::OpCode OpCode, Type *OverloadTy,
34 Type *getOverloadTy(dxil::OpCode OpCode, FunctionType *FT,
35 bool NoOpCodeParam);
36 static const char *getOpCodeName(dxil::OpCode DXILOp);
37
38private:
39 Module &M;
41};
42
43} // namespace dxil
44} // namespace llvm
45
46#endif
RelocType Type
Definition: COFFYAML.cpp:391
Machine Check Debug Module
This class represents a function call, abstracting a target machine's calling convention.
Class to represent function types.
Definition: DerivedTypes.h:103
Common base class shared among various IRBuilders.
Definition: IRBuilder.h:94
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:65
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
DXILOpBuilder(Module &M, IRBuilderBase &B)
Definition: DXILOpBuilder.h:31
Type * getOverloadTy(dxil::OpCode OpCode, FunctionType *FT, bool NoOpCodeParam)
static const char * getOpCodeName(dxil::OpCode DXILOp)
CallInst * createDXILOpCall(dxil::OpCode OpCode, Type *OverloadTy, llvm::iterator_range< Use * > Args)
A range adaptor for a pair of iterators.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
NodeAddr< UseNode * > Use
Definition: RDFGraph.h:385
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18