mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-13 08:46:22 +00:00
[AMDGPU] Fix code object version not being set to 'none' (#135036)
Summary: Previously, we removed the special handling for the code object version global. I erroneously thought that this meant we cold get rid of this weird `-Xclang` option. However, this also emits an LLVM IR module flag, which will then cause linking issues.
This commit is contained in:
parent
f2ff298867
commit
2f41fa387d
@ -22,6 +22,7 @@ builtin_check_c_compiler_flag(-Wno-pedantic COMPILER_RT_HAS_WNO_PEDANTIC
|
||||
builtin_check_c_compiler_flag(-nogpulib COMPILER_RT_HAS_NOGPULIB_FLAG)
|
||||
builtin_check_c_compiler_flag(-flto COMPILER_RT_HAS_FLTO_FLAG)
|
||||
builtin_check_c_compiler_flag(-fconvergent-functions COMPILER_RT_HAS_FCONVERGENT_FUNCTIONS_FLAG)
|
||||
builtin_check_c_compiler_flag("-Xclang -mcode-object-version=none" COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG)
|
||||
builtin_check_c_compiler_flag(-Wbuiltin-declaration-mismatch COMPILER_RT_HAS_WBUILTIN_DECLARATION_MISMATCH_FLAG)
|
||||
builtin_check_c_compiler_flag(/Zl COMPILER_RT_HAS_ZL_FLAG)
|
||||
builtin_check_c_compiler_flag(-fcf-protection=full COMPILER_RT_HAS_FCF_PROTECTION_FLAG)
|
||||
|
@ -833,6 +833,12 @@ else ()
|
||||
append_list_if(COMPILER_RT_HAS_FLTO_FLAG -flto BUILTIN_CFLAGS)
|
||||
append_list_if(COMPILER_RT_HAS_FCONVERGENT_FUNCTIONS_FLAG
|
||||
-fconvergent-functions BUILTIN_CFLAGS)
|
||||
|
||||
# AMDGPU targets want to use a generic ABI.
|
||||
if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "amdgcn")
|
||||
append_list_if(COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG
|
||||
"SHELL:-Xclang -mcode-object-version=none" BUILTIN_CFLAGS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(BUILTIN_DEFS "")
|
||||
|
@ -215,6 +215,8 @@ function(_get_common_compile_options output_var flags)
|
||||
if(LIBC_CUDA_ROOT)
|
||||
list(APPEND compile_options "--cuda-path=${LIBC_CUDA_ROOT}")
|
||||
endif()
|
||||
elseif(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
|
||||
list(APPEND compile_options "SHELL:-Xclang -mcode-object-version=none")
|
||||
endif()
|
||||
endif()
|
||||
set(${output_var} ${compile_options} PARENT_SCOPE)
|
||||
|
@ -32,6 +32,8 @@ set(LIBCXX_TEST_CONFIG "amdgpu-libc++-shared.cfg.in" CACHE STRING "")
|
||||
set(LIBCXX_TEST_PARAMS "optimization=none;long_tests=False;executor=amdhsa-loader" CACHE STRING "")
|
||||
|
||||
# Necessary compile flags for AMDGPU.
|
||||
set(LIBCXX_ADDITIONAL_COMPILE_FLAGS "-nogpulib;-flto;-fconvergent-functions" CACHE STRING "")
|
||||
set(LIBCXXABI_ADDITIONAL_COMPILE_FLAGS "-nogpulib;-flto;-fconvergent-functions" CACHE STRING "")
|
||||
set(LIBCXX_ADDITIONAL_COMPILE_FLAGS
|
||||
"-nogpulib;-flto;-fconvergent-functions;SHELL:-Xclang -mcode-object-version=none" CACHE STRING "")
|
||||
set(LIBCXXABI_ADDITIONAL_COMPILE_FLAGS
|
||||
"-nogpulib;-flto;-fconvergent-functions;SHELL:-Xclang -mcode-object-version=none" CACHE STRING "")
|
||||
set(CMAKE_REQUIRED_FLAGS "-nogpulib" CACHE STRING "")
|
||||
|
@ -255,7 +255,7 @@ function(compileDeviceRTLLibrary target_name target_triple)
|
||||
endfunction()
|
||||
|
||||
add_custom_target(omptarget.devicertl.amdgpu)
|
||||
compileDeviceRTLLibrary(amdgpu amdgcn-amd-amdhsa)
|
||||
compileDeviceRTLLibrary(amdgpu amdgcn-amd-amdhsa -Xclang -mcode-object-version=none)
|
||||
|
||||
add_custom_target(omptarget.devicertl.nvptx)
|
||||
compileDeviceRTLLibrary(nvptx nvptx64-nvidia-cuda --cuda-feature=+ptx63)
|
||||
|
@ -20,6 +20,14 @@
|
||||
|
||||
using namespace ompx;
|
||||
|
||||
// FIXME: This resolves the handling for the AMDGPU workgroup size when the ABI
|
||||
// is set to 'none'. We only support COV5+ but this can be removed when COV4 is
|
||||
// fully deprecated.
|
||||
#ifdef __AMDGPU__
|
||||
extern const inline uint32_t __oclc_ABI_version = 500;
|
||||
[[gnu::alias("__oclc_ABI_version")]] const uint32_t __oclc_ABI_version__;
|
||||
#endif
|
||||
|
||||
static bool isInLastWarp() {
|
||||
uint32_t MainTId = (mapping::getNumberOfThreadsInBlock() - 1) &
|
||||
~(mapping::getWarpSize() - 1);
|
||||
|
16
offload/test/api/amdgpu_code_object.c
Normal file
16
offload/test/api/amdgpu_code_object.c
Normal file
@ -0,0 +1,16 @@
|
||||
// RUN: %libomptarget-compile-amdgcn-amd-amdhsa -Xclang \
|
||||
// RUN: -mcode-object-version=5
|
||||
// RUN: %libomptarget-run-amdgcn-amd-amdhsa | %fcheck-amdgcn-amd-amdhsa
|
||||
|
||||
// REQUIRES: amdgcn-amd-amdhsa
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// Test to make sure we can build and run with the previous COV.
|
||||
int main() {
|
||||
#pragma omp target
|
||||
;
|
||||
|
||||
// CHECK: PASS
|
||||
printf("PASS\n");
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user