1 /* { dg-options "-fdata-sections" } */
3 typedef unsigned char unit
;
5 extern short global_precision
;
6 typedef __SIZE_TYPE__
size_t;
7 extern void *memcpy (void *dest
, const void *src
, size_t n
);
9 short mp_compare(const unit
* r1
, const unit
* r2
)
11 register short precision
;
12 precision
= global_precision
;
13 (r1
) = ((r1
)+(precision
)-1);
14 (r2
) = ((r2
)+(precision
)-1);
18 if (*((r1
)--) > *((r2
)--))
20 } while (--precision
);
23 static unit modulus
[((1280+(2*8))/8)];
24 static unit d_data
[((1280+(2*8))/8)*2];
26 int upton_modmult (unitptr prod
, unitptr multiplicand
, unitptr multiplier
)
29 while (mp_compare(d
,modulus
) > 0)
30 memcpy((void*)(prod
), (const void*)(d
), (global_precision
));