/* * Check code emitted for a 64-bit comparison. * * The comparison should be done in pairs of ARM registers * because the Maverick's 64-bit comparison cmpdi only compares them * as signed, or as unsigned, according to a bit in its status register. * GCC expects a comparison to set the CCs to reflect both signed and unsigned * comparisons at once, to be selected by which conditional mode you then use. * * Setting the signed/unsigned bit in the status register is very painful, as * it has to be tranferred to ARM registers via a Maverick register, twiddled * and sent back the same way. */ typedef unsigned long long ui64; typedef long long int i64; i64 adddi3(i64 a, i64 b) { return a + b; } i64 subdi3(i64 a, i64 b) { return a - b; } i64 absdi2(i64 a) { return abs(a*a); } i64 negdi2(i64 a) { return -(a*a); }