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