ASTC texture compression C library
This is a build2 package for the ARM astc-encoder
C library. It provides Adaptive Scalable Texture Compression (ASTC) encoding
and decoding via the public C API in <astcenc.h>.
Usage
To start using libastcenc in your project, add the following depends
value to your manifest, adjusting the version constraint as appropriate:
depends: libastcenc ^5.7.0
Then import the library in your buildfile:
import libs = libastcenc%lib{astcenc}
Include the public header as:
#include <astcenc.h>
Importable targets
This package provides the following importable targets:
lib{astcenc}
The core encoder/decoder library (static and shared variants). The astcenc
command-line tool is a separate package.
Configuration variables
[string] config.libastcenc.isa ?= <target baseline>
SIMD backend. One of none, native, sse2, sse41, avx2, neon,
sve128, sve256 (upstream ASTCENC_ISA_*).
The default is a portable production baseline for the target CPU: sse2
on x86_64, neon on little-endian aarch64 / arm64, none otherwise
(including big-endian targets). Override with native for host-tuned
codegen (-march=native on non-MSVC), or with a fixed ISA such as avx2.
Upstream SIMD backends are little-endian only. A big-endian build must use
none (or native, which follows the compiler). Combining an explicit
SIMD ISA with a big-endian target is rejected.
[bool] config.libastcenc.decompress_only ?= false
Build a decompress-only library (ASTCENC_DECOMPRESS_ONLY).
[bool] config.libastcenc.invariance ?= true
Floating-point invariance (upstream ASTCENC_INVARIANCE).
[bool] config.libastcenc.x86_gathers ?= true
Use native x86 gathers for the avx2 backend (upstream ASTCENC_X86_GATHERS).
Ignored for every other ISA.
[uint64] config.libastcenc.block_max_texels ?= 0
Limit supported ASTC block sizes (ASTCENC_BLOCK_MAX_TEXELS). 0 keeps
the header default of 216 (all 2D and 3D sizes). Use 144 to drop 3D
6x6x6 and shrink compressor tables.
[bool, null] config.libastcenc.big_endian ?= [null]
Big-endian target (ASTCENC_BIG_ENDIAN). The default is auto-detected
from the compiler/target via the HAVE_BIGENDIAN autoconf check. Set
true or false to override. The define is applied only for isa=none,
matching upstream.
Tests
Reviews
Builds
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-static_O3 |
| timestamp |
2026-10-11 19:55:51 UTC (04 00:49:26 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-ndebug_O3 |
| timestamp |
2026-10-11 19:55:23 UTC (04 00:49:55 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-O3 |
| timestamp |
2026-10-11 19:55:16 UTC (04 00:50:01 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14 |
| timestamp |
2026-10-11 19:54:46 UTC (04 00:50:32 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-static_O3 |
| timestamp |
2026-10-11 17:10:36 UTC (04 03:34:41 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-O3 |
| timestamp |
2026-10-11 17:09:22 UTC (04 03:35:55 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew |
| timestamp |
2026-10-11 16:01:00 UTC (04 04:44:18 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_43-gcc_15-bindist |
| timestamp |
2026-10-11 15:29:05 UTC (04 05:16:13 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-static_O3 |
| timestamp |
2026-10-11 14:45:34 UTC (04 05:59:43 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-O3 |
| timestamp |
2026-10-11 14:45:20 UTC (04 05:59:58 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++ |
| timestamp |
2026-10-11 14:44:58 UTC (04 06:00:20 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-static_O3 |
| timestamp |
2026-10-11 14:44:43 UTC (04 06:00:34 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-O3 |
| timestamp |
2026-10-11 14:44:21 UTC (04 06:00:56 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18 |
| timestamp |
2026-10-11 14:44:05 UTC (04 06:01:13 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-static_O3 |
| timestamp |
2026-10-11 14:37:59 UTC (04 06:07:18 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-O3 |
| timestamp |
2026-10-11 14:37:38 UTC (04 06:07:39 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-ndebug_O3 |
| timestamp |
2026-10-11 14:37:00 UTC (04 06:08:18 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16 |
| timestamp |
2026-10-11 14:36:37 UTC (04 06:08:41 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-static_O3 |
| timestamp |
2026-10-11 14:35:07 UTC (04 06:10:11 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin22.5.0 |
| tgt config |
macos_13-clang_15.0 |
| timestamp |
2026-10-11 14:34:19 UTC (04 06:10:58 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-O3 |
| timestamp |
2026-10-11 14:33:39 UTC (04 06:11:38 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0 |
| timestamp |
2026-10-11 14:32:14 UTC (04 06:13:04 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64-static_O2 |
| timestamp |
2026-10-11 14:16:26 UTC (04 06:28:52 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64-O2 |
| timestamp |
2026-10-11 14:16:20 UTC (04 06:28:57 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18-static_O2 |
| timestamp |
2026-10-11 14:16:20 UTC (04 06:28:58 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_24.04-gcc_13-bindist |
| timestamp |
2026-10-11 14:15:57 UTC (04 06:29:21 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_14-bindist |
| timestamp |
2026-10-11 14:15:44 UTC (04 06:29:34 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18-O2 |
| timestamp |
2026-10-11 14:15:28 UTC (04 06:29:49 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64 |
| timestamp |
2026-10-11 14:14:59 UTC (04 06:30:18 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18 |
| timestamp |
2026-10-11 14:14:57 UTC (04 06:30:20 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17 |
| timestamp |
2026-10-11 14:14:20 UTC (04 06:30:57 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_44-gcc_16-bindist |
| timestamp |
2026-10-11 14:13:37 UTC (04 06:31:40 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_15-O3 |
| timestamp |
2026-10-11 14:12:45 UTC (04 06:32:33 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19-static_O3 |
| timestamp |
2026-10-11 14:12:40 UTC (04 06:32:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19-O3 |
| timestamp |
2026-10-11 14:12:09 UTC (04 06:33:08 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_15 |
| timestamp |
2026-10-11 14:11:35 UTC (04 06:33:42 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19 |
| timestamp |
2026-10-11 14:11:23 UTC (04 06:33:54 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd14.1 |
| tgt config |
freebsd_14-clang_18 |
| timestamp |
2026-10-11 14:10:55 UTC (04 06:34:22 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++-static_O3 |
| timestamp |
2026-10-11 13:19:31 UTC (04 07:25:47 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22-static_O3 |
| timestamp |
2026-10-11 13:16:42 UTC (04 07:28:35 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++-O3 |
| timestamp |
2026-10-11 13:16:29 UTC (04 07:28:48 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++ |
| timestamp |
2026-10-11 13:16:15 UTC (04 07:29:03 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22 |
| timestamp |
2026-10-11 13:15:55 UTC (04 07:29:22 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22-O3 |
| timestamp |
2026-10-11 13:15:33 UTC (04 07:29:45 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_21 |
| timestamp |
2026-10-11 11:42:47 UTC (04 09:02:30 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_21_libc++ |
| timestamp |
2026-10-11 11:42:21 UTC (04 09:02:56 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18-static_O2 |
| timestamp |
2026-10-11 11:37:39 UTC (04 09:07:38 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18-O2 |
| timestamp |
2026-10-11 11:37:17 UTC (04 09:08:00 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18 |
| timestamp |
2026-10-11 11:35:57 UTC (04 09:09:21 days ago) |
| result |
warning (test) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_26.04-gcc_15-bindist |
| timestamp |
2026-10-11 10:05:11 UTC (04 10:40:07 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_13 |
| timestamp |
2026-10-11 10:03:33 UTC (04 10:41:45 days ago) |
| result |
success | log | rebuild |
Changes
5.x series change log
This page summarizes the major functional and performance changes in each
release of the 5.x series.
All performance data on this page is measured on an Intel Core i5-9600K
clocked at 4.2 GHz, running astcenc using AVX2 and 6 threads.
5.7.0
Status: Released August 2026.
The 5.7.0 release is a minor maintenance release.
- Command line tool updates:
- Bug fix: Avoid pixel count overflow when loading input PNG file.
- Bug fix: Error if payload is undersized for stated image dimensions
when loading compressed input KTX file.
- Improvement: Top-level
-help text as been rewritten to improve
clarity and consistency.
- Change: Removed
-repeats benchmarking option, because we prefer to
repeat by invoking the command line multiple times. This gives performance
results closer to what a real user sees.
- Change: Removed
-dimage diagnostic images generation option from
normal builds. Now only available for builds configured with
ASTCENC_DIAGNOSTICS=ON.
5.6.0
Status: Released July 2026
The 5.6.0 release is a minor maintenance release.
- Codec library updates:
- Bug fix: Avoid undefined behavior caused by passing floating point
values outside of the [0.0, 1.0] range as input data for a UNORM color
channel.
- Bug fix: Avoid undefined behavior caused by unaligned access in SSE,
AVX2, and NEON SIMD library implementations.
- Command line tool updates:
- Bug fix: Fixed incorrect plane stride when writing an uncompressed 3D
LDR image to a DDS container.
- Bug fix: Fixed potential integer overflow when storing very large
uncompressed images to a
dds or .ktx output image format.
- Bug fix: Fixed missing initialization of the
reserved2 field in the
DDS file header when writing uncompressed .dds output images.
- Bug fix: Fixed typos and grammar issues in the command line
-help
text.
5.5.0
Status: Released June 2026
The 5.5.0 release is a minor maintenance release, fixing minor functional
issues and improving robustness when processing invalid images.
- Codec library updates:
- Bug fix: Correct
vfloat8 NaN inequality comparisons for AVX2 builds,
so that decompressing an invalid encoding returns the correct max magenta
error color for UNORM output formats instead of black.
- Bug fix: Add overflow detection so that the API returns errors for
cases when input image size would result in integer overflow in
calculations of total texel count, total block count, or compressed image
byte size.
- Bug fix: Fix bad offset calculation in
compute_averages() when
using 3D block sizes.
- Bug fix: Add missing low-clamp when storing decompressed HDR data into
a UNORM8 image. Prior to this fix, output colors would be incorrect if a
HDR void-extent block contained a negative FP16 constant color component.
- Improvement: Return standard error color when decompression requires an
unavailable partitioning when using an
ASTCENC_FLG_SELF_DECOMPRESS_ONLY
context. Note that this is still not allowed API usage and may trigger
asserts in a debug build.
- Command line tool updates:
- Update: Update stb_image to v2.30.
- Update: Update Wuffs to v0.3.4.
- Update: Update TinyEXR to v1.0.13.
- Bug fix: Use C++ RAII to manage resource lifetime, removing resource
leaks when an error condition is encountered.
- Bug fix: Report errors for
.astc, .dds, and .ktx input image
sizes that would result in integer overflow in calculations of total block
count or data size.
- Bug fix: Avoid undefined behavior on NaN to int conversion triggered by
atan2() calls when both inputs are zero.
- Bug fix: Avoid undefined behavior on left shift of negative integer,
that is triggered for some HDR encodings in
hdr_alpha_unpack().
- Bug fix: Redirect error logging for failed
.dds and .ktx input
image loading to stderr, and improve message consistency.
5.4.0
Status: Released May 2026
The 5.4.0 release is a minor feature release.
This release includes changes to the public interface in the astcenc.h
header. We always recommend rebuilding your client-side code using the
header from the same release to avoid compatibility issues.
- General:
- Improvement: The interface header
astcenc.h is now C compliant to
make it usable from C programs.
- Improvement: Contexts using the same configuration can now share
read-only data tables. This can significantly reduce the amount of memory
needed for applications that parallelize by processing multiple images
in parallel instead of slicing a single image in parallel.
- Improvement: Decompressor (
astcdec) builds, which lack compression
support, now use a smaller block_size_descriptor by omitting fields that
are only needed for compression. This reduces the size of a decompressor
context by more than 10MB!
- Optimization: A SIMD backend for the RISC-V Vector extensions has been
added, and is auto-selected when configured with
ASTCENC_ISA_NONE and a
core with a 256-bit vector width. See Building.md for
details.
- Bug fix: Avoid using an undefined
quant_weight value if all one
partition trials return an error block.
- Bug fix: Remove remaining instances of type aliasing through unions.
- Bug fix: Avoid compiler double definition warning for
NOMINMAX when
compiling with MinGW.
- Bug fix: Avoid compiler floating point model override warning when
compiling with Clang 20.
5.3.0
Status: Released March 2025
The 5.3.0 release is a minor maintenance release.
- General:
- Feature: Reference C builds (
ASTCENC_ISA_NONE) now support compiling
for big-endian CPUs. Compile with -DASTCENC_BIG_ENDIAN=ON when compiling
for a big-endian target; it is not auto-detected.
- Improvement: Builds using GCC now specify
-flto=auto to allow
parallel link steps, and remove the log warnings about not setting a CPU
count parameter value.
- Bug fix: Builds using MSVC
cl.exe that do not specify an explicit
ISA using the preprocessor configuration defines will now correctly
default to the SSE2 backend on x86-64 and the NEON backend on Arm64. Previously they would have defaulted to the reference C implementation,
which is around 3.25 times slower.
5.2.0
Status: Released February 2025
The 5.2.0 release is a minor maintenance release.
This release includes changes to the public interface in the astcenc.h
header. We always recommend rebuilding your client-side code using the
header from the same release to avoid compatibility issues.
- General:
- Change: Changed sRGB alpha channel endpoint expansion to match the
revised Khronos Data Format Specification (v1.4.0), which reverts an
unintended specification change. Compared to previous releases, this change
can cause LSB bit differences in the alpha channel of compressed images.
- Feature: Arm64 builds for Linux added to the GitHub Actions builds, and
Arm64 binaries for NEON, 128-bit SVE and 256-bit SVE added to release
builds.
- Feature: Added a new codec API,
astcenc_compress_cancel(), which can
be used to cancel an in-flight compression. This is designed to help make
it easier to integrate the codec into an interactive user interface that
can respond to user events with low latency.
- Bug fix: Removed incorrect
static variable qualifier, which could
result in an incorrect tune_mse_overshoot heuristic threshold being used
if a user ran multiple concurrent compressions with different settings.
5.1.0
Status: Released November 2024
The 5.1.0 release is an optimization release, giving moderate performance
improvements on all platforms. There are no image quality differences.
- General:
- Feature: Added a new CMake build option to control use of native
gathers, as they can be slower than scalar loads on some common x86
microarchitectures. Build with
-DASTCENC_X86_GATHERS=OFF to disable use
of native gathers in AVX2 builds.
- Optimization: Added new
gather() abstraction for gathers using byte
indices, allowing implementations without gather hardware to skip the
byte-to-int index conversion.
- Optimization: Optimized
compute_lowest_and_highest_weight() to
pre-compute min/max outside of the main loop.
- Optimization: Added improved intrinsics sequence for SSE and AVX2
integer
hmin() and hmax().
- Optimization: Added improved intrinsics sequence for
vint4(uint8_t*)
on systems implementing Arm SVE.
5.0.0
Status: Released November 2024
The 5.0.0 release is the first stable release in the 5.x series. The main new
feature is support for the Arm Scalable Vector Extensions (SVE) SIMD instruction
set.
- General:
- Bug fix: Fixed incorrect return type in "None" vector library
reference implementation.
- Bug fix: Fixed sincos table index under/overflow.
- Feature: Changed
ASTCENC_ISA_NATIVE builds to use -march=native and
-mcpu=native.
- Feature: Added backend for Arm SVE fixed-width 256-bit builds. These
can only run on hardware implementing 256-bit SVE.
- Feature: Added backend for Arm SVE 128-bit builds. These are portable
builds and can run on hardware implementing any SVE vector length, but the
explicit SVE use is augmented NEON and will only use the bottom 128 bits of
each SVE vector.
- Feature: Optimized NEON mask
any() and all() functions.
- Feature: Migrated build and test to GitHub Actions pipelines.
Copyright © 2022-2026, Arm Limited and contributors.