~pocl/pocl/trunk

« back to all changes in this revision

Viewing changes to lib/kernel/vecmathlib-pocl/cross.cl

  • Committer: Erik Schnetter
  • Date: 2013-08-17 16:11:57 UTC
  • Revision ID: eschnetter@perimeterinstitute.ca-20130817161157-pco7u3hv98nbg2uk
Move pocl-specific Vecmathlib code into a separate subdirectory

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
__attribute__((__overloadable__))
 
2
float4 cross(float4 p0, float4 p1)
 
3
{
 
4
  float4 r;
 
5
  r.x = p0.y*p1.z - p0.z*p1.y;
 
6
  r.y = p0.z*p1.x - p0.x*p1.z;
 
7
  r.z = p0.x*p1.y - p0.y*p1.x;
 
8
  r.w = 0.0f;
 
9
  return r;
 
10
}
 
11
 
 
12
__attribute__((__overloadable__))
 
13
float3 cross(float3 p0, float3 p1)
 
14
{
 
15
  float3 r;
 
16
  r.x = p0.y*p1.z - p0.z*p1.y;
 
17
  r.y = p0.z*p1.x - p0.x*p1.z;
 
18
  r.z = p0.x*p1.y - p0.y*p1.x;
 
19
  return r;
 
20
}
 
21
 
 
22
#ifdef cl_khr_fp64
 
23
__attribute__((__overloadable__))
 
24
double4 cross(double4 p0, double4 p1)
 
25
{
 
26
  double4 r;
 
27
  r.x = p0.y*p1.z - p0.z*p1.y;
 
28
  r.y = p0.z*p1.x - p0.x*p1.z;
 
29
  r.z = p0.x*p1.y - p0.y*p1.x;
 
30
  r.w = 0.0f;
 
31
  return r;
 
32
}
 
33
 
 
34
__attribute__((__overloadable__))
 
35
double3 cross(double3 p0, double3 p1)
 
36
{
 
37
  double3 r;
 
38
  r.x = p0.y*p1.z - p0.z*p1.y;
 
39
  r.y = p0.z*p1.x - p0.x*p1.z;
 
40
  r.z = p0.x*p1.y - p0.y*p1.x;
 
41
  return r;
 
42
}
 
43
#endif