From 634950819358e754e7dfb83a91f6c1d9253ba0e8 Mon Sep 17 00:00:00 2001 From: Show Liu Date: Mon, 22 Jun 2015 16:22:35 +0800 Subject: fixed the mul_hi() builtin function crash issue --- src/builtins/mul_hi.cl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/builtins/mul_hi.cl b/src/builtins/mul_hi.cl index 5b3368e..ad94af0 100644 --- a/src/builtins/mul_hi.cl +++ b/src/builtins/mul_hi.cl @@ -92,6 +92,36 @@ _CLC_OVERLOAD _CLC_DEF ulong mul_hi(ulong x, ulong y) return (f + (hadd(o, (i + (l>>32))) >> 31)); } +_CLC_OVERLOAD _CLC_DEF char mul_hi(char x, char y) +{ + return( (char)(((short)x * (short)y) >> 8)); +} + +_CLC_OVERLOAD _CLC_DEF uchar mul_hi(uchar x, uchar y) +{ + return( (char)(((ushort)x * (ushort)y) >> 8)); +} + +_CLC_OVERLOAD _CLC_DEF short mul_hi(short x, short y) +{ + return( (short)(((int)x * (int)y) >> 16)); +} + +_CLC_OVERLOAD _CLC_DEF ushort mul_hi(ushort x, ushort y) +{ + return( (ushort)(((uint)x * (uint)y) >> 16)); +} + +_CLC_OVERLOAD _CLC_DEF int mul_hi(int x, int y) +{ + return( (int)(((long)x * (long)y) >> 32)); +} + +_CLC_OVERLOAD _CLC_DEF uint mul_hi(uint x, uint y) +{ + return( (uint)(((ulong)x * (ulong)y) >> 32)); +} + BINARY_VEC_DEF(char, char, mul_hi, mul_hi) BINARY_VEC_DEF(uchar, uchar, mul_hi, mul_hi) BINARY_VEC_DEF(short, short, mul_hi, mul_hi) -- cgit v1.2.3