builtin_34_carry_mulhigh.c (1601B)
1 typedef unsigned int u32; 2 typedef int i32; 3 typedef unsigned long ulong; 4 typedef unsigned long long u64; 5 typedef long long i64; 6 7 int test_main(void) { 8 u32 carry32; 9 ulong carryl; 10 u64 carry64; 11 12 if (__builtin_addc(~0u, 1u, 0u, &carry32) != 0u || carry32 != 1u) return 1; 13 if (__builtin_addcll(~0ull, 0ull, 1ull, &carry64) != 0ull || 14 carry64 != 1ull) 15 return 2; 16 if (__builtin_subc(0u, 0u, 1u, &carry32) != ~0u || carry32 != 1u) return 3; 17 if (__builtin_subcll(0ull, 1ull, 0ull, &carry64) != ~0ull || 18 carry64 != 1ull) 19 return 4; 20 if (__builtin_addcl(~0ul, 0ul, 1ul, &carryl) != 0ul || carryl != 1ul) 21 return 9; 22 if (__builtin_subcl(0ul, 1ul, 0ul, &carryl) != ~0ul || carryl != 1ul) 23 return 10; 24 25 if (__builtin_kit_umul_high32(~0u, 2u) != 1u) return 5; 26 if (__builtin_kit_umul_high64(~0ull, 2ull) != 1ull) return 6; 27 if (__builtin_kit_smul_high32((i32)-2, (i32)3) != (i32)-1) return 7; 28 if (__builtin_kit_smul_high64((i64)-2, (i64)3) != (i64)-1) return 8; 29 if (__builtin_kit_umul_high32(0x80000000u, 0x80000000u) != 0x40000000u) 30 return 11; 31 if (__builtin_kit_umul_high64(0x8000000000000000ull, 32 0x8000000000000000ull) != 33 0x4000000000000000ull) 34 return 12; 35 if (__builtin_kit_umul_high64(~0ull, ~0ull) != ~1ull) return 13; 36 if (__builtin_kit_smul_high32((i32)0x80000000u, (i32)0x80000000u) != 37 (i32)0x40000000u) 38 return 14; 39 if (__builtin_kit_smul_high64((i64)0x8000000000000000ull, 40 (i64)0x8000000000000000ull) != 41 (i64)0x4000000000000000ull) 42 return 15; 43 return 42; 44 }