[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