On 02 Oct 07:41, H.J. Lu wrote:
> On Thu, Oct 2, 2014 at 7:29 AM, Ilya Tocar <tocarip.in...@gmail.com> wrote:
> > Hi,
> >
> > sizeof (long) == 4 on windows, so we should use long long as param type.
> > Patch below does it.
> 
> The same is true for x32.  Can you add a testcase to show it
> fails on x32 without the fix?
>

This could only be done with runtime test.
I've had troubles running sde (emulator) on x32 enabled system,
but replacing long long with int in intrinsic signature will cause
adx-addcarryx64-2.c to fail under sde on 64 bits. I believe it will
also fail on sde+{win,x32} or real hardware, when it's available.

> > Ok for trunk?
> >
> > 2014-10-02  Ilya Tocar  <ilya.to...@intel.com>
> >
> >         * config/i386/adxintrin.h (_subborrow_u64): Use long long for param
> >         type.
> >         (_addcarry_u64): Ditto.
> >         (_addcarryx_u64): Ditto.
> >
> > ---
> >  gcc/config/i386/adxintrin.h | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/gcc/config/i386/adxintrin.h b/gcc/config/i386/adxintrin.h
> > index 8f2c01a..00a9b86 100644
> > --- a/gcc/config/i386/adxintrin.h
> > +++ b/gcc/config/i386/adxintrin.h
> > @@ -55,24 +55,24 @@ _addcarryx_u32 (unsigned char __CF, unsigned int __X,
> >  #ifdef __x86_64__
> >  extern __inline unsigned char
> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
> > -_subborrow_u64 (unsigned char __CF, unsigned long __X,
> > -               unsigned long __Y, unsigned long long *__P)
> > +_subborrow_u64 (unsigned char __CF, unsigned long long __X,
> > +               unsigned long long __Y, unsigned long long *__P)
> >  {
> >      return __builtin_ia32_sbb_u64 (__CF, __Y, __X, __P);
> >  }
> >
> >  extern __inline unsigned char
> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
> > -_addcarry_u64 (unsigned char __CF, unsigned long __X,
> > -              unsigned long __Y, unsigned long long *__P)
> > +_addcarry_u64 (unsigned char __CF, unsigned long long __X,
> > +              unsigned long long __Y, unsigned long long *__P)
> >  {
> >      return __builtin_ia32_addcarryx_u64 (__CF, __X, __Y, __P);
> >  }
> >
> >  extern __inline unsigned char
> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
> > -_addcarryx_u64 (unsigned char __CF, unsigned long __X,
> > -               unsigned long __Y, unsigned long long *__P)
> > +_addcarryx_u64 (unsigned char __CF, unsigned long long __X,
> > +               unsigned long long __Y, unsigned long long *__P)
> >  {
> >      return __builtin_ia32_addcarryx_u64 (__CF, __X, __Y, __P);
> >  }
> > --
> > 1.8.3.1
> >
> 
> 
> 
> -- 
> H.J.

Reply via email to