Jan Vesely <jan.ves...@rutgers.edu> writes:

> It's OK to pass them in memory, which is what kernel invocation needs.
> Fixes AMDGCN regressions since llvm r337535 ("Reapply "AMDGPU: Fix handling 
> of alignment padding in DAG argument lowering"):
>       scalar-arithmetic-char
>       scalar-arithmetic-uchar
>       scalar-arithemtic-short
>       scalar-arithmetic-ushort
>       scalar-comparison-char
>       scalar-comparison-uchar
>       scalar-comparison-short
>       scalar-comparison-ushort
>
> Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu>

Reviewed-by: Francisco Jerez <curroje...@riseup.net>

> ---
>  src/gallium/state_trackers/clover/llvm/codegen/common.cpp |  3 +--
>  src/gallium/state_trackers/clover/llvm/compat.hpp         | 12 ++++++++++++
>  2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/llvm/codegen/common.cpp 
> b/src/gallium/state_trackers/clover/llvm/codegen/common.cpp
> index ddf2083f37..ca5f78940d 100644
> --- a/src/gallium/state_trackers/clover/llvm/codegen/common.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/codegen/common.cpp
> @@ -85,8 +85,7 @@ namespace {
>           const unsigned arg_store_size = dl.getTypeStoreSize(arg_type);
>           const unsigned arg_api_size = dl.getTypeAllocSize(arg_type);
>  
> -         const auto target_type = !arg_type->isIntegerTy() ? arg_type :
> -            dl.getSmallestLegalIntType(mod.getContext(), arg_store_size * 8);
> +         const auto target_type = compat::get_abi_type(arg_type, mod);
>           const unsigned target_size = dl.getTypeStoreSize(target_type);
>           const unsigned target_align = dl.getABITypeAlignment(target_type);
>  
> diff --git a/src/gallium/state_trackers/clover/llvm/compat.hpp 
> b/src/gallium/state_trackers/clover/llvm/compat.hpp
> index 60270d1529..975012cbda 100644
> --- a/src/gallium/state_trackers/clover/llvm/compat.hpp
> +++ b/src/gallium/state_trackers/clover/llvm/compat.hpp
> @@ -153,6 +153,18 @@ namespace clover {
>               return tm.addPassesToEmitFile(pm, os, nullptr, ft);
>  #else
>               return tm.addPassesToEmitFile(pm, os, ft);
> +#endif
> +     }
> +
> +     template<typename T, typename M>
> +     T get_abi_type(const T &arg_type, const M &mod) {
> +#if HAVE_LLVM >= 0x0700
> +          return arg_type;
> +#else
> +          ::llvm::DataLayout dl(&mod);
> +          const unsigned arg_store_size = dl.getTypeStoreSize(arg_type);
> +          return !arg_type->isIntegerTy() ? arg_type :
> +            dl.getSmallestLegalIntType(mod.getContext(), arg_store_size * 8);
>  #endif
>       }
>        }
> -- 
> 2.16.4

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to