From 291bfff5dbb70360730e91b4019f8080e4e3d7f5 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Tue, 15 Sep 2020 13:01:04 -0400 Subject: libclc: Add a __builtin to let SPIRV targets select between SW and HW FMA Reviewer: jenatali jvesely Differential Revision: https://reviews.llvm.org/D85910 --- libclc/generic/lib/math/math.h | 3 +++ libclc/spirv/lib/math/fma.cl | 5 +++++ libclc/spirv64/lib/math/fma.cl | 5 +++++ 3 files changed, 13 insertions(+) (limited to 'libclc') diff --git a/libclc/generic/lib/math/math.h b/libclc/generic/lib/math/math.h index c931d19..351e37d 100644 --- a/libclc/generic/lib/math/math.h +++ b/libclc/generic/lib/math/math.h @@ -40,6 +40,9 @@ #if (defined __AMDGCN__ || defined __R600__) && !defined __HAS_FMAF__ #define HAVE_HW_FMA32() (0) +#elif defined CLC_SPIRV || defined CLC_SPIRV64 +bool __attribute__((noinline)) __clc_runtime_has_hw_fma32(void); +#define HAVE_HW_FMA32() __clc_runtime_has_hw_fma32() #else #define HAVE_HW_FMA32() (1) #endif diff --git a/libclc/spirv/lib/math/fma.cl b/libclc/spirv/lib/math/fma.cl index 982ddc4..7914242 100644 --- a/libclc/spirv/lib/math/fma.cl +++ b/libclc/spirv/lib/math/fma.cl @@ -4,3 +4,8 @@ #define __CLC_BODY #define __FLOAT_ONLY #include + +bool __clc_runtime_has_hw_fma32() +{ + return false; +} diff --git a/libclc/spirv64/lib/math/fma.cl b/libclc/spirv64/lib/math/fma.cl index 982ddc4..7914242 100644 --- a/libclc/spirv64/lib/math/fma.cl +++ b/libclc/spirv64/lib/math/fma.cl @@ -4,3 +4,8 @@ #define __CLC_BODY #define __FLOAT_ONLY #include + +bool __clc_runtime_has_hw_fma32() +{ + return false; +} -- cgit v1.1