15 #ifndef HWY_TESTS_TEST_UTIL_H_
16 #define HWY_TESTS_TEST_UTIL_H_
46 const uint64_t s0 =
s1_;
47 const uint64_t bits = s1 + s0;
50 s1 ^= s0 ^ (s1 >> 18) ^ (s0 >> 5);
57 z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
58 z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
67 return static_cast<uint32_t
>((*rng)());
83 asm volatile(
"" :
"+r"(output) : :
"memory");
87 bool BytesEqual(
const void* p1,
const void* p2,
const size_t size,
88 size_t* pos =
nullptr);
91 const char* target_name,
const char* filename,
int line);
95 template <
typename T,
typename TU = MakeUn
signed<T>>
98 if (expected == actual)
return 0;
102 if (std::isnan(expected) && std::isnan(actual))
return 0;
107 CopyBytes<sizeof(T)>(&expected, &ux);
108 CopyBytes<sizeof(T)>(&actual, &uy);
123 template <
typename T>
126 info.sizeof_t =
sizeof(T);
127 info.is_float = IsFloat<T>();
128 info.is_signed = IsSigned<T>();
133 const void* actual_ptr);
138 const void* array_void,
size_t N,
size_t lane_u = 0,
139 size_t max_lanes = 7);
142 const void* expected_ptr,
143 const void* actual_ptr,
144 const char* target_name,
145 const char* filename,
int line,
146 size_t lane = 0,
size_t num_lanes = 1);
149 const void* actual_void,
size_t N,
150 const char* target_name,
const char* filename,
int line);
158 template <
typename T>
166 template <
typename T>
168 const auto info = detail::MakeTypeInfo<T>();
172 template <
typename T>
174 const char* target_name,
const char* filename,
175 int line,
size_t lane = 0) {
176 const auto info = detail::MakeTypeInfo<T>();
179 filename,
line, lane);
#define HWY_MAX(a, b)
Definition: base.h:123
#define HWY_NORETURN
Definition: base.h:62
#define HWY_MIN(a, b)
Definition: base.h:122
#define HWY_INLINE
Definition: base.h:59
Definition: test_util.h:37
static uint64_t SplitMix64(uint64_t z)
Definition: test_util.h:56
HWY_INLINE uint64_t operator()()
Definition: test_util.h:44
uint64_t s0_
Definition: test_util.h:62
uint64_t s1_
Definition: test_util.h:63
RandomState(const uint64_t seed=0x123456789ull)
Definition: test_util.h:39
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)
void PrintArray(const TypeInfo &info, const char *caption, const void *array_void, size_t N, size_t lane_u=0, size_t max_lanes=7)
void TypeName(const TypeInfo &info, size_t N, char *string100)
bool IsEqual(const TypeInfo &info, const void *expected_ptr, const void *actual_ptr)
TU ComputeUlpDelta(const T expected, const T actual)
Definition: test_util.h:96
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_INLINE TypeInfo MakeTypeInfo()
Definition: test_util.h:124
Definition: aligned_allocator.h:23
void AssertStringEqual(const char *expected, const char *actual, const char *target_name, const char *filename, int line)
constexpr size_t kTestMaxVectorSize
Definition: test_util.h:33
HWY_INLINE bool IsEqual(const T expected, const T actual)
Definition: test_util.h:167
bool BytesEqual(const void *p1, const void *p2, const size_t size, size_t *pos=nullptr)
static HWY_INLINE uint64_t Random64(RandomState *rng)
Definition: test_util.h:70
std::string TypeName(T, size_t N)
Definition: test_util.h:159
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:173
static HWY_INLINE uint32_t Random32(RandomState *rng)
Definition: test_util.h:66
HWY_NORETURN void int line
Definition: base.h:665
void PreventElision(T &&output)
Definition: test_util.h:79
message_info info
Definition: ojph_message.cpp:50
Definition: test_util.h:117
bool is_float
Definition: test_util.h:119
bool is_signed
Definition: test_util.h:120
size_t sizeof_t
Definition: test_util.h:118