summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2014-03-21 16:21:58 +0000
committerTom Stellard <thomas.stellard@amd.com>2014-03-21 16:21:58 +0000
commit074e7a8ed082572f3e401693e1a3cb299b69bb1c (patch)
tree96f354338b44e6df102bb592e996d645c30f28d1
parent1583409e33c826d8b7d3706c3076e82cdef869f2 (diff)
downloadbcm5719-llvm-074e7a8ed082572f3e401693e1a3cb299b69bb1c.tar.gz
bcm5719-llvm-074e7a8ed082572f3e401693e1a3cb299b69bb1c.zip
Add cross for double3 and double4
Patch by: Jeroen Ketema Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 204477
-rw-r--r--libclc/generic/include/clc/geometric/cross.h5
-rw-r--r--libclc/generic/lib/geometric/cross.cl14
2 files changed, 19 insertions, 0 deletions
diff --git a/libclc/generic/include/clc/geometric/cross.h b/libclc/generic/include/clc/geometric/cross.h
index 74117c0ec45..eee0cc81bb9 100644
--- a/libclc/generic/include/clc/geometric/cross.h
+++ b/libclc/generic/include/clc/geometric/cross.h
@@ -1,2 +1,7 @@
_CLC_OVERLOAD _CLC_DECL float3 cross(float3 p0, float3 p1);
_CLC_OVERLOAD _CLC_DECL float4 cross(float4 p0, float4 p1);
+
+#ifdef cl_khr_fp64
+_CLC_OVERLOAD _CLC_DECL double3 cross(double3 p0, double3 p1);
+_CLC_OVERLOAD _CLC_DECL double4 cross(double4 p0, double4 p1);
+#endif
diff --git a/libclc/generic/lib/geometric/cross.cl b/libclc/generic/lib/geometric/cross.cl
index 4c1bc6f0346..3b4ca6cafae 100644
--- a/libclc/generic/lib/geometric/cross.cl
+++ b/libclc/generic/lib/geometric/cross.cl
@@ -9,3 +9,17 @@ _CLC_OVERLOAD _CLC_DEF float4 cross(float4 p0, float4 p1) {
return (float4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z,
p0.x*p1.y - p0.y*p1.x, 0.f);
}
+
+#ifdef cl_khr_fp64
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+
+_CLC_OVERLOAD _CLC_DEF double3 cross(double3 p0, double3 p1) {
+ return (double3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z,
+ p0.x*p1.y - p0.y*p1.x);
+}
+
+_CLC_OVERLOAD _CLC_DEF double4 cross(double4 p0, double4 p1) {
+ return (double4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z,
+ p0.x*p1.y - p0.y*p1.x, 0.f);
+}
+#endif
OpenPOWER on IntegriCloud