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