Lines Matching +full:fixed +full:- +full:layout
1 //===- Target/DirectX/CBufferDataLayout.cpp - Cbuffer layout helper -------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // Utils to help cbuffer layout.
11 //===----------------------------------------------------------------------===//
21 // Implement cbuffer layout in
22 // https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-packing-rules
31 uint32_t Ch = Offset & (RowAlign - 1);
32 return std::make_pair((Offset - Ch) / RowAlign, Ch);
74 LegacyStructLayout &Layout = getStructLayout(ST);
75 return Layout.Size;
77 unsigned NumElts = AT->getNumElements();
81 TypeSize EltSize = getTypeAllocSize(AT->getElementType());
84 return TypeSize::getFixed(AlignedEltSize * (NumElts - 1) + EltSize);
87 // layout.
96 return it->second;
99 LegacyStructLayout Layout;
100 Layout.ST = ST;
101 for (Type *EltTy : ST->elements()) {
103 if (TypeSize ScalarSize = EltTy->getScalarType()->getPrimitiveSizeInBits())
106 Layout.Offsets.emplace_back(Offset);
109 Layout.Size = Offset;
110 StructLayouts[ST] = Layout;
123 return LegacyDL->getTypeAllocSizeInBytes(Ty);