brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 207609e Raw
62 lines · c
1//===-- Unittests for stdbit ----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9/*10 * The intent of this test is validate that:11 * 1. We provide the definition of the various type generic macros of stdbit.h12 * (the macros are transitively included from stdbit-macros.h by stdbit.h).13 * 2. It dispatches to the correct underlying function.14 * Because unit tests build without public packaging, the object files produced15 * do not contain non-namespaced symbols.16 */17 18/*19 * Declare these BEFORE including stdbit-macros.h so that this test may still be20 * run even if a given target doesn't yet have these individual entrypoints21 * enabled.22 */23#include "stdbit_stub.h"24 25#include "include/llvm-libc-macros/stdbit-macros.h"26 27#include <assert.h>28 29#define CHECK_FUNCTION(FUNC_NAME, VAL)                                         \30  do {                                                                         \31    assert(FUNC_NAME((unsigned char)0U) == VAL##AU);                           \32    assert(FUNC_NAME((unsigned short)0U) == VAL##BU);                          \33    assert(FUNC_NAME(0U) == VAL##CU);                                          \34    assert(FUNC_NAME(0UL) == VAL##DU);                                         \35    assert(FUNC_NAME(0ULL) == VAL##EU);                                        \36  } while (0)37 38int main(void) {39  CHECK_FUNCTION(stdc_leading_zeros, 0xA);40  CHECK_FUNCTION(stdc_leading_ones, 0xB);41  CHECK_FUNCTION(stdc_trailing_zeros, 0xC);42  CHECK_FUNCTION(stdc_trailing_ones, 0xD);43  CHECK_FUNCTION(stdc_first_leading_zero, 0xE);44  CHECK_FUNCTION(stdc_first_leading_one, 0xF);45  CHECK_FUNCTION(stdc_first_trailing_zero, 0x0);46  CHECK_FUNCTION(stdc_first_trailing_one, 0x1);47  CHECK_FUNCTION(stdc_count_zeros, 0x2);48  CHECK_FUNCTION(stdc_count_ones, 0x3);49 50  assert(!stdc_has_single_bit((unsigned char)1U));51  assert(!stdc_has_single_bit((unsigned short)1U));52  assert(!stdc_has_single_bit(1U));53  assert(!stdc_has_single_bit(1UL));54  assert(!stdc_has_single_bit(1ULL));55 56  CHECK_FUNCTION(stdc_bit_width, 0x4);57  CHECK_FUNCTION(stdc_bit_floor, 0x5);58  CHECK_FUNCTION(stdc_bit_ceil, 0x6);59 60  return 0;61}62