On Mon, 2016-06-13 at 17:24 -0700, Francisco Jerez wrote: > Serge Martin <edb+m...@sigluy.net> writes: > > > This fix getting the size of a struct arg. vec3 types still work > > ok. > > Only buit-in args need to have power of two alignment, > > getTypeAllocSize > > reports the correct size. > > --- > > src/gallium/state_trackers/clover/llvm/invocation.cpp | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp > > b/src/gallium/state_trackers/clover/llvm/invocation.cpp > > index 03487d6..9af51539 100644 > > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp > > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp > > @@ -472,7 +472,8 @@ namespace { > > // aligned to the next larger power of two". We need > > this > > // alignment for three element vectors, which have > > // non-power-of-2 store size. > > - const unsigned arg_api_size = > > util_next_power_of_two(arg_store_size); > > + const unsigned arg_api_size = arg_type->isStructTy() ? > > + arg_store_size : > > util_next_power_of_two(arg_store_size); > > > Hm... Isn't this still going to be broken if you pass a struct > argument > to a kernel function and the alignment of any of the struct members > doesn't match the target-specific data layout? Not sure we can fix > this > sensibly without requiring the target's data layout to match the CL > API > exactly. Any suggestions Tom?
according to 6.7.2.1 compilers can arbitrarily insert padding between struct members (except at the beginning). Even if size/alignment of individual members match CL API exactly, there's no guarantee that the structure layout/size will be the same. Jan > > > llvm::Type *target_type = arg_type->isIntegerTy() ? > > TD.getSmallestLegalIntType(mod->getContext(), > > arg_store_size * 8) > > -- > > 2.5.5 -- Jan Vesely <jan.ves...@rutgers.edu>
signature.asc
Description: This is a digitally signed message part
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev