1 // Copyright 2022 Google LLC
2 // SPDX-License-Identifier: Apache-2.0
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
8 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 // Helpers for printing vector lanes.
25 #include "hwy/highway_export.h"
31 // For implementing value comparisons etc. as type-erased functions to reduce
40 HWY_INLINE TypeInfo
MakeTypeInfo() {
42 info
.sizeof_t
= sizeof(T
);
43 info
.is_float
= IsFloat
<T
>();
44 info
.is_signed
= IsSigned
<T
>();
48 HWY_DLLEXPORT
void TypeName(const TypeInfo
& info
, size_t N
, char* string100
);
49 HWY_DLLEXPORT
void ToString(const TypeInfo
& info
, const void* ptr
,
52 HWY_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);
59 HWY_NOINLINE
void PrintValue(T value
) {
61 detail::ToString(hwy::detail::MakeTypeInfo
<T
>(), &value
, str
);
62 fprintf(stderr
, "%s,", str
);
66 HWY_NOINLINE
void PrintArray(const T
* value
, size_t count
) {
67 detail::PrintArray(hwy::detail::MakeTypeInfo
<T
>(), "", value
, count
, 0,
73 #endif // HWY_PRINT_H_