version 1.73, 2017/09/14 01:34:53 |
version 1.75, 2017/09/17 02:34:02 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/array.c,v 1.72 2017/08/31 08:08:25 ohara Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/array.c,v 1.74 2017/09/15 01:52:51 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
Line 2356 void red_by_vect(int m,unsigned int *p,unsigned int *r |
|
Line 2356 void red_by_vect(int m,unsigned int *p,unsigned int *r |
|
} |
} |
} |
} |
|
|
#if defined(__GNUC__) |
#if defined(__GNUC__) && SIZEOF_LONG==8 |
/* 128bit vector += UNIT vector(normalized) */ |
/* 64bit vector += UNIT vector(normalized) */ |
|
|
void red_by_vect128(int m, U128 *p,U128 *r,unsigned int hc,int len) |
void red_by_vect64(int m, U64 *p,unsigned int *c,U64 *r,unsigned int hc,int len) |
{ |
{ |
*p++ = 0; r++; len--; |
U64 t; |
for ( ; len; len--, r++, p++ ) |
|
if ( *r ) { |
/* (p[0],c[0]) is normalized */ |
*p += (((U64)(*r))*((U64)hc)); |
*p++ = 0; *c++ = 0; r++; len--; |
} |
for ( ; len; len--, r++, p++, c++ ) |
|
if ( *r ) { |
|
t = (*p)+(*r)*hc; |
|
if ( t < *p ) (*c)++; |
|
*p = t; |
|
} |
} |
} |
#endif |
#endif |
|
|