Grok 10.0.5
print.h
Go to the documentation of this file.
1// Copyright 2022 Google LLC
2// SPDX-License-Identifier: Apache-2.0
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#ifndef HWY_PRINT_H_
17#define HWY_PRINT_H_
18
19// Helpers for printing vector lanes.
20
21#include <stddef.h>
22#include <stdio.h>
23
24#include "hwy/base.h"
25#include "hwy/highway_export.h"
26
27namespace hwy {
28
29namespace detail {
30
31// For implementing value comparisons etc. as type-erased functions to reduce
32// template bloat.
33struct TypeInfo {
34 size_t sizeof_t;
37};
38
39template <typename T>
41 TypeInfo info;
42 info.sizeof_t = sizeof(T);
43 info.is_float = IsFloat<T>();
44 info.is_signed = IsSigned<T>();
45 return info;
46}
47
48HWY_DLLEXPORT void TypeName(const TypeInfo& info, size_t N, char* string100);
49HWY_DLLEXPORT void ToString(const TypeInfo& info, const void* ptr,
50 char* string100);
51
52HWY_DLLEXPORT void PrintArray(const TypeInfo& info, const char* caption,
53 const void* array_void, size_t N,
54 size_t lane_u = 0, size_t max_lanes = 7);
55
56} // namespace detail
57
58template <typename T>
60 char str[100];
62 fprintf(stderr, "%s,", str);
63}
64
65template <typename T>
66HWY_NOINLINE void PrintArray(const T* value, size_t count) {
68 count);
69}
70
71} // namespace hwy
72
73#endif // HWY_PRINT_H_
T value
Definition TagTree.h:37
#define HWY_NOINLINE
Definition base.h:72
#define HWY_INLINE
Definition base.h:70
#define HWY_DLLEXPORT
Definition highway_export.h:13
HWY_DLLEXPORT void TypeName(const TypeInfo &info, size_t N, char *string100)
HWY_DLLEXPORT 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)
HWY_DLLEXPORT void ToString(const TypeInfo &info, const void *ptr, char *string100)
HWY_INLINE TypeInfo MakeTypeInfo()
Definition print.h:40
Definition aligned_allocator.h:27
HWY_NOINLINE void PrintArray(const T *value, size_t count)
Definition print.h:66
HWY_API constexpr bool IsSigned()
Definition base.h:642
HWY_API constexpr bool IsFloat()
Definition base.h:635
HWY_NOINLINE void PrintValue(T value)
Definition print.h:59
Definition print.h:33
bool is_float
Definition print.h:35
bool is_signed
Definition print.h:36
size_t sizeof_t
Definition print.h:34