1*bdd1243dSDimitry Andric //===- Target/DirectX/CBufferDataLayout.h - Cbuffer layout helper ---------===// 2*bdd1243dSDimitry Andric // 3*bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*bdd1243dSDimitry Andric // 7*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 8*bdd1243dSDimitry Andric // 9*bdd1243dSDimitry Andric // Utils to help cbuffer layout. 10*bdd1243dSDimitry Andric // 11*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 12*bdd1243dSDimitry Andric 13*bdd1243dSDimitry Andric #ifndef LLVM_TARGET_DIRECTX_CBUFFERDATALAYOUT_H 14*bdd1243dSDimitry Andric #define LLVM_TARGET_DIRECTX_CBUFFERDATALAYOUT_H 15*bdd1243dSDimitry Andric 16*bdd1243dSDimitry Andric #include "llvm/Support/TypeSize.h" 17*bdd1243dSDimitry Andric 18*bdd1243dSDimitry Andric #include <memory> 19*bdd1243dSDimitry Andric #include <stdint.h> 20*bdd1243dSDimitry Andric 21*bdd1243dSDimitry Andric namespace llvm { 22*bdd1243dSDimitry Andric class DataLayout; 23*bdd1243dSDimitry Andric class Type; 24*bdd1243dSDimitry Andric 25*bdd1243dSDimitry Andric namespace dxil { 26*bdd1243dSDimitry Andric 27*bdd1243dSDimitry Andric class LegacyCBufferLayout; 28*bdd1243dSDimitry Andric 29*bdd1243dSDimitry Andric class CBufferDataLayout { 30*bdd1243dSDimitry Andric const DataLayout &DL; 31*bdd1243dSDimitry Andric const bool IsLegacyLayout; 32*bdd1243dSDimitry Andric std::unique_ptr<LegacyCBufferLayout> LegacyDL; 33*bdd1243dSDimitry Andric 34*bdd1243dSDimitry Andric public: 35*bdd1243dSDimitry Andric CBufferDataLayout(const DataLayout &DL, const bool IsLegacy); 36*bdd1243dSDimitry Andric ~CBufferDataLayout(); 37*bdd1243dSDimitry Andric llvm::TypeSize getTypeAllocSizeInBytes(Type *Ty); 38*bdd1243dSDimitry Andric }; 39*bdd1243dSDimitry Andric 40*bdd1243dSDimitry Andric } // namespace dxil 41*bdd1243dSDimitry Andric } // namespace llvm 42*bdd1243dSDimitry Andric 43*bdd1243dSDimitry Andric #endif 44