brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 3dfa411 Raw
165 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_ashlti33// REQUIRES: int1284 5#include "int_lib.h"6#include <stdio.h>7 8#ifdef CRT_HAS_128BIT9 10// Returns: a << b11 12// Precondition:  0 <= b < bits_in_tword13 14COMPILER_RT_ABI ti_int __ashlti3(ti_int a, int b);15 16int test__ashlti3(ti_int a, int b, ti_int expected) {17  ti_int x = __ashlti3(a, b);18  if (x != expected) {19    twords at;20    at.all = a;21    twords bt;22    bt.all = b;23    twords xt;24    xt.all = x;25    twords expectedt;26    expectedt.all = expected;27    printf("error in __ashlti3: 0x%llX%.16llX << %d = 0x%llX%.16llX,"28           " expected 0x%llX%.16llX\n",29           at.s.high, at.s.low, b, xt.s.high, xt.s.low, expectedt.s.high,30           expectedt.s.low);31  }32  return x != expected;33}34 35char assumption_1[sizeof(ti_int) == 2*sizeof(di_int)] = {0};36 37#endif38 39int main()40{41#ifdef CRT_HAS_128BIT42    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 0,43                      make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL)))44        return 1;45    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 1,46                      make_ti(0xFDB97530ECA8642BLL, 0xFDB97530ECA8642ALL)))47        return 1;48    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 2,49                      make_ti(0xFB72EA61D950C857LL, 0XFB72EA61D950C854LL)))50        return 1;51    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 3,52                      make_ti(0xF6E5D4C3B2A190AFLL, 0xF6E5D4C3B2A190A8LL)))53        return 1;54    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 4,55                      make_ti(0xEDCBA9876543215FLL, 0xEDCBA98765432150LL)))56        return 1;57 58    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 28,59                      make_ti(0x876543215FEDCBA9LL, 0x8765432150000000LL)))60        return 1;61    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 29,62                      make_ti(0x0ECA8642BFDB9753LL, 0x0ECA8642A0000000LL)))63        return 1;64    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 30,65                      make_ti(0x1D950C857FB72EA6LL, 0x1D950C8540000000LL)))66        return 1;67    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 31,68                      make_ti(0x3B2A190AFF6E5D4CLL, 0x3B2A190A80000000LL)))69        return 1;70 71    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 32,72                      make_ti(0x76543215FEDCBA98LL, 0x7654321500000000LL)))73        return 1;74 75    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 33,76                      make_ti(0xECA8642BFDB97530LL, 0xECA8642A00000000LL)))77        return 1;78    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 34,79                      make_ti(0xD950C857FB72EA61LL, 0xD950C85400000000LL)))80        return 1;81    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 35,82                      make_ti(0xB2A190AFF6E5D4C3LL, 0xB2A190A800000000LL)))83        return 1;84    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 36,85                      make_ti(0x6543215FEDCBA987LL, 0x6543215000000000LL)))86        return 1;87 88    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 60,89                      make_ti(0x5FEDCBA987654321LL, 0x5000000000000000LL)))90        return 1;91    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 61,92                      make_ti(0xBFDB97530ECA8642LL, 0xA000000000000000LL)))93        return 1;94    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 62,95                      make_ti(0x7FB72EA61D950C85LL, 0x4000000000000000LL)))96        return 1;97    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 63,98                      make_ti(0xFF6E5D4C3B2A190ALL, 0x8000000000000000LL)))99        return 1;100 101    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 64,102                      make_ti(0xFEDCBA9876543215LL, 0x0000000000000000LL)))103        return 1;104 105    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 65,106                      make_ti(0xFDB97530ECA8642ALL, 0x0000000000000000LL)))107        return 1;108    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 66,109                      make_ti(0xFB72EA61D950C854LL, 0x0000000000000000LL)))110        return 1;111    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 67,112                      make_ti(0xF6E5D4C3B2A190A8LL, 0x0000000000000000LL)))113        return 1;114    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 68,115                      make_ti(0xEDCBA98765432150LL, 0x0000000000000000LL)))116        return 1;117 118    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 92,119                      make_ti(0x8765432150000000LL, 0x0000000000000000LL)))120        return 1;121    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 93,122                      make_ti(0x0ECA8642A0000000LL, 0x0000000000000000LL)))123        return 1;124    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 94,125                      make_ti(0x1D950C8540000000LL, 0x0000000000000000LL)))126        return 1;127    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 95,128                      make_ti(0x3B2A190A80000000LL, 0x0000000000000000LL)))129        return 1;130 131    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 96,132                      make_ti(0x7654321500000000LL, 0x0000000000000000LL)))133        return 1;134 135    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 97,136                      make_ti(0xECA8642A00000000LL, 0x0000000000000000LL)))137        return 1;138    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 98,139                      make_ti(0xD950C85400000000LL, 0x0000000000000000LL)))140        return 1;141    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 99,142                      make_ti(0xB2A190A800000000LL, 0x0000000000000000LL)))143        return 1;144    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 100,145                      make_ti(0x6543215000000000LL, 0x0000000000000000LL)))146        return 1;147 148    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 124,149                      make_ti(0x5000000000000000LL, 0x0000000000000000LL)))150        return 1;151    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 125,152                      make_ti(0xA000000000000000LL, 0x0000000000000000LL)))153        return 1;154    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 126,155                      make_ti(0x4000000000000000LL, 0x0000000000000000LL)))156        return 1;157    if (test__ashlti3(make_ti(0xFEDCBA9876543215LL, 0xFEDCBA9876543215LL), 127,158                      make_ti(0x8000000000000000LL, 0x0000000000000000LL)))159        return 1;160#else161    printf("skipped\n");162#endif163    return 0;164}165