12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- //===-- DxilConstantFolding.h - Constant folding for Dxil ------*- C++ -*-===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- // Copyright (C) Microsoft Corporation. All rights reserved.
- //===----------------------------------------------------------------------===//
- //
- // This file declares routines for folding dxil intrinsics into constants when
- // all operands are constants.
- //
- // We hook into the LLVM routines for constant folding so the function
- // interfaces are dictated by what llvm provides.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_ANALYSIS_HLSLCONSTANTFOLDING_H
- #define LLVM_ANALYSIS_HLSLCONSTANTFOLDING_H
- #include "llvm/ADT/StringRef.h"
- namespace llvm {
- class Constant;
- class Function;
- class Type;
- template<typename T>
- class ArrayRef;
- }
- namespace hlsl {
- /// ConstantFoldScalarCall - Try to constant fold the call instruction.
- /// If successful, the constant result is returned, if not, null is returned.
- llvm::Constant *ConstantFoldScalarCall(llvm::StringRef Name, llvm::Type *Ty, llvm::ArrayRef<llvm::Constant *> Operands);
- /// ConstantFoldScalarCallExt
- /// Hook point for constant folding of extensions.
- llvm::Constant *ConstantFoldScalarCallExt(llvm::StringRef Name, llvm::Type *Ty, llvm::ArrayRef<llvm::Constant *> Operands);
- /// CanConstantFoldCallTo - Return true if we can potentially constant
- /// fold a call to the given function.
- bool CanConstantFoldCallTo(const llvm::Function *F);
- /// CanConstantFoldCallToExt
- /// Hook point for constant folding of extensions.
- bool CanConstantFoldCallToExt(const llvm::Function *F);
- }
- #endif
|