Home | History | Annotate | Download | only in Unit
      1 //===-- ashlti3_test.c - Test __ashlti3 -----------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file tests __ashlti3 for the compiler_rt library.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #if __x86_64
     15 
     16 #include "int_lib.h"
     17 #include <stdio.h>
     18 
     19 // Returns: a << b
     20 
     21 // Precondition:  0 <= b < bits_in_tword
     22 
     23 ti_int __ashlti3(ti_int a, si_int b);
     24 
     25 int test__ashlti3(ti_int a, si_int b, ti_int expected)
     26 {
     27     ti_int x = __ashlti3(a, b);
     28     if (x != expected)
     29     {
     30         twords at;
     31         at.all = a;
     32         twords bt;
     33         bt.all = b;
     34         twords xt;
     35         xt.all = x;
     36         twords expectedt;
     37         expectedt.all = expected;
     38         printf("error in __ashlti3: 0x%llX%.16llX << %d = 0x%llX%.16llX,"
     39                " expected 0x%llX%.16llX\n",
     40                 at.s.high, at.s.low, b, xt.s.high, xt.s.low,
     41                 expectedt.s.high, expectedt.s.low);
     42     }
     43     return x != expected;
     44 }
     45 
     46 char assumption_1[sizeof(ti_int) == 2*sizeof(di_int)] = {0};
     47 
     48 #endif
     49 
     50 int main()
     51 {
     52 #if __x86_64
     53     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 0,
     54                       make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL)))
     55         return 1;
     56     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 1,
     57                       make_ti(0xFDB97530ECA8642BLL, 0xFDB97530ECA8642ALL)))
     58         return 1;
     59     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 2,
     60                       make_ti(0xFB72EA61D950C857LL, 0XFB72EA61D950C854LL)))
     61         return 1;
     62     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 3,
     63                       make_ti(0xF6E5D4C3B2A190AFLL, 0xF6E5D4C3B2A190A8LL)))
     64         return 1;
     65     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 4,
     66                       make_ti(0xEDCBA9876543215FLL, 0xEDCBA98765432150LL)))
     67         return 1;
     68 
     69     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 28,
     70                       make_ti(0x876543215FEDCBA9LL, 0x8765432150000000LL)))
     71         return 1;
     72     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 29,
     73                       make_ti(0x0ECA8642BFDB9753LL, 0x0ECA8642A0000000LL)))
     74         return 1;
     75     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 30,
     76                       make_ti(0x1D950C857FB72EA6LL, 0x1D950C8540000000LL)))
     77         return 1;
     78     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 31,
     79                       make_ti(0x3B2A190AFF6E5D4CLL, 0x3B2A190A80000000LL)))
     80         return 1;
     81 
     82     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 32,
     83                       make_ti(0x76543215FEDCBA98LL, 0x7654321500000000LL)))
     84         return 1;
     85 
     86     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 33,
     87                       make_ti(0xECA8642BFDB97530LL, 0xECA8642A00000000LL)))
     88         return 1;
     89     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 34,
     90                       make_ti(0xD950C857FB72EA61LL, 0xD950C85400000000LL)))
     91         return 1;
     92     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 35,
     93                       make_ti(0xB2A190AFF6E5D4C3LL, 0xB2A190A800000000LL)))
     94         return 1;
     95     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 36,
     96                       make_ti(0x6543215FEDCBA987LL, 0x6543215000000000LL)))
     97         return 1;
     98 
     99     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 60,
    100                       make_ti(0x5FEDCBA987654321LL, 0x5000000000000000LL)))
    101         return 1;
    102     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 61,
    103                       make_ti(0xBFDB97530ECA8642LL, 0xA000000000000000LL)))
    104         return 1;
    105     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 62,
    106                       make_ti(0x7FB72EA61D950C85LL, 0x4000000000000000LL)))
    107         return 1;
    108     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 63,
    109                       make_ti(0xFF6E5D4C3B2A190ALL, 0x8000000000000000LL)))
    110         return 1;
    111 
    112     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 64,
    113                       make_ti(0xFEDCBA9876543215LL, 0x0000000000000000LL)))
    114         return 1;
    115 
    116     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 65,
    117                       make_ti(0xFDB97530ECA8642ALL, 0x0000000000000000LL)))
    118         return 1;
    119     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 66,
    120                       make_ti(0xFB72EA61D950C854LL, 0x0000000000000000LL)))
    121         return 1;
    122     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 67,
    123                       make_ti(0xF6E5D4C3B2A190A8LL, 0x0000000000000000LL)))
    124         return 1;
    125     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 68,
    126                       make_ti(0xEDCBA98765432150LL, 0x0000000000000000LL)))
    127         return 1;
    128 
    129     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 92,
    130                       make_ti(0x8765432150000000LL, 0x0000000000000000LL)))
    131         return 1;
    132     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 93,
    133                       make_ti(0x0ECA8642A0000000LL, 0x0000000000000000LL)))
    134         return 1;
    135     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 94,
    136                       make_ti(0x1D950C8540000000LL, 0x0000000000000000LL)))
    137         return 1;
    138     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 95,
    139                       make_ti(0x3B2A190A80000000LL, 0x0000000000000000LL)))
    140         return 1;
    141 
    142     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 96,
    143                       make_ti(0x7654321500000000LL, 0x0000000000000000LL)))
    144         return 1;
    145 
    146     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 97,
    147                       make_ti(0xECA8642A00000000LL, 0x0000000000000000LL)))
    148         return 1;
    149     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 98,
    150                       make_ti(0xD950C85400000000LL, 0x0000000000000000LL)))
    151         return 1;
    152     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 99,
    153                       make_ti(0xB2A190A800000000LL, 0x0000000000000000LL)))
    154         return 1;
    155     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 100,
    156                       make_ti(0x6543215000000000LL, 0x0000000000000000LL)))
    157         return 1;
    158 
    159     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 124,
    160                       make_ti(0x5000000000000000LL, 0x0000000000000000LL)))
    161         return 1;
    162     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 125,
    163                       make_ti(0xA000000000000000LL, 0x0000000000000000LL)))
    164         return 1;
    165     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 126,
    166                       make_ti(0x4000000000000000LL, 0x0000000000000000LL)))
    167         return 1;
    168     if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 127,
    169                       make_ti(0x8000000000000000LL, 0x0000000000000000LL)))
    170         return 1;
    171 #else
    172     printf("skipped\n");
    173 #endif
    174     return 0;
    175 }
    176