38 строки
1.6 KiB
C++
38 строки
1.6 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// HLLowerUDT.h //
|
|
// Copyright (C) Microsoft Corporation. All rights reserved. //
|
|
// This file is distributed under the University of Illinois Open Source //
|
|
// License. See LICENSE.TXT for details. //
|
|
// //
|
|
// Lower user defined type used directly by certain intrinsic operations. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
#include "dxc/DXIL/DxilConstants.h"
|
|
#include "dxc/DXIL/DxilTypeSystem.h"
|
|
#include "dxc/Support/Global.h"
|
|
|
|
namespace llvm {
|
|
class Constant;
|
|
class Function;
|
|
class StructType;
|
|
class Type;
|
|
class Value;
|
|
} // namespace llvm
|
|
|
|
namespace hlsl {
|
|
class DxilTypeSystem;
|
|
|
|
llvm::StructType *GetLoweredUDT(llvm::StructType *structTy,
|
|
hlsl::DxilTypeSystem *pTypeSys = nullptr);
|
|
llvm::Constant *
|
|
TranslateInitForLoweredUDT(llvm::Constant *Init, llvm::Type *NewTy,
|
|
// We need orientation for matrix fields
|
|
hlsl::DxilTypeSystem *pTypeSys,
|
|
hlsl::MatrixOrientation matOrientation =
|
|
hlsl::MatrixOrientation::Undefined);
|
|
void ReplaceUsesForLoweredUDT(llvm::Value *V, llvm::Value *NewV);
|
|
|
|
} // namespace hlsl
|