diff options
| author | Tom Stellard <thomas.stellard@amd.com> | 2014-03-21 16:21:58 +0000 | 
|---|---|---|
| committer | Tom Stellard <thomas.stellard@amd.com> | 2014-03-21 16:21:58 +0000 | 
| commit | 074e7a8ed082572f3e401693e1a3cb299b69bb1c (patch) | |
| tree | 96f354338b44e6df102bb592e996d645c30f28d1 | |
| parent | 1583409e33c826d8b7d3706c3076e82cdef869f2 (diff) | |
| download | bcm5719-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.h | 5 | ||||
| -rw-r--r-- | libclc/generic/lib/geometric/cross.cl | 14 | 
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  | 

