|
7 | 7 | //===----------------------------------------------------------------------===// |
8 | 8 |
|
9 | 9 | #include <clc/clc.h> |
| 10 | +#include <clc/geometric/clc_cross.h> |
10 | 11 |
|
11 | 12 | _CLC_OVERLOAD _CLC_DEF float3 cross(float3 p0, float3 p1) { |
12 | | - return (float3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, |
13 | | - p0.x*p1.y - p0.y*p1.x); |
| 13 | + return __clc_cross(p0, p1); |
14 | 14 | } |
15 | 15 |
|
16 | 16 | _CLC_OVERLOAD _CLC_DEF float4 cross(float4 p0, float4 p1) { |
17 | | - return (float4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, |
18 | | - p0.x*p1.y - p0.y*p1.x, 0.f); |
| 17 | + return __clc_cross(p0, p1); |
19 | 18 | } |
20 | 19 |
|
21 | 20 | #ifdef cl_khr_fp64 |
22 | 21 | #pragma OPENCL EXTENSION cl_khr_fp64 : enable |
23 | 22 |
|
24 | 23 | _CLC_OVERLOAD _CLC_DEF double3 cross(double3 p0, double3 p1) { |
25 | | - return (double3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, |
26 | | - p0.x*p1.y - p0.y*p1.x); |
| 24 | + return __clc_cross(p0, p1); |
27 | 25 | } |
28 | 26 |
|
29 | 27 | _CLC_OVERLOAD _CLC_DEF double4 cross(double4 p0, double4 p1) { |
30 | | - return (double4)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z, |
31 | | - p0.x*p1.y - p0.y*p1.x, 0.f); |
| 28 | + return __clc_cross(p0, p1); |
32 | 29 | } |
| 30 | + |
| 31 | +#endif |
| 32 | + |
| 33 | +#ifdef cl_khr_fp16 |
| 34 | +#pragma OPENCL EXTENSION cl_khr_fp16 : enable |
| 35 | + |
| 36 | +_CLC_OVERLOAD _CLC_DEF half3 cross(half3 p0, half3 p1) { |
| 37 | + return __clc_cross(p0, p1); |
| 38 | +} |
| 39 | + |
| 40 | +_CLC_OVERLOAD _CLC_DEF half4 cross(half4 p0, half4 p1) { |
| 41 | + return __clc_cross(p0, p1); |
| 42 | +} |
| 43 | + |
33 | 44 | #endif |
0 commit comments