@@ -31,7 +31,7 @@ createArrayWithNewElementType(CodeGenModule &CGM,
3131}
3232
3333// Returns the size of a scalar or vector in bytes/
34- static unsigned getScalarOrVectorSize (llvm::Type *Ty) {
34+ static unsigned getScalarOrVectorSizeInBytes (llvm::Type *Ty) {
3535 assert (Ty->isVectorTy () || Ty->isIntegerTy () || Ty->isFloatingPointTy ());
3636 if (Ty->isVectorTy ()) {
3737 llvm::FixedVectorType *FVT = cast<llvm::FixedVectorType>(Ty);
@@ -65,6 +65,7 @@ llvm::Type *CommonHLSLTargetCodeGenInfo::createHLSLBufferLayoutType(
6565 SmallVector<llvm::Type *> LayoutElements;
6666 unsigned Index = 0 ; // packoffset index
6767 unsigned EndOffset = 0 ;
68+ const unsigned BufferRowAlign = 16U ;
6869
6970 // reserve first spot in the layout vector for buffer size
7071 Layout.push_back (0 );
@@ -94,7 +95,7 @@ llvm::Type *CommonHLSLTargetCodeGenInfo::createHLSLBufferLayoutType(
9495 unsigned ElemOffset = 0 ;
9596 unsigned ArrayCount = 1 ;
9697 unsigned ArrayStride = 0 ;
97- unsigned NextRowOffset = llvm::alignTo (EndOffset, 16U );
98+ unsigned NextRowOffset = llvm::alignTo (EndOffset, BufferRowAlign );
9899 llvm::Type *ElemLayoutTy = nullptr ;
99100
100101 QualType FieldTy = FD->getType ();
@@ -120,11 +121,11 @@ llvm::Type *CommonHLSLTargetCodeGenInfo::createHLSLBufferLayoutType(
120121 CGM, cast<ConstantArrayType>(FieldTy.getTypePtr ()), NewTy);
121122 } else {
122123 // Array of vectors or scalars
123- ElemSize =
124- getScalarOrVectorSize ( CGM.getTypes ().ConvertTypeForMem (Ty));
124+ ElemSize = getScalarOrVectorSizeInBytes (
125+ CGM.getTypes ().ConvertTypeForMem (Ty));
125126 ElemLayoutTy = CGM.getTypes ().ConvertTypeForMem (FieldTy);
126127 }
127- ArrayStride = llvm::alignTo (ElemSize, 16U );
128+ ArrayStride = llvm::alignTo (ElemSize, BufferRowAlign );
128129 ElemOffset =
129130 Packoffsets != nullptr ? (*Packoffsets)[Index] : NextRowOffset;
130131
0 commit comments