./graphics/libhighway, C++ library for SIMD

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 1.2.0, Package name: libhighway-1.2.0, Maintainer: pkgsrc-users

Highway is a C++ library for SIMD (Single Instruction, Multiple Data), i.e.
applying the same operation to 'lanes'.

## Why Highway?

- more portable (same source code) than platform-specific intrinsics,
- works on a wider range of compilers than compiler-specific vector extensions,
- more dependable than autovectorization,
- easier to write/maintain than assembly language,
- supports runtime dispatch,
- supports variable-length vector architectures.

## Current status

Supported targets: scalar, SSE4, AVX2, AVX-512, NEON (ARMv7 and v8), WASM SIMD.
Ports to RVV and SVE/SVE2 are in progress.


Master sites:

Filesize: 2182.29 KB

Version history: (Expand)


CVS history: (Expand)


   2025-02-02 16:48:17 by Thomas Klausner | Files touched by this commit (3) | Package updated
Log message:
libhighway: update to 1.2.0.

Convert to cmake/build.mk.

1.2.0

    Add InterleaveEven/InterleaveOdd, BitShuffle, GatherIndexNOr
    Add IsNegative, IfNegativeThenElseZero, IfNegativeThenZeroElse
    Add NEON_BF16, HWY_VERSION_GE/LT, HWY_EXPORT_T/HWY_DYNAMIC_DISPATCH_T
    Add PromoteInRangeTo/ConvertInRangeTo/DemoteInRangeTo
    Add Rol/Ror, RotateLeft/RotateLeftSame/RotateRightSame
    Add SatWidenMulPairwiseAccumulate, SatWidenMulAccumFixedPoint
    Add stats.h, bit_set.h, IsEitherNaN
    Add UI8/UI32/UI64 MulHigh, I64 MulEven/MulOdd/Mul128
    Add WidenMulAccumulate, MulEvenAdd, MulOddAdd
    contrib/bit_pack: support 32/64-bit lanes
    contrib/math: Add Exp2, Hypot
    contrib/matvec: Add MatVecAdd
    contrib/sort: Add VQ/HeapSelect, partial sort
    contrib/topology: add affinity, detect topology/cache size/CPU name
    Enable runtime dispatch for NEON/RVV, bazel modules, abort handler
    Remove DASSERT for negative Gather indices
    Support opting out of GUnit dependency
    Use SPR/ZEN4 bf16 dot product
    Known GCC 13 RVV issue: parts of sort_test and bit_pack_test disabled
    Known Clang RVV/QEMU issue: incorrect rounding mode in upper/lower halves

1.1.0

    Add BitCastScalar, DispatchedTarget, Foreach
    Add Div/Mod and MaskedDiv/ModOr, SaturatedAbs, SaturatedNeg
    Add InterleaveWholeLower/Upper, Dup128VecFromValues
    Add IsInteger, IsIntegerLaneType, RemoveVolatile, RemoveCvRef
    Add MaskedAdd/Sub/Mul/Div/Gather/Min/Max/SatAdd/SatSubOr
    Add MaskFalse, IfNegativeThenNegOrUndefIfZero, PromoteEven/OddTo
    Add ReduceMin/Max, 8-bit reductions, f16 <-> f64 conversions
    Add Span, AlignedArray, matrix-vector mul
    Add SumsOf2/4, I8 SumsOf8, SumsOfAdjQuadAbsDiff, SumsOfShuffledQuadAbsDiff
    Add ThreadPool, hierarchical profiler
    Build: use bazel_platforms
    Enable clang16 Arm/PPC runtime dispatch, F16 for GCC AVX3_SPR
    Extend Dot to f32*bf16, FMA to integer
    Fix: RVV 8-bit overflow, UB in vqsort, big-endian bugs, PPC HTM
    Improved codegen in various ops, fp16/bf16 tests and conversions
    New targets: HWY_Z14, HWY_Z15
    Test: add foreign_arch builders, CodeQL
   2024-08-25 08:19:21 by Thomas Klausner | Files touched by this commit (575)
Log message:
*: replace CMAKE_ARGS with CMAKE_CONFIGURE_ARGS
   2024-01-05 12:09:53 by Niclas Rosenvik | Files touched by this commit (4)
Log message:
Update libhighway to version 1.0.7
The reason for updating is that the only
libhighway user (wip/libjxl) needs 1.0.7
to build its latests version 0.9.0.
Due to that nothing in pkgsrc-current
depends on libhighway and the only thing
that needs it needs 1.0.7, bump
BUILDLINK_API_DEPENDS to 1.0.7 .
   2023-08-16 17:20:49 by Nia Alarie | Files touched by this commit (3)
Log message:
libhighway: Option-ize googletest dependency for ABI reasons
(same as other packages, it's a dependency that might require a much
newer compiler)

While here, add missing libatomic dependency
   2022-11-21 19:20:46 by Jonathan Perkin | Files touched by this commit (54)
Log message:
*: Re-apply SunOS linker argument removals.

These are currently duplicated in mk/platform/SunOS.mk but the generic
removals will be removed soon in favour of per-package removals, due to
flags getting leaked into installed files.
   2022-10-07 13:15:54 by Niclas Rosenvik | Files touched by this commit (4)
Log message:
Update libhighway to version 1.0.1

Pkgsrc changes:
Build shared libs.
Use gcc 8 and over to fix build.
Include devel/googletest in
buildlink3.mk since one of the
installed header files include
gtest/gtest.h .

Changes from changelog:

* Add Eq128, i64 Mul, unsigned->float ConvertTo
* Faster sort for few unique keys, more robust pivot selection
* Fix: floating-point generator for sort tests, Min/MaxOfLanes for i16
* Fix: avoid always_inline in debug, link atomic
* GCC warnings: string.h, maybe-uninitialized, ignored-attributes
* GCC warnings: preprocessor int overflow, spurious use-after-free/overflow
* Doc: <=HWY_AVX3, Full32/64/128, how to use generic-inl
* ABI change: 64-bit target values, more room for expansion
* Add CompressBlocksNot, CompressNot, Lt128Upper, Min/Max128Upper, TruncateTo
* Add HWY_SVE2_128 target
* Sort speedups especially for 128-bit
* Documentation clarifications
* Faster NEON CountTrue/FindFirstTrue/AllFalse/AllTrue
* Improved SVE codegen
* Fix u16x8 ConcatEven/Odd, SSSE3 i64 Lt
* MSVC 2017 workarounds
* Support for runtime dispatch on Arm/GCC/Linux
   2022-07-17 21:32:46 by Thomas Klausner | Files touched by this commit (5)
Log message:
graphics/libhighway: import libhighway-0.17.0

Renamed to libhighway due to textproc/highway.

Highway is a C++ library for SIMD (Single Instruction, Multiple Data), i.e.
applying the same operation to 'lanes'.

## Why Highway?

- more portable (same source code) than platform-specific intrinsics,
- works on a wider range of compilers than compiler-specific vector extensions,
- more dependable than autovectorization,
- easier to write/maintain than assembly language,
- supports runtime dispatch,
- supports variable-length vector architectures.

## Current status

Supported targets: scalar, SSE4, AVX2, AVX-512, NEON (ARMv7 and v8), WASM SIMD.
Ports to RVV and SVE/SVE2 are in progress.