3 _CLC_OVERLOAD _CLC_DEF float dot
(float p0
, float p1
) {
7 _CLC_OVERLOAD _CLC_DEF float dot
(float2 p0
, float2 p1
) {
8 return p0.x
*p1.x
+ p0.y
*p1.y
;
11 _CLC_OVERLOAD _CLC_DEF float dot
(float3 p0
, float3 p1
) {
12 return p0.x
*p1.x
+ p0.y
*p1.y
+ p0.z
*p1.z
;
15 _CLC_OVERLOAD _CLC_DEF float dot
(float4 p0
, float4 p1
) {
16 return p0.x
*p1.x
+ p0.y
*p1.y
+ p0.z
*p1.z
+ p0.w
*p1.w
;
21 #pragma OPENCL EXTENSION cl_khr_fp64
: enable
23 _CLC_OVERLOAD _CLC_DEF double dot
(double p0
, double p1
) {
27 _CLC_OVERLOAD _CLC_DEF double dot
(double2 p0
, double2 p1
) {
28 return p0.x
*p1.x
+ p0.y
*p1.y
;
31 _CLC_OVERLOAD _CLC_DEF double dot
(double3 p0
, double3 p1
) {
32 return p0.x
*p1.x
+ p0.y
*p1.y
+ p0.z
*p1.z
;
35 _CLC_OVERLOAD _CLC_DEF double dot
(double4 p0
, double4 p1
) {
36 return p0.x
*p1.x
+ p0.y
*p1.y
+ p0.z
*p1.z
+ p0.w
*p1.w
;
43 #pragma OPENCL EXTENSION cl_khr_fp16
: enable
45 _CLC_OVERLOAD _CLC_DEF half dot
(half p0
, half p1
) {
49 _CLC_OVERLOAD _CLC_DEF half dot
(half2 p0
, half2 p1
) {
50 return p0.x
*p1.x
+ p0.y
*p1.y
;
53 _CLC_OVERLOAD _CLC_DEF half dot
(half3 p0
, half3 p1
) {
54 return p0.x
*p1.x
+ p0.y
*p1.y
+ p0.z
*p1.z
;
57 _CLC_OVERLOAD _CLC_DEF half dot
(half4 p0
, half4 p1
) {
58 return p0.x
*p1.x
+ p0.y
*p1.y
+ p0.z
*p1.z
+ p0.w
*p1.w
;