Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc][stdbit] fix return types #80337

Merged
merged 2 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions libc/include/llvm-libc-macros/stdbit-macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,34 @@
#define __LLVM_LIBC_MACROS_STDBIT_MACROS_H

#ifdef __cplusplus
inline unsigned char stdc_leading_zeros(unsigned char x) {
inline unsigned stdc_leading_zeros(unsigned char x) {
return stdc_leading_zeros_uc(x);
}
inline unsigned short stdc_leading_zeros(unsigned short x) {
inline unsigned stdc_leading_zeros(unsigned short x) {
return stdc_leading_zeros_us(x);
}
inline unsigned stdc_leading_zeros(unsigned x) {
return stdc_leading_zeros_ui(x);
}
inline unsigned long stdc_leading_zeros(unsigned long x) {
inline unsigned stdc_leading_zeros(unsigned long x) {
return stdc_leading_zeros_ul(x);
}
inline unsigned long long stdc_leading_zeros(unsigned long long x) {
inline unsigned stdc_leading_zeros(unsigned long long x) {
return stdc_leading_zeros_ull(x);
}
inline unsigned char stdc_leading_ones(unsigned char x) {
inline unsigned stdc_leading_ones(unsigned char x) {
return stdc_leading_ones_uc(x);
}
inline unsigned short stdc_leading_ones(unsigned short x) {
inline unsigned stdc_leading_ones(unsigned short x) {
return stdc_leading_ones_us(x);
}
inline unsigned stdc_leading_ones(unsigned x) {
return stdc_leading_ones_ui(x);
}
inline unsigned long stdc_leading_ones(unsigned long x) {
inline unsigned stdc_leading_ones(unsigned long x) {
return stdc_leading_ones_ul(x);
}
inline unsigned long long stdc_leading_ones(unsigned long long x) {
inline unsigned stdc_leading_ones(unsigned long long x) {
return stdc_leading_ones_ull(x);
}
#else
Expand Down
16 changes: 8 additions & 8 deletions libc/spec/stdc.td
Original file line number Diff line number Diff line change
Expand Up @@ -775,16 +775,16 @@ def StdC : StandardSpec<"stdc"> {
[], // Types
[], // Enumerations
[
FunctionSpec<"stdc_leading_zeros_uc", RetValSpec<UnsignedCharType>, [ArgSpec<UnsignedCharType>]>,
FunctionSpec<"stdc_leading_zeros_us", RetValSpec<UnsignedShortType>, [ArgSpec<UnsignedShortType>]>,
FunctionSpec<"stdc_leading_zeros_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
FunctionSpec<"stdc_leading_zeros_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
FunctionSpec<"stdc_leading_zeros_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
FunctionSpec<"stdc_leading_zeros_ul", RetValSpec<UnsignedLongType>, [ArgSpec<UnsignedLongType>]>,
FunctionSpec<"stdc_leading_zeros_ull", RetValSpec<UnsignedLongLongType>, [ArgSpec<UnsignedLongLongType>]>,
FunctionSpec<"stdc_leading_ones_uc", RetValSpec<UnsignedCharType>, [ArgSpec<UnsignedCharType>]>,
FunctionSpec<"stdc_leading_ones_us", RetValSpec<UnsignedShortType>, [ArgSpec<UnsignedShortType>]>,
FunctionSpec<"stdc_leading_zeros_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
FunctionSpec<"stdc_leading_zeros_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>,
FunctionSpec<"stdc_leading_ones_uc", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedCharType>]>,
FunctionSpec<"stdc_leading_ones_us", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedShortType>]>,
FunctionSpec<"stdc_leading_ones_ui", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedIntType>]>,
FunctionSpec<"stdc_leading_ones_ul", RetValSpec<UnsignedLongType>, [ArgSpec<UnsignedLongType>]>,
FunctionSpec<"stdc_leading_ones_ull", RetValSpec<UnsignedLongLongType>, [ArgSpec<UnsignedLongLongType>]>
FunctionSpec<"stdc_leading_ones_ul", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongType>]>,
FunctionSpec<"stdc_leading_ones_ull", RetValSpec<UnsignedIntType>, [ArgSpec<UnsignedLongLongType>]>
] // Functions
>;

Expand Down
4 changes: 2 additions & 2 deletions libc/src/stdbit/stdc_leading_ones_uc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned char, stdc_leading_ones_uc, (unsigned char value)) {
return static_cast<unsigned char>(cpp::countl_one(value));
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_ones_uc, (unsigned char value)) {
return static_cast<unsigned>(cpp::countl_one(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_ones_uc.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned char stdc_leading_ones_uc(unsigned char value);
unsigned stdc_leading_ones_uc(unsigned char value);

} // namespace LIBC_NAMESPACE

Expand Down
4 changes: 2 additions & 2 deletions libc/src/stdbit/stdc_leading_ones_ul.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned long, stdc_leading_ones_ul, (unsigned long value)) {
return static_cast<unsigned long>(cpp::countl_one(value));
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_ones_ul, (unsigned long value)) {
return static_cast<unsigned>(cpp::countl_one(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_ones_ul.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned long stdc_leading_ones_ul(unsigned long value);
unsigned stdc_leading_ones_ul(unsigned long value);

} // namespace LIBC_NAMESPACE

Expand Down
4 changes: 2 additions & 2 deletions libc/src/stdbit/stdc_leading_ones_ull.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned long long, stdc_leading_ones_ull,
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_ones_ull,
(unsigned long long value)) {
return static_cast<unsigned long long>(cpp::countl_one(value));
return static_cast<unsigned>(cpp::countl_one(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_ones_ull.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned long long stdc_leading_ones_ull(unsigned long long value);
unsigned stdc_leading_ones_ull(unsigned long long value);

} // namespace LIBC_NAMESPACE

Expand Down
5 changes: 2 additions & 3 deletions libc/src/stdbit/stdc_leading_ones_us.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned short, stdc_leading_ones_us,
(unsigned short value)) {
return static_cast<unsigned short>(cpp::countl_one(value));
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_ones_us, (unsigned short value)) {
return static_cast<unsigned>(cpp::countl_one(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_ones_us.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned short stdc_leading_ones_us(unsigned short value);
unsigned stdc_leading_ones_us(unsigned short value);

} // namespace LIBC_NAMESPACE

Expand Down
5 changes: 2 additions & 3 deletions libc/src/stdbit/stdc_leading_zeros_uc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned char, stdc_leading_zeros_uc,
(unsigned char value)) {
return static_cast<unsigned char>(cpp::countl_zero(value));
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_zeros_uc, (unsigned char value)) {
return static_cast<unsigned>(cpp::countl_zero(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_zeros_uc.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned char stdc_leading_zeros_uc(unsigned char value);
unsigned stdc_leading_zeros_uc(unsigned char value);

} // namespace LIBC_NAMESPACE

Expand Down
5 changes: 2 additions & 3 deletions libc/src/stdbit/stdc_leading_zeros_ul.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned long, stdc_leading_zeros_ul,
(unsigned long value)) {
return static_cast<unsigned long>(cpp::countl_zero(value));
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_zeros_ul, (unsigned long value)) {
return static_cast<unsigned>(cpp::countl_zero(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_zeros_ul.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned long stdc_leading_zeros_ul(unsigned long value);
unsigned stdc_leading_zeros_ul(unsigned long value);

} // namespace LIBC_NAMESPACE

Expand Down
4 changes: 2 additions & 2 deletions libc/src/stdbit/stdc_leading_zeros_ull.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned long long, stdc_leading_zeros_ull,
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_zeros_ull,
(unsigned long long value)) {
return static_cast<unsigned long long>(cpp::countl_zero(value));
return static_cast<unsigned>(cpp::countl_zero(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_zeros_ull.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned long long stdc_leading_zeros_ull(unsigned long long value);
unsigned stdc_leading_zeros_ull(unsigned long long value);

} // namespace LIBC_NAMESPACE

Expand Down
5 changes: 2 additions & 3 deletions libc/src/stdbit/stdc_leading_zeros_us.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@

namespace LIBC_NAMESPACE {

LLVM_LIBC_FUNCTION(unsigned short, stdc_leading_zeros_us,
(unsigned short value)) {
return static_cast<unsigned short>(cpp::countl_zero(value));
LLVM_LIBC_FUNCTION(unsigned, stdc_leading_zeros_us, (unsigned short value)) {
return static_cast<unsigned>(cpp::countl_zero(value));
}

} // namespace LIBC_NAMESPACE
2 changes: 1 addition & 1 deletion libc/src/stdbit/stdc_leading_zeros_us.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace LIBC_NAMESPACE {

unsigned short stdc_leading_zeros_us(unsigned short value);
unsigned stdc_leading_zeros_us(unsigned short value);

} // namespace LIBC_NAMESPACE

Expand Down
48 changes: 20 additions & 28 deletions libc/test/include/stdbit_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,40 +23,32 @@
* enabled.
*/
extern "C" {
unsigned char stdc_leading_zeros_uc(unsigned char) noexcept { return 0xAA; }
unsigned short stdc_leading_zeros_us(unsigned short) noexcept { return 0xAB; }
unsigned stdc_leading_zeros_ui(unsigned) noexcept { return 0xAC; }
unsigned long stdc_leading_zeros_ul(unsigned long) noexcept { return 0xAD; }
unsigned long long stdc_leading_zeros_ull(unsigned long long) noexcept {
return 0xAF;
}
unsigned char stdc_leading_ones_uc(unsigned char) noexcept { return 0xBA; }
unsigned short stdc_leading_ones_us(unsigned short) noexcept { return 0xBB; }
unsigned stdc_leading_ones_ui(unsigned) noexcept { return 0xBC; }
unsigned long stdc_leading_ones_ul(unsigned long) noexcept { return 0xBD; }
unsigned long long stdc_leading_ones_ull(unsigned long long) noexcept {
return 0xBF;
}
unsigned stdc_leading_zeros_uc(unsigned char) noexcept { return 0xAAU; }
unsigned stdc_leading_zeros_us(unsigned short) noexcept { return 0xABU; }
unsigned stdc_leading_zeros_ui(unsigned) noexcept { return 0xACU; }
unsigned stdc_leading_zeros_ul(unsigned long) noexcept { return 0xADU; }
unsigned stdc_leading_zeros_ull(unsigned long long) noexcept { return 0xAFU; }
unsigned stdc_leading_ones_uc(unsigned char) noexcept { return 0xBAU; }
unsigned stdc_leading_ones_us(unsigned short) noexcept { return 0xBBU; }
unsigned stdc_leading_ones_ui(unsigned) noexcept { return 0xBCU; }
unsigned stdc_leading_ones_ul(unsigned long) noexcept { return 0xBDU; }
unsigned stdc_leading_ones_ull(unsigned long long) noexcept { return 0xBFU; }
}

#include "include/llvm-libc-macros/stdbit-macros.h"

TEST(LlvmLibcStdbitTest, TypeGenericMacroLeadingZeros) {
EXPECT_EQ(stdc_leading_zeros(static_cast<unsigned char>(0U)),
static_cast<unsigned char>(0xAA));
EXPECT_EQ(stdc_leading_zeros(static_cast<unsigned short>(0U)),
static_cast<unsigned short>(0xAB));
EXPECT_EQ(stdc_leading_zeros(0U), static_cast<unsigned>(0xAC));
EXPECT_EQ(stdc_leading_zeros(0UL), static_cast<unsigned long>(0xAD));
EXPECT_EQ(stdc_leading_zeros(0ULL), static_cast<unsigned long long>(0xAF));
EXPECT_EQ(stdc_leading_zeros(static_cast<unsigned char>(0U)), 0xAAU);
EXPECT_EQ(stdc_leading_zeros(static_cast<unsigned short>(0U)), 0xABU);
EXPECT_EQ(stdc_leading_zeros(0U), 0xACU);
EXPECT_EQ(stdc_leading_zeros(0UL), 0xADU);
EXPECT_EQ(stdc_leading_zeros(0ULL), 0xAFU);
}

TEST(LlvmLibcStdbitTest, TypeGenericMacroLeadingOnes) {
EXPECT_EQ(stdc_leading_ones(static_cast<unsigned char>(0U)),
static_cast<unsigned char>(0xBA));
EXPECT_EQ(stdc_leading_ones(static_cast<unsigned short>(0U)),
static_cast<unsigned short>(0xBB));
EXPECT_EQ(stdc_leading_ones(0U), static_cast<unsigned>(0xBC));
EXPECT_EQ(stdc_leading_ones(0UL), static_cast<unsigned long>(0xBD));
EXPECT_EQ(stdc_leading_ones(0ULL), static_cast<unsigned long long>(0xBF));
EXPECT_EQ(stdc_leading_ones(static_cast<unsigned char>(0U)), 0xBAU);
EXPECT_EQ(stdc_leading_ones(static_cast<unsigned short>(0U)), 0xBBU);
EXPECT_EQ(stdc_leading_ones(0U), 0xBCU);
EXPECT_EQ(stdc_leading_ones(0UL), 0xBDU);
EXPECT_EQ(stdc_leading_ones(0ULL), 0xBFU);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

TEST(LlvmLibcStdcLeadingOnesUcTest, All) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_uc(UCHAR_MAX),
static_cast<unsigned char>(UCHAR_WIDTH));
static_cast<unsigned>(UCHAR_WIDTH));
}

TEST(LlvmLibcStdcLeadingOnesUcTest, ZeroHot) {
for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_uc(~(1U << i)),
static_cast<unsigned char>(UCHAR_WIDTH - i - 1));
UCHAR_WIDTH - i - 1U);
}
2 changes: 1 addition & 1 deletion libc/test/src/stdbit/stdc_leading_ones_ui_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ TEST(LlvmLibcStdcLeadingOnesUiTest, All) {
TEST(LlvmLibcStdcLeadingOnesUiTest, ZeroHot) {
for (unsigned i = 0U; i != UINT_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_ui(~(1U << i)),
static_cast<unsigned>(UINT_WIDTH - i - 1));
UINT_WIDTH - i - 1U);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_ones_ul_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

TEST(LlvmLibcStdcLeadingOnesUlTest, All) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_ul(ULONG_MAX),
static_cast<unsigned long>(ULONG_WIDTH));
static_cast<unsigned>(ULONG_WIDTH));
}

TEST(LlvmLibcStdcLeadingOnesUlTest, ZeroHot) {
for (unsigned i = 0U; i != ULONG_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_ul(~(1UL << i)),
static_cast<unsigned long>(ULONG_WIDTH - i - 1));
ULONG_WIDTH - i - 1U);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_ones_ull_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

TEST(LlvmLibcStdcLeadingOnesUllTest, All) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_ull(ULLONG_MAX),
static_cast<unsigned long long>(ULLONG_WIDTH));
static_cast<unsigned>(ULLONG_WIDTH));
}

TEST(LlvmLibcStdcLeadingOnesUllTest, ZeroHot) {
for (unsigned i = 0U; i != ULLONG_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_ull(~(1ULL << i)),
static_cast<unsigned long long>(ULLONG_WIDTH - i - 1));
ULLONG_WIDTH - i - 1U);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_ones_us_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

TEST(LlvmLibcStdcLeadingOnesUsTest, All) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_us(USHRT_MAX),
static_cast<unsigned short>(USHRT_WIDTH));
static_cast<unsigned>(USHRT_WIDTH));
}

TEST(LlvmLibcStdcLeadingOnesUsTest, ZeroHot) {
for (unsigned i = 0U; i != USHRT_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_ones_us(~(1U << i)),
static_cast<unsigned short>(USHRT_WIDTH - i - 1));
USHRT_WIDTH - i - 1U);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@

TEST(LlvmLibcStdcLeadingZerosUcTest, Zero) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_uc(0U),
static_cast<unsigned char>(UCHAR_WIDTH));
static_cast<unsigned>(UCHAR_WIDTH));
}

TEST(LlvmLibcStdcLeadingZerosUcTest, OneHot) {
for (unsigned i = 0U; i != UCHAR_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_uc(1U << i),
static_cast<unsigned char>(UCHAR_WIDTH - i - 1));
UCHAR_WIDTH - i - 1U);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_zeros_ul_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@

TEST(LlvmLibcStdcLeadingZerosUlTest, Zero) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ul(0UL),
static_cast<unsigned long>(ULONG_WIDTH));
static_cast<unsigned>(ULONG_WIDTH));
}

TEST(LlvmLibcStdcLeadingZerosUlTest, OneHot) {
for (unsigned i = 0U; i != ULONG_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ul(1UL << i),
static_cast<unsigned long>(ULONG_WIDTH - i - 1));
ULONG_WIDTH - i - 1U);
}
4 changes: 2 additions & 2 deletions libc/test/src/stdbit/stdc_leading_zeros_ull_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@

TEST(LlvmLibcStdcLeadingZerosUllTest, Zero) {
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ull(0ULL),
static_cast<unsigned long long>(ULLONG_WIDTH));
static_cast<unsigned>(ULLONG_WIDTH));
}

TEST(LlvmLibcStdcLeadingZerosUllTest, OneHot) {
for (unsigned i = 0U; i != ULLONG_WIDTH; ++i)
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ull(1ULL << i),
static_cast<unsigned long long>(ULLONG_WIDTH - i - 1));
ULLONG_WIDTH - i - 1U);
}
Loading
Loading