brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 6f21493 Raw
58 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_ctzdi23 4#include "int_lib.h"5#include <stdio.h>6 7// Returns: the number of trailing 0-bits8 9// Precondition: a != 010 11COMPILER_RT_ABI int __ctzdi2(di_int a);12 13int test__ctzdi2(di_int a, int expected)14{15    int x = __ctzdi2(a);16    if (x != expected)17        printf("error in __ctzdi2(0x%llX) = %d, expected %d\n", a, x, expected);18    return x != expected;19}20 21char assumption_1[sizeof(di_int) == 2*sizeof(si_int)] = {0};22 23int main()24{25//    if (test__ctzdi2(0x00000000, N))  // undefined26//        return 1;27    if (test__ctzdi2(0x00000001, 0))28        return 1;29    if (test__ctzdi2(0x00000002, 1))30        return 1;31    if (test__ctzdi2(0x00000003, 0))32        return 1;33    if (test__ctzdi2(0x00000004, 2))34        return 1;35    if (test__ctzdi2(0x00000005, 0))36        return 1;37    if (test__ctzdi2(0x0000000A, 1))38        return 1;39    if (test__ctzdi2(0x10000000, 28))40        return 1;41    if (test__ctzdi2(0x20000000, 29))42        return 1;43    if (test__ctzdi2(0x60000000, 29))44        return 1;45    if (test__ctzdi2(0x80000000uLL, 31))46        return 1;47    if (test__ctzdi2(0x0000050000000000uLL, 40))48        return 1;49    if (test__ctzdi2(0x0200080000000000uLL, 43))50        return 1;51    if (test__ctzdi2(0x7200000000000000uLL, 57))52        return 1;53    if (test__ctzdi2(0x8000000000000000uLL, 63))54        return 1;55 56   return 0;57}58