16 #ifndef HWY_TESTS_TEST_UTIL_H_
17 #define HWY_TESTS_TEST_UTIL_H_
49 const uint64_t s0 =
s1_;
50 const uint64_t bits = s1 + s0;
53 s1 ^= s0 ^ (s1 >> 18) ^ (s0 >> 5);
60 z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
61 z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
70 return static_cast<uint32_t
>((*rng)());
84 asm volatile(
"" :
"+r"(output) : :
"memory");
89 const size_t size,
size_t* pos =
nullptr);
92 const char* target_name,
const char* filename,
int line);
96 template <
typename T,
typename TU = MakeUn
signed<T>>
99 if (expected == actual)
return 0;
103 if (std::isnan(expected) && std::isnan(actual))
return 0;
108 CopyBytes<sizeof(T)>(&expected, &ux);
109 CopyBytes<sizeof(T)>(&actual, &uy);
117 const void* actual_ptr);
120 const TypeInfo& info,
const void* expected_ptr,
const void* actual_ptr,
121 const char* target_name,
const char* filename,
int line,
size_t lane = 0,
122 size_t num_lanes = 1);
125 const void* expected_void,
126 const void* actual_void,
size_t N,
127 const char* target_name,
128 const char* filename,
int line);
136 template <
typename T>
144 template <
typename T>
146 const auto info = detail::MakeTypeInfo<T>();
150 template <
typename T>
152 const char* target_name,
const char* filename,
153 int line,
size_t lane = 0) {
154 const auto info = detail::MakeTypeInfo<T>();
157 filename,
line, lane);
#define HWY_MAX(a, b)
Definition: base.h:128
#define HWY_NORETURN
Definition: base.h:67
#define HWY_MIN(a, b)
Definition: base.h:127
#define HWY_INLINE
Definition: base.h:64
Definition: test_util.h:40
static uint64_t SplitMix64(uint64_t z)
Definition: test_util.h:59
HWY_INLINE uint64_t operator()()
Definition: test_util.h:47
uint64_t s0_
Definition: test_util.h:65
uint64_t s1_
Definition: test_util.h:66
RandomState(const uint64_t seed=0x123456789ull)
Definition: test_util.h:42
#define HWY_TEST_DLLEXPORT
Definition: highway_export.h:22
N
Definition: rvv-inl.h:1656
HWY_DLLEXPORT void TypeName(const TypeInfo &info, size_t N, char *string100)
TU ComputeUlpDelta(const T expected, const T actual)
Definition: test_util.h:97
HWY_TEST_DLLEXPORT HWY_NORETURN void PrintMismatchAndAbort(const TypeInfo &info, const void *expected_ptr, const void *actual_ptr, const char *target_name, const char *filename, int line, size_t lane=0, size_t num_lanes=1)
HWY_TEST_DLLEXPORT bool IsEqual(const TypeInfo &info, const void *expected_ptr, const void *actual_ptr)
HWY_TEST_DLLEXPORT void AssertArrayEqual(const TypeInfo &info, const void *expected_void, const void *actual_void, size_t N, const char *target_name, const char *filename, int line)
Definition: aligned_allocator.h:27
void AssertStringEqual(const char *expected, const char *actual, const char *target_name, const char *filename, int line)
HWY_TEST_DLLEXPORT bool BytesEqual(const void *p1, const void *p2, const size_t size, size_t *pos=nullptr)
constexpr size_t kTestMaxVectorSize
Definition: test_util.h:36
HWY_INLINE bool IsEqual(const T expected, const T actual)
Definition: test_util.h:145
static HWY_INLINE uint64_t Random64(RandomState *rng)
Definition: test_util.h:73
std::string TypeName(T, size_t N)
Definition: test_util.h:137
HWY_INLINE void AssertEqual(const T expected, const T actual, const char *target_name, const char *filename, int line, size_t lane=0)
Definition: test_util.h:151
static HWY_INLINE uint32_t Random32(RandomState *rng)
Definition: test_util.h:69
void PreventElision(T &&output)
Definition: test_util.h:80
HWY_DLLEXPORT HWY_NORETURN void int line
Definition: base.h:763