[Beignet] [PATCH 1/7] replace fabs with llvm intrinsic.

Zhigang Gong zhigang.gong at linux.intel.com
Thu Mar 12 01:22:34 PDT 2015


The whole patchset LGTM, will push latter, thanks.

On Tue, Mar 10, 2015 at 01:59:42PM +0800, xionghu.luo at intel.com wrote:
> From: Luo Xionghu <xionghu.luo at intel.com>
> 
> translate native fabs to llvm.fabs for fast path.
> 
> Signed-off-by: Luo Xionghu <xionghu.luo at intel.com>
> ---
>  backend/src/libocl/tmpl/ocl_math.tmpl.cl   | 2 +-
>  backend/src/llvm/llvm_gen_backend.cpp      | 2 --
>  backend/src/llvm/llvm_gen_ocl_function.hxx | 1 -
>  3 files changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.cl b/backend/src/libocl/tmpl/ocl_math.tmpl.cl
> index 2ed7b31..681e70c 100644
> --- a/backend/src/libocl/tmpl/ocl_math.tmpl.cl
> +++ b/backend/src/libocl/tmpl/ocl_math.tmpl.cl
> @@ -23,7 +23,7 @@
>  
>  extern constant int __ocl_math_fastpath_flag;
>  
> -PURE CONST float __gen_ocl_fabs(float x);
> +CONST float __gen_ocl_fabs(float x) __asm("llvm.fabs" ".f32");
>  CONST float __gen_ocl_sin(float x) __asm("llvm.sin" ".f32");
>  CONST float __gen_ocl_cos(float x) __asm("llvm.cos" ".f32");
>  CONST float __gen_ocl_sqrt(float x) __asm("llvm.sqrt" ".f32");
> diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp
> index c0ff1d1..a42ee40 100644
> --- a/backend/src/llvm/llvm_gen_backend.cpp
> +++ b/backend/src/llvm/llvm_gen_backend.cpp
> @@ -2673,7 +2673,6 @@ namespace gbe
>        case GEN_OCL_POW:
>        case GEN_OCL_RCP:
>        case GEN_OCL_ABS:
> -      case GEN_OCL_FABS:
>        case GEN_OCL_RNDZ:
>        case GEN_OCL_RNDE:
>        case GEN_OCL_RNDU:
> @@ -3077,7 +3076,6 @@ namespace gbe
>            }
>            case GEN_OCL_RSQ: this->emitUnaryCallInst(I,CS,ir::OP_RSQ); break;
>            case GEN_OCL_RCP: this->emitUnaryCallInst(I,CS,ir::OP_RCP); break;
> -          case GEN_OCL_FABS: this->emitUnaryCallInst(I,CS,ir::OP_ABS); break;
>            case GEN_OCL_RNDZ: this->emitUnaryCallInst(I,CS,ir::OP_RNDZ); break;
>            case GEN_OCL_RNDE: this->emitUnaryCallInst(I,CS,ir::OP_RNDE); break;
>            case GEN_OCL_RNDU: this->emitUnaryCallInst(I,CS,ir::OP_RNDU); break;
> diff --git a/backend/src/llvm/llvm_gen_ocl_function.hxx b/backend/src/llvm/llvm_gen_ocl_function.hxx
> index 45358d0..8e37df9 100644
> --- a/backend/src/llvm/llvm_gen_ocl_function.hxx
> +++ b/backend/src/llvm/llvm_gen_ocl_function.hxx
> @@ -19,7 +19,6 @@ DECL_LLVM_GEN_FUNCTION(GET_GLOBAL_OFFSET2, __gen_ocl_get_global_offset2)
>  DECL_LLVM_GEN_FUNCTION(GET_WORK_DIM, __gen_ocl_get_work_dim)
>  
>  // Math function
> -DECL_LLVM_GEN_FUNCTION(FABS, __gen_ocl_fabs)
>  DECL_LLVM_GEN_FUNCTION(RSQ, __gen_ocl_rsqrt)
>  DECL_LLVM_GEN_FUNCTION(POW, __gen_ocl_pow)
>  DECL_LLVM_GEN_FUNCTION(RCP, __gen_ocl_rcp)
> -- 
> 1.9.1
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list