This patch series implements support for _BitInt(N) for the arm port.
I still have some failures in:
torture/bitint-82.c (uses mulbitint3 but not confirmed that's where the issue 
lies)
torture/bitint-83.c only at -O0 (the conversion to _BitInt(N+7) fails for 64 
bits and higher, the optimized dump code looks odd, specifically the signed bit 
handling:

  _1 = -x_3(D);
  _12 = (unsigned int) _1;
  _13 = _1 >> 32;
  _14 = (unsigned int) _13;
  _15 = (signed int) _14;
  _16 = _15 >> 31;                  <--- moves Signed bit to LSB  (in our run
                                         example this is 1 as the value was
                                         negated)
  _17 = (unsigned int) _16;
...
  _18 = (<unnamed-unsigned:7>) _17; <--- I think this leads to a uxtb of the
                                         value, but I think that's not what this
                                         should be doing since the ABI for Arm
                                         is to 'extend' the limbs to 32-bits.
                                         So maybe we ought to identify where
                                         this is being added?
  _19 = (unsigned int) _18;
  MEM[(unsigned int *)&bitint.6 + 8B] = _19;
...

FWIW this could be a redherring, but hopefully its' something to help find the 
issues.

I'll add ChangeLogs once these get some reviews.

Andre Vieira (3)
 bitint: fix inconsistency in bitint_precision_kind
 libgcc, bitint: do not use softfp_wrap for bitint and add build option
 arm: Add support for _BitInt(N)


Andre Vieira (3):
  bitint: fix inconsistency in bitint_precision_kind
  libgcc, bitint: do not use softfp_wrap for bitint and add build option
  arm: Add support for _BitInt(N)

-- 
2.34.1

Reply via email to