[Beignet] [PATCH 2/2] Backend: refine the geometry function
Song, Ruiling
ruiling.song at intel.com
Fri Mar 3 13:04:32 UTC 2017
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> rander
> Sent: Friday, March 3, 2017 4:17 PM
> To: beignet at lists.freedesktop.org
> Cc: Wang, Rander <rander.wang at intel.com>
> Subject: [Beignet] [PATCH 2/2] Backend: refine the geometry function
>
> Signed-off-by: rander <rander.wang at intel.com>
> ---
> backend/src/libocl/src/ocl_geometric.cl | 19 +++++++++++--------
> 1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/backend/src/libocl/src/ocl_geometric.cl
> b/backend/src/libocl/src/ocl_geometric.cl
> index af39ed3..346ef9e 100644
> --- a/backend/src/libocl/src/ocl_geometric.cl
> +++ b/backend/src/libocl/src/ocl_geometric.cl
> @@ -100,18 +100,21 @@ OVERLOADABLE float fast_length(float x) { return
> __gen_ocl_fabs(x); }
> OVERLOADABLE float fast_length(float2 x) { return sqrt(dot(x,x)); }
> OVERLOADABLE float fast_length(float3 x) { return sqrt(dot(x,x)); }
> OVERLOADABLE float fast_length(float4 x) { return sqrt(dot(x,x)); }
> -OVERLOADABLE float fast_distance(float x, float y) { return length(x-y); }
> -OVERLOADABLE float fast_distance(float2 x, float2 y) { return length(x-y); }
> -OVERLOADABLE float fast_distance(float3 x, float3 y) { return length(x-y); }
> -OVERLOADABLE float fast_distance(float4 x, float4 y) { return length(x-y); }
> +OVERLOADABLE float fast_distance(float x, float y) { return fast_length(x-y); }
> +OVERLOADABLE float fast_distance(float2 x, float2 y) { return fast_length(x-y); }
> +OVERLOADABLE float fast_distance(float3 x, float3 y) { return fast_length(x-y); }
> +OVERLOADABLE float fast_distance(float4 x, float4 y) { return fast_length(x-y); }
I am ok with above change.
> OVERLOADABLE float fast_normalize(float x) { return x > 0 ? 1.f : (x < 0 ? -1.f :
> 0.f); }
> OVERLOADABLE float2 fast_normalize(float2 x) { return x * rsqrt(dot(x, x)); }
> OVERLOADABLE float3 fast_normalize(float3 x) { return x * rsqrt(dot(x, x)); }
> OVERLOADABLE float4 fast_normalize(float4 x) { return x * rsqrt(dot(x, x)); }
>
> -OVERLOADABLE float3 cross(float3 v0, float3 v1) {
> - return v0.yzx*v1.zxy-v0.zxy*v1.yzx;
Any difference in the final generated code?
Ruiling
> +OVERLOADABLE float3 cross(float3 p0, float3 p1) {
> + return (float3)(p0.y*p1.z - p0.z*p1.y, p0.z*p1.x - p0.x*p1.z,
> + p0.x*p1.y - p0.y*p1.x);
> }
> -OVERLOADABLE float4 cross(float4 v0, float4 v1) {
> - return (float4)(v0.yzx*v1.zxy-v0.zxy*v1.yzx, 0.f);
> +OVERLOADABLE 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);
> +
> }
> --
> 2.7.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list