aboutsummaryrefslogtreecommitdiff
path: root/libclc/clc/lib/spirv
diff options
context:
space:
mode:
Diffstat (limited to 'libclc/clc/lib/spirv')
-rw-r--r--libclc/clc/lib/spirv/SOURCES2
-rw-r--r--libclc/clc/lib/spirv/math/clc_fmax.cl32
-rw-r--r--libclc/clc/lib/spirv/math/clc_fmin.cl32
3 files changed, 66 insertions, 0 deletions
diff --git a/libclc/clc/lib/spirv/SOURCES b/libclc/clc/lib/spirv/SOURCES
index cd6e0b2..07bc7aa 100644
--- a/libclc/clc/lib/spirv/SOURCES
+++ b/libclc/clc/lib/spirv/SOURCES
@@ -1 +1,3 @@
+math/clc_fmax.cl
+math/clc_fmin.cl
math/clc_runtime_has_hw_fma32.cl
diff --git a/libclc/clc/lib/spirv/math/clc_fmax.cl b/libclc/clc/lib/spirv/math/clc_fmax.cl
new file mode 100644
index 0000000..be660fe
--- /dev/null
+++ b/libclc/clc/lib/spirv/math/clc_fmax.cl
@@ -0,0 +1,32 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <clc/clcmacro.h>
+#include <clc/internal/clc.h>
+
+_CLC_DEF _CLC_OVERLOAD float __clc_fmax(float x, float y) {
+ return __builtin_fmaxf(x, y);
+}
+
+#ifdef cl_khr_fp64
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+_CLC_DEF _CLC_OVERLOAD double __clc_fmax(double x, double y) {
+ return __builtin_fmax(x, y);
+}
+#endif
+
+#ifdef cl_khr_fp16
+#pragma OPENCL EXTENSION cl_khr_fp16 : enable
+_CLC_DEF _CLC_OVERLOAD half __clc_fmax(half x, half y) {
+ return __builtin_fmaxf16(x, y);
+}
+#endif
+
+#define FUNCTION __clc_fmax
+#define __CLC_BODY <clc/shared/binary_def_scalarize.inc>
+#include <clc/math/gentype.inc>
diff --git a/libclc/clc/lib/spirv/math/clc_fmin.cl b/libclc/clc/lib/spirv/math/clc_fmin.cl
new file mode 100644
index 0000000..9f3fa66
--- /dev/null
+++ b/libclc/clc/lib/spirv/math/clc_fmin.cl
@@ -0,0 +1,32 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <clc/clcmacro.h>
+#include <clc/internal/clc.h>
+
+_CLC_DEF _CLC_OVERLOAD float __clc_fmin(float x, float y) {
+ return __builtin_fminf(x, y);
+}
+
+#ifdef cl_khr_fp64
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+_CLC_DEF _CLC_OVERLOAD double __clc_fmin(double x, double y) {
+ return __builtin_fmin(x, y);
+}
+#endif
+
+#ifdef cl_khr_fp16
+#pragma OPENCL EXTENSION cl_khr_fp16 : enable
+_CLC_DEF _CLC_OVERLOAD half __clc_fmin(half x, half y) {
+ return __builtin_fminf16(x, y);
+}
+#endif
+
+#define FUNCTION __clc_fmin
+#define __CLC_BODY <clc/shared/binary_def_scalarize.inc>
+#include <clc/math/gentype.inc>