[Beignet] [PATCH 3/5] Backend: Optimization internal math, use native
Grigore Lupescu
grigore.lupescu at intel.com
Wed May 25 19:16:59 UTC 2016
From: Grigore Lupescu <grigore.lupescu at intel.com>
Affected functions:
log
log2
log10
exp
exp2
Signed-off-by: Grigore Lupescu <grigore.lupescu at intel.com>
---
backend/src/libocl/tmpl/ocl_math.tmpl.cl | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.cl b/backend/src/libocl/tmpl/ocl_math.tmpl.cl
index 5744a0a..c262ae7 100644
--- a/backend/src/libocl/tmpl/ocl_math.tmpl.cl
+++ b/backend/src/libocl/tmpl/ocl_math.tmpl.cl
@@ -3417,6 +3417,10 @@ OVERLOADABLE float log(float x) {
if (__ocl_math_fastpath_flag)
return __gen_ocl_internal_fastpath_log(x);
+ /* Use native instruction when it has enough precision */
+ if((x > 0x1.1p0) || (x <= 0))
+ return __gen_ocl_internal_fastpath_log(x);
+
return __gen_ocl_internal_log(x);
}
@@ -3424,6 +3428,10 @@ OVERLOADABLE float log2(float x) {
if (__ocl_math_fastpath_flag)
return __gen_ocl_internal_fastpath_log2(x);
+ /* Use native instruction when it has enough precision */
+ if((x > 0x1.1p0) || (x <= 0))
+ return __gen_ocl_internal_fastpath_log2(x);
+
return __gen_ocl_internal_log2(x);
}
@@ -3431,6 +3439,10 @@ OVERLOADABLE float log10(float x) {
if (__ocl_math_fastpath_flag)
return __gen_ocl_internal_fastpath_log10(x);
+ /* Use native instruction when it has enough precision */
+ if((x > 0x1.1p0) || (x <= 0))
+ return __gen_ocl_internal_fastpath_log10(x);
+
return __gen_ocl_internal_log10(x);
}
@@ -3438,11 +3450,15 @@ OVERLOADABLE float exp(float x) {
if (__ocl_math_fastpath_flag)
return __gen_ocl_internal_fastpath_exp(x);
+ /* Use native instruction when it has enough precision */
+ if (x > -0x1.6p1 && x < 0x1.6p1)
+ return __gen_ocl_internal_fastpath_exp(x);
+
return __gen_ocl_internal_exp(x);
}
OVERLOADABLE float exp2(float x) {
- /* Use native/faster instruction when it has enough precision, exp2 always */
+ /* Use native instruction when it has enough precision, exp2 always */
return native_exp2(x);
}
--
2.5.0
More information about the Beignet
mailing list