[Beignet] [PATCH] enable unsigned 64bit version of "abs_diff"
Zhigang Gong
zhigang.gong at linux.intel.com
Mon Aug 19 00:50:07 PDT 2013
LGTM, pushed, thanks.
On Mon, Aug 19, 2013 at 10:38:00AM +0800, Homer Hsing wrote:
> tested by piglit,
>
> piglit/framework/../bin/cl-program-tester generated_tests/cl/builtin/int/builtin-ulong-abs_diff-1.0.generated.cl
>
> piglit test case passed.
>
> Signed-off-by: Homer Hsing <homer.xing at intel.com>
> ---
> backend/src/backend/gen_context.cpp | 10 ++++++++++
> backend/src/ocl_stdlib.tmpl.h | 2 +-
> 2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/backend/src/backend/gen_context.cpp b/backend/src/backend/gen_context.cpp
> index fcd16ec..8d4bc7a 100644
> --- a/backend/src/backend/gen_context.cpp
> +++ b/backend/src/backend/gen_context.cpp
> @@ -562,8 +562,11 @@ namespace gbe
> loadBottomHalf(tmp1, src1);
> p->CMP(insn.extra.function, tmp0, tmp1);
> saveFlag(f3, 0, 1);
> + p->push();
> + p->curr.execWidth = 1;
> p->AND(f2, f2, f3);
> p->OR(f1, f1, f2);
> + p->pop();
> break;
> case GEN_CONDITIONAL_EQ:
> p->CMP(GEN_CONDITIONAL_EQ, tmp0, tmp1);
> @@ -573,7 +576,10 @@ namespace gbe
> loadBottomHalf(tmp1, src1);
> p->CMP(GEN_CONDITIONAL_EQ, tmp0, tmp1);
> saveFlag(f2, 0, 1);
> + p->push();
> + p->curr.execWidth = 1;
> p->AND(f1, f1, f2);
> + p->pop();
> break;
> case GEN_CONDITIONAL_NEQ:
> p->CMP(GEN_CONDITIONAL_NEQ, tmp0, tmp1);
> @@ -583,12 +589,16 @@ namespace gbe
> loadBottomHalf(tmp1, src1);
> p->CMP(GEN_CONDITIONAL_NEQ, tmp0, tmp1);
> saveFlag(f2, 0, 1);
> + p->push();
> + p->curr.execWidth = 1;
> p->OR(f1, f1, f2);
> + p->pop();
> break;
> default:
> NOT_IMPLEMENTED;
> }
> saveFlag(f2, flag, subFlag);
> + p->curr.execWidth = 1;
> p->AND(f1, f1, f2);
> p->MOV(GenRegister::flag(flag, subFlag), f1);
> p->pop();
> diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h
> index 8d4220c..59c0f6b 100644
> --- a/backend/src/ocl_stdlib.tmpl.h
> +++ b/backend/src/ocl_stdlib.tmpl.h
> @@ -511,7 +511,7 @@ INLINE_OVERLOADABLE ulong abs_diff (long x, long y) {
> return 0;
> }
> INLINE_OVERLOADABLE ulong abs_diff (ulong x, ulong y) {
> - return 0;
> + return y > x ? (y - x) : (x - y);
> }
>
> /////////////////////////////////////////////////////////////////////////////
> --
> 1.8.1.2
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list