[Mesa-dev] [PATCH] clover: Don't extend illegal integer types.

Francisco Jerez currojerez at riseup.net
Thu Jul 26 17:51:35 UTC 2018


Jan Vesely <jan.vesely at 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.vesely at rutgers.edu>

Reviewed-by: Francisco Jerez <currojerez at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180726/f8c6e52e/attachment.sig>


More information about the mesa-dev mailing list