kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

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 }