[llvm-branch-commits] [clang] be40c12 - [HIP] Add signbit(long double) decl
Author: Aaron En Ye Shi Date: 2021-01-14T18:23:37Z New Revision: be40c12040a0d5551bf3430cbb184b5ef23e25fd URL: https://github.com/llvm/llvm-project/commit/be40c12040a0d5551bf3430cbb184b5ef23e25fd DIFF: https://github.com/llvm/llvm-project/commit/be40c12040a0d5551bf3430cbb184b5ef23e25fd.diff LOG: [HIP] Add signbit(long double) decl An _MSC_VER version of signbit(long double) is required for MSVC headers. Fixes: SWDEV-256409 Differential Revision: https://reviews.llvm.org/D93062 Added: Modified: clang/lib/Headers/__clang_cuda_math_forward_declares.h Removed: diff --git a/clang/lib/Headers/__clang_cuda_math_forward_declares.h b/clang/lib/Headers/__clang_cuda_math_forward_declares.h index 8a270859e4a5..c0f1f47cc993 100644 --- a/clang/lib/Headers/__clang_cuda_math_forward_declares.h +++ b/clang/lib/Headers/__clang_cuda_math_forward_declares.h @@ -160,6 +160,9 @@ __DEVICE__ double scalbln(double, long); __DEVICE__ float scalbln(float, long); __DEVICE__ double scalbn(double, int); __DEVICE__ float scalbn(float, int); +#ifdef _MSC_VER +__DEVICE__ bool signbit(long double); +#endif __DEVICE__ bool signbit(double); __DEVICE__ bool signbit(float); __DEVICE__ double sin(double); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] b2524eb - [HIP] Fix HIP rounding math intrinsics
Author: Aaron En Ye Shi Date: 2020-10-22T15:57:09Z New Revision: b2524eb9445a4487115c8f94fd946d2c4c95f652 URL: https://github.com/llvm/llvm-project/commit/b2524eb9445a4487115c8f94fd946d2c4c95f652 DIFF: https://github.com/llvm/llvm-project/commit/b2524eb9445a4487115c8f94fd946d2c4c95f652.diff LOG: [HIP] Fix HIP rounding math intrinsics The __ocml_*_rte_f32 and __ocml_*_rte_f64 functions are not available if OCML_BASIC_ROUNDED_OPERATIONS is not defined. Reviewed By: b-sumner, yaxunl Fixes: SWDEV-257235 Differential Revision: https://reviews.llvm.org/D89966 Added: Modified: clang/lib/Headers/__clang_hip_math.h Removed: diff --git a/clang/lib/Headers/__clang_hip_math.h b/clang/lib/Headers/__clang_hip_math.h index f2365e8844fe..14d91c66b352 100644 --- a/clang/lib/Headers/__clang_hip_math.h +++ b/clang/lib/Headers/__clang_hip_math.h @@ -547,102 +547,117 @@ float __expf(float __x) { return __ocml_native_exp_f32(__x); } #if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fadd_rd(float __x, float __y) { return __ocml_add_rtn_f32(__x, __y); } -#endif __DEVICE__ float __fadd_rn(float __x, float __y) { return __ocml_add_rte_f32(__x, __y); } -#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fadd_ru(float __x, float __y) { return __ocml_add_rtp_f32(__x, __y); } - __DEVICE__ float __fadd_rz(float __x, float __y) { return __ocml_add_rtz_f32(__x, __y); } +#else +__DEVICE__ +float __fadd_rn(float __x, float __y) { return __x + __y; } +#endif +#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fdiv_rd(float __x, float __y) { return __ocml_div_rtn_f32(__x, __y); } -#endif __DEVICE__ float __fdiv_rn(float __x, float __y) { return __ocml_div_rte_f32(__x, __y); } -#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fdiv_ru(float __x, float __y) { return __ocml_div_rtp_f32(__x, __y); } - __DEVICE__ float __fdiv_rz(float __x, float __y) { return __ocml_div_rtz_f32(__x, __y); } +#else +__DEVICE__ +float __fdiv_rn(float __x, float __y) { return __x / __y; } #endif + __DEVICE__ float __fdividef(float __x, float __y) { return __x / __y; } + #if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fmaf_rd(float __x, float __y, float __z) { return __ocml_fma_rtn_f32(__x, __y, __z); } -#endif __DEVICE__ float __fmaf_rn(float __x, float __y, float __z) { return __ocml_fma_rte_f32(__x, __y, __z); } -#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fmaf_ru(float __x, float __y, float __z) { return __ocml_fma_rtp_f32(__x, __y, __z); } - __DEVICE__ float __fmaf_rz(float __x, float __y, float __z) { return __ocml_fma_rtz_f32(__x, __y, __z); } +#else +__DEVICE__ +float __fmaf_rn(float __x, float __y, float __z) { + return __ocml_fma_f32(__x, __y, __z); +} +#endif +#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fmul_rd(float __x, float __y) { return __ocml_mul_rtn_f32(__x, __y); } -#endif __DEVICE__ float __fmul_rn(float __x, float __y) { return __ocml_mul_rte_f32(__x, __y); } -#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fmul_ru(float __x, float __y) { return __ocml_mul_rtp_f32(__x, __y); } - __DEVICE__ float __fmul_rz(float __x, float __y) { return __ocml_mul_rtz_f32(__x, __y); } - +#else __DEVICE__ -float __frcp_rd(float __x) { return __llvm_amdgcn_rcp_f32(__x); } +float __fmul_rn(float __x, float __y) { return __x * __y; } #endif -__DEVICE__ -float __frcp_rn(float __x) { return __llvm_amdgcn_rcp_f32(__x); } + #if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ -float __frcp_ru(float __x) { return __llvm_amdgcn_rcp_f32(__x); } - +float __frcp_rd(float __x) { return __ocml_div_rtn_f32(1.0f, __x); } +__DEVICE__ +float __frcp_rn(float __x) { return __ocml_div_rte_f32(1.0f, __x); } __DEVICE__ -float __frcp_rz(float __x) { return __llvm_amdgcn_rcp_f32(__x); } +float __frcp_ru(float __x) { return __ocml_div_rtp_f32(1.0f, __x); } +__DEVICE__ +float __frcp_rz(float __x) { return __ocml_div_rtz_f32(1.0f, __x); } +#else +__DEVICE__ +float __frcp_rn(float __x) { return 1.0f / __x; } #endif + __DEVICE__ float __frsqrt_rn(float __x) { return __llvm_amdgcn_rsq_f32(__x); } + #if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fsqrt_rd(float __x) { return __ocml_sqrt_rtn_f32(__x); } -#endif __DEVICE__ float __fsqrt_rn(float __x) { return __ocml_sqrt_rte_f32(__x); } -#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fsqrt_ru(float __x) { return __ocml_sqrt_rtp_f32(__x); } - __DEVICE__ float __fsqrt_rz(float __x) { return __ocml_sqrt_rtz_f32(__x); } +#else +__DEVICE__ +float __fsqrt_rn(float __x) { return __ocml_native_sqrt_f32(__x); } +#endif +#if defined OCML_BASIC_ROUNDED_OPERATIONS __DEVICE__ float __fsub_rd(float __x, float __y) { return __ocml_sub_rtn_f32(__x, __y); } -#endif __DEVICE__ float __fsub_rn(float __x, float __y) { return __ocml_sub_rte_f32(__x, _
[llvm-branch-commits] [clang] f89e9c8 - [HIP] Fix HIP test on windows due to lld suffix
Author: Aaron En Ye Shi Date: 2020-11-30T21:05:26Z New Revision: f89e9c8201ea5a5b63af854c92ed26bc7ab4b8db URL: https://github.com/llvm/llvm-project/commit/f89e9c8201ea5a5b63af854c92ed26bc7ab4b8db DIFF: https://github.com/llvm/llvm-project/commit/f89e9c8201ea5a5b63af854c92ed26bc7ab4b8db.diff LOG: [HIP] Fix HIP test on windows due to lld suffix On Windows, lld is instead named lld.exe, therefore a few HIP tests are failing. Instead the wildcard should be modified to .*lld.* to handle .exe. This fixes the bug: https://bugs.llvm.org/show_bug.cgi?id=48289. Differential Revision: https://reviews.llvm.org/D92342 Added: Modified: clang/test/Driver/hip-toolchain-rdc-static-lib.hip clang/test/Driver/hip-toolchain-rdc.hip Removed: diff --git a/clang/test/Driver/hip-toolchain-rdc-static-lib.hip b/clang/test/Driver/hip-toolchain-rdc-static-lib.hip index dc29b0f87e36..533d3457d5b4 100644 --- a/clang/test/Driver/hip-toolchain-rdc-static-lib.hip +++ b/clang/test/Driver/hip-toolchain-rdc-static-lib.hip @@ -47,7 +47,7 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: [[LLD: ".*lld"]] {{.*}} "-o" "[[IMG_DEV1:.*out]]" [[A_BC1]] [[B_BC1]] +// CHECK: [[LLD: ".*lld.*"]] {{.*}} "-o" "[[IMG_DEV1:.*out]]" [[A_BC1]] [[B_BC1]] // generate image for device side path on gfx900 // CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" @@ -78,6 +78,6 @@ // CHECK-SAME: "-targets={{.*}},hip-amdgcn-amd-amdhsa-gfx803,hip-amdgcn-amd-amdhsa-gfx900" // CHECK-SAME: "-inputs={{.*}},[[IMG_DEV1]],[[IMG_DEV2]]" "-outputs=[[BUNDLE:.*hipfb]]" -// CHECK: [[MC:".*llvm-mc"]] "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin" "--filetype=obj" +// CHECK: [[MC:".*llvm-mc.*"]] "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin" "--filetype=obj" // CHECK: [[AR:".*llvm-ar.*"]] "rcsD" "{{.*}}.out" [[A_OBJ_HOST]] [[B_OBJ_HOST]] [[OBJBUNDLE]] diff --git a/clang/test/Driver/hip-toolchain-rdc.hip b/clang/test/Driver/hip-toolchain-rdc.hip index 8d8e67514035..d6d47ec1b07e 100644 --- a/clang/test/Driver/hip-toolchain-rdc.hip +++ b/clang/test/Driver/hip-toolchain-rdc.hip @@ -95,7 +95,7 @@ // CHECK-SAME: "-targets={{.*}},hip-amdgcn-amd-amdhsa-gfx803,hip-amdgcn-amd-amdhsa-gfx900" // CHECK-SAME: "-inputs={{.*}},[[IMG_DEV1]],[[IMG_DEV2]]" "-outputs=[[BUNDLE:.*hipfb]]" -// CHECK: [[MC:".*llvm-mc"]] "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin" "--filetype=obj" +// CHECK: [[MC:".*llvm-mc.*"]] "-o" [[OBJBUNDLE:".*o"]] "{{.*}}.mcin" "--filetype=obj" // output the executable // CHECK: [[LD:".*ld.*"]] {{.*}}"-o" "a.out" {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]] [[OBJBUNDLE]] ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] cd5897d - [HIP] Fix static-lib test CHECK bug
Author: Aaron En Ye Shi Date: 2020-12-01T15:49:39Z New Revision: cd5897d55908827faf3e16c505bd79732a8f6eb6 URL: https://github.com/llvm/llvm-project/commit/cd5897d55908827faf3e16c505bd79732a8f6eb6 DIFF: https://github.com/llvm/llvm-project/commit/cd5897d55908827faf3e16c505bd79732a8f6eb6.diff LOG: [HIP] Fix static-lib test CHECK bug Fix hip test failures that were introduced by previous changes to hip-toolchain-rdc-static-lib.hip test. The .*lld.* is matching a longer string than expected. Differential Revision: https://reviews.llvm.org/D92342 Added: Modified: clang/test/Driver/hip-toolchain-rdc-static-lib.hip Removed: diff --git a/clang/test/Driver/hip-toolchain-rdc-static-lib.hip b/clang/test/Driver/hip-toolchain-rdc-static-lib.hip index 533d3457d5b4..b698ec763249 100644 --- a/clang/test/Driver/hip-toolchain-rdc-static-lib.hip +++ b/clang/test/Driver/hip-toolchain-rdc-static-lib.hip @@ -47,7 +47,9 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: [[LLD: ".*lld.*"]] {{.*}} "-o" "[[IMG_DEV1:.*out]]" [[A_BC1]] [[B_BC1]] +// CHECK: [[LLD: ".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// CHECK-SAME: "-plugin-opt=mcpu=gfx803" +// CHECK-SAME: "-o" "[[IMG_DEV1:.*out]]" [[A_BC1]] [[B_BC1]] // generate image for device side path on gfx900 // CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" @@ -71,7 +73,9 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: [[LLD]] {{.*}} "-o" "[[IMG_DEV2:.*out]]" [[A_BC2]] [[B_BC2]] +// CHECK: [[LLD]] {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// CHECK-SAME: "-plugin-opt=mcpu=gfx900" +// CHECK-SAME: "-o" "[[IMG_DEV2:.*out]]" [[A_BC2]] [[B_BC2]] // combine images generated into hip fat binary object // CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o" ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] ba2612c - [HIP] cmath demote long double args to double
Author: Aaron En Ye Shi Date: 2020-12-03T23:00:14Z New Revision: ba2612ce01eae5859ae7adb99161775fb2c4e0b2 URL: https://github.com/llvm/llvm-project/commit/ba2612ce01eae5859ae7adb99161775fb2c4e0b2 DIFF: https://github.com/llvm/llvm-project/commit/ba2612ce01eae5859ae7adb99161775fb2c4e0b2.diff LOG: [HIP] cmath demote long double args to double Since there is no ROCm Device Library support for long double, demote them to double, and use the fp64 math functions. Differential Revision: https://reviews.llvm.org/D92130 Added: Modified: clang/lib/Headers/__clang_hip_cmath.h Removed: diff --git a/clang/lib/Headers/__clang_hip_cmath.h b/clang/lib/Headers/__clang_hip_cmath.h index 00519a9795bc..3a702587ee17 100644 --- a/clang/lib/Headers/__clang_hip_cmath.h +++ b/clang/lib/Headers/__clang_hip_cmath.h @@ -224,6 +224,8 @@ template struct __numeric_type { static double __test(long long); static double __test(unsigned long long); static double __test(double); + // No support for long double, use double instead. + static double __test(long double); typedef decltype(__test(std::declval<_Tp>())) type; static const bool value = !std::is_same::value; ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits