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