<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/732608b83c39dea274117e9279cce6100dd91a11">https://github.com/macports/macports-ports/commit/732608b83c39dea274117e9279cce6100dd91a11</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 732608b83c3 libjxl: update to 0.7.0
</span>732608b83c3 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 732608b83c39dea274117e9279cce6100dd91a11
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sat Sep 24 10:26:32 2022 +1000
<span style='display:block; white-space:pre;color:#404040;'> libjxl: update to 0.7.0
</span>---
graphics/libjxl/Portfile | 40 +--
graphics/libjxl/files/StoreFence.patch | 38 ---
graphics/libjxl/files/exclude-libs.patch | 59 ----
graphics/libjxl/files/giflib_include_order.patch | 11 +
graphics/libjxl/files/hwy-deprecated.patch | 362 -----------------------
graphics/libjxl/files/hwy-deprecated2.patch | 108 -------
6 files changed, 23 insertions(+), 595 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/libjxl/Portfile b/graphics/libjxl/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a1083713f33..26e67b0801e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/libjxl/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/libjxl/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup github 1.0
</span> PortGroup cmake 1.0
PortGroup compiler_blacklist_versions 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup libjxl libjxl 0.6.1 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup libjxl libjxl 0.7.0 v
</span> categories graphics
maintainers {jmr @jmroot}
license BSD
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,21 +15,15 @@ description JPEG XL reference implementation
</span> long_description A reference implementation of JPEG XL.
github.tarball_from archive
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# No option to use external lodepng or skcms
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set lodepng_commit 48e5364ef48ec2408f44c727657ac1b6703185f8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# No option to use external skcms
</span> set skcms_commit 64374756e03700d649f897dbd98c95e78c30c7da
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites-append https://github.com/lvandeve/lodepng/archive/${lodepng_commit}:lodepng \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sourceforge:project/macports/distfiles/${name}:skcms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites-append sourceforge:project/macports/distfiles/${name}:skcms
</span> # googlesource doesn't provide stable tarballs
# https://skia.googlesource.com/skcms/+archive/${skcms_commit}.tar.gz?dummy=
<span style='display:block; white-space:pre;background:#ffe0e0;'>-distfiles-append lodepng-${lodepng_commit}${extract.suffix}:lodepng \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- skcms-${skcms_commit}${extract.suffix}:skcms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles-append skcms-${skcms_commit}${extract.suffix}:skcms
</span> checksums ${name}-${version}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 a99a40350b85a29e4e9f5d16ec45da2913187fd3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 ccbd5a729d730152303be399f033b905e608309d5802d77a61a95faa092592c5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lodepng-${lodepng_commit}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 a9fef0a45ec23285f2b5475ec3612376e47f2779 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 c47c48c77a205f1af484b7b5a847290af65de3ea6f15817aa27c5ec7cc5208fd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 3de480cc57aa953e3ec2576a6eadbc9df4eafca1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 3114bba1fabb36f6f4adc2632717209aa6f84077bc4e93b420e0d63fa0455c5e \
</span> skcms-${skcms_commit}${extract.suffix} \
rmd160 c63bd713ad6f1b7d99b4044c4d3d71510c8318ae \
sha256 aabd4bae8b741c9bdc8b31bec95df3a3344b77c7d17bf9d25befb401f4971d18
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -39,45 +33,35 @@ depends_build-append \
</span> port:pkgconfig \
port:python310
depends_lib port:brotli \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:giflib5 \
</span> port:highway \
path:include/turbojpeg.h:libjpeg-turbo \
port:libpng \
port:openexr
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# giflib5 currently has install_name issues
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://trac.macports.org/ticket/65679
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# port:giflib5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> extract.only ${name}-${version}${extract.suffix}
post-extract {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- system -W ${worksrcpath}/third_party/lodepng \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "tar --strip-components=1 -xzf ${distpath}/lodepng-${lodepng_commit}${extract.suffix}"
</span> system -W ${worksrcpath}/third_party/skcms \
"tar -xzf ${distpath}/skcms-${skcms_commit}${extract.suffix}"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles StoreFence.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- hwy-deprecated.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- hwy-deprecated2.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exclude-libs.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles giflib_include_order.patch
</span>
cmake.out_of_source yes
configure.args-append \
-DBUILD_TESTING=NO \
-DAVIF_FOUND=NO \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- -DDOXYGEN_FOUND=NO \
</span> -DWebP_FOUND=NO \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DJPEGXL_ENABLE_DOXYGEN=NO \
</span> -DJPEGXL_ENABLE_JNI=NO \
-DJPEGXL_ENABLE_OPENEXR=YES \
-DJPEGXL_ENABLE_SJPEG=NO \
-DJPEGXL_ENABLE_SKCMS=YES \
-DJPEGXL_FORCE_SYSTEM_BROTLI=YES \
-DJPEGXL_FORCE_SYSTEM_HWY=YES \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- -DPython3_EXECUTABLE:FILEPATH=${prefix}/bin/python3.10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# -DGIF_INCLUDE_DIR:FILEPATH=${prefix}/include/giflib5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# -DGIF_LIBRARY:FILEPATH=${prefix}/lib/giflib5/lib/libgif.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DPython3_EXECUTABLE:FILEPATH=${prefix}/bin/python3.10 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DGIF_INCLUDE_DIR:FILEPATH=${prefix}/include/giflib5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DGIF_LIBRARY:FILEPATH=${prefix}/lib/giflib5/lib/libgif.dylib
</span>
compiler.cxx_standard 2011
# Compilation warning (from highway headers):
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/libjxl/files/StoreFence.patch b/graphics/libjxl/files/StoreFence.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 94aa09f399f..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/libjxl/files/StoreFence.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,38 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 600b591538827247f1b2ad6ee6ae627a2173b7ec Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jan Wassenberg <janwas@google.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 4 Feb 2022 11:37:43 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Rename deprecated StoreFence to FlushStream
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/profiler/profiler.cc | 6 +++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/profiler/tsc_timer.h | 1 -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 3 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/profiler/profiler.cc b/lib/profiler/profiler.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 63d8569df..c72656ee8 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/profiler/profiler.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/profiler/profiler.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -138,7 +138,7 @@ class Results {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void AnalyzePackets(const Packet* HWY_RESTRICT packets,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const size_t num_packets) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Ensures prior weakly-ordered streaming stores are globally visible.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- hwy::StoreFence();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ hwy::FlushStream();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const uint64_t t0 = TicksBefore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -448,12 +448,12 @@ void ThreadSpecific::ComputeOverhead() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const size_t kReps = 10000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Analysis time should not be included => must fit within buffer.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- HWY_ASSERT(kReps * 2 < max_packets_);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- hwy::StoreFence();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ hwy::FlushStream();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const uint64_t t0 = TicksBefore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t i = 0; i < kReps; ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- PROFILER_ZONE("Dummy");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- hwy::StoreFence();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ hwy::FlushStream();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const uint64_t t1 = TicksAfter();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- HWY_ASSERT(num_packets_ + buffer_size_ == kReps * 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- buffer_size_ = 0;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/libjxl/files/exclude-libs.patch b/graphics/libjxl/files/exclude-libs.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 62e8038bb42..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/libjxl/files/exclude-libs.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,59 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 88fe3fff3dc70c72405f57c69feffd9823930034 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Misaki Kasumi <misakikasumi@outlook.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Thu, 16 Sep 2021 18:13:28 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Fix building with LLVM LLD (#582)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-In 63a481a, linker flag "-Wl,--exclude-libs=ALL" is added.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-However, LLVM LLD does not support it.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Building with LLVM toolchain would result in failure.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This commit check whether the linker support this flag.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-If it does not, the flag will not be added.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-A not-so-pretty method with CheckCSourceCompiles is used,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-because CMake 3.10 does not support
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CheckLinkerFlag or CMAKE_REQUIRED_LINK_OPTIONS.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AUTHORS | 1 +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl.cmake | 13 +++++++++++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 12 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/AUTHORS b/AUTHORS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index d929672d6..539eae3fc 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/AUTHORS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/AUTHORS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -26,3 +26,4 @@ Pieter Wuille
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xiota
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Ziemowit Zabawa <ziemek.zabawa@outlook.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Andrius Lukas Narbutas <andrius4669@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Misaki Kasumi <misakikasumi@outlook.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl.cmake b/lib/jxl.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1f5e6b927..b8edf8a94 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -523,6 +523,13 @@ set_target_properties(jxl_dec PROPERTIES
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# Check whether the linker support excluding libs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+set(LINKER_EXCLUDE_LIBS_FLAG "-Wl,--exclude-libs=ALL")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+include(CheckCSourceCompiles)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+list(APPEND CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+check_c_source_compiles("int main(){return 0;}" LINKER_SUPPORT_EXCLUDE_LIBS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+list(REMOVE_ITEM CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Add a jxl.version file as a version script to tag symbols with the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # appropriate version number. This script is also used to limit what's exposed
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # in the shared library from the static dependencies bundled here.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -541,8 +548,10 @@ foreach(target IN ITEMS jxl jxl_dec)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This hides the default visibility symbols from static libraries bundled into
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # the shared library. In particular this prevents exposing symbols from hwy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # and skcms in the shared library.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- set_property(TARGET ${target} APPEND_STRING PROPERTY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- LINK_FLAGS " -Wl,--exclude-libs=ALL")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if(${LINKER_SUPPORT_EXCLUDE_LIBS})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ set_property(TARGET ${target} APPEND_STRING PROPERTY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ LINK_FLAGS " ${LINKER_EXCLUDE_LIBS_FLAG}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ endif()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- endforeach()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Only install libjxl shared library. The libjxl_dec is not installed since it
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/libjxl/files/giflib_include_order.patch b/graphics/libjxl/files/giflib_include_order.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..33f61c7a0a2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/libjxl/files/giflib_include_order.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- lib/jxl_extras.cmake.orig 2022-09-21 22:29:50.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ lib/jxl_extras.cmake 2022-09-24 10:19:40.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -101,7 +101,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extras/dec/gif.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extras/dec/gif.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- target_include_directories(jxl_extras_codec-obj PRIVATE "${GIF_INCLUDE_DIRS}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ target_include_directories(jxl_extras_codec-obj BEFORE PRIVATE "${GIF_INCLUDE_DIRS}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ list(APPEND JXL_EXTRAS_CODEC_INTERNAL_LIBRARIES ${GIF_LIBRARIES})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ list(APPEND JXL_EXTRAS_CODEC_PUBLIC_DEFINITIONS -DJPEGXL_ENABLE_GIF=1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(JPEGXL_DEP_LICENSE_DIR)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/libjxl/files/hwy-deprecated.patch b/graphics/libjxl/files/hwy-deprecated.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 630f7572d38..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/libjxl/files/hwy-deprecated.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,362 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From e0107a6ca637eb3997131e966e19fcd6001b37ad Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jan Wassenberg <janwas@google.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 12 Nov 2021 09:12:35 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Avoid deprecated Highway functions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Instead use the newer overloads with the extra d arg required to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-support SVE/RISC-V.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/dec_reconstruct.cc | 4 +--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/dec_upsample.cc | 4 +--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_ac_strategy.cc | 8 +++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_adaptive_quantization.cc | 8 +++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_ar_control_field.cc | 4 +--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_butteraugli_pnorm.cc | 6 ++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_chroma_from_luma.cc | 10 +++----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_cluster.cc | 4 +--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_entropy_coder.cc | 4 +--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/enc_fast_heuristics.cc | 8 +++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/gauss_blur.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/modular/encoding/enc_ma.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/rational_polynomial_test.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/splines.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/transpose-inl.h | 39 ++++++++++++++--------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 15 files changed, 54 insertions(+), 53 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/dec_reconstruct.cc b/lib/jxl/dec_reconstruct.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 9d1eb6102..69a436154 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/dec_reconstruct.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/dec_reconstruct.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -357,8 +357,8 @@ void DoYCbCrUpsampling(size_t hs, size_t vs, ImageF* plane_in, const Rect& rect,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Store(left, d, out + x);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Store(right, d, out + x + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Store(InterleaveLower(left, right), d, out + x);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Store(InterleaveUpper(left, right), d, out + x + Lanes(d));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Store(InterleaveLower(d, left, right), d, out + x);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Store(InterleaveUpper(d, left, right), d, out + x + Lanes(d));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/dec_upsample.cc b/lib/jxl/dec_upsample.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7277e4f11..3cb3f3646 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/dec_upsample.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/dec_upsample.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -176,8 +176,8 @@ void Upsample(const ImageF& src, const Rect& src_rect, ImageF* dst,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- min = Min(LoadU(df, raw_min_row + sx + fx), min);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- max = Max(LoadU(df, raw_max_row + sx + fx), max);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- min = MinOfLanes(min);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- max = MaxOfLanes(max);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ min = MinOfLanes(df, min);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ max = MaxOfLanes(df, max);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t lx = 0; lx < N; lx += V) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- StoreU(min, df, min_row + N * sx + lx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- StoreU(max, df, max_row + N * sx + lx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_ac_strategy.cc b/lib/jxl/enc_ac_strategy.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index bc5046518..c0ed68fde 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_ac_strategy.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_ac_strategy.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -429,8 +429,8 @@ float EstimateEntropy(const AcStrategy& acs, size_t x, size_t y,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- entropy_v += nzeros_v * cost1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- entropy += GetLane(SumOfLanes(entropy_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- size_t num_nzeros = GetLane(SumOfLanes(nzeros_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ entropy += GetLane(SumOfLanes(df, entropy_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ size_t num_nzeros = GetLane(SumOfLanes(df, nzeros_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Add #bit of num_nonzeros, as an estimate of the cost for encoding the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // number of non-zeros of the block.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size_t nbits = CeilLog2Nonzero(num_nzeros + 1) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -441,9 +441,9 @@ float EstimateEntropy(const AcStrategy& acs, size_t x, size_t y,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- float ret =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- entropy +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- masking *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- ((config.info_loss_multiplier * GetLane(SumOfLanes(info_loss))) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ((config.info_loss_multiplier * GetLane(SumOfLanes(df, info_loss))) +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- (config.info_loss_multiplier2 *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sqrt(num_blocks * GetLane(SumOfLanes(info_loss2)))));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sqrt(num_blocks * GetLane(SumOfLanes(df, info_loss2)))));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_adaptive_quantization.cc b/lib/jxl/enc_adaptive_quantization.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7a6c77204..51cea6565 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_adaptive_quantization.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_adaptive_quantization.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -189,7 +189,7 @@ V GammaModulation(const D d, const size_t x, const size_t y,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- overall_ratio += avg_ratio;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- overall_ratio = SumOfLanes(overall_ratio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ overall_ratio = SumOfLanes(d, overall_ratio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- overall_ratio *= Set(d, 1.0f / 64);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // ideally -1.0, but likely optimal correction adds some entropy, so slightly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // less than that.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -246,12 +246,12 @@ V ColorModulation(const D d, const size_t x, const size_t y,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // blue we consider as if it was fully red or blue.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static const float ratio = 30.610615782142737f; // out of 64 pixels.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto overall_red_coverage = SumOfLanes(red_coverage);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto overall_red_coverage = SumOfLanes(d, red_coverage);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- overall_red_coverage =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Min(overall_red_coverage, Set(d, ratio * kRedRampLength));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- overall_red_coverage *= Set(d, red_strength / ratio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto overall_blue_coverage = SumOfLanes(blue_coverage);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto overall_blue_coverage = SumOfLanes(d, blue_coverage);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- overall_blue_coverage =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Min(overall_blue_coverage, Set(d, ratio * kBlueRampLength));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- overall_blue_coverage *= Set(d, blue_strength / ratio);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -295,7 +295,7 @@ V HfModulation(const D d, const size_t x, const size_t y, const ImageF& xyb,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sum = SumOfLanes(sum);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sum = SumOfLanes(d, sum);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return MulAdd(sum, Set(d, -2.0052193233688884f / 112), out_val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_ar_control_field.cc b/lib/jxl/enc_ar_control_field.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f43340eda..f8025ac69 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_ar_control_field.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_ar_control_field.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -157,7 +157,7 @@ void ProcessTile(const Image3F& opsin, PassesEncoderState* enc_state,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sum += LoadU(df4, rows_in[iy] + x * 4 + ix + 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- row_out[x] = GetLane(Sqrt(SumOfLanes(sum))) * (1.0f / 4.0f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ row_out[x] = GetLane(Sqrt(SumOfLanes(df4, sum))) * (1.0f / 4.0f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Indexing iy and ix is a bit tricky as we include a 2 pixel border
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -193,7 +193,7 @@ void ProcessTile(const Image3F& opsin, PassesEncoderState* enc_state,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sum += Load(df4, rows_in[iy] + sx + ix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- row_out[x] = GetLane(Sqrt(SumOfLanes(sum))) * (1.0f / 4.0f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ row_out[x] = GetLane(Sqrt(SumOfLanes(df4, sum))) * (1.0f / 4.0f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- float sum = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t iy = sy; iy < ey; iy++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_butteraugli_pnorm.cc b/lib/jxl/enc_butteraugli_pnorm.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 32623b8ed..b7feac048 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_butteraugli_pnorm.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_butteraugli_pnorm.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -87,13 +87,13 @@ double ComputeDistanceP(const ImageF& distmap, const ButteraugliParams& params,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- double v = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- v += pow(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- onePerPixels * (sum1[0] + GetLane(SumOfLanes(Load(d, sum_totals0)))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ onePerPixels * (sum1[0] + GetLane(SumOfLanes(d, Load(d, sum_totals0)))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1.0 / (p * 1.0));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- v += pow(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- onePerPixels * (sum1[1] + GetLane(SumOfLanes(Load(d, sum_totals1)))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ onePerPixels * (sum1[1] + GetLane(SumOfLanes(d, Load(d, sum_totals1)))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1.0 / (p * 2.0));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- v += pow(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- onePerPixels * (sum1[2] + GetLane(SumOfLanes(Load(d, sum_totals2)))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ onePerPixels * (sum1[2] + GetLane(SumOfLanes(d, Load(d, sum_totals2)))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1.0 / (p * 4.0));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- v /= 3.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return v;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_chroma_from_luma.cc b/lib/jxl/enc_chroma_from_luma.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e5c3f3899..370595c5e 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_chroma_from_luma.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_chroma_from_luma.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -91,9 +91,9 @@ struct CFLFunction {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fdme_v += IfThenElse(av >= thres, zero, dme);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *fpeps = first_derivative_peps + GetLane(SumOfLanes(fdpe_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *fmeps = first_derivative_meps + GetLane(SumOfLanes(fdme_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return first_derivative + GetLane(SumOfLanes(fd_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *fpeps = first_derivative_peps + GetLane(SumOfLanes(df, fdpe_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *fmeps = first_derivative_meps + GetLane(SumOfLanes(df, fdme_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return first_derivative + GetLane(SumOfLanes(df, fd_v));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const float* JXL_RESTRICT values_m;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -124,8 +124,8 @@ int32_t FindBestMultiplier(const float* values_m, const float* values_s,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cb = MulAdd(a, b, cb);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // + distance_mul * x^2 * num
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- x = -GetLane(SumOfLanes(cb)) /
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- (GetLane(SumOfLanes(ca)) + num * distance_mul * 0.5f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ x = -GetLane(SumOfLanes(df, cb)) /
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ (GetLane(SumOfLanes(df, ca)) + num * distance_mul * 0.5f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr float eps = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr float kClamp = 20.0f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_cluster.cc b/lib/jxl/enc_cluster.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1f12a2988..8ae863c47 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_cluster.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_cluster.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -49,7 +49,7 @@ void HistogramEntropy(const Histogram& a) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const auto counts = LoadU(di, &a.data_[i]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- entropy_lanes += Entropy(ConvertTo(df, counts), inv_tot, total);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- a.entropy_ += GetLane(SumOfLanes(entropy_lanes));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ a.entropy_ += GetLane(SumOfLanes(df, entropy_lanes));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- float HistogramDistance(const Histogram& a, const Histogram& b) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -71,7 +71,7 @@ float HistogramDistance(const Histogram& a, const Histogram& b) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const auto counts = ConvertTo(df, a_counts + b_counts);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- distance_lanes += Entropy(counts, inv_tot, total);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const float total_distance = GetLane(SumOfLanes(distance_lanes));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const float total_distance = GetLane(SumOfLanes(df, distance_lanes));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return total_distance - a.entropy_ - b.entropy_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_entropy_coder.cc b/lib/jxl/enc_entropy_coder.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 094630097..07fe5a05b 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_entropy_coder.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_entropy_coder.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -86,7 +86,7 @@ int32_t NumNonZeroExceptLLF(const size_t cx, const size_t cy,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // We want area - sum_zero, add because neg_sum_zero is already negated.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const int32_t nzeros =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- int32_t(cx * cy * kDCTBlockSize) + GetLane(SumOfLanes(neg_sum_zero));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int32_t(cx * cy * kDCTBlockSize) + GetLane(SumOfLanes(di, neg_sum_zero));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const int32_t shifted_nzeros = static_cast<int32_t>(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- (nzeros + covered_blocks - 1) >> log2_covered_blocks);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -135,7 +135,7 @@ int32_t NumNonZero8x8ExceptDC(const int32_t* JXL_RESTRICT block,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // We want 64 - sum_zero, add because neg_sum_zero is already negated.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const int32_t nzeros =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- int32_t(kDCTBlockSize) + GetLane(SumOfLanes(neg_sum_zero));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int32_t(kDCTBlockSize) + GetLane(SumOfLanes(di, neg_sum_zero));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *nzeros_pos = nzeros;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/enc_fast_heuristics.cc b/lib/jxl/enc_fast_heuristics.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 16f7670c1..055178238 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/enc_fast_heuristics.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/enc_fast_heuristics.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -94,8 +94,8 @@ Status Heuristics(PassesEncoderState* enc_state,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cb = MulAdd(a, b, cb);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- float best =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- -GetLane(SumOfLanes(cb)) / (GetLane(SumOfLanes(ca)) + 1e-9f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ float best = -GetLane(SumOfLanes(df, cb)) /
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ (GetLane(SumOfLanes(df, ca)) + 1e-9f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int8_t& res = (c == 0 ? shared.cmap.ytox_map : shared.cmap.ytob_map)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- .Row(ty)[tx];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- res = std::max(-128.0f, std::min(127.0f, roundf(best)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -124,8 +124,8 @@ Status Heuristics(PassesEncoderState* enc_state,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- max = IfThenElse(max > nn, max, nn);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- row_out_avg[x] = GetLane(SumOfLanes(sum));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- row_out[x] = GetLane(MaxOfLanes(max));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ row_out_avg[x] = GetLane(SumOfLanes(df4, sum));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ row_out[x] = GetLane(MaxOfLanes(df4, max));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/gauss_blur.cc b/lib/jxl/gauss_blur.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f9babe701..f24a74cb9 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/gauss_blur.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/gauss_blur.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -421,7 +421,7 @@ ImageF ConvolveXSampleAndTranspose(const ImageF& in,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (int i = -r; i <= r; i += Lanes(df)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sum = MulAdd(LoadU(df, rowp + x + i), LoadU(df, kernelp + i), sum);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- out.Row(ox)[y] = GetLane(SumOfLanes(sum));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ out.Row(ox)[y] = GetLane(SumOfLanes(df, sum));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (; x < in.xsize(); x += res, ++ox) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- float sum = 0.0f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/modular/encoding/enc_ma.cc b/lib/jxl/modular/encoding/enc_ma.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f847db620..7700ecc26 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/modular/encoding/enc_ma.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/modular/encoding/enc_ma.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -60,7 +60,7 @@ float EstimateBits(const int32_t *counts, int32_t *rounded_counts,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bits_lanes -=
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- IfThenElse(counts_v == zero, zero, counts_v * BitCast(df, nbps));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return GetLane(SumOfLanes(bits_lanes));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return GetLane(SumOfLanes(df, bits_lanes));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void MakeSplitNode(size_t pos, int property, int splitval, Predictor lpred,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/rational_polynomial_test.cc b/lib/jxl/rational_polynomial_test.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index d0e628daa..e0d5a6ee2 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/rational_polynomial_test.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/rational_polynomial_test.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -50,7 +50,7 @@ struct EvalLog2 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const HWY_FULL(int32_t) di;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const auto x_bits = BitCast(di, vx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Cannot handle negative numbers / NaN.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- JXL_DASSERT(AllTrue(Abs(x_bits) == x_bits));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ JXL_DASSERT(AllTrue(di, Abs(x_bits) == x_bits));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Range reduction to [-1/3, 1/3] - 3 integer, 2 float ops
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const auto exp_bits = x_bits - Set(di, 0x3f2aaaab); // = 2/3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/splines.cc b/lib/jxl/splines.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 58ebfd681..0026fa9c6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/splines.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/splines.cc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -53,7 +53,7 @@ float ContinuousIDCT(const float dct[32], float t) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- auto local_res = LoadU(df, dct + i) * cos;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- result = MulAdd(Set(df, square_root<2>::value), local_res, result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return GetLane(SumOfLanes(result));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return GetLane(SumOfLanes(df, result));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- template <typename DF>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/transpose-inl.h b/lib/jxl/transpose-inl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index d12b1295e..e89e8af0a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/transpose-inl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/transpose-inl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -137,25 +137,26 @@ JXL_INLINE_TRANSPOSE void GenericTransposeBlock(TransposeSimdTag<true>,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static_assert(COLS_or_0 % 4 == 0, "Invalid number of columns");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t n = 0; n < ROWS; n += 4) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t m = 0; m < COLS; m += 4) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto p0 = from.LoadPart(BlockDesc<4>(), n + 0, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto p1 = from.LoadPart(BlockDesc<4>(), n + 1, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto p2 = from.LoadPart(BlockDesc<4>(), n + 2, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto p3 = from.LoadPart(BlockDesc<4>(), n + 3, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q0 = InterleaveLower(p0, p2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q1 = InterleaveLower(p1, p3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q2 = InterleaveUpper(p0, p2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q3 = InterleaveUpper(p1, p3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r0 = InterleaveLower(q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r1 = InterleaveUpper(q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r2 = InterleaveLower(q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r3 = InterleaveUpper(q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<4>(), r0, m + 0, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<4>(), r1, m + 1, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<4>(), r2, m + 2, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<4>(), r3, m + 3, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const BlockDesc<4> d;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto p0 = from.LoadPart(d, n + 0, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto p1 = from.LoadPart(d, n + 1, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto p2 = from.LoadPart(d, n + 2, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto p3 = from.LoadPart(d, n + 3, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q0 = InterleaveLower(d, p0, p2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q1 = InterleaveLower(d, p1, p3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q2 = InterleaveUpper(d, p0, p2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q3 = InterleaveUpper(d, p1, p3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r0 = InterleaveLower(d, q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r1 = InterleaveUpper(d, q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r2 = InterleaveLower(d, q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r3 = InterleaveUpper(d, q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, r0, m + 0, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, r1, m + 1, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, r2, m + 2, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, r3, m + 3, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/libjxl/files/hwy-deprecated2.patch b/graphics/libjxl/files/hwy-deprecated2.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 53641be1edd..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/libjxl/files/hwy-deprecated2.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,108 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 0902f85ca6e9e305338baf7974192acab8c53ac5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jan Wassenberg <janwas@google.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Thu, 6 Jan 2022 09:36:20 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Avoid deprecated Hwy functions - add d arg. Also remove
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- unnecessary include
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lib/jxl/transpose-inl.h | 85 ++++++++++---------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 43 insertions(+), 43 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/lib/jxl/transpose-inl.h b/lib/jxl/transpose-inl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e89e8af0a..467442073 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/lib/jxl/transpose-inl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/lib/jxl/transpose-inl.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -74,50 +74,51 @@ JXL_INLINE_TRANSPOSE void GenericTransposeBlock(TransposeSimdTag<true>,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static_assert(COLS_or_0 % 8 == 0, "Invalid number of columns");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t n = 0; n < ROWS; n += 8) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (size_t m = 0; m < COLS; m += 8) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i0 = from.LoadPart(BlockDesc<8>(), n + 0, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i1 = from.LoadPart(BlockDesc<8>(), n + 1, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i2 = from.LoadPart(BlockDesc<8>(), n + 2, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i3 = from.LoadPart(BlockDesc<8>(), n + 3, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i4 = from.LoadPart(BlockDesc<8>(), n + 4, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i5 = from.LoadPart(BlockDesc<8>(), n + 5, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i6 = from.LoadPart(BlockDesc<8>(), n + 6, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto i7 = from.LoadPart(BlockDesc<8>(), n + 7, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const BlockDesc<8> d;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i0 = from.LoadPart(d, n + 0, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i1 = from.LoadPart(d, n + 1, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i2 = from.LoadPart(d, n + 2, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i3 = from.LoadPart(d, n + 3, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i4 = from.LoadPart(d, n + 4, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i5 = from.LoadPart(d, n + 5, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i6 = from.LoadPart(d, n + 6, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto i7 = from.LoadPart(d, n + 7, m + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Surprisingly, this straightforward implementation (24 cycles on port5)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // is faster than load128+insert and LoadDup128+ConcatUpperLower+blend.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q0 = InterleaveLower(i0, i2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q1 = InterleaveLower(i1, i3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q2 = InterleaveUpper(i0, i2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q3 = InterleaveUpper(i1, i3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q4 = InterleaveLower(i4, i6);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q5 = InterleaveLower(i5, i7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q6 = InterleaveUpper(i4, i6);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto q7 = InterleaveUpper(i5, i7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r0 = InterleaveLower(q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r1 = InterleaveUpper(q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r2 = InterleaveLower(q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r3 = InterleaveUpper(q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r4 = InterleaveLower(q4, q5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r5 = InterleaveUpper(q4, q5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r6 = InterleaveLower(q6, q7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto r7 = InterleaveUpper(q6, q7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i0 = ConcatLowerLower(r4, r0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i1 = ConcatLowerLower(r5, r1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i2 = ConcatLowerLower(r6, r2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i3 = ConcatLowerLower(r7, r3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i4 = ConcatUpperUpper(r4, r0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i5 = ConcatUpperUpper(r5, r1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i6 = ConcatUpperUpper(r6, r2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- i7 = ConcatUpperUpper(r7, r3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i0, m + 0, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i1, m + 1, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i2, m + 2, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i3, m + 3, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i4, m + 4, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i5, m + 5, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i6, m + 6, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- to.StorePart(BlockDesc<8>(), i7, m + 7, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q0 = InterleaveLower(d, i0, i2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q1 = InterleaveLower(d, i1, i3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q2 = InterleaveUpper(d, i0, i2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q3 = InterleaveUpper(d, i1, i3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q4 = InterleaveLower(d, i4, i6);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q5 = InterleaveLower(d, i5, i7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q6 = InterleaveUpper(d, i4, i6);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto q7 = InterleaveUpper(d, i5, i7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r0 = InterleaveLower(d, q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r1 = InterleaveUpper(d, q0, q1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r2 = InterleaveLower(d, q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r3 = InterleaveUpper(d, q2, q3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r4 = InterleaveLower(d, q4, q5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r5 = InterleaveUpper(d, q4, q5);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r6 = InterleaveLower(d, q6, q7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto r7 = InterleaveUpper(d, q6, q7);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i0 = ConcatLowerLower(d, r4, r0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i1 = ConcatLowerLower(d, r5, r1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i2 = ConcatLowerLower(d, r6, r2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i3 = ConcatLowerLower(d, r7, r3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i4 = ConcatUpperUpper(d, r4, r0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i5 = ConcatUpperUpper(d, r5, r1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i6 = ConcatUpperUpper(d, r6, r2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ i7 = ConcatUpperUpper(d, r7, r3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i0, m + 0, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i1, m + 1, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i2, m + 2, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i3, m + 3, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i4, m + 4, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i5, m + 5, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i6, m + 6, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ to.StorePart(d, i7, m + 7, n + 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span></pre><pre style='margin:0'>
</pre>