<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>