26.10.2017 u 01:09, Jan Vesely je napisao/la: > On Tue, 2017-10-24 at 15:32 +0200, Vedran Miletić wrote: >> On 10/23/2017 05:24 AM, Jan Vesely wrote: >>> From: Jan Vesely <jan.ves...@rutgers.edu> >>> >>> v2: use a more generic compat function >>> >>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103388 >>> Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu> >>> --- >>> src/gallium/state_trackers/clover/llvm/codegen/common.cpp | 5 ++--- >>> src/gallium/state_trackers/clover/llvm/compat.hpp | 12 ++++++++++-- >>> 2 files changed, 12 insertions(+), 5 deletions(-) >>> >>> diff --git a/src/gallium/state_trackers/clover/llvm/codegen/common.cpp >>> b/src/gallium/state_trackers/clover/llvm/codegen/common.cpp >>> index 075183400a..dd9d02ab11 100644 >>> --- a/src/gallium/state_trackers/clover/llvm/codegen/common.cpp >>> +++ b/src/gallium/state_trackers/clover/llvm/codegen/common.cpp >>> @@ -70,7 +70,6 @@ namespace { >>> make_kernel_args(const Module &mod, const std::string &kernel_name, >>> const clang::CompilerInstance &c) { >>> std::vector<module::argument> args; >>> - const auto address_spaces = c.getTarget().getAddressSpaceMap(); >>> const Function &f = *mod.getFunction(kernel_name); >>> ::llvm::DataLayout dl(&mod); >>> const auto size_type = >>> @@ -128,8 +127,8 @@ namespace { >>> const unsigned address_space = >>> cast< >>> ::llvm::PointerType>(actual_type)->getAddressSpace(); >>> >>> - if (address_space == >>> address_spaces[clang::LangAS::opencl_local >>> - - >>> compat::lang_as_offset]) { >>> + if (address_space == compat::target_lang_address_space( >>> + c.getTarget(), >>> clang::LangAS::opencl_local)) { >>> args.emplace_back(module::argument::local, arg_api_size, >>> target_size, target_align, >>> module::argument::zero_ext); >>> diff --git a/src/gallium/state_trackers/clover/llvm/compat.hpp >>> b/src/gallium/state_trackers/clover/llvm/compat.hpp >>> index f8b56516d5..3e34f0dd94 100644 >>> --- a/src/gallium/state_trackers/clover/llvm/compat.hpp >>> +++ b/src/gallium/state_trackers/clover/llvm/compat.hpp >>> @@ -69,11 +69,19 @@ namespace clover { >>> typedef ::llvm::TargetLibraryInfo target_library_info; >>> #endif >>> >>> + template<typename T, typename AS> >>> + unsigned target_lang_address_space(const T& target, const AS >>> lang_as) { >>> + const auto &map = target.getAddressSpaceMap(); >>> +#if HAVE_LLVM >= 0x0500 >>> + return map[static_cast<unsigned>(lang_as)]; >>> +#else >>> + return map[lang_as - clang::LangAS::Offset]; >>> +#endif >>> + } >>> + >>> #if HAVE_LLVM >= 0x0500 >>> - const auto lang_as_offset = 0; >>> const clang::InputKind ik_opencl = clang::InputKind::OpenCL; >>> #else >>> - const auto lang_as_offset = clang::LangAS::Offset; >>> const clang::InputKind ik_opencl = clang::IK_OpenCL; >>> #endif >>> >>> >> >> Thanks for improving the patch. Future-proof thinking: what if the value >> of clang::LangAS::Default changes from 0 to some other constant? > > Hi Vedran, > > you're right that it'd be more future proof, but I liked the one line > simplicity of the current version. Future clang changes will require > adaptations, but I don't expect clang to go back to non-0 lang AS > indices. Feel free to add "I told you so" if they prove me wrong :) > >> >> Other than that, this patch is: >> >> Reviewed-by: Vedran Miletić <ved...@miletic.net> > > I was not sure if this applied even without the change so I pushed it > only with francisco's rb. > > thanks, > Jan >
It did, I'll make sure to say it more clearly in the future. Regards, Vedran -- Vedran Miletić vedran.miletic.net _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev