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" 16 #include "llvm/ADT/iterator_range.h" 17 18 namespace llvm { 19 class Module; 20 class IRBuilderBase; 21 class CallInst; 22 class Value; 23 class Type; 24 class FunctionType; 25 class Use; 26 27 namespace dxil { 28 29 class DXILOpBuilder { 30 public: 31 DXILOpBuilder(Module &M, IRBuilderBase &B) : M(M), B(B) {} 32 CallInst *createDXILOpCall(dxil::OpCode OpCode, Type *OverloadTy, 33 llvm::iterator_range<Use *> Args); 34 Type *getOverloadTy(dxil::OpCode OpCode, FunctionType *FT, 35 bool NoOpCodeParam); 36 static const char *getOpCodeName(dxil::OpCode DXILOp); 37 38 private: 39 Module &M; 40 IRBuilderBase &B; 41 }; 42 43 } // namespace dxil 44 } // namespace llvm 45 46 #endif 47