diff --git a/.gitignore b/.gitignore index d9b9799..f274000 100644 --- a/.gitignore +++ b/.gitignore @@ -6,18 +6,3 @@ /qtwebengine-everywhere-src-6.5.2-clean.tar.xz /qtwebengine-everywhere-src-6.5.3.tar.xz /qtwebengine-everywhere-src-6.5.3-clean.tar.xz -/qtwebengine-everywhere-src-6.6.1-clean.tar.xz -/qtwebengine-everywhere-src-6.6.2-clean.tar.xz -/qtwebengine-everywhere-src-6.7.0-clean.tar.xz -/qtwebengine-everywhere-src-6.7.1-clean.tar.xz -/qtwebengine-everywhere-src-6.7.2-clean.tar.xz -/qtwebengine-everywhere-src-6.8.0-clean.tar.xz -/qtwebengine-everywhere-src-6.8.1-clean.tar.xz -/qtwebengine-everywhere-src-6.8.2-clean.tar.xz -/qtwebengine-everywhere-src-6.9.0-rc-clean.tar.xz -/qtwebengine-everywhere-src-6.9.0-clean.tar.xz -/qtwebengine-everywhere-src-6.9.1-clean.tar.xz -/qtwebengine-everywhere-src-6.9.2-clean.tar.xz -/qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz -/qtwebengine-everywhere-src-6.10.0-clean.tar.xz -/qtwebengine-everywhere-src-6.10.1-clean.tar.xz diff --git a/Partial-migration-from-imp-to-importlib.patch b/Partial-migration-from-imp-to-importlib.patch new file mode 100644 index 0000000..46cc88f --- /dev/null +++ b/Partial-migration-from-imp-to-importlib.patch @@ -0,0 +1,36 @@ +From cbf5f7ad619a967bd54482e1d1df36d80b28145a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Thu, 13 Jul 2023 12:18:00 +0200 +Subject: [PATCH] Partial migration from imp to importlib + +--- + .../resources/protobufs/binary_proto_generator.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py +index 2a1802d..ba67251 100755 +--- a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py ++++ b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py +@@ -9,7 +9,7 @@ + """ + from __future__ import print_function + import abc +-import imp ++from importlib import util + import optparse + import os + import re +@@ -68,7 +68,9 @@ class GoogleProtobufModuleImporter: + raise ImportError(fullname) + + filepath = self._fullname_to_filepath(fullname) +- return imp.load_source(fullname, filepath) ++ spec = util.spec_from_file_location(fullname, filepath) ++ loaded = util.module_from_spec(spec) ++ return spec.loader.exec_module(loaded) + + class BinaryProtoGenerator: + +-- +2.41.0 + diff --git a/clean_qtwebengine.sh b/clean_qtwebengine.sh index 5189a83..be31c24 100755 --- a/clean_qtwebengine.sh +++ b/clean_qtwebengine.sh @@ -21,7 +21,7 @@ if [ -z "$1" ] ; then echo "usage: ./clean_qtwebengine.sh VERSION" - echo "e.g.: ./clean_qtwebengine.sh 6.10.0" + echo "e.g.: ./clean_qtwebengine.sh 6.5.0" exit 1 fi diff --git a/prepare-ppc64.sh b/prepare-ppc64.sh deleted file mode 100644 index 2872e29..0000000 --- a/prepare-ppc64.sh +++ /dev/null @@ -1,52 +0,0 @@ -#! /bin/bash -# -# Prepare ppc64le patchset for qtwebengine from Chromium patches using -# - https://quickbuild.io/~raptor-engineering-public/+archive/ubuntu/chromium/ or -# - https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches -# -# Usage -# - check the base Chromium release in CHROMIUM_VERSION -# - get the patches from the URLs above -# - run "prepare-ppc64.sh " -# - -patch_cleanup () -{ - file=$1 - patch=$2 - - [ -f $file ] || { echo "File $file doesn't exist"; exit 1; } - - remove=$(echo $patch | sed -e 's@\/@\\\/@g') - - echo "Removing changes for $patch from $file ..." - - sed -i -e "/Index: chromium-[0-9\.]*\/${remove}/,/^Index:/ { -/Index: chromium-[0-9\.]*\/${remove}/d; -/^[-@=+ ]/d; -/^$/d; -}" $file - -} - -dir=$1 - -[ -d $dir/ppc64le ] || { echo "Path $dir/ppc64le doesn't exist"; exit 1; } - -# remove patches for files not included in the bundled chromium -patch_cleanup $dir/ppc64le/third_party/0001-Add-PPC64-support-for-boringssl.patch third_party/boringssl/src/crypto/test/abi_test.h -patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc -patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h -patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/snapshot/test/test_cpu_context.cc -patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h -patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/test/linux/get_tls.cc -patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/test/multiprocess_posix.cc - -# concatenate the patches from the series file to a single patchset -echo "Creating patchset ..." -cat series.ppc64 | while read line; do - case $line in - \#*) ;; - *) [ -z "$line" ] && continue; cat $dir/$line ;; - esac -done > qtwebengine-chromium-ppc64.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index ad75b37..458c5ad 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -5,46 +5,12 @@ # package-notes causes FTBFS (#2043178) %undefine _package_note_file -# defines for Optional system libraries: -%global use_system_re2 1 -%global use_system_libicu 1 %global use_system_libwebp 1 -%global use_system_opus 1 -%global use_system_ffmpeg 1 -# libvpx is exclusive with VA-API support (libva) which is enabled by default -%global use_system_libvpx 0 -%global use_system_snappy 1 -%global use_system_glib 1 -%global use_system_zlib 1 -%global use_system_minizip 1 -%global use_system_libevent 1 -%global use_system_libxml 1 -%global use_system_lcms2 1 -%global use_system_libpng 1 -%global use_system_libtiff 1 -%global use_system_libjpeg 1 -%global use_system_libopenjpeg2 1 -%global use_system_harfbuzz 1 -%global use_system_freetype 1 -%global use_system_libpci 1 -%global use_system_libudev 1 - +%global use_system_jsoncpp 1 %if 0%{?rhel} && 0%{?rhel} == 9 -%global use_system_re2 0 %global use_system_libicu 0 -%global use_system_minizip 0 -%global use_system_harfbuzz 0 -%endif - -%if 0%{?rhel} && 0%{?rhel} == 10 -%global use_system_zlib 0 -%endif - -# ppc64le builds currently fail with V8/XFA enabled (qt 6.9.0) -%ifarch ppc64le -%global enable_pdf_v8 0 %else -%global enable_pdf_v8 1 +%global use_system_libicu 1 %endif %if 0%{?fedora} && 0%{?fedora} >= 39 @@ -52,6 +18,8 @@ %global use_system_py_six 1 %endif +%global use_system_re2 1 + # NEON support on ARM (detected at runtime) - disable this if you are hitting # FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 #global arm_neon 1 @@ -68,6 +36,8 @@ # webcore_debug v8base_debug %endif +#global prerelease rc + # spellchecking dictionary directory %global _qtwebengine_dictionaries_dir %{_qt6_datadir}/qtwebengine_dictionaries @@ -76,36 +46,20 @@ # and designer plugins %global __provides_exclude_from ^%{_qt6_plugindir}/.*\\.so$ -# FIXME: we cannot use any ~rc or similar suffix as the build -# would fail for having too long filename -#global unstable 1 -%if 0%{?unstable} -%global prerelease rc -%endif - -%global examples 1 - Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.10.1 -Release: 5%{?dist} +Version: 6.6.0 +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html # The other licenses are from Chromium and the code it bundles License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) URL: http://www.qt.io -%global majmin %(echo %{version} | cut -d. -f1-2) -%global qt_version %(echo %{version} | cut -d~ -f1) - # cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg # ./qtwebengine-release.sh -# ./clean_qtwebengine.sh 6.9.0 -%if 0%{?unstable} -Source0: %{qt_module}-everywhere-src-%{qt_version}-%{prerelease}-clean.tar.xz -%else -Source0: %{qt_module}-everywhere-src-%{version}-clean.tar.xz -%endif +# ./clean_qtwebengine.sh 6.4.1 +Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz # cleanup scripts used above Source2: clean_qtwebengine.sh @@ -118,72 +72,38 @@ Source10: macros.qt6-qtwebengine Source20: pulseaudio-12.2-headers.tar.gz # workaround FTBFS against kernel-headers-5.2.0+ -Patch1: qtwebengine-SIOCGSTAMP.patch -Patch2: qtwebengine-link-pipewire.patch +Patch1: qtwebengine-SIOCGSTAMP.patch +Patch2: qtwebengine-link-pipewire.patch # Fix/workaround FTBFS on aarch64 with newer glibc -Patch3: qtwebengine-aarch64-new-stat.patch +Patch3: qtwebengine-aarch64-new-stat.patch +Patch4: qtwebengine-ffmpeg-first_dts.patch -# Enable OpenH264 -Patch4: qtwebengine-use-openh264.patch +# FTBS warning: elaborated-type-specifier for a scoped enum must not +# use the 'class' keyword +Patch50: qtwebengine-fix-build.patch -# FTBFS - /usr/include/bits/siginfo-consts.h:219:3: error: expected identifier -# 219 | SYS_SECCOMP = 1, /* Seccomp triggered. */ -Patch5: qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch +# FTBFS Fix with Python 3.12 later on +# Parts of the project are fine with zombie-imp, this one not, however +# (It's messing with sys.path a lot) +Patch60: Partial-migration-from-imp-to-importlib.patch ## Upstream patches: -# https://bugreports.qt.io/browse/QTBUG-129985 -Patch80: qtwebengine-fix-arm-build.patch -# Remove with Qt 6.10.2 -# https://codereview.qt-project.org/c/qt/qtwebengine/+/702597 -Patch81: qtwebengine-move-gpu-info-logging-to-gpu-thread.patch -# https://qt-project.atlassian.net/browse/QTBUG-142823 -Patch82: qtwebengine-fix-quick-popup-window-positioning-under-x11.patch +# https://webrtc-review.googlesource.com/c/src/+/285464 +Patch100: qtwebengine-webrtc-dlopen-h264.patch ## Upstreamable patches: -Patch100: qtwebengine-add-missing-pipewire-headers.patch -Patch101: qtwebengine-fix-build-against-gcc16.patch - -## ppc64le port -Patch200: qtwebengine-6.9-ppc64.patch -Patch201: qtwebengine-chromium-ppc64.patch -# https://github.com/google/highway/commit/dcc0ca1cd4245ecff9e5ba50818e47d5e2ccf699 -Patch202: qtwebengine-chromium-ppc64-highway.patch +Patch110: qtwebengine-blink-dlopen-h264.patch # handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches # FIXME use/update qt6_qtwebengine_arches # 32-bit arches not supported (https://bugreports.qt.io/browse/QTBUG-102143) -ExclusiveArch: aarch64 x86_64 ppc64le +ExclusiveArch: aarch64 x86_64 BuildRequires: cmake -BuildRequires: ninja-build >= 1.7.2 BuildRequires: make -%if 0%{?rhel} && 0%{?rhel} < 10 -BuildRequires: gcc-toolset-13 -BuildRequires: gcc-toolset-13-libatomic-devel -%else -BuildRequires: gcc-c++ -%endif - -# gn links statically (for now) -BuildRequires: libstdc++-static -BuildRequires: libatomic - -BuildRequires: %{__python3} -BuildRequires: python3-html5lib -BuildRequires: gperf -BuildRequires: bison -BuildRequires: flex -BuildRequires: perl-interpreter - -BuildRequires: nodejs >= 14.9 -BuildRequires: krb5-devel -BuildRequires: git-core - BuildRequires: qt6-srpm-macros BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel -%{?_qt6_version:Requires: qt6-qtbase%{?_isa} = %{_qt6_version}} - # TODO: check of = is really needed or if >= would be good enough -- rex %{?_qt6:Requires: %{_qt6}%{?_isa} = %{_qt6_version}} BuildRequires: qt6-qtdeclarative-devel @@ -193,127 +113,87 @@ BuildRequires: qt6-qtsvg-devel BuildRequires: qt6-qttools-static BuildRequires: qt6-qtquickcontrols2-devel BuildRequires: qt6-qtwebchannel-devel -BuildRequires: qt6-qtwebsockets-devel -BuildRequires: qt6-qthttpserver-devel - -# optional system libraries in the order of the -- Configure summary: listing -%if 0%{?use_system_re2} -BuildRequires: pkgconfig(re2) >= 11.0.0 -%else -Provides: bundled(re2) +# for examples? +BuildRequires: ninja-build +BuildRequires: cmake +BuildRequires: bison +BuildRequires: flex +BuildRequires: gcc-c++ +%if 0%{?rhel} && 0%{?rhel} < 10 +BuildRequires: gcc-toolset-12 %endif +# gn links statically (for now) +BuildRequires: libstdc++-static +BuildRequires: git-core +BuildRequires: gperf +BuildRequires: krb5-devel %if 0%{?use_system_libicu} -BuildRequires: libicu-devel >= 70 +BuildRequires: libicu-devel >= 68 %endif -%if 0%{?use_system_libwebp} -BuildRequires: pkgconfig(libwebp) >= 0.6.0 +BuildRequires: libjpeg-devel +BuildRequires: nodejs +%if 0%{?use_system_re2} +BuildRequires: re2-devel %endif -%if 0%{?use_system_opus} -BuildRequires: pkgconfig(opus) >= 1.3.1 -%endif -%if %{?use_system_ffmpeg} -BuildRequires: pkgconfig(libavutil) >= 58.29.100 -BuildRequires: pkgconfig(libavcodec) >= 60.31.102 -BuildRequires: pkgconfig(libavformat) >= 60.16.100 -BuildRequires: pkgconfig(openh264) -%endif -%if %{?use_system_libvpx} -BuildRequires: pkgconfig(vpx) >= 1.10.0 -%endif -%if 0%{?use_system_snappy} -BuildRequires: pkgconfig(snappy) -%endif -%if 0%{?use_system_glib} -BuildRequires: pkgconfig(glib-2.0) -BuildRequires: pkgconfig(gobject-2.0) -BuildRequires: pkgconfig(gio-2.0) -%endif -%if %{?use_system_zlib} -BuildRequires: pkgconfig(zlib) -%endif -%if 0%{?use_system_minizip} -BuildRequires: pkgconfig(minizip) -%else +BuildRequires: snappy-devel +BuildConflicts: minizip-devel Provides: bundled(minizip) = 2.8.1 -%endif -%if 0%{?use_system_libevent} -BuildRequires: pkgconfig(libevent) -%endif -%if %{?use_system_libxml} -BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(libxslt) -%else -# bundled as "libxml" -# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h -Provides: bundled(libxml2) = 2.9.13 -# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version -Provides: bundled(libxslt) = 1.1.3 -%endif -%if 0%{?use_system_lcms2} -BuildRequires: pkgconfig(lcms2) -%endif -%if 0%{?use_system_libpng} -BuildRequires: pkgconfig(libpng) >= 1.6.0 -%endif -%if 0%{?use_system_libtiff} -BuildRequires: pkgconfig(libtiff-4) >= 4.2.0 -%endif -%if 0%{?use_system_libjpeg} -BuildRequires: pkgconfig(libjpeg) -%endif -%if 0%{?use_system_libopenjpeg2} -BuildRequires: pkgconfig(libopenjp2) -%endif -%if 0%{?use_system_harfbuzz} -BuildRequires: pkgconfig(harfbuzz) >= 4.3.0 -%endif -%if 0%{?use_system_freetype} -BuildRequires: pkgconfig(freetype2) >= 2.4.2 -BuildRequires: pkgconfig(fontconfig) -%endif -%if 0%{?use_system_libpci} -BuildRequires: pkgconfig(libpci) -%endif -%if 0%{?use_system_libudev} -BuildRequires: pkgconfig(libudev) -%endif - -# qpa-xcb support libraries -BuildRequires: pkgconfig(x11) -BuildRequires: pkgconfig(libdrm) -BuildRequires: pkgconfig(xcomposite) -BuildRequires: pkgconfig(xcursor) -BuildRequires: pkgconfig(xrandr) -BuildRequires: pkgconfig(xi) -BuildRequires: pkgconfig(xproto) -BuildRequires: pkgconfig(xshmfence) -BuildRequires: pkgconfig(xtst) -BuildRequires: pkgconfig(xkbcommon) -BuildRequires: pkgconfig(xkbfile) -BuildRequires: pkgconfig(xcb) - -# required for webrtc -BuildRequires: pkgconfig(xdamage) - -# required for alsa BuildRequires: pkgconfig(alsa) -# required for pulseaudio -BuildRequires: pkgconfig(libpulse) -# required for vaapi -BuildRequires: pkgconfig(libva) -# required for pipewire -BuildRequires: pkgconfig(libpipewire-0.3) - BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(expat) +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gobject-2.0) +BuildRequires: pkgconfig(harfbuzz) +%if 0%{?use_system_jsoncpp} +BuildRequires: pkgconfig(jsoncpp) +%endif +BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(libcap) -BuildRequires: pkgconfig(nss) >= 3.26 +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libevent) +BuildRequires: pkgconfig(libpci) +BuildRequires: pkgconfig(libpipewire-0.3) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libudev) +%if 0%{?use_system_libwebp} +BuildRequires: pkgconfig(libwebp) >= 0.6.0 +%endif +BuildRequires: pkgconfig(nss) +BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(poppler-cpp) - +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xcomposite) +BuildRequires: pkgconfig(xcursor) +BuildRequires: pkgconfig(xdamage) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xi) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xkbfile) +BuildRequires: pkgconfig(xrandr) +BuildRequires: pkgconfig(xrender) +BuildRequires: pkgconfig(xscrnsaver) +BuildRequires: pkgconfig(xshmfence) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(zlib) +## https://bugreports.qt.io/browse/QTBUG-59094 +## requires libxml2 built with icu support +#BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0) +BuildRequires: perl-interpreter +BuildRequires: %{__python3} +BuildRequires: python3-html5lib +BuildRequires: pkgconfig(vpx) >= 1.8.0 +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) %if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: python3-zombie-imp @@ -339,7 +219,7 @@ Requires: qt6-qtpdf%{?_isa} = %{version}-%{release} # Of course, Chromium itself is bundled. It cannot be unbundled because it is # not a library, but forked (modified) application code. -Provides: bundled(chromium) = 118.0.5993.220 +Provides: bundled(chromium) = 102.0.5005.177 # Bundled in src/3rdparty/chromium/third_party: # Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, @@ -377,9 +257,15 @@ Provides: bundled(leveldb) = 1.23 Provides: bundled(libjingle) # see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number Provides: bundled(libsrtp) = 2.4.0 +# bundled as "libxml" +# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h +Provides: bundled(libxml2) = 2.9.13 +# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version +Provides: bundled(libxslt) = 1.1.3 Provides: bundled(libyuv) = 1819 Provides: bundled(modp_b64) Provides: bundled(ots) +Provides: bundled(re2) # see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version Provides: bundled(protobuf) = 3.13.0.1 Provides: bundled(qcms) = 4 @@ -423,12 +309,14 @@ Provides: bundled(nsURLParsers) # Bundled outside of third_party, apparently not considered as such by Chromium: Provides: bundled(mojo) # see src/3rdparty/chromium/v8/include/v8_version.h for the version number -Provides: bundled(v8) = 11.8.172.18 +Provides: bundled(v8) = 10.2.154.16 # bundled by v8 (src/3rdparty/chromium/v8/src/base/ieee754.cc) # The version number is 5.3, the last version that upstream released, years ago: # http://www.netlib.org/fdlibm/readme Provides: bundled(fdlibm) = 5.3 +%{?_qt6_version:Requires: qt6-qtbase%{?_isa} = %{_qt6_version}} + %description %{summary}. @@ -449,12 +337,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %description devtools Support for remote debugging. -%if 0%{?examples} %package examples Summary: Example files for %{name} + %description examples %{summary}. -%endif %package -n qt6-qtpdf Summary: Qt6 - QtPdf components @@ -471,44 +358,33 @@ Requires: qt6-qtdeclarative-devel%{?_isa} %package -n qt6-qtpdf-examples Summary: Example files for qt6-qtpdf -Requires: qt6-qtsvg%{?_isa} + %description -n qt6-qtpdf-examples %{summary}. %prep -%setup -q -n %{qt_module}-everywhere-src-%{qt_version}%{?prerelease:-%{prerelease}} -a20 +%setup -q -n %{qt_module}-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -a20 mv pulse src/3rdparty/chromium/ pushd src/3rdparty/chromium popd -%patch -P1 -p1 -b .SIOCGSTAMP -%patch -P2 -p1 -b .link-pipewire -%patch -P3 -p1 -b .aarch64-new-stat -%patch -P4 -p1 -b .use-openh264 -%if 0%{?fedora} > 43 || 0%{?rhel} > 10 -%patch -P5 -p1 -b .chromium-141-glibc-2.42-SYS_SECCOMP +%patch1 -p1 -b .SIOCGSTAMP +%patch2 -p1 -b .link-pipewire +%patch3 -p1 -b .aarch64-new-stat +%patch4 -p1 -b .qtwebengine-ffmpeg-first_dts + +%patch50 -p1 -b .fix-build.patch +%if 0%{?fedora} && 0%{?fedora} >= 39 +%patch60 -p1 -b .fix-py-imp.patch %endif ## upstream patches -%patch -P80 -p1 -b .fix-arm-build -%patch -P81 -p1 -b .move-gpu-info-logging-to-gpu-thread -%patch -P82 -p1 -b .fix-quick-popup-window-positioning-under-x11 +%patch100 -p1 -b .webrtc-dlopen-h264 ## upstreamable patches -%patch -P100 -p1 -b .add-missing-pipewire-headers -%patch -P101 -p1 -b .fix-build-against-gcc16 - -# ppc64le support -%patch -P200 -p1 -pushd src/3rdparty/chromium -%patch -P201 -p1 -pushd third_party/highway/src -%patch -P202 -p1 -popd -popd - +%patch110 -p1 -b .blink-dlopen-h264 # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS @@ -525,25 +401,15 @@ ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromi ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/third_party/six/six.py %endif -#%%if 0%{?use_system_re2} +%if 0%{?use_system_re2} # http://bugzilla.redhat.com/1337585 # can't just delete, but we'll overwrite with system headers to be on the safe side -#cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ -#%%endif +cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ +%endif # copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium - -# use system libraries not handled by cmake options correctly -system_libs=() -%if %{?use_system_ffmpeg} -system_libs+=(ffmpeg) -system_libs+=(openh264) -%endif -# Use system libraries -src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries ${system_libs[@]} - # consider doing this as part of the tarball creation step instead? rdieter # fix/workaround # fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory @@ -557,69 +423,28 @@ src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-librarie %build %if 0%{?rhel} && 0%{?rhel} < 10 -. /opt/rh/gcc-toolset-13/enable +. /opt/rh/gcc-toolset-12/enable %endif export STRIP=strip export NINJAFLAGS="%{__ninja_common_opts}" export NINJA_PATH=%{__ninja} -# this follows the logic of the Configure summary to turn on and off %cmake_qt6 \ -DCMAKE_TOOLCHAIN_FILE:STRING="%{_libdir}/cmake/Qt6/qt.toolchain.cmake" \ - -DFEATURE_webengine_build_gn:BOOL=ON \ - -DFEATURE_webengine_jumbo_build:BOOL=ON \ - -DFEATURE_webengine_developer_build:BOOL=OFF \ - -DFEATURE_qtwebengine_build:BOOL=ON \ - -DFEATURE_qtwebengine_core_build:BOOL=ON \ - -DFEATURE_qtwebengine_widgets_build:BOOL=ON \ - -DFEATURE_qtwebengine_quick_build:BOOL=ON \ -DFEATURE_qtpdf_build:BOOL=ON \ - -DFEATURE_qtpdf_widgets_build:BOOL=ON \ - -DFEATURE_qtpdf_quick_build:BOOL=ON \ - -DFEATURE_webengine_system_re2:BOOL=%{?use_system_re2} \ - -DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \ - -DFEATURE_webengine_system_libwebp:BOOL=%{?use_system_libwebp} \ - -DFEATURE_webengine_system_opus:BOOL=%{?use_system_opus} \ - -DFEATURE_webengine_system_ffmpeg:BOOL=%{?use_system_ffmpeg} \ - -DFEATURE_webengine_system_libvpx:BOOL=%{?use_system_libvpx} \ - -DFEATURE_webengine_system_snappy:BOOL=%{?use_system_snappy} \ - -DFEATURE_webengine_system_glib:BOOL=%{?use_system_glib} \ - -DFEATURE_webengine_system_zlib:BOOL=%{?use_system_zlib} \ - -DFEATURE_webengine_system_minizip:BOOL=%{?use_system_minizip} \ - -DFEATURE_webengine_system_libevent:BOOL=%{?use_system_libevent} \ - -DFEATURE_webengine_system_libxml:BOOL=%{?use_system_libxml} \ - -DFEATURE_webengine_system_lcms2:BOOL=%{?use_system_lcms2} \ - -DFEATURE_webengine_system_libpng:BOOL=%{?use_system_libpng} \ - -DFEATURE_webengine_system_libtiff:BOOL=%{?use_system_libtiff} \ - -DFEATURE_webengine_system_libjpeg:BOOL=%{?use_system_libjpeg} \ - -DFEATURE_webengine_system_libopenjpeg2:BOOL=%{?use_system_libopenjpeg2} \ - -DFEATURE_webengine_system_harfbuzz:BOOL=%{?use_system_harfbuzz} \ - -DFEATURE_webengine_system_freetype:BOOL=%{?use_system_freetype} \ - -DFEATURE_webengine_system_libpci:BOOL=%{?use_system_libpci} \ - -DFEATURE_webengine_system_libudev:BOOL=%{?use_system_libudev} \ + -DFEATURE_webengine_developer_build:BOOL=OFF \ -DFEATURE_webengine_embedded_build:BOOL=OFF \ - -DFEATURE_webengine_pepper_plugins:BOOL=ON \ + -DFEATURE_webengine_extensions:BOOL=ON \ + -DFEATURE_webengine_kerberos:BOOL=ON \ + -DFEATURE_webengine_native_spellchecker:BOOL=OFF \ -DFEATURE_webengine_printing_and_pdf:BOOL=ON \ -DFEATURE_webengine_proprietary_codecs:BOOL=ON \ - -DFEATURE_webengine_spellchecker:BOOL=ON \ - -DFEATURE_webengine_native_spellchecker:BOOL=OFF \ + -DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \ + -DFEATURE_webengine_system_libevent:BOOL=ON \ + -DFEATURE_webengine_system_ffmpeg:BOOL=ON \ -DFEATURE_webengine_webrtc:BOOL=ON \ -DFEATURE_webengine_webrtc_pipewire:BOOL=ON \ - -DFEATURE_webengine_geolocation:BOOL=ON \ - -DFEATURE_webengine_webchannel:BOOL=ON \ - -DFEATURE_webengine_kerberos:BOOL=ON \ - -DFEATURE_webengine_extensions:BOOL=ON \ - -DFEATURE_webengine_ozone_x11:BOOL=ON \ - -DFEATURE_webengine_vulkan:BOOL=ON \ - -DFEATURE_webengine_vaapi:BOOL=ON \ - -DFEATURE_webengine_system_alsa:BOOL=ON \ - -DFEATURE_webengine_system_pulseaudio:BOOL=ON \ - -DFEATURE_webengine_system_gbm:BOOL=ON \ - -DFEATURE_webengine_v8_context_snapshot:BOOL=ON \ - -DFEATURE_webenginedriver:BOOL=ON \ - -DFEATURE_pdf_v8:BOOL=%{?enable_pdf_v8} \ - -DQT_BUILD_EXAMPLES:BOOL=%{?examples:ON}%{!?examples:OFF} \ - -DQT_INSTALL_EXAMPLES_SOURCES=%{?examples:ON}%{!?examples:OFF} + -DQT_BUILD_EXAMPLES:BOOL=ON %cmake_build @@ -677,8 +502,9 @@ done %files %license LICENSE.* -%{_qt6_archdatadir}/sbom/%{qt_module}-%{version}.spdx -%{_qt6_archdatadir}/sbom/qtpdf-%{version}.spdx +%if 0%{?docs} +%license src/webengine/doc/src/qtwebengine-3rdparty.qdoc +%endif %{_qt6_libdir}/libQt6WebEngineCore.so.* %{_qt6_libdir}/libQt6WebEngineQuick.so.* %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so.* @@ -686,9 +512,9 @@ done %{_qt6_libdir}/qt6/libexec/gn %{_qt6_libdir}/qt6/libexec/qwebengine_convert_dict %{_qt6_libdir}/qt6/libexec/QtWebEngineProcess -%{_qt6_libdir}/qt6/libexec/webenginedriver %dir %{_qt6_libdir}/qt6/qml/QtWebEngine %{_qt6_libdir}/qt6/qml/QtWebEngine/* +%{_qt6_plugindir}/designer/libqwebengineview.so %dir %{_qt6_datadir}/resources/ %{_qt6_datadir}/resources/v8_context_snapshot.bin %{_qt6_datadir}/resources/qtwebengine_resources.pak @@ -771,40 +597,36 @@ done %{_qt6_libdir}/libQt6WebEngineQuick.prl %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.prl %{_qt6_libdir}/libQt6WebEngineWidgets.prl -%dir %{_qt6_libdir}/cmake/Qt6Designer -%dir %{_qt6_libdir}/cmake/Qt6WebEngineCore -%dir %{_qt6_libdir}/cmake/Qt6WebEngineCorePrivate -%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools -%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick -%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml -%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate -%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets -%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate %{_qt6_libdir}/cmake/Qt6/*.cmake %{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtWebEngine* -%{_qt6_libdir}/cmake/Qt6Designer/Qt6QWebEngine*.cmake %{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineCore/*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineCorePrivate/*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6Designer +%{_qt6_libdir}/cmake/Qt6Designer/Qt6QWebEngine*.cmake +%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick %{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets %{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6WebEngineCore +%{_qt6_libdir}/cmake/Qt6WebEngineCore/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools +%{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml +%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake %{_qt6_libdir}/pkgconfig/Qt6WebEngineCore.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuick.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuickDelegatesQml.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineWidgets.pc %{_qt6_archdatadir}/mkspecs/modules/qt_lib_webengine*.pri -%{_qt6_plugindir}/designer/libqwebengineview.so %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak -%if 0%{?examples} %files examples %{_qt6_examplesdir}/webengine* + +%if 0%{?docs} +%files doc +%{_qt6_docdir}/* %endif %files -n qt6-qtpdf @@ -831,151 +653,24 @@ done %{_qt6_libdir}/libQt6Pdf.prl %{_qt6_libdir}/libQt6PdfQuick.prl %{_qt6_libdir}/libQt6PdfWidgets.prl -%dir %{_qt6_libdir}/cmake/Qt6Pdf -%dir %{_qt6_libdir}/cmake/Qt6PdfPrivate -%dir %{_qt6_libdir}/cmake/Qt6PdfQuick -%dir %{_qt6_libdir}/cmake/Qt6PdfQuickPrivate -%dir %{_qt6_libdir}/cmake/Qt6PdfWidgets -%dir %{_qt6_libdir}/cmake/Qt6PdfWidgetsPrivate %{_qt6_libdir}/cmake/Qt6Gui/Qt6QPdf*.cmake +%dir %{_qt6_libdir}/cmake/Qt6Pdf %{_qt6_libdir}/cmake/Qt6Pdf/*.cmake -%{_qt6_libdir}/cmake/Qt6PdfPrivate/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6PdfQuick %{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake -%{_qt6_libdir}/cmake/Qt6PdfQuickPrivate/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6PdfWidgets %{_qt6_libdir}/cmake/Qt6PdfWidgets/*.cmake -%{_qt6_libdir}/cmake/Qt6PdfWidgetsPrivate/*.cmake %{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6Pdf*.cmake %{_qt6_libdir}/pkgconfig/Qt6Pdf.pc %{_qt6_libdir}/pkgconfig/Qt6PdfQuick.pc %{_qt6_libdir}/pkgconfig/Qt6PdfWidgets.pc %{_qt6_archdatadir}/mkspecs/modules/qt_lib_pdf*.pri -%if 0%{?examples} %files -n qt6-qtpdf-examples %{_qt6_examplesdir}/pdf* -%endif + %changelog -* Tue Jan 13 2026 Jan Grulich - 6.10.1-5 -- Fix Quick popup window positioning under X11 - -* Sun Jan 11 2026 Jan Grulich - 6.10.1-4 -- Apply the "Move GPU info logging into the GPU thread" patch - -* Thu Jan 08 2026 Jan Grulich - 6.10.1-3 -- Move GPU info logging into the GPU thread - -* Fri Nov 21 2025 Jan Grulich - 6.10.1-2 -- Rebuild for Koji infra issue - -* Thu Nov 20 2025 Jan Grulich - 6.10.1-1 -- 6.10.1 - -* Thu Oct 30 2025 Dominik Mierzejewski - 6.10.0-4 -- Rebuilt for FFmpeg 8 - -* Thu Oct 30 2025 Jan Grulich - 6.10.0-3 -- Fix FTBS in rawhide due to glib and PipeWire updates - -* Tue Oct 07 2025 Jan Grulich - 6.10.0-2 -- 6.10.0 - -* Thu Sep 25 2025 Jan Grulich - 6.10.0~rc-1 -- 6.10.0 RC - -* Mon Sep 08 2025 Sandro Mani - 6.9.2-2 -- Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f - -* Fri Aug 29 2025 Jan Grulich - 6.9.2-1 -- 6.9.2 - -* Wed Aug 06 2025 FrantiĊĦek Zatloukal - 6.9.1-3 -- Rebuilt for icu 77.1 - -* Fri Jul 25 2025 Fedora Release Engineering - 6.9.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jun 03 2025 Jan Grulich - 6.9.1-1 -- 6.9.1 - -* Tue Apr 22 2025 Marie Loise Nolden - 6.9.0-2 -- global define all optional system libs, enable XFA -- cleanup spec - -* Wed Apr 02 2025 Jan Grulich - 6.9.0-1 -- 6.9.0 - -* Mon Mar 24 2025 Jan Grulich - 6.9.0-0.1 -- 6.9.0 RC - -* Thu Mar 13 2025 Fabio Valentini - 6.8.2-5 -- Rebuild for noopenh264 2.6.0 - -* Tue Mar 04 2025 Jan Grulich - 6.8.2-4 -- Unbundle libxml and libxslt - -* Mon Mar 03 2025 Jan Grulich - 6.8.2-3 -- Rework OpenH264 support following Chromium package -- Backport upstream change for ffmpeg codec selection issues. - -* Mon Feb 17 2025 Jan Grulich - 6.8.2-2 -- Bump build for ppc64le enablement - -* Fri Jan 31 2025 Jan Grulich - 6.8.2-1 -- 6.8.2 - -* Sat Jan 18 2025 Fedora Release Engineering - 6.8.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sun Dec 15 2024 Pavel Solovev - 6.8.1-3 -- Add optional deps - -* Thu Dec 05 2024 Jan Grulich - 6.8.1-2 -- Move Software Bill of Materials from -devel - -* Tue Dec 03 2024 Jan Grulich - 6.8.1-1 -- 6.8.1 - -* Mon Oct 14 2024 Jan Grulich - 6.8.0-1 -- 6.8.0 - -* Mon Sep 23 2024 Fabio Valentini - 6.7.2-4 -- Rebuild for ffmpeg 7 - -* Mon Aug 05 2024 Jan Grulich - 6.7.2-3 -- Fix building with system ffmpeg - -* Fri Jul 19 2024 Fedora Release Engineering - 6.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Tue Jul 02 2024 Jan Grulich - 6.7.2-1 -- 6.7.2 - -* Wed May 22 2024 Jan Grulich - 6.7.1-1 -- 6.7.1 - -* Wed Apr 24 2024 Jan Grulich - 6.7.0-2 -- Rework and enable openh264 patches - -* Wed Apr 03 2024 Jan Grulich - 6.7.0-1 -- 6.7.0 - -* Sun Mar 3 2024 Marie Loise Nolden - 6.6.2-3 -- move qt designer plugin to -devel -- remove old doc package code (docs are in qt6-doc) - -* Mon Feb 19 2024 Jan Grulich - 6.6.2-2 -- Examples: also install source files - -* Thu Feb 15 2024 Jan Grulich - 6.6.2-1 -- 6.6.2 - -* Mon Jan 22 2024 Fedora Release Engineering - 6.6.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Nov 28 2023 Jan Grulich - 6.6.1-1 -- 6.6.1 - * Fri Oct 27 2023 Jan Grulich - 6.6.0-2 - Move v8_context_snapshot file to correct subpackage diff --git a/qtwebengine-6.9-ppc64.patch b/qtwebengine-6.9-ppc64.patch deleted file mode 100644 index 8b58211..0000000 --- a/qtwebengine-6.9-ppc64.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake -index eaa3a4339..5693c4cc4 100644 ---- a/cmake/QtToolchainHelpers.cmake -+++ b/cmake/QtToolchainHelpers.cmake -@@ -55,6 +55,8 @@ function(get_gn_arch result arch) - set(${result} "mips64el" PARENT_SCOPE) - elseif(arch STREQUAL "riscv64") - set(${result} "riscv64" PARENT_SCOPE) -+ elseif(arch STREQUAL "power64") -+ set(${result} "ppc64" PARENT_SCOPE) - else() - message(FATAL_ERROR "Unknown architecture: ${arch}") - endif() diff --git a/qtwebengine-SIOCGSTAMP.patch b/qtwebengine-SIOCGSTAMP.patch index d97da42..7609f85 100644 --- a/qtwebengine-SIOCGSTAMP.patch +++ b/qtwebengine-SIOCGSTAMP.patch @@ -1,8 +1,8 @@ diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc b/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc -index d421682..ffa75a7 100644 +index c38d7fdfa..0a8b0fd8b 100644 --- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc +++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc -@@ -77,6 +77,11 @@ typedef void* SockOptArg; +@@ -72,6 +72,11 @@ typedef void* SockOptArg; #if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__) diff --git a/qtwebengine-add-missing-pipewire-headers.patch b/qtwebengine-add-missing-pipewire-headers.patch deleted file mode 100644 index d30ab52..0000000 --- a/qtwebengine-add-missing-pipewire-headers.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h -index 84273ea695..825bb0000a 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h -@@ -11,8 +11,10 @@ - #ifndef MODULES_VIDEO_CAPTURE_LINUX_PIPEWIRE_SESSION_H_ - #define MODULES_VIDEO_CAPTURE_LINUX_PIPEWIRE_SESSION_H_ - --#include - #include -+#include -+#include -+#include - - #include - #include -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc -index f6cd57ac36..b9c579d2e3 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc -@@ -10,10 +10,21 @@ - - #include "modules/video_capture/linux/video_capture_pipewire.h" - -+#include -+#include -+#include -+#include - #include -+#include - #include -+#include - #include -+#include -+#include -+#include - #include -+#include -+#include - - #include - -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h -index 789f2034d3..7c1f9390fc 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h -@@ -11,6 +11,10 @@ - #ifndef MODULES_VIDEO_CAPTURE_LINUX_VIDEO_CAPTURE_PIPEWIRE_H_ - #define MODULES_VIDEO_CAPTURE_LINUX_VIDEO_CAPTURE_PIPEWIRE_H_ - -+#include -+#include -+#include -+ - #include "modules/video_capture/linux/pipewire_session.h" - #include "modules/video_capture/video_capture_defines.h" - #include "modules/video_capture/video_capture_impl.h" diff --git a/qtwebengine-blink-dlopen-h264.patch b/qtwebengine-blink-dlopen-h264.patch new file mode 100644 index 0000000..6dae942 --- /dev/null +++ b/qtwebengine-blink-dlopen-h264.patch @@ -0,0 +1,146 @@ +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +index cf6de49be..61e8879d6 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +@@ -5,12 +5,23 @@ + import("//build/buildflag_header.gni") + import("//third_party/blink/renderer/modules/modules.gni") + import("//third_party/webrtc/webrtc.gni") ++import("//tools/generate_stubs/rules.gni") + + buildflag_header("buildflags") { + header = "buildflags.h" + flags = [ "RTC_USE_H264=$rtc_use_h264" ] + } + ++if (rtc_use_h264 && rtc_dlopen_openh264) { ++ # When OpenH264 is not directly linked, use stubs to allow for dlopening of ++ # the binary. ++ generate_stubs("openh264_stubs") { ++ extra_header = "openh264_stub_header.fragment" ++ output_name = "openh264_stubs" ++ sigs = [ "openh264.sigs" ] ++ } ++} ++ + blink_modules_sources("mediarecorder") { + sources = [ + "audio_track_encoder.cc", +@@ -56,6 +67,11 @@ blink_modules_sources("mediarecorder") { + "h264_encoder.h", + ] + +- deps += [ "//third_party/openh264:encoder" ] ++ if (rtc_dlopen_openh264) { ++ defines = [ "BLINK_DLOPEN_OPENH264" ] ++ deps += [ ":openh264_stubs" ] ++ } else { ++ deps += [ "//third_party/openh264:encoder" ] ++ } + } + } +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc +index 4253f3280..56ea1574c 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc +@@ -23,9 +23,21 @@ + #include "third_party/openh264/src/codec/api/wels/codec_def.h" + #include "ui/gfx/geometry/size.h" + ++#if defined(BLINK_DLOPEN_OPENH264) ++#include "third_party/blink/renderer/modules/mediarecorder/openh264_stubs.h" ++#endif // defined(BLINK_DLOPEN_OPENH264) ++ + namespace blink { + namespace { + ++#if defined(BLINK_DLOPEN_OPENH264) ++using third_party_blink_renderer_modules_mediarecorder::InitializeStubs; ++using third_party_blink_renderer_modules_mediarecorder::kModuleOpenh264; ++using third_party_blink_renderer_modules_mediarecorder::StubPathMap; ++ ++static constexpr char kOpenH264Lib[] = "libopenh264.so.7"; ++#endif ++ + absl::optional ToOpenH264Profile( + media::VideoCodecProfile profile) { + static const HashMap +@@ -86,6 +98,13 @@ H264Encoder::H264Encoder( + : Encoder(on_encoded_video_cb, bits_per_second), + codec_profile_(codec_profile) { + DCHECK_EQ(codec_profile_.codec_id, VideoTrackRecorder::CodecId::kH264); ++ ++#if defined(BLINK_DLOPEN_OPENH264) ++ StubPathMap paths; ++ paths[kModuleOpenh264].push_back(kOpenH264Lib); ++ ++ openh264_dlopened_ = InitializeStubs(paths); ++#endif + } + + // Needs to be defined here to combat a Windows linking issue. +@@ -167,6 +186,14 @@ void H264Encoder::EncodeFrame(scoped_refptr frame, + + bool H264Encoder::ConfigureEncoder(const gfx::Size& size) { + TRACE_EVENT0("media", "H264Encoder::ConfigureEncoder"); ++ ++#if defined(BLINK_DLOPEN_OPENH264) ++ if (!openh264_dlopened_) { ++ NOTREACHED() << "Failed to dlopen openh264"; ++ return false; ++ } ++#endif ++ + ISVCEncoder* temp_encoder = nullptr; + if (WelsCreateSVCEncoder(&temp_encoder) != 0) { + NOTREACHED() << "Failed to create OpenH264 encoder"; +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h +index 1d9d7bc5a..a5b7eefe3 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h +@@ -58,6 +58,8 @@ class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder { + // The |VideoFrame::timestamp()| of the first received frame. + base::TimeTicks first_frame_timestamp_; + base::WeakPtrFactory weak_factory_{this}; ++ ++ bool openh264_dlopened_ = false; + }; + + } // namespace blink +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs +new file mode 100644 +index 000000000..4924f8e9a +--- /dev/null ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs +@@ -0,0 +1,14 @@ ++// Copyright 2022 The WebRTC project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//------------------------------------------------ ++// Functions from OpenH264. ++//------------------------------------------------ ++int WelsCreateSVCEncoder(ISVCEncoder **ppEncoder); ++void WelsDestroySVCEncoder(ISVCEncoder *pEncoder); ++int WelsGetDecoderCapability(SDecoderCapability *pDecCapability); ++long WelsCreateDecoder(ISVCDecoder **ppDecoder); ++void WelsDestroyDecoder(ISVCDecoder *pDecoder); ++OpenH264Version WelsGetCodecVersion(void); ++void WelsGetCodecVersionEx(OpenH264Version *pVersion); +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment +new file mode 100644 +index 000000000..e8a3727a0 +--- /dev/null ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment +@@ -0,0 +1,11 @@ ++// The extra include header needed in the generated stub file for defining ++// various OpenH264 types. ++ ++extern "C" { ++ ++#include "third_party/openh264/src/codec/api/wels/codec_api.h" ++#include "third_party/openh264/src/codec/api/wels/codec_app_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_ver.h" ++ ++} diff --git a/qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch b/qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch deleted file mode 100644 index 6c827bc..0000000 --- a/qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch +++ /dev/null @@ -1,29 +0,0 @@ -Fix FTBFS - -/usr/include/bits/siginfo-consts.h:219:3: error: expected identifier - 219 | SYS_SECCOMP = 1, /* Seccomp triggered. */ - | ^ -../../sandbox/linux/system_headers/linux_seccomp.h:220:39: note: expanded from macro 'SYS_SECCOMP' - 220 | #define SYS_SECCOMP 1 - | ^ -../../sandbox/linux/seccomp-bpf/trap.cc:159:46: error: use of undeclared identifier 'SYS_SECCOMP' - 159 | if (nr != LINUX_SIGSYS || info->si_code != SYS_SECCOMP || !ctx || - | ^~~~~~~~~~~ -/usr/include/bits/siginfo-consts.h:220:23: note: expanded from macro 'SYS_SECCOMP' - 220 | # define SYS_SECCOMP SYS_SECCOMP - -diff -up chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h.me chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h ---- chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h.me 2025-10-28 10:05:44.970248151 +0100 -+++ chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h 2025-10-28 10:05:52.291345772 +0100 -@@ -214,8 +214,11 @@ struct seccomp_notif_addfd { - #define SECCOMP_RET_INVALID 0x00010000U // Illegal return value - #endif - -+// check glibc version < 2.42 -+#if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 42) - #ifndef SYS_SECCOMP - #define SYS_SECCOMP 1 - #endif -+#endif - - #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_ diff --git a/qtwebengine-chromium-ppc64-highway.patch b/qtwebengine-chromium-ppc64-highway.patch deleted file mode 100644 index 7bc3e06..0000000 --- a/qtwebengine-chromium-ppc64-highway.patch +++ /dev/null @@ -1,258 +0,0 @@ -commit dcc0ca1cd4245ecff9e5ba50818e47d5e2ccf699 -Author: John Platts -Date: Fri Jan 17 12:16:49 2025 -0600 - - Fix for GCC 15 compiler error on PPC8/PPC9/PPC10 - -diff --git a/hwy/ops/ppc_vsx-inl.h b/hwy/ops/ppc_vsx-inl.h -index 86d6d98c..3564ae0b 100644 ---- a/hwy/ops/ppc_vsx-inl.h -+++ b/hwy/ops/ppc_vsx-inl.h -@@ -3744,16 +3744,73 @@ static HWY_INLINE V VsxF2INormalizeSrcVals(V v) { - #endif - } - -+template -+static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> -+VsxXvcvspsxds(VF32 vf32) { -+ using VI64 = VFromD>>; -+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ -+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds) -+ // Use __builtin_vsx_xvcvspsxds if it is available (which is the case with -+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) -+ return VI64{__builtin_vsx_xvcvspsxds(vf32.raw)}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN -+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 -+ // vec_signedo intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VI64{vec_signedo(vf32.raw)}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN -+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 -+ // vec_signede intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VI64{vec_signede(vf32.raw)}; -+#else -+ // Inline assembly fallback for older versions of Clang that do not have the -+ // __builtin_vsx_xvcvspsxds intrinsic -+ __vector signed long long raw_result; -+ __asm__("xvcvspsxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); -+ return VI64{raw_result}; -+#endif -+} -+ -+template -+static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> -+VsxXvcvspuxds(VF32 vf32) { -+ using VU64 = VFromD>>; -+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ -+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds) -+ // Use __builtin_vsx_xvcvspuxds if it is available (which is the case with -+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) -+ return VU64{reinterpret_cast<__vector unsigned long long>( -+ __builtin_vsx_xvcvspuxds(vf32.raw))}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN -+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 -+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VU64{vec_unsignedo(vf32.raw)}; -+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN -+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 -+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been -+ // removed from GCC in GCC 15 -+ return VU64{vec_unsignede(vf32.raw)}; -+#else -+ // Inline assembly fallback for older versions of Clang that do not have the -+ // __builtin_vsx_xvcvspuxds intrinsic -+ __vector unsigned long long raw_result; -+ __asm__("xvcvspuxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); -+ return VU64{raw_result}; -+#endif -+} -+ - } // namespace detail - #endif // !HWY_S390X_HAVE_Z14 - - template - HWY_API VFromD PromoteTo(D di64, VFromD> v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; -- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; -+#if !HWY_S390X_HAVE_Z14 -+ const Repartition dt_f32; -+ const auto vt_f32 = ResizeBitCast(dt_f32, v); -+ return detail::VsxXvcvspsxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); - #else - const RebindToFloat df64; - return ConvertTo(di64, PromoteTo(df64, v)); -@@ -3762,12 +3819,11 @@ HWY_API VFromD PromoteTo(D di64, VFromD> v) { - - template - HWY_API VFromD PromoteTo(D du64, VFromD> v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(raw_v))}; -+#if !HWY_S390X_HAVE_Z14 -+ const Repartition dt_f32; -+ const auto vt_f32 = ResizeBitCast(dt_f32, v); -+ return detail::VsxXvcvspuxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); - #else - const RebindToFloat df64; - return ConvertTo(du64, PromoteTo(df64, v)); -@@ -3876,12 +3932,10 @@ HWY_API VFromD PromoteUpperTo(D df64, Vec128 v) { - - template - HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) -- .raw; -- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; -+#if !HWY_S390X_HAVE_Z14 -+ (void)di64; -+ return detail::VsxXvcvspsxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); - #else - const RebindToFloat df64; - return ConvertTo(di64, PromoteUpperTo(df64, v)); -@@ -3890,13 +3944,10 @@ HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { - - template - HWY_API VFromD PromoteUpperTo(D du64, Vec128 v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -- const __vector float raw_v = -- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) -- .raw; -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(raw_v))}; -+#if !HWY_S390X_HAVE_Z14 -+ (void)du64; -+ return detail::VsxXvcvspuxds( -+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); - #else - const RebindToFloat df64; - return ConvertTo(du64, PromoteUpperTo(df64, v)); -@@ -3984,20 +4035,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::SignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes -- // on little-endian PPC, and the vec_sld operation below will shift the even -+ // VsxXvcvspsxds expects the source values to be in the odd lanes on -+ // little-endian PPC, and the Shuffle2103 operation below will shift the even - // lanes of normalized_v into the odd lanes. -- return VFromD{ -- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; -+ return VsxXvcvspsxds(Shuffle2103(normalized_v)); - #else -- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes -- // on big-endian PPC. -- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; -+ // VsxXvcvspsxds expects the source values to be in the even lanes on -+ // big-endian PPC. -+ return VsxXvcvspsxds(normalized_v); - #endif - #else - const RebindToFloat df64; -@@ -4012,22 +4061,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::UnsignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes -- // on little-endian PPC, and the vec_sld operation below will shift the even -- // lanes of normalized_v into the odd lanes. -- return VFromD{ -- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( -- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; -+ // VsxXvcvspuxds expects the source values to be in the odd lanes -+ // on little-endian PPC, and the Shuffle2103 operation below will shift the -+ // even lanes of normalized_v into the odd lanes. -+ return VsxXvcvspuxds(Shuffle2103(normalized_v)); - #else -- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes -+ // VsxXvcvspuxds expects the source values to be in the even lanes - // on big-endian PPC. -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; -+ return VsxXvcvspuxds(normalized_v); - #endif - #else - const RebindToFloat df64; -@@ -4069,20 +4114,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::SignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes -+ // VsxXvcvspsxds expects the source values to be in the odd lanes - // on little-endian PPC -- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; -+ return VsxXvcvspsxds(normalized_v); - #else -- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes -- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes -- // of normalized_v into the even lanes. -- return VFromD{ -- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; -+ // VsxXvcvspsxds expects the source values to be in the even lanes -+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd -+ // lanes of normalized_v into the even lanes. -+ return VsxXvcvspsxds(Shuffle0321(normalized_v)); - #endif - #else - const RebindToFloat df64; -@@ -4097,22 +4140,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::UnsignedTag /*to_type_tag*/, - hwy::SizeTag<8> /*to_lane_size_tag*/, - hwy::FloatTag /*from_type_tag*/, D d_to, - V v) { --#if !HWY_S390X_HAVE_Z14 && \ -- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) -+#if !HWY_S390X_HAVE_Z14 - (void)d_to; - const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); - #if HWY_IS_LITTLE_ENDIAN -- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes -+ // VsxXvcvspuxds expects the source values to be in the odd lanes - // on little-endian PPC -- return VFromD{reinterpret_cast<__vector unsigned long long>( -- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; -+ return VsxXvcvspuxds(normalized_v); - #else -- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes -- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes -- // of normalized_v into the even lanes. -- return VFromD{ -- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( -- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; -+ // VsxXvcvspuxds expects the source values to be in the even lanes -+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd -+ // lanes of normalized_v into the even lanes. -+ return VsxXvcvspuxds(Shuffle0321(normalized_v)); - #endif - #else - const RebindToFloat df64; diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch deleted file mode 100644 index 623447f..0000000 --- a/qtwebengine-chromium-ppc64.patch +++ /dev/null @@ -1,27892 +0,0 @@ -From b3a14db7637232d30c878cc1f1ad6d8037e81379 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Tue, 15 Jan 2019 22:42:21 -0600 -Subject: [PATCH] linux/seccomp-bpf: ppc64+glibc workaround in SIGSYS handler - -Workaround for an apparent issue with glibc negating syscall -parameters. Observed on a ppc64le machine with glibc. -More investigation required. ---- - sandbox/linux/seccomp-bpf/trap.cc | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/trap.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf/trap.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/trap.cc -@@ -236,6 +236,20 @@ void Trap::SigSys(int nr, LinuxSigInfo* - SetIsInSigHandler(); - } - -+#if defined(__powerpc64__) -+ // On ppc64+glibc, some syscalls seem to accidentally negate the first -+ // parameter which causes checks against it to fail. For now, manually -+ // negate them back. -+ // TODO(shawn@anastas.io): investigate this issue further -+ auto nr = SECCOMP_SYSCALL(ctx); -+ if (nr == __NR_openat || nr == __NR_mkdirat || nr == __NR_faccessat || nr == __NR_readlinkat || -+ nr == __NR_renameat || nr == __NR_renameat2 || nr == __NR_newfstatat || nr == __NR_unlinkat) { -+ if (static_cast(SECCOMP_PARM1(ctx)) > 0) { -+ SECCOMP_PARM1(ctx) = -SECCOMP_PARM1(ctx); -+ } -+ } -+#endif -+ - // Copy the seccomp-specific data into a arch_seccomp_data structure. This - // is what we are showing to TrapFnc callbacks that the system call - // evaluator registered with the sandbox. -From 0c65e40ae578b743b5f06956597ebc9700768d18 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 22:45:47 -0500 -Subject: [PATCH 1/1] sandbox: Enable seccomp_bpf for ppc64 - ---- - sandbox/features.gni | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: chromium-134.0.6998.35/sandbox/features.gni -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/features.gni -+++ chromium-134.0.6998.35/sandbox/features.gni -@@ -9,7 +9,8 @@ - use_seccomp_bpf = (is_linux || is_chromeos || is_android) && - (current_cpu == "x86" || current_cpu == "x64" || - current_cpu == "arm" || current_cpu == "arm64" || -- current_cpu == "mipsel" || current_cpu == "mips64el") -+ current_cpu == "mipsel" || current_cpu == "mips64el" || -+ current_cpu == "ppc64") - - # SSBD (Speculative Store Bypass Disable) is a mitigation of Spectre Variant 4. - # As Spectre Variant 4 can be mitigated by site isolation, opt-out SSBD on site -From 7468b266532bd607eb1f5292d758256d800b2eee Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Fri, 10 Aug 2018 00:23:50 -0500 -Subject: [PATCH] services/service_manager/sandbox/linux: Fix TCGETS - declaration on PPC64 - ---- - .../sandbox/linux/bpf_renderer_policy_linux.cc | 5 +++++ - 1 file changed, 5 insertions(+) - -Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc -@@ -17,6 +17,11 @@ - #include "sandbox/linux/system_headers/linux_syscalls.h" - #include "sandbox/policy/linux/sandbox_linux.h" - -+// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h -+#ifdef __powerpc64__ -+#include -+#endif -+ - // TODO(vignatti): replace the local definitions below with #include - // once kernel version 4.6 becomes widely used. - #include -From c9043a422fb4a5a6c72aaa1b907cea5f6a3061dd Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 19:10:24 -0500 -Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Update syscall ranges for ppc64 - ---- - sandbox/linux/bpf_dsl/linux_syscall_ranges.h | 7 +++++++ - 1 file changed, 7 insertions(+) - -Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -+++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -@@ -56,6 +56,13 @@ - #define MAX_PUBLIC_SYSCALL __NR_syscalls - #define MAX_SYSCALL MAX_PUBLIC_SYSCALL - -+#elif defined(__powerpc64__) -+ -+#include -+#define MIN_SYSCALL 0u -+#define MAX_PUBLIC_SYSCALL 386u -+#define MAX_SYSCALL MAX_PUBLIC_SYSCALL -+ - #else - #error "Unsupported architecture" - #endif -From 036d209a3f1a771de9aed31dfbe804aaf91d1c27 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 23:35:21 -0500 -Subject: [PATCH] sandbox/linux: Implement partial support for ppc64 syscalls - and ucontext - -Unlike other architectures, the ppc64 files currently rely on applicable -headers being provided by the system. It is sufficient for standard -GNU/Linux environments, but may require expansion elsewhere. ---- - sandbox/linux/BUILD.gn | 2 ++ - sandbox/linux/system_headers/linux_syscalls.h | 4 ++++ - sandbox/linux/system_headers/linux_ucontext.h | 2 ++ - sandbox/linux/system_headers/ppc64_linux_syscalls.h | 12 ++++++++++++ - sandbox/linux/system_headers/ppc64_linux_ucontext.h | 12 ++++++++++++ - 5 files changed, 32 insertions(+) - create mode 100644 sandbox/linux/system_headers/ppc64_linux_syscalls.h - create mode 100644 sandbox/linux/system_headers/ppc64_linux_ucontext.h - -Index: chromium-134.0.6998.35/sandbox/linux/BUILD.gn -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/BUILD.gn -+++ chromium-134.0.6998.35/sandbox/linux/BUILD.gn -@@ -384,6 +384,8 @@ component("sandbox_services") { - - source_set("sandbox_services_headers") { - sources = [ -+ "system_headers/ppc64_linux_syscalls.h", -+ "system_headers/ppc64_linux_ucontext.h", - "system_headers/arm64_linux_syscalls.h", - "system_headers/arm_linux_syscalls.h", - "system_headers/arm_linux_ucontext.h", -Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_syscalls.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_syscalls.h -+++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_syscalls.h -@@ -35,5 +35,9 @@ - #include "sandbox/linux/system_headers/arm64_linux_syscalls.h" - #endif - -+#if defined(__powerpc64__) -+#include "sandbox/linux/system_headers/ppc64_linux_syscalls.h" -+#endif -+ - #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ - -Index: chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_syscalls.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_syscalls.h -@@ -0,0 +1,12 @@ -+// Copyright 2014 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ -+#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ -+ -+#include -+ -+//TODO: is it necessary to redefine syscall numbers for PPC64? -+ -+#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ -Index: chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_ucontext.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_ucontext.h -@@ -0,0 +1,12 @@ -+// Copyright 2014 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ -+#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ -+ -+#include -+ -+//TODO: is it necessary to redefine ucontext on PPC64? -+ -+#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ -From c41cd6ac927f592b161abc04468d3c7a4be91995 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Tue, 23 Oct 2018 15:49:31 -0500 -Subject: [PATCH] sandbox/linux: Update IsSyscallAllowed in broker_process.cc - ---- - sandbox/linux/syscall_broker/broker_process.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: chromium-134.0.6998.35/sandbox/linux/syscall_broker/broker_process.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/syscall_broker/broker_process.cc -+++ chromium-134.0.6998.35/sandbox/linux/syscall_broker/broker_process.cc -@@ -168,7 +168,7 @@ bool BrokerProcess::IsSyscallBrokerable( - #if defined(__NR_fstatat64) - case __NR_fstatat64: - #endif --#if defined(__x86_64__) || defined(__aarch64__) -+#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) - case __NR_newfstatat: - #endif - return !fast_check || policy_->allowed_command_set.test(COMMAND_STAT); -From da52663deec77f705d7d58b18484c3e28e563f10 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Tue, 18 Sep 2018 18:39:28 -0500 -Subject: [PATCH] sandbox/linux: Update syscall helpers/lists for ppc64 - ---- - .../seccomp-bpf-helpers/baseline_policy.cc | 8 +- - .../syscall_parameters_restrictions.cc | 2 +- - .../syscall_parameters_restrictions.h | 2 +- - .../linux/seccomp-bpf-helpers/syscall_sets.cc | 108 ++++++++++-------- - .../linux/seccomp-bpf-helpers/syscall_sets.h | 6 +- - sandbox/linux/services/syscall_wrappers.cc | 2 +- - 6 files changed, 73 insertions(+), 55 deletions(-) - -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -@@ -90,7 +90,8 @@ bool IsBaselinePolicyWatched(int sysno) - SyscallSets::IsPrctl(sysno) || - SyscallSets::IsProcessGroupOrSession(sysno) || - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - SyscallSets::IsSocketCall(sysno) || - #endif - #if defined(__arm__) -@@ -255,7 +256,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de - } - - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - if (sysno == __NR_mmap) - return RestrictMmapFlags(); - #endif -@@ -276,7 +277,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de - return RestrictPrctl(); - - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - if (sysno == __NR_socketpair) { - // Only allow AF_UNIX, PF_UNIX. Crash if anything else is seen. - static_assert(AF_UNIX == PF_UNIX, -@@ -340,7 +341,8 @@ ResultExpr EvaluateSyscallImpl(int fs_de - } - - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - if (SyscallSets::IsSocketCall(sysno)) - return RestrictSocketcallCommand(); - #endif -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -@@ -45,6 +45,11 @@ - #include - #endif - -+// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h -+#ifdef __powerpc64__ -+#include -+#endif -+ - #if BUILDFLAG(IS_ANDROID) - - #if !defined(F_DUPFD_CLOEXEC) -@@ -102,6 +107,15 @@ inline bool IsArchitectureMips() { - #endif - } - -+inline bool IsArchitecturePPC64() { -+#if defined(__powerpc64__) -+ return true; -+#else -+ return false; -+#endif -+} -+ -+ - // Ubuntu's version of glibc has a race condition in sem_post that can cause - // it to call futex(2) with bogus op arguments. To workaround this, we need - // to allow those futex(2) calls to fail with EINVAL, instead of crashing the -@@ -269,9 +283,11 @@ ResultExpr RestrictFcntlCommands() { - // operator. - // Glibc overrides the kernel's O_LARGEFILE value. Account for this. - uint64_t kOLargeFileFlag = O_LARGEFILE; -- if (IsArchitectureX86_64() || IsArchitectureI386() || IsArchitectureMips()) -+ if (IsArchitectureX86_64() || IsArchitectureI386() || IsArchitectureMips() \ -+ || IsArchitecturePPC64()) - kOLargeFileFlag = 0100000; - -+ - const Arg cmd(1); - const Arg long_arg(2); - -@@ -294,8 +310,17 @@ ResultExpr RestrictFcntlCommands() { - F_SETLKW, - F_GETLK, - F_DUPFD, -- F_DUPFD_CLOEXEC}, -- Allow()) -+ F_DUPFD_CLOEXEC -+#if defined(__powerpc64__) -+// On PPC64, F_SETLK, F_GETLK, F_SETLKW are defined as the 64-bit variants -+// but glibc will sometimes still use the 32-bit versions. Allow both. -+ , -+ 5, /* F_GETLK (32) */ -+ 6, /* F_SETLK (32) */ -+ 7 /* F_SETLKW (32) */ -+#endif -+ }, -+ Allow()) - .Case(F_SETFL, - If((long_arg & ~kAllowedMask) == 0, Allow()).Else(CrashSIGSYS())) - .Case(F_ADD_SEALS, -@@ -304,7 +329,7 @@ ResultExpr RestrictFcntlCommands() { - // clang-format on - } - --#if defined(__i386__) || defined(__mips__) -+#if defined(__i386__) || defined(__mips__) || defined(__powerpc64__) - ResultExpr RestrictSocketcallCommand() { - // Unfortunately, we are unable to restrict the first parameter to - // socketpair(2). Whilst initially sounding bad, it's noteworthy that very -@@ -461,7 +486,7 @@ ResultExpr RestrictPtrace() { - #endif - return Switch(request) - .Cases({ --#if !defined(__aarch64__) -+#if !defined(__aarch64__) && !defined(__powerpc64__) - PTRACE_GETREGS, PTRACE_GETFPREGS, PTRACE_GET_THREAD_AREA, - PTRACE_GETREGSET, - #endif -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h -@@ -52,7 +52,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr Restr - // O_NONBLOCK | O_SYNC | O_LARGEFILE | O_CLOEXEC | O_NOATIME. - SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictFcntlCommands(); - --#if defined(__i386__) || defined(__mips__) -+#if defined(__i386__) || defined(__mips__) || defined(__powerpc64__) - // Restrict socketcall(2) to only allow socketpair(2), send(2), recv(2), - // sendto(2), recvfrom(2), shutdown(2), sendmsg(2) and recvmsg(2). - SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictSocketcallCommand(); -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -@@ -29,7 +29,8 @@ bool SyscallSets::IsAllowedGettime(int s - switch (sysno) { - case __NR_gettimeofday: - #if defined(__i386__) || defined(__x86_64__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_time: - #endif - return true; -@@ -52,12 +53,14 @@ bool SyscallSets::IsAllowedGettime(int s - case __NR_clock_nanosleep_time64: // Parameters filtered by RestrictClockID(). - #endif - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_ftime: // Obsolete. - #endif - case __NR_settimeofday: // Privileged. - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_stime: - #endif - default: -@@ -136,7 +139,7 @@ bool SyscallSets::IsFileSystem(int sysno - case __NR_faccessat2: - case __NR_fchmodat: - case __NR_fchownat: // Should be called chownat ? --#if defined(__x86_64__) || defined(__aarch64__) -+#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) - case __NR_newfstatat: // fstatat(). EPERM not a valid errno. - #elif defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -@@ -155,7 +158,7 @@ bool SyscallSets::IsFileSystem(int sysno - case __NR_memfd_create: - case __NR_mkdirat: - case __NR_mknodat: --#if defined(__i386__) -+#if defined(__i386__) || defined(__powerpc64__) - case __NR_oldlstat: - case __NR_oldstat: - #endif -@@ -169,7 +172,8 @@ bool SyscallSets::IsFileSystem(int sysno - #endif - case __NR_statfs: // EPERM not a valid errno. - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_statfs64: - #endif - case __NR_statx: // EPERM not a valid errno. -@@ -180,7 +184,8 @@ bool SyscallSets::IsFileSystem(int sysno - case __NR_truncate64: - #endif - case __NR_unlinkat: --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_utime: - #endif - case __NR_utimensat: // New. -@@ -220,7 +225,8 @@ bool SyscallSets::IsAllowedFileSystemAcc - #endif - return true; - // TODO(jln): these should be denied gracefully as well (moved below). --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_fadvise64: // EPERM not a valid errno. - #endif - #if defined(__i386__) -@@ -233,11 +239,12 @@ bool SyscallSets::IsAllowedFileSystemAcc - case __NR_flock: // EPERM not a valid errno. - case __NR_fstatfs: // Give information about the whole filesystem. - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_fstatfs64: - #endif - case __NR_fsync: // EPERM not a valid errno. --#if defined(__i386__) -+#if defined(__i386__) || defined(__powerpc64__) - case __NR_oldfstat: - #endif - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -@@ -245,6 +252,8 @@ bool SyscallSets::IsAllowedFileSystemAcc - case __NR_sync_file_range: // EPERM not a valid errno. - #elif defined(__arm__) - case __NR_arm_sync_file_range: // EPERM not a valid errno. -+#elif defined(__powerpc64__) -+ case __NR_sync_file_range2: // EPERM not a valid errno. - #endif - default: - return false; -@@ -265,7 +274,8 @@ bool SyscallSets::IsDeniedFileSystemAcce - #endif - case __NR_getdents64: // EPERM not a valid errno. - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_readdir: - #endif - return true; -@@ -306,7 +316,7 @@ bool SyscallSets::IsGetSimpleId(int sysn - bool SyscallSets::IsProcessPrivilegeChange(int sysno) { - switch (sysno) { - case __NR_capset: --#if defined(__i386__) || defined(__x86_64__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) - case __NR_ioperm: // Intel privilege. - case __NR_iopl: // Intel privilege. - #endif -@@ -362,7 +372,8 @@ bool SyscallSets::IsAllowedSignalHandlin - // overflow. - case __NR_sigaltstack: - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_rt_sigtimedwait_time64: - case __NR_sigaction: - case __NR_sigprocmask: -@@ -378,7 +389,8 @@ bool SyscallSets::IsAllowedSignalHandlin - #endif - case __NR_signalfd4: - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_sigpending: - case __NR_sigsuspend: - #endif -@@ -402,7 +414,7 @@ bool SyscallSets::IsAllowedOperationOnFd - #endif - case __NR_dup3: - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_shutdown: - #endif - return true; -@@ -435,7 +447,7 @@ bool SyscallSets::IsAllowedProcessStartO - case __NR_exit_group: - case __NR_wait4: - case __NR_waitid: --#if defined(__i386__) -+#if defined(__i386__) || defined(__powerpc64__) - case __NR_waitpid: - #endif - return true; -@@ -452,7 +464,7 @@ bool SyscallSets::IsAllowedProcessStartO - #endif - case __NR_set_tid_address: - case __NR_unshare: --#if !defined(__mips__) && !defined(__aarch64__) -+#if !defined(__mips__) && !defined(__aarch64__) || defined(__powerpc64__) - case __NR_vfork: - #endif - default: -@@ -499,7 +511,7 @@ bool SyscallSets::IsAllowedEpoll(int sys - bool SyscallSets::IsDeniedGetOrModifySocket(int sysno) { - switch (sysno) { - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_accept: - case __NR_accept4: - case __NR_bind: -@@ -514,7 +526,8 @@ bool SyscallSets::IsDeniedGetOrModifySoc - } - - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - // Big multiplexing system call for sockets. - bool SyscallSets::IsSocketCall(int sysno) { - switch (sysno) { -@@ -528,7 +541,8 @@ bool SyscallSets::IsSocketCall(int sysno - } - #endif - --#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) -+#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -+ defined(__powerpc64__) - bool SyscallSets::IsNetworkSocketInformation(int sysno) { - switch (sysno) { - case __NR_getpeername: -@@ -554,7 +568,7 @@ bool SyscallSets::IsAllowedAddressSpaceA - case __NR_mincore: - case __NR_mlockall: - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_mmap: - #endif - #if defined(__i386__) || defined(__arm__) || \ -@@ -584,7 +598,8 @@ bool SyscallSets::IsAllowedGeneralIo(int - switch (sysno) { - case __NR_lseek: - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR__llseek: - #endif - #if !defined(__aarch64__) -@@ -679,7 +696,8 @@ bool SyscallSets::IsAllowedBasicSchedule - return true; - case __NR_getpriority: - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_nice: - #endif - case __NR_setpriority: -@@ -691,7 +709,8 @@ bool SyscallSets::IsAllowedBasicSchedule - bool SyscallSets::IsAdminOperation(int sysno) { - switch (sysno) { - #if defined(__i386__) || defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_bdflush: - #endif - case __NR_kexec_load: -@@ -707,7 +726,8 @@ bool SyscallSets::IsAdminOperation(int s - - bool SyscallSets::IsKernelModule(int sysno) { - switch (sysno) { --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_create_module: - case __NR_get_kernel_syms: // Should ENOSYS. - case __NR_query_module: -@@ -740,7 +760,8 @@ bool SyscallSets::IsFsControl(int sysno) - case __NR_swapoff: - case __NR_swapon: - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_umount: - #endif - case __NR_umount2: -@@ -756,7 +777,7 @@ bool SyscallSets::IsNuma(int sysno) { - case __NR_getcpu: - case __NR_mbind: - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_migrate_pages: - #endif - case __NR_move_pages: -@@ -791,14 +812,15 @@ bool SyscallSets::IsGlobalProcessEnviron - switch (sysno) { - case __NR_acct: // Privileged. - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_getrlimit: - #endif --#if defined(__i386__) || defined(__arm__) -+#if defined(__i386__) || defined(__arm__) || defined(__powerpc64__) - case __NR_ugetrlimit: - #endif - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_ulimit: - #endif - case __NR_getrusage: -@@ -832,7 +854,7 @@ bool SyscallSets::IsGlobalSystemStatus(i - #endif - case __NR_sysinfo: - case __NR_uname: --#if defined(__i386__) -+#if defined(__i386__) || defined(__powerpc64__) - case __NR_olduname: - case __NR_oldolduname: - #endif -@@ -916,7 +938,8 @@ bool SyscallSets::IsSystemVSemaphores(in - - #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ - defined(__aarch64__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) || \ -+ defined(__powerpc64__) - // These give a lot of ambient authority and bypass the setuid sandbox. - bool SyscallSets::IsSystemVSharedMemory(int sysno) { - switch (sysno) { -@@ -947,7 +970,8 @@ bool SyscallSets::IsSystemVMessageQueue( - #endif - - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - // Big system V multiplexing system call. - bool SyscallSets::IsSystemVIpc(int sysno) { - switch (sysno) { -@@ -967,7 +991,8 @@ bool SyscallSets::IsAnySystemV(int sysno - return IsSystemVMessageQueue(sysno) || IsSystemVSemaphores(sysno) || - IsSystemVSharedMemory(sysno); - #elif defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - return IsSystemVIpc(sysno); - #endif - } -@@ -1024,7 +1049,8 @@ bool SyscallSets::IsFaNotify(int sysno) - bool SyscallSets::IsTimer(int sysno) { - switch (sysno) { - case __NR_getitimer: --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_alarm: - #endif - case __NR_setitimer: -@@ -1103,18 +1129,22 @@ bool SyscallSets::IsMisc(int sysno) { - case __NR_syncfs: - case __NR_vhangup: - // The system calls below are not implemented. --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_afs_syscall: - #endif - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_break: - #endif --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_getpmsg: - #endif - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_gtty: - case __NR_idle: - case __NR_lock: -@@ -1122,20 +1152,22 @@ bool SyscallSets::IsMisc(int sysno) { - case __NR_prof: - case __NR_profil: - #endif --#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -+ defined(__powerpc64__) - case __NR_putpmsg: - #endif - #if defined(__x86_64__) - case __NR_security: - #endif - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_stty: - #endif --#if defined(__x86_64__) -+#if defined(__x86_64__) || defined(__powerpc64__) - case __NR_tuxcall: - #endif --#if !defined(__aarch64__) -+#if !defined(__aarch64__) && !defined(__powerpc64__) - case __NR_vserver: - #endif - return true; -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h -@@ -46,13 +46,14 @@ class SANDBOX_EXPORT SyscallSets { - static bool IsDeniedGetOrModifySocket(int sysno); - - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - // Big multiplexing system call for sockets. - static bool IsSocketCall(int sysno); - #endif - - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - static bool IsNetworkSocketInformation(int sysno); - #endif - -@@ -84,7 +85,8 @@ class SANDBOX_EXPORT SyscallSets { - #endif - #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ - defined(__aarch64__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) || \ -+ defined(__powerpc64__) - // These give a lot of ambient authority and bypass the setuid sandbox. - static bool IsSystemVSharedMemory(int sysno); - #endif -@@ -95,7 +97,8 @@ class SANDBOX_EXPORT SyscallSets { - #endif - - #if defined(__i386__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - // Big system V multiplexing system call. - static bool IsSystemVIpc(int sysno); - #endif -Index: chromium-134.0.6998.35/sandbox/linux/services/syscall_wrappers.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/services/syscall_wrappers.cc -+++ chromium-134.0.6998.35/sandbox/linux/services/syscall_wrappers.cc -@@ -66,7 +66,7 @@ long sys_clone(unsigned long flags, - #if defined(ARCH_CPU_X86_64) - return syscall(__NR_clone, flags, child_stack, ptid, ctid, tls); - #elif defined(ARCH_CPU_X86) || defined(ARCH_CPU_ARM_FAMILY) || \ -- defined(ARCH_CPU_MIPS_FAMILY) -+ defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) - // CONFIG_CLONE_BACKWARDS defined. - return syscall(__NR_clone, flags, child_stack, ptid, tls, ctid); - #endif -From 3c4705bfdda45feb860a1f121631773e5fe8e53f Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 19:11:26 -0500 -Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Modify seccomp_macros to add - support for ppc64 - ---- - sandbox/linux/bpf_dsl/seccomp_macros.h | 43 ++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - -Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/seccomp_macros.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/seccomp_macros.h -+++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/seccomp_macros.h -@@ -14,6 +14,9 @@ - #if defined(__mips__) - // sys/user.h in eglibc misses size_t definition - #include -+#elif defined(__powerpc64__) -+// Manually define greg_t on ppc64 -+typedef unsigned long long greg_t; - #endif - #endif - -@@ -343,6 +346,51 @@ struct regs_struct { - #define SECCOMP_PT_PARM4(_regs) (_regs).regs[3] - #define SECCOMP_PT_PARM5(_regs) (_regs).regs[4] - #define SECCOMP_PT_PARM6(_regs) (_regs).regs[5] -+ -+#elif defined(__powerpc64__) -+#include -+ -+typedef struct pt_regs regs_struct; -+ -+#ifdef ARCH_CPU_LITTLE_ENDIAN -+#define SECCOMP_ARCH AUDIT_ARCH_PPC64LE -+#else -+#define SECCOMP_ARCH AUDIT_ARCH_PPC64 -+#endif -+ -+#define SECCOMP_REG(_ctx, _reg) ((_ctx)->uc_mcontext.regs->gpr[_reg]) -+ -+#define SECCOMP_RESULT(_ctx) SECCOMP_REG(_ctx, 3) -+#define SECCOMP_SYSCALL(_ctx) SECCOMP_REG(_ctx, 0) -+#define SECCOMP_IP(_ctx) (_ctx)->uc_mcontext.regs->nip -+#define SECCOMP_PARM1(_ctx) SECCOMP_REG(_ctx, 3) -+#define SECCOMP_PARM2(_ctx) SECCOMP_REG(_ctx, 4) -+#define SECCOMP_PARM3(_ctx) SECCOMP_REG(_ctx, 5) -+#define SECCOMP_PARM4(_ctx) SECCOMP_REG(_ctx, 6) -+#define SECCOMP_PARM5(_ctx) SECCOMP_REG(_ctx, 7) -+#define SECCOMP_PARM6(_ctx) SECCOMP_REG(_ctx, 8) -+ -+#define SECCOMP_NR_IDX (offsetof(struct arch_seccomp_data, nr)) -+#define SECCOMP_ARCH_IDX (offsetof(struct arch_seccomp_data, arch)) -+#define SECCOMP_IP_MSB_IDX \ -+ (offsetof(struct arch_seccomp_data, instruction_pointer) + 4) -+#define SECCOMP_IP_LSB_IDX \ -+ (offsetof(struct arch_seccomp_data, instruction_pointer) + 0) -+#define SECCOMP_ARG_MSB_IDX(nr) \ -+ (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 4) -+#define SECCOMP_ARG_LSB_IDX(nr) \ -+ (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 0) -+ -+#define SECCOMP_PT_RESULT(_regs) (_regs).gpr[3] -+#define SECCOMP_PT_SYSCALL(_regs) (_regs).gpr[0] -+#define SECCOMP_PT_IP(_regs) (_regs).nip -+#define SECCOMP_PT_PARM1(_regs) (_regs).gpr[3] -+#define SECCOMP_PT_PARM2(_regs) (_regs).gpr[4] -+#define SECCOMP_PT_PARM3(_regs) (_regs).gpr[5] -+#define SECCOMP_PT_PARM4(_regs) (_regs).gpr[6] -+#define SECCOMP_PT_PARM5(_regs) (_regs).gpr[7] -+#define SECCOMP_PT_PARM6(_regs) (_regs).gpr[8] -+ - #else - #error Unsupported target platform - -From cca78240860abb63bbcfe94d1e5f04a1f23c527d Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 19:11:56 -0500 -Subject: [PATCH 3/4] sandbox/linux/system_headers: Update linux seccomp header - for ppc64 - ---- - sandbox/linux/system_headers/linux_seccomp.h | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_seccomp.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_seccomp.h -+++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_seccomp.h -@@ -38,6 +38,9 @@ - #ifndef EM_AARCH64 - #define EM_AARCH64 183 - #endif -+#ifndef EM_PPC64 -+#define EM_PPC64 21 -+#endif - - #ifndef __AUDIT_ARCH_64BIT - #define __AUDIT_ARCH_64BIT 0x80000000 -@@ -70,6 +73,12 @@ - #ifndef AUDIT_ARCH_AARCH64 - #define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE) - #endif -+#ifndef AUDIT_ARCH_PPC64 -+#define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT) -+#endif -+#ifndef AUDIT_ARCH_PPC64LE -+#define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE) -+#endif - - // For prctl.h - #ifndef PR_SET_SECCOMP -From 298df3dc44f7121cd8cb9a06b29fa3b16c959b8d Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 19:13:25 -0500 -Subject: [PATCH 4/4] sandbox/linux/system_headers: Update linux signal header - for ppc64 - ---- - sandbox/linux/system_headers/linux_signal.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_signal.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_signal.h -+++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_signal.h -@@ -13,7 +13,7 @@ - // (not undefined, but defined different values and in different memory - // layouts). So, fill the gap here. - #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - - #define LINUX_SIGHUP 1 - #define LINUX_SIGINT 2 -From 1d44643a7c7cf650efd1093d22cd5bf859fdcb51 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 9 Aug 2018 20:52:13 -0500 -Subject: [PATCH] sandbox/linux/seccomp-bpf: Add ppc64 syscall stub - ---- - sandbox/linux/seccomp-bpf/syscall.cc | 53 ++++++++++++++++++++++++++-- - 1 file changed, 51 insertions(+), 2 deletions(-) - -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/syscall.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf/syscall.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/syscall.cc -@@ -23,7 +23,7 @@ namespace sandbox { - namespace { - - #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ -- defined(ARCH_CPU_MIPS_FAMILY) -+ defined(ARCH_CPU_MIPS_FAMILY) || defined (ARCH_CPU_PPC64_FAMILY) - // Number that's not currently used by any Linux kernel ABIs. - const int kInvalidSyscallNumber = 0x351d3; - #else -@@ -313,10 +313,54 @@ asm(// We need to be able to tell the ke - "2:ret\n" - ".cfi_endproc\n" - ".size SyscallAsm, .-SyscallAsm\n" -+#elif defined(__powerpc64__) -+ ".text\n" -+ ".align 4\n" -+ ".type SyscallAsm @function\n" -+ "SyscallAsm:\n" -+ ".cfi_startproc\n" -+ -+ // Check if r3 is negative -+ "cmpdi 3, 0\n" -+ "bgt 2f\n" -+ -+ // Load address of 3f into r3 and return -+ "mflr 10\n" -+ "bl 1f\n" -+ "1: mflr 3\n" -+ "mtlr 10\n" -+ "addi 3, 3, 4*13\n" -+ "blr\n" -+ -+ // Load arguments from array into r3-8 -+ // save param 3 in r10 -+ "2:\n" -+ "mr 0, 3\n" -+ "ld 3, 0(4)\n" -+ "ld 5, 16(4)\n" -+ "ld 6, 24(4)\n" -+ "ld 7, 32(4)\n" -+ "ld 8, 40(4)\n" -+ "ld 4, 8(4)\n" -+ "li 9, 0\n" -+ -+ // Enter kernel -+ "sc\n" -+ -+ // Magic return address -+ "3:\n" -+ // Like MIPS, ppc64 return values are always positive. -+ // Check for error in cr0.SO and negate upon error -+ "bc 4, 3, 4f\n" -+ "neg 3, 3\n" -+ "4: blr\n" -+ -+ ".cfi_endproc\n" -+ ".size SyscallAsm, .-SyscallAsm\n" - #endif - ); // asm - --#if defined(__x86_64__) -+#if defined(__x86_64__) || defined(__powerpc64__) - extern "C" { - intptr_t SyscallAsm(intptr_t nr, const intptr_t args[6]); - } -@@ -430,6 +474,8 @@ intptr_t Syscall::Call(int nr, - ret = inout; - } - -+#elif defined(__powerpc64__) -+ intptr_t ret = SyscallAsm(nr, args); - #else - #error "Unimplemented architecture" - #endif -@@ -446,8 +492,18 @@ void Syscall::PutValueInUcontext(intptr_ - // needs to be changed back. - ret_val = -ret_val; - SECCOMP_PARM4(ctx) = 1; -- } else -+ } else { - SECCOMP_PARM4(ctx) = 0; -+ } -+#endif -+#if defined(__powerpc64__) -+ // Same as MIPS, need to invert ret and set error register (cr0.SO) -+ if (ret_val <= -1 && ret_val >= -4095) { -+ ret_val = -ret_val; -+ ctx->uc_mcontext.regs->ccr |= (1 << 28); -+ } else { -+ ctx->uc_mcontext.regs->ccr &= ~(1 << 28); -+ } - #endif - SECCOMP_RESULT(ctx) = static_cast(ret_val); - } -From 6a852c4135864ba87b3cbdd0880d7cfecf7cd654 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 13 Sep 2018 15:12:22 -0500 -Subject: [PATCH 5/6] sandbox/linux: update unit test for ppc64 - ---- - sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc -@@ -350,8 +350,10 @@ TEST_BASELINE_SIGSYS(__NR_timer_create) - - #if !defined(__aarch64__) - TEST_BASELINE_SIGSYS(__NR_inotify_init) -+#if !defined(__powerpc64__) - TEST_BASELINE_SIGSYS(__NR_vserver) - #endif -+#endif - - #if defined(LIBC_GLIBC) && !BUILDFLAG(IS_CHROMEOS_ASH) - BPF_TEST_C(BaselinePolicy, FutexEINVAL, BaselinePolicy) { -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -@@ -374,7 +374,9 @@ bool SyscallSets::IsAllowedSignalHandlin - #if defined(__i386__) || defined(__arm__) || \ - (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ - defined(__powerpc64__) -+#if !defined(__powerpc64__) - case __NR_rt_sigtimedwait_time64: -+#endif - case __NR_sigaction: - case __NR_sigprocmask: - case __NR_sigreturn: -Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_stat.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_stat.h -+++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_stat.h -@@ -173,6 +173,28 @@ struct kernel_stat { - unsigned int __unused4; - unsigned int __unused5; - }; -+#elif defined(__powerpc64__) -+struct kernel_stat { -+ unsigned long st_dev; -+ ino_t st_ino; -+ unsigned long st_nlink; -+ mode_t st_mode; -+ uid_t st_uid; -+ gid_t st_gid; -+ unsigned long st_rdev; -+ long st_size; -+ unsigned long st_blksize; -+ unsigned long st_blocks; -+ // unsigned long st_atime; -+ unsigned long st_atime_nsec; -+ //unsigned long st_mtime; -+ unsigned long st_mtime_nsec; -+ //unsigned long st_ctime; -+ unsigned long st_ctime_nsec; -+ unsigned long __unused4; -+ unsigned long __unused5; -+ unsigned long __unused6; -+}; - #endif - - #if !defined(AT_EMPTY_PATH) -Index: chromium-134.0.6998.35/sandbox/linux/services/credentials.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/services/credentials.cc -+++ chromium-134.0.6998.35/sandbox/linux/services/credentials.cc -@@ -87,7 +87,7 @@ bool ChrootToSafeEmptyDir() { - alignas(16) char stack_buf[PTHREAD_STACK_MIN_CONST]; - - #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ -- defined(ARCH_CPU_MIPS_FAMILY) -+ defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) - // The stack grows downward. - void* stack = stack_buf + sizeof(stack_buf); - #else -Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_utility_policy_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc -+++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_utility_policy_linux.cc -@@ -34,7 +34,7 @@ ResultExpr UtilityProcessPolicy::Evaluat - case __NR_fdatasync: - case __NR_fsync: - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_getrlimit: - #endif - #if defined(__i386__) || defined(__arm__) -Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc -@@ -90,7 +90,7 @@ ResultExpr RendererProcessPolicy::Evalua - case __NR_ftruncate64: - #endif - #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_getrlimit: - case __NR_setrlimit: - // We allow setrlimit to dynamically adjust the address space limit as -Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -+++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -@@ -58,9 +58,9 @@ - - #elif defined(__powerpc64__) - --#include -+#include - #define MIN_SYSCALL 0u --#define MAX_PUBLIC_SYSCALL 386u -+#define MAX_PUBLIC_SYSCALL __NR_syscalls - #define MAX_SYSCALL MAX_PUBLIC_SYSCALL - - #else -Index: chromium-134.0.6998.35/sandbox/linux/services/credentials.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/services/credentials.cc -+++ chromium-134.0.6998.35/sandbox/linux/services/credentials.cc -@@ -96,7 +96,8 @@ bool ChrootToSafeEmptyDir() { - - int clone_flags = CLONE_FS | LINUX_SIGCHLD; - void* tls = nullptr; --#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY)) && \ -+#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY) || \ -+ defined(ARCH_CPU_PPC64_FAMILY)) && \ - !defined(MEMORY_SANITIZER) - // Use CLONE_VM | CLONE_VFORK as an optimization to avoid copying page tables. - // Since clone writes to the new child's TLS before returning, we must set a -@@ -104,6 +105,11 @@ bool ChrootToSafeEmptyDir() { - // glibc performs syscalls by calling a function pointer in TLS, so we do not - // attempt this optimization. - // TODO(crbug.com/40196869) Broken in MSan builds after LLVM f1bb30a4956f. -+ // -+ // NOTE: Without CLONE_VM, fontconfig will attempt to reload configuration -+ // in every thread. Since the rendered threads are sandboxed without -+ // filesystem access (e.g. to /etc/fonts/fonts.conf) this will cause font -+ // configuration loading failures and no fonts will be displayed! - clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS; - - char tls_buf[PTHREAD_STACK_MIN_CONST] = {}; -Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc -=================================================================== ---- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc -+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc -@@ -362,7 +362,16 @@ intptr_t SIGSYSFstatatHandler(const stru - if (args.nr == __NR_fstatat_default) { - if (*reinterpret_cast(args.args[1]) == '\0' && - args.args[3] == static_cast(AT_EMPTY_PATH)) { -- return syscall(__NR_fstat_default, static_cast(args.args[0]), -+ int fd = static_cast(args.args[0]); -+#if defined(__powerpc64__) -+ // On ppc64+glibc, some syscalls seem to accidentally negate the first -+ // parameter which causes checks against it to fail. For now, manually -+ // negate them back. -+ // TODO: Investigate the root cause and fix in glibc -+ if (fd < 0) -+ fd = -fd; -+#endif -+ return syscall(__NR_fstat_default, fd, - reinterpret_cast(args.args[2])); - } - return -reinterpret_cast(fs_denied_errno); -Index: chromium-134.0.6998.35/third_party/angle/src/libANGLE/Constants.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/angle/src/libANGLE/Constants.h -+++ chromium-134.0.6998.35/third_party/angle/src/libANGLE/Constants.h -@@ -9,6 +9,7 @@ - #ifndef LIBANGLE_CONSTANTS_H_ - #define LIBANGLE_CONSTANTS_H_ - -+#include - #include "common/platform.h" - - #include -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/abi_self_test.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/abi_self_test.cc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/abi_self_test.cc -@@ -521,3 +521,289 @@ TEST(ABITest, AArch64) { - CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper); - } - #endif // OPENSSL_AARCH64 && SUPPORTS_ABI_TEST -+ -+#if defined(OPENSSL_PPC64LE) && defined(SUPPORTS_ABI_TEST) -+extern "C" { -+void abi_test_clobber_r0(void); -+// r1 is the stack pointer. -+void abi_test_clobber_r2(void); -+void abi_test_clobber_r3(void); -+void abi_test_clobber_r4(void); -+void abi_test_clobber_r5(void); -+void abi_test_clobber_r6(void); -+void abi_test_clobber_r7(void); -+void abi_test_clobber_r8(void); -+void abi_test_clobber_r9(void); -+void abi_test_clobber_r10(void); -+void abi_test_clobber_r11(void); -+void abi_test_clobber_r12(void); -+// r13 is the thread pointer. -+void abi_test_clobber_r14(void); -+void abi_test_clobber_r15(void); -+void abi_test_clobber_r16(void); -+void abi_test_clobber_r17(void); -+void abi_test_clobber_r18(void); -+void abi_test_clobber_r19(void); -+void abi_test_clobber_r20(void); -+void abi_test_clobber_r21(void); -+void abi_test_clobber_r22(void); -+void abi_test_clobber_r23(void); -+void abi_test_clobber_r24(void); -+void abi_test_clobber_r25(void); -+void abi_test_clobber_r26(void); -+void abi_test_clobber_r27(void); -+void abi_test_clobber_r28(void); -+void abi_test_clobber_r29(void); -+void abi_test_clobber_r30(void); -+void abi_test_clobber_r31(void); -+ -+void abi_test_clobber_f0(void); -+void abi_test_clobber_f1(void); -+void abi_test_clobber_f2(void); -+void abi_test_clobber_f3(void); -+void abi_test_clobber_f4(void); -+void abi_test_clobber_f5(void); -+void abi_test_clobber_f6(void); -+void abi_test_clobber_f7(void); -+void abi_test_clobber_f8(void); -+void abi_test_clobber_f9(void); -+void abi_test_clobber_f10(void); -+void abi_test_clobber_f11(void); -+void abi_test_clobber_f12(void); -+void abi_test_clobber_f13(void); -+void abi_test_clobber_f14(void); -+void abi_test_clobber_f15(void); -+void abi_test_clobber_f16(void); -+void abi_test_clobber_f17(void); -+void abi_test_clobber_f18(void); -+void abi_test_clobber_f19(void); -+void abi_test_clobber_f20(void); -+void abi_test_clobber_f21(void); -+void abi_test_clobber_f22(void); -+void abi_test_clobber_f23(void); -+void abi_test_clobber_f24(void); -+void abi_test_clobber_f25(void); -+void abi_test_clobber_f26(void); -+void abi_test_clobber_f27(void); -+void abi_test_clobber_f28(void); -+void abi_test_clobber_f29(void); -+void abi_test_clobber_f30(void); -+void abi_test_clobber_f31(void); -+ -+void abi_test_clobber_v0(void); -+void abi_test_clobber_v1(void); -+void abi_test_clobber_v2(void); -+void abi_test_clobber_v3(void); -+void abi_test_clobber_v4(void); -+void abi_test_clobber_v5(void); -+void abi_test_clobber_v6(void); -+void abi_test_clobber_v7(void); -+void abi_test_clobber_v8(void); -+void abi_test_clobber_v9(void); -+void abi_test_clobber_v10(void); -+void abi_test_clobber_v11(void); -+void abi_test_clobber_v12(void); -+void abi_test_clobber_v13(void); -+void abi_test_clobber_v14(void); -+void abi_test_clobber_v15(void); -+void abi_test_clobber_v16(void); -+void abi_test_clobber_v17(void); -+void abi_test_clobber_v18(void); -+void abi_test_clobber_v19(void); -+void abi_test_clobber_v20(void); -+void abi_test_clobber_v21(void); -+void abi_test_clobber_v22(void); -+void abi_test_clobber_v23(void); -+void abi_test_clobber_v24(void); -+void abi_test_clobber_v25(void); -+void abi_test_clobber_v26(void); -+void abi_test_clobber_v27(void); -+void abi_test_clobber_v28(void); -+void abi_test_clobber_v29(void); -+void abi_test_clobber_v30(void); -+void abi_test_clobber_v31(void); -+ -+void abi_test_clobber_cr0(void); -+void abi_test_clobber_cr1(void); -+void abi_test_clobber_cr2(void); -+void abi_test_clobber_cr3(void); -+void abi_test_clobber_cr4(void); -+void abi_test_clobber_cr5(void); -+void abi_test_clobber_cr6(void); -+void abi_test_clobber_cr7(void); -+ -+void abi_test_clobber_ctr(void); -+void abi_test_clobber_lr(void); -+ -+} // extern "C" -+ -+TEST(ABITest, PPC64LE) { -+ // abi_test_trampoline hides unsaved registers from the caller, so we can -+ // safely call the abi_test_clobber_* functions below. -+ abi_test::internal::CallerState state; -+ RAND_bytes(reinterpret_cast(&state), sizeof(state)); -+ CHECK_ABI_NO_UNWIND(abi_test_trampoline, -+ reinterpret_cast(abi_test_clobber_r14), -+ &state, nullptr, 0, 0 /* no breakpoint */); -+ -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r0); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r2); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r3); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r4); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r5); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r6); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r7); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r8); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r9); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r10); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r11); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_r12); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r14), -+ "r14 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r15), -+ "r15 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r16), -+ "r16 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r17), -+ "r17 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r18), -+ "r18 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r19), -+ "r19 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r20), -+ "r20 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r21), -+ "r21 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r22), -+ "r22 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r23), -+ "r23 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r24), -+ "r24 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r25), -+ "r25 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r26), -+ "r26 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r27), -+ "r27 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r28), -+ "r28 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r29), -+ "r29 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r30), -+ "r30 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r31), -+ "r31 was not restored after return"); -+ -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f0); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f1); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f2); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f3); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f4); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f5); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f6); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f7); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f8); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f9); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f10); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f11); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f12); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_f13); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f14), -+ "f14 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f15), -+ "f15 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f16), -+ "f16 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f17), -+ "f17 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f18), -+ "f18 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f19), -+ "f19 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f20), -+ "f20 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f21), -+ "f21 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f22), -+ "f22 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f23), -+ "f23 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f24), -+ "f24 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f25), -+ "f25 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f26), -+ "f26 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f27), -+ "f27 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f28), -+ "f28 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f29), -+ "f29 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f30), -+ "f30 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f31), -+ "f31 was not restored after return"); -+ -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v0); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v1); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v2); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v3); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v4); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v5); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v6); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v7); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v8); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v9); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v10); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v11); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v12); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v13); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v14); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v15); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v16); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v17); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v18); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_v19); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v20), -+ "v20 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v21), -+ "v21 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v22), -+ "v22 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v23), -+ "v23 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v24), -+ "v24 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v25), -+ "v25 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v26), -+ "v26 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v27), -+ "v27 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v28), -+ "v28 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v29), -+ "v29 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v30), -+ "v30 was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v31), -+ "v31 was not restored after return"); -+ -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr0); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr1); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_cr2), -+ "cr was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_cr3), -+ "cr was not restored after return"); -+ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_cr4), -+ "cr was not restored after return"); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr5); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr6); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr7); -+ -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_ctr); -+ CHECK_ABI_NO_UNWIND(abi_test_clobber_lr); -+} -+#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/cpu_ppc64le.cc -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/cpu_ppc64le.cc -@@ -0,0 +1,38 @@ -+/* Copyright (c) 2016, Google Inc. -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -+ -+#include -+ -+#if defined(OPENSSL_PPC64LE) -+ -+#include -+ -+#include "internal.h" -+ -+ -+#if !defined(PPC_FEATURE2_HAS_VCRYPTO) -+// PPC_FEATURE2_HAS_VCRYPTO was taken from section 4.1.2.3 of the “OpenPOWER -+// ABI for Linux Supplement”. -+#define PPC_FEATURE2_HAS_VCRYPTO 0x02000000 -+#endif -+ -+void OPENSSL_cpuid_setup(void) { -+ OPENSSL_ppc64le_hwcap2 = getauxval(AT_HWCAP2); -+} -+ -+int CRYPTO_is_PPC64LE_vcrypto_capable(void) { -+ return (OPENSSL_ppc64le_hwcap2 & PPC_FEATURE2_HAS_VCRYPTO) != 0; -+} -+ -+#endif // OPENSSL_PPC64LE -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/crypto.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/crypto.cc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/crypto.cc -@@ -67,6 +67,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) { - return OPENSSL_ia32cap_P[idx]; - } - -+#elif defined(OPENSSL_PPC64LE) -+ -+HIDDEN unsigned long OPENSSL_ppc64le_hwcap2 = 0; -+ - #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) - - #include -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl -@@ -0,0 +1,3809 @@ -+#! /usr/bin/env perl -+# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. -+# -+# Licensed under the OpenSSL license (the "License"). You may not use -+# this file except in compliance with the License. You can obtain a copy -+# in the file LICENSE in the source distribution or at -+# https://www.openssl.org/source/license.html -+ -+# -+# ==================================================================== -+# Written by Andy Polyakov for the OpenSSL -+# project. The module is, however, dual licensed under OpenSSL and -+# CRYPTOGAMS licenses depending on where you obtain it. For further -+# details see http://www.openssl.org/~appro/cryptogams/. -+# ==================================================================== -+# -+# This module implements support for AES instructions as per PowerISA -+# specification version 2.07, first implemented by POWER8 processor. -+# The module is endian-agnostic in sense that it supports both big- -+# and little-endian cases. Data alignment in parallelizable modes is -+# handled with VSX loads and stores, which implies MSR.VSX flag being -+# set. It should also be noted that ISA specification doesn't prohibit -+# alignment exceptions for these instructions on page boundaries. -+# Initially alignment was handled in pure AltiVec/VMX way [when data -+# is aligned programmatically, which in turn guarantees exception- -+# free execution], but it turned to hamper performance when vcipher -+# instructions are interleaved. It's reckoned that eventual -+# misalignment penalties at page boundaries are in average lower -+# than additional overhead in pure AltiVec approach. -+# -+# May 2016 -+# -+# Add XTS subroutine, 9x on little- and 12x improvement on big-endian -+# systems were measured. -+# -+###################################################################### -+# Current large-block performance in cycles per byte processed with -+# 128-bit key (less is better). -+# -+# CBC en-/decrypt CTR XTS -+# POWER8[le] 3.96/0.72 0.74 1.1 -+# POWER8[be] 3.75/0.65 0.66 1.0 -+# POWER9[le] 4.02/0.86 0.84 1.05 -+# POWER9[be] 3.99/0.78 0.79 0.97 -+ -+$flavour = shift; -+$output = shift; -+ -+if ($flavour =~ /64/) { -+ $SIZE_T =8; -+ $LRSAVE =2*$SIZE_T; -+ $STU ="stdu"; -+ $POP ="ld"; -+ $PUSH ="std"; -+ $UCMP ="cmpld"; -+ $SHL ="sldi"; -+} elsif ($flavour =~ /32/) { -+ $SIZE_T =4; -+ $LRSAVE =$SIZE_T; -+ $STU ="stwu"; -+ $POP ="lwz"; -+ $PUSH ="stw"; -+ $UCMP ="cmplw"; -+ $SHL ="slwi"; -+} else { die "nonsense $flavour"; } -+ -+$LITTLE_ENDIAN = ($flavour=~/le$/) ? $SIZE_T : 0; -+ -+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; -+( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or -+( $xlate="${dir}../../../perlasm/ppc-xlate.pl" and -f $xlate) or -+die "can't locate ppc-xlate.pl"; -+ -+open OUT,"| $^X \"$xlate\" $flavour \"$output\"" || die "can't call $xlate: $!"; -+*STDOUT=*OUT; -+ -+$FRAME=8*$SIZE_T; -+$prefix="aes_hw"; -+ -+$sp="r1"; -+$vrsave="r12"; -+ -+######################################################################### -+{{{ # Key setup procedures # -+my ($inp,$bits,$out,$ptr,$cnt,$rounds)=map("r$_",(3..8)); -+my ($zero,$in0,$in1,$key,$rcon,$mask,$tmp)=map("v$_",(0..6)); -+my ($stage,$outperm,$outmask,$outhead,$outtail)=map("v$_",(7..11)); -+ -+$code.=<<___; -+.machine "any" -+ -+.text -+ -+.align 7 -+Lrcon: -+.long 0x01000000, 0x01000000, 0x01000000, 0x01000000 ?rev -+.long 0x1b000000, 0x1b000000, 0x1b000000, 0x1b000000 ?rev -+.long 0x0d0e0f0c, 0x0d0e0f0c, 0x0d0e0f0c, 0x0d0e0f0c ?rev -+.long 0,0,0,0 ?asis -+Lconsts: -+ mflr r0 -+ bcl 20,31,\$+4 -+ mflr $ptr #vvvvv "distance between . and rcon -+ addi $ptr,$ptr,-0x48 -+ mtlr r0 -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,0,0 -+.asciz "AES for PowerISA 2.07, CRYPTOGAMS by " -+ -+.globl .${prefix}_set_encrypt_key -+.align 5 -+.${prefix}_set_encrypt_key: -+Lset_encrypt_key: -+ mflr r11 -+ $PUSH r11,$LRSAVE($sp) -+ -+ li $ptr,-1 -+ ${UCMP}i $inp,0 -+ beq- Lenc_key_abort # if ($inp==0) return -1; -+ ${UCMP}i $out,0 -+ beq- Lenc_key_abort # if ($out==0) return -1; -+ li $ptr,-2 -+ cmpwi $bits,128 -+ blt- Lenc_key_abort -+ cmpwi $bits,256 -+ bgt- Lenc_key_abort -+ andi. r0,$bits,0x3f -+ bne- Lenc_key_abort -+ -+ lis r0,0xfff0 -+ mfspr $vrsave,256 -+ mtspr 256,r0 -+ -+ bl Lconsts -+ mtlr r11 -+ -+ neg r9,$inp -+ lvx $in0,0,$inp -+ addi $inp,$inp,15 # 15 is not typo -+ lvsr $key,0,r9 # borrow $key -+ li r8,0x20 -+ cmpwi $bits,192 -+ lvx $in1,0,$inp -+ le?vspltisb $mask,0x0f # borrow $mask -+ lvx $rcon,0,$ptr -+ le?vxor $key,$key,$mask # adjust for byte swap -+ lvx $mask,r8,$ptr -+ addi $ptr,$ptr,0x10 -+ vperm $in0,$in0,$in1,$key # align [and byte swap in LE] -+ li $cnt,8 -+ vxor $zero,$zero,$zero -+ mtctr $cnt -+ -+ ?lvsr $outperm,0,$out -+ vspltisb $outmask,-1 -+ lvx $outhead,0,$out -+ ?vperm $outmask,$zero,$outmask,$outperm -+ -+ blt Loop128 -+ addi $inp,$inp,8 -+ beq L192 -+ addi $inp,$inp,8 -+ b L256 -+ -+.align 4 -+Loop128: -+ vperm $key,$in0,$in0,$mask # rotate-n-splat -+ vsldoi $tmp,$zero,$in0,12 # >>32 -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ vcipherlast $key,$key,$rcon -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vadduwm $rcon,$rcon,$rcon -+ vxor $in0,$in0,$key -+ bdnz Loop128 -+ -+ lvx $rcon,0,$ptr # last two round keys -+ -+ vperm $key,$in0,$in0,$mask # rotate-n-splat -+ vsldoi $tmp,$zero,$in0,12 # >>32 -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ vcipherlast $key,$key,$rcon -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vadduwm $rcon,$rcon,$rcon -+ vxor $in0,$in0,$key -+ -+ vperm $key,$in0,$in0,$mask # rotate-n-splat -+ vsldoi $tmp,$zero,$in0,12 # >>32 -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ vcipherlast $key,$key,$rcon -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vxor $in0,$in0,$key -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ stvx $stage,0,$out -+ -+ addi $inp,$out,15 # 15 is not typo -+ addi $out,$out,0x50 -+ -+ li $rounds,10 -+ b Ldone -+ -+.align 4 -+L192: -+ lvx $tmp,0,$inp -+ li $cnt,4 -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ vperm $in1,$in1,$tmp,$key # align [and byte swap in LE] -+ vspltisb $key,8 # borrow $key -+ mtctr $cnt -+ vsububm $mask,$mask,$key # adjust the mask -+ -+Loop192: -+ vperm $key,$in1,$in1,$mask # roate-n-splat -+ vsldoi $tmp,$zero,$in0,12 # >>32 -+ vcipherlast $key,$key,$rcon -+ -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ -+ vsldoi $stage,$zero,$in1,8 -+ vspltw $tmp,$in0,3 -+ vxor $tmp,$tmp,$in1 -+ vsldoi $in1,$zero,$in1,12 # >>32 -+ vadduwm $rcon,$rcon,$rcon -+ vxor $in1,$in1,$tmp -+ vxor $in0,$in0,$key -+ vxor $in1,$in1,$key -+ vsldoi $stage,$stage,$in0,8 -+ -+ vperm $key,$in1,$in1,$mask # rotate-n-splat -+ vsldoi $tmp,$zero,$in0,12 # >>32 -+ vperm $outtail,$stage,$stage,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ vcipherlast $key,$key,$rcon -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ -+ vsldoi $stage,$in0,$in1,8 -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vperm $outtail,$stage,$stage,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ -+ vspltw $tmp,$in0,3 -+ vxor $tmp,$tmp,$in1 -+ vsldoi $in1,$zero,$in1,12 # >>32 -+ vadduwm $rcon,$rcon,$rcon -+ vxor $in1,$in1,$tmp -+ vxor $in0,$in0,$key -+ vxor $in1,$in1,$key -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ stvx $stage,0,$out -+ addi $inp,$out,15 # 15 is not typo -+ addi $out,$out,16 -+ bdnz Loop192 -+ -+ li $rounds,12 -+ addi $out,$out,0x20 -+ b Ldone -+ -+.align 4 -+L256: -+ lvx $tmp,0,$inp -+ li $cnt,7 -+ li $rounds,14 -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ vperm $in1,$in1,$tmp,$key # align [and byte swap in LE] -+ mtctr $cnt -+ -+Loop256: -+ vperm $key,$in1,$in1,$mask # rotate-n-splat -+ vsldoi $tmp,$zero,$in0,12 # >>32 -+ vperm $outtail,$in1,$in1,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ vcipherlast $key,$key,$rcon -+ stvx $stage,0,$out -+ addi $out,$out,16 -+ -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in0,$in0,$tmp -+ vadduwm $rcon,$rcon,$rcon -+ vxor $in0,$in0,$key -+ vperm $outtail,$in0,$in0,$outperm # rotate -+ vsel $stage,$outhead,$outtail,$outmask -+ vmr $outhead,$outtail -+ stvx $stage,0,$out -+ addi $inp,$out,15 # 15 is not typo -+ addi $out,$out,16 -+ bdz Ldone -+ -+ vspltw $key,$in0,3 # just splat -+ vsldoi $tmp,$zero,$in1,12 # >>32 -+ vsbox $key,$key -+ -+ vxor $in1,$in1,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in1,$in1,$tmp -+ vsldoi $tmp,$zero,$tmp,12 # >>32 -+ vxor $in1,$in1,$tmp -+ -+ vxor $in1,$in1,$key -+ b Loop256 -+ -+.align 4 -+Ldone: -+ lvx $in1,0,$inp # redundant in aligned case -+ vsel $in1,$outhead,$in1,$outmask -+ stvx $in1,0,$inp -+ li $ptr,0 -+ mtspr 256,$vrsave -+ stw $rounds,0($out) -+ -+Lenc_key_abort: -+ mr r3,$ptr -+ blr -+ .long 0 -+ .byte 0,12,0x14,1,0,0,3,0 -+ .long 0 -+.size .${prefix}_set_encrypt_key,.-.${prefix}_set_encrypt_key -+ -+.globl .${prefix}_set_decrypt_key -+.align 5 -+.${prefix}_set_decrypt_key: -+ $STU $sp,-$FRAME($sp) -+ mflr r10 -+ $PUSH r10,`$FRAME+$LRSAVE`($sp) -+ bl Lset_encrypt_key -+ mtlr r10 -+ -+ cmpwi r3,0 -+ bne- Ldec_key_abort -+ -+ slwi $cnt,$rounds,4 -+ subi $inp,$out,240 # first round key -+ srwi $rounds,$rounds,1 -+ add $out,$inp,$cnt # last round key -+ mtctr $rounds -+ -+Ldeckey: -+ lwz r0, 0($inp) -+ lwz r6, 4($inp) -+ lwz r7, 8($inp) -+ lwz r8, 12($inp) -+ addi $inp,$inp,16 -+ lwz r9, 0($out) -+ lwz r10,4($out) -+ lwz r11,8($out) -+ lwz r12,12($out) -+ stw r0, 0($out) -+ stw r6, 4($out) -+ stw r7, 8($out) -+ stw r8, 12($out) -+ subi $out,$out,16 -+ stw r9, -16($inp) -+ stw r10,-12($inp) -+ stw r11,-8($inp) -+ stw r12,-4($inp) -+ bdnz Ldeckey -+ -+ xor r3,r3,r3 # return value -+Ldec_key_abort: -+ addi $sp,$sp,$FRAME -+ blr -+ .long 0 -+ .byte 0,12,4,1,0x80,0,3,0 -+ .long 0 -+.size .${prefix}_set_decrypt_key,.-.${prefix}_set_decrypt_key -+___ -+}}} -+######################################################################### -+{{{ # Single block en- and decrypt procedures # -+sub gen_block () { -+my $dir = shift; -+my $n = $dir eq "de" ? "n" : ""; -+my ($inp,$out,$key,$rounds,$idx)=map("r$_",(3..7)); -+ -+$code.=<<___; -+.globl .${prefix}_${dir}crypt -+.align 5 -+.${prefix}_${dir}crypt: -+ lwz $rounds,240($key) -+ lis r0,0xfc00 -+ mfspr $vrsave,256 -+ li $idx,15 # 15 is not typo -+ mtspr 256,r0 -+ -+ lvx v0,0,$inp -+ neg r11,$out -+ lvx v1,$idx,$inp -+ lvsl v2,0,$inp # inpperm -+ le?vspltisb v4,0x0f -+ ?lvsl v3,0,r11 # outperm -+ le?vxor v2,v2,v4 -+ li $idx,16 -+ vperm v0,v0,v1,v2 # align [and byte swap in LE] -+ lvx v1,0,$key -+ ?lvsl v5,0,$key # keyperm -+ srwi $rounds,$rounds,1 -+ lvx v2,$idx,$key -+ addi $idx,$idx,16 -+ subi $rounds,$rounds,1 -+ ?vperm v1,v1,v2,v5 # align round key -+ -+ vxor v0,v0,v1 -+ lvx v1,$idx,$key -+ addi $idx,$idx,16 -+ mtctr $rounds -+ -+Loop_${dir}c: -+ ?vperm v2,v2,v1,v5 -+ v${n}cipher v0,v0,v2 -+ lvx v2,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm v1,v1,v2,v5 -+ v${n}cipher v0,v0,v1 -+ lvx v1,$idx,$key -+ addi $idx,$idx,16 -+ bdnz Loop_${dir}c -+ -+ ?vperm v2,v2,v1,v5 -+ v${n}cipher v0,v0,v2 -+ lvx v2,$idx,$key -+ ?vperm v1,v1,v2,v5 -+ v${n}cipherlast v0,v0,v1 -+ -+ vspltisb v2,-1 -+ vxor v1,v1,v1 -+ li $idx,15 # 15 is not typo -+ ?vperm v2,v1,v2,v3 # outmask -+ le?vxor v3,v3,v4 -+ lvx v1,0,$out # outhead -+ vperm v0,v0,v0,v3 # rotate [and byte swap in LE] -+ vsel v1,v1,v0,v2 -+ lvx v4,$idx,$out -+ stvx v1,0,$out -+ vsel v0,v0,v4,v2 -+ stvx v0,$idx,$out -+ -+ mtspr 256,$vrsave -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,3,0 -+ .long 0 -+.size .${prefix}_${dir}crypt,.-.${prefix}_${dir}crypt -+___ -+} -+&gen_block("en"); -+&gen_block("de"); -+}}} -+######################################################################### -+{{{ # CBC en- and decrypt procedures # -+my ($inp,$out,$len,$key,$ivp,$enc,$rounds,$idx)=map("r$_",(3..10)); -+my ($rndkey0,$rndkey1,$inout,$tmp)= map("v$_",(0..3)); -+my ($ivec,$inptail,$inpperm,$outhead,$outperm,$outmask,$keyperm)= -+ map("v$_",(4..10)); -+$code.=<<___; -+.globl .${prefix}_cbc_encrypt -+.align 5 -+.${prefix}_cbc_encrypt: -+ ${UCMP}i $len,16 -+ bltlr- -+ -+ cmpwi $enc,0 # test direction -+ lis r0,0xffe0 -+ mfspr $vrsave,256 -+ mtspr 256,r0 -+ -+ li $idx,15 -+ vxor $rndkey0,$rndkey0,$rndkey0 -+ le?vspltisb $tmp,0x0f -+ -+ lvx $ivec,0,$ivp # load [unaligned] iv -+ lvsl $inpperm,0,$ivp -+ lvx $inptail,$idx,$ivp -+ le?vxor $inpperm,$inpperm,$tmp -+ vperm $ivec,$ivec,$inptail,$inpperm -+ -+ neg r11,$inp -+ ?lvsl $keyperm,0,$key # prepare for unaligned key -+ lwz $rounds,240($key) -+ -+ lvsr $inpperm,0,r11 # prepare for unaligned load -+ lvx $inptail,0,$inp -+ addi $inp,$inp,15 # 15 is not typo -+ le?vxor $inpperm,$inpperm,$tmp -+ -+ ?lvsr $outperm,0,$out # prepare for unaligned store -+ vspltisb $outmask,-1 -+ lvx $outhead,0,$out -+ ?vperm $outmask,$rndkey0,$outmask,$outperm -+ le?vxor $outperm,$outperm,$tmp -+ -+ srwi $rounds,$rounds,1 -+ li $idx,16 -+ subi $rounds,$rounds,1 -+ beq Lcbc_dec -+ -+Lcbc_enc: -+ vmr $inout,$inptail -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ mtctr $rounds -+ subi $len,$len,16 # len-=16 -+ -+ lvx $rndkey0,0,$key -+ vperm $inout,$inout,$inptail,$inpperm -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ vxor $inout,$inout,$ivec -+ -+Loop_cbc_enc: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipher $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ bdnz Loop_cbc_enc -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key -+ li $idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipherlast $ivec,$inout,$rndkey0 -+ ${UCMP}i $len,16 -+ -+ vperm $tmp,$ivec,$ivec,$outperm -+ vsel $inout,$outhead,$tmp,$outmask -+ vmr $outhead,$tmp -+ stvx $inout,0,$out -+ addi $out,$out,16 -+ bge Lcbc_enc -+ -+ b Lcbc_done -+ -+.align 4 -+Lcbc_dec: -+ ${UCMP}i $len,128 -+ bge _aesp8_cbc_decrypt8x -+ vmr $tmp,$inptail -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ mtctr $rounds -+ subi $len,$len,16 # len-=16 -+ -+ lvx $rndkey0,0,$key -+ vperm $tmp,$tmp,$inptail,$inpperm -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$tmp,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ -+Loop_cbc_dec: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vncipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vncipher $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ bdnz Loop_cbc_dec -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vncipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key -+ li $idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vncipherlast $inout,$inout,$rndkey0 -+ ${UCMP}i $len,16 -+ -+ vxor $inout,$inout,$ivec -+ vmr $ivec,$tmp -+ vperm $tmp,$inout,$inout,$outperm -+ vsel $inout,$outhead,$tmp,$outmask -+ vmr $outhead,$tmp -+ stvx $inout,0,$out -+ addi $out,$out,16 -+ bge Lcbc_dec -+ -+Lcbc_done: -+ addi $out,$out,-1 -+ lvx $inout,0,$out # redundant in aligned case -+ vsel $inout,$outhead,$inout,$outmask -+ stvx $inout,0,$out -+ -+ neg $enc,$ivp # write [unaligned] iv -+ li $idx,15 # 15 is not typo -+ vxor $rndkey0,$rndkey0,$rndkey0 -+ vspltisb $outmask,-1 -+ le?vspltisb $tmp,0x0f -+ ?lvsl $outperm,0,$enc -+ ?vperm $outmask,$rndkey0,$outmask,$outperm -+ le?vxor $outperm,$outperm,$tmp -+ lvx $outhead,0,$ivp -+ vperm $ivec,$ivec,$ivec,$outperm -+ vsel $inout,$outhead,$ivec,$outmask -+ lvx $inptail,$idx,$ivp -+ stvx $inout,0,$ivp -+ vsel $inout,$ivec,$inptail,$outmask -+ stvx $inout,$idx,$ivp -+ -+ mtspr 256,$vrsave -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,6,0 -+ .long 0 -+___ -+######################################################################### -+{{ # Optimized CBC decrypt procedure # -+my $key_="r11"; -+my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,8,26..31)); -+ $x00=0 if ($flavour =~ /osx/); -+my ($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7 )=map("v$_",(0..3,10..13)); -+my ($out0,$out1,$out2,$out3,$out4,$out5,$out6,$out7)=map("v$_",(14..21)); -+my $rndkey0="v23"; # v24-v25 rotating buffer for first found keys -+ # v26-v31 last 6 round keys -+my ($tmp,$keyperm)=($in3,$in4); # aliases with "caller", redundant assignment -+ -+$code.=<<___; -+.align 5 -+_aesp8_cbc_decrypt8x: -+ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) -+ li r10,`$FRAME+8*16+15` -+ li r11,`$FRAME+8*16+31` -+ stvx v20,r10,$sp # ABI says so -+ addi r10,r10,32 -+ stvx v21,r11,$sp -+ addi r11,r11,32 -+ stvx v22,r10,$sp -+ addi r10,r10,32 -+ stvx v23,r11,$sp -+ addi r11,r11,32 -+ stvx v24,r10,$sp -+ addi r10,r10,32 -+ stvx v25,r11,$sp -+ addi r11,r11,32 -+ stvx v26,r10,$sp -+ addi r10,r10,32 -+ stvx v27,r11,$sp -+ addi r11,r11,32 -+ stvx v28,r10,$sp -+ addi r10,r10,32 -+ stvx v29,r11,$sp -+ addi r11,r11,32 -+ stvx v30,r10,$sp -+ stvx v31,r11,$sp -+ li r0,-1 -+ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave -+ li $x10,0x10 -+ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ li $x20,0x20 -+ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ li $x30,0x30 -+ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ li $x40,0x40 -+ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ li $x50,0x50 -+ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ li $x60,0x60 -+ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ li $x70,0x70 -+ mtspr 256,r0 -+ -+ subi $rounds,$rounds,3 # -4 in total -+ subi $len,$len,128 # bias -+ -+ lvx $rndkey0,$x00,$key # load key schedule -+ lvx v30,$x10,$key -+ addi $key,$key,0x20 -+ lvx v31,$x00,$key -+ ?vperm $rndkey0,$rndkey0,v30,$keyperm -+ addi $key_,$sp,`$FRAME+15` -+ mtctr $rounds -+ -+Load_cbc_dec_key: -+ ?vperm v24,v30,v31,$keyperm -+ lvx v30,$x10,$key -+ addi $key,$key,0x20 -+ stvx v24,$x00,$key_ # off-load round[1] -+ ?vperm v25,v31,v30,$keyperm -+ lvx v31,$x00,$key -+ stvx v25,$x10,$key_ # off-load round[2] -+ addi $key_,$key_,0x20 -+ bdnz Load_cbc_dec_key -+ -+ lvx v26,$x10,$key -+ ?vperm v24,v30,v31,$keyperm -+ lvx v27,$x20,$key -+ stvx v24,$x00,$key_ # off-load round[3] -+ ?vperm v25,v31,v26,$keyperm -+ lvx v28,$x30,$key -+ stvx v25,$x10,$key_ # off-load round[4] -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ ?vperm v26,v26,v27,$keyperm -+ lvx v29,$x40,$key -+ ?vperm v27,v27,v28,$keyperm -+ lvx v30,$x50,$key -+ ?vperm v28,v28,v29,$keyperm -+ lvx v31,$x60,$key -+ ?vperm v29,v29,v30,$keyperm -+ lvx $out0,$x70,$key # borrow $out0 -+ ?vperm v30,v30,v31,$keyperm -+ lvx v24,$x00,$key_ # pre-load round[1] -+ ?vperm v31,v31,$out0,$keyperm -+ lvx v25,$x10,$key_ # pre-load round[2] -+ -+ #lvx $inptail,0,$inp # "caller" already did this -+ #addi $inp,$inp,15 # 15 is not typo -+ subi $inp,$inp,15 # undo "caller" -+ -+ le?li $idx,8 -+ lvx_u $in0,$x00,$inp # load first 8 "words" -+ le?lvsl $inpperm,0,$idx -+ le?vspltisb $tmp,0x0f -+ lvx_u $in1,$x10,$inp -+ le?vxor $inpperm,$inpperm,$tmp # transform for lvx_u/stvx_u -+ lvx_u $in2,$x20,$inp -+ le?vperm $in0,$in0,$in0,$inpperm -+ lvx_u $in3,$x30,$inp -+ le?vperm $in1,$in1,$in1,$inpperm -+ lvx_u $in4,$x40,$inp -+ le?vperm $in2,$in2,$in2,$inpperm -+ vxor $out0,$in0,$rndkey0 -+ lvx_u $in5,$x50,$inp -+ le?vperm $in3,$in3,$in3,$inpperm -+ vxor $out1,$in1,$rndkey0 -+ lvx_u $in6,$x60,$inp -+ le?vperm $in4,$in4,$in4,$inpperm -+ vxor $out2,$in2,$rndkey0 -+ lvx_u $in7,$x70,$inp -+ addi $inp,$inp,0x80 -+ le?vperm $in5,$in5,$in5,$inpperm -+ vxor $out3,$in3,$rndkey0 -+ le?vperm $in6,$in6,$in6,$inpperm -+ vxor $out4,$in4,$rndkey0 -+ le?vperm $in7,$in7,$in7,$inpperm -+ vxor $out5,$in5,$rndkey0 -+ vxor $out6,$in6,$rndkey0 -+ vxor $out7,$in7,$rndkey0 -+ -+ mtctr $rounds -+ b Loop_cbc_dec8x -+.align 5 -+Loop_cbc_dec8x: -+ vncipher $out0,$out0,v24 -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ vncipher $out5,$out5,v24 -+ vncipher $out6,$out6,v24 -+ vncipher $out7,$out7,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vncipher $out0,$out0,v25 -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ vncipher $out5,$out5,v25 -+ vncipher $out6,$out6,v25 -+ vncipher $out7,$out7,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_cbc_dec8x -+ -+ subic $len,$len,128 # $len-=128 -+ vncipher $out0,$out0,v24 -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ vncipher $out5,$out5,v24 -+ vncipher $out6,$out6,v24 -+ vncipher $out7,$out7,v24 -+ -+ subfe. r0,r0,r0 # borrow?-1:0 -+ vncipher $out0,$out0,v25 -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ vncipher $out5,$out5,v25 -+ vncipher $out6,$out6,v25 -+ vncipher $out7,$out7,v25 -+ -+ and r0,r0,$len -+ vncipher $out0,$out0,v26 -+ vncipher $out1,$out1,v26 -+ vncipher $out2,$out2,v26 -+ vncipher $out3,$out3,v26 -+ vncipher $out4,$out4,v26 -+ vncipher $out5,$out5,v26 -+ vncipher $out6,$out6,v26 -+ vncipher $out7,$out7,v26 -+ -+ add $inp,$inp,r0 # $inp is adjusted in such -+ # way that at exit from the -+ # loop inX-in7 are loaded -+ # with last "words" -+ vncipher $out0,$out0,v27 -+ vncipher $out1,$out1,v27 -+ vncipher $out2,$out2,v27 -+ vncipher $out3,$out3,v27 -+ vncipher $out4,$out4,v27 -+ vncipher $out5,$out5,v27 -+ vncipher $out6,$out6,v27 -+ vncipher $out7,$out7,v27 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vncipher $out0,$out0,v28 -+ vncipher $out1,$out1,v28 -+ vncipher $out2,$out2,v28 -+ vncipher $out3,$out3,v28 -+ vncipher $out4,$out4,v28 -+ vncipher $out5,$out5,v28 -+ vncipher $out6,$out6,v28 -+ vncipher $out7,$out7,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ -+ vncipher $out0,$out0,v29 -+ vncipher $out1,$out1,v29 -+ vncipher $out2,$out2,v29 -+ vncipher $out3,$out3,v29 -+ vncipher $out4,$out4,v29 -+ vncipher $out5,$out5,v29 -+ vncipher $out6,$out6,v29 -+ vncipher $out7,$out7,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ -+ vncipher $out0,$out0,v30 -+ vxor $ivec,$ivec,v31 # xor with last round key -+ vncipher $out1,$out1,v30 -+ vxor $in0,$in0,v31 -+ vncipher $out2,$out2,v30 -+ vxor $in1,$in1,v31 -+ vncipher $out3,$out3,v30 -+ vxor $in2,$in2,v31 -+ vncipher $out4,$out4,v30 -+ vxor $in3,$in3,v31 -+ vncipher $out5,$out5,v30 -+ vxor $in4,$in4,v31 -+ vncipher $out6,$out6,v30 -+ vxor $in5,$in5,v31 -+ vncipher $out7,$out7,v30 -+ vxor $in6,$in6,v31 -+ -+ vncipherlast $out0,$out0,$ivec -+ vncipherlast $out1,$out1,$in0 -+ lvx_u $in0,$x00,$inp # load next input block -+ vncipherlast $out2,$out2,$in1 -+ lvx_u $in1,$x10,$inp -+ vncipherlast $out3,$out3,$in2 -+ le?vperm $in0,$in0,$in0,$inpperm -+ lvx_u $in2,$x20,$inp -+ vncipherlast $out4,$out4,$in3 -+ le?vperm $in1,$in1,$in1,$inpperm -+ lvx_u $in3,$x30,$inp -+ vncipherlast $out5,$out5,$in4 -+ le?vperm $in2,$in2,$in2,$inpperm -+ lvx_u $in4,$x40,$inp -+ vncipherlast $out6,$out6,$in5 -+ le?vperm $in3,$in3,$in3,$inpperm -+ lvx_u $in5,$x50,$inp -+ vncipherlast $out7,$out7,$in6 -+ le?vperm $in4,$in4,$in4,$inpperm -+ lvx_u $in6,$x60,$inp -+ vmr $ivec,$in7 -+ le?vperm $in5,$in5,$in5,$inpperm -+ lvx_u $in7,$x70,$inp -+ addi $inp,$inp,0x80 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $in6,$in6,$in6,$inpperm -+ vxor $out0,$in0,$rndkey0 -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ le?vperm $in7,$in7,$in7,$inpperm -+ vxor $out1,$in1,$rndkey0 -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x20,$out -+ vxor $out2,$in2,$rndkey0 -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x30,$out -+ vxor $out3,$in3,$rndkey0 -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x40,$out -+ vxor $out4,$in4,$rndkey0 -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x50,$out -+ vxor $out5,$in5,$rndkey0 -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x60,$out -+ vxor $out6,$in6,$rndkey0 -+ stvx_u $out7,$x70,$out -+ addi $out,$out,0x80 -+ vxor $out7,$in7,$rndkey0 -+ -+ mtctr $rounds -+ beq Loop_cbc_dec8x # did $len-=128 borrow? -+ -+ addic. $len,$len,128 -+ beq Lcbc_dec8x_done -+ nop -+ nop -+ -+Loop_cbc_dec8x_tail: # up to 7 "words" tail... -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ vncipher $out5,$out5,v24 -+ vncipher $out6,$out6,v24 -+ vncipher $out7,$out7,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ vncipher $out5,$out5,v25 -+ vncipher $out6,$out6,v25 -+ vncipher $out7,$out7,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_cbc_dec8x_tail -+ -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ vncipher $out5,$out5,v24 -+ vncipher $out6,$out6,v24 -+ vncipher $out7,$out7,v24 -+ -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ vncipher $out5,$out5,v25 -+ vncipher $out6,$out6,v25 -+ vncipher $out7,$out7,v25 -+ -+ vncipher $out1,$out1,v26 -+ vncipher $out2,$out2,v26 -+ vncipher $out3,$out3,v26 -+ vncipher $out4,$out4,v26 -+ vncipher $out5,$out5,v26 -+ vncipher $out6,$out6,v26 -+ vncipher $out7,$out7,v26 -+ -+ vncipher $out1,$out1,v27 -+ vncipher $out2,$out2,v27 -+ vncipher $out3,$out3,v27 -+ vncipher $out4,$out4,v27 -+ vncipher $out5,$out5,v27 -+ vncipher $out6,$out6,v27 -+ vncipher $out7,$out7,v27 -+ -+ vncipher $out1,$out1,v28 -+ vncipher $out2,$out2,v28 -+ vncipher $out3,$out3,v28 -+ vncipher $out4,$out4,v28 -+ vncipher $out5,$out5,v28 -+ vncipher $out6,$out6,v28 -+ vncipher $out7,$out7,v28 -+ -+ vncipher $out1,$out1,v29 -+ vncipher $out2,$out2,v29 -+ vncipher $out3,$out3,v29 -+ vncipher $out4,$out4,v29 -+ vncipher $out5,$out5,v29 -+ vncipher $out6,$out6,v29 -+ vncipher $out7,$out7,v29 -+ -+ vncipher $out1,$out1,v30 -+ vxor $ivec,$ivec,v31 # last round key -+ vncipher $out2,$out2,v30 -+ vxor $in1,$in1,v31 -+ vncipher $out3,$out3,v30 -+ vxor $in2,$in2,v31 -+ vncipher $out4,$out4,v30 -+ vxor $in3,$in3,v31 -+ vncipher $out5,$out5,v30 -+ vxor $in4,$in4,v31 -+ vncipher $out6,$out6,v30 -+ vxor $in5,$in5,v31 -+ vncipher $out7,$out7,v30 -+ vxor $in6,$in6,v31 -+ -+ cmplwi $len,32 # switch($len) -+ blt Lcbc_dec8x_one -+ nop -+ beq Lcbc_dec8x_two -+ cmplwi $len,64 -+ blt Lcbc_dec8x_three -+ nop -+ beq Lcbc_dec8x_four -+ cmplwi $len,96 -+ blt Lcbc_dec8x_five -+ nop -+ beq Lcbc_dec8x_six -+ -+Lcbc_dec8x_seven: -+ vncipherlast $out1,$out1,$ivec -+ vncipherlast $out2,$out2,$in1 -+ vncipherlast $out3,$out3,$in2 -+ vncipherlast $out4,$out4,$in3 -+ vncipherlast $out5,$out5,$in4 -+ vncipherlast $out6,$out6,$in5 -+ vncipherlast $out7,$out7,$in6 -+ vmr $ivec,$in7 -+ -+ le?vperm $out1,$out1,$out1,$inpperm -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x00,$out -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x10,$out -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x20,$out -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x30,$out -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x40,$out -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x50,$out -+ stvx_u $out7,$x60,$out -+ addi $out,$out,0x70 -+ b Lcbc_dec8x_done -+ -+.align 5 -+Lcbc_dec8x_six: -+ vncipherlast $out2,$out2,$ivec -+ vncipherlast $out3,$out3,$in2 -+ vncipherlast $out4,$out4,$in3 -+ vncipherlast $out5,$out5,$in4 -+ vncipherlast $out6,$out6,$in5 -+ vncipherlast $out7,$out7,$in6 -+ vmr $ivec,$in7 -+ -+ le?vperm $out2,$out2,$out2,$inpperm -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x00,$out -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x10,$out -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x20,$out -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x30,$out -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x40,$out -+ stvx_u $out7,$x50,$out -+ addi $out,$out,0x60 -+ b Lcbc_dec8x_done -+ -+.align 5 -+Lcbc_dec8x_five: -+ vncipherlast $out3,$out3,$ivec -+ vncipherlast $out4,$out4,$in3 -+ vncipherlast $out5,$out5,$in4 -+ vncipherlast $out6,$out6,$in5 -+ vncipherlast $out7,$out7,$in6 -+ vmr $ivec,$in7 -+ -+ le?vperm $out3,$out3,$out3,$inpperm -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x00,$out -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x10,$out -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x20,$out -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x30,$out -+ stvx_u $out7,$x40,$out -+ addi $out,$out,0x50 -+ b Lcbc_dec8x_done -+ -+.align 5 -+Lcbc_dec8x_four: -+ vncipherlast $out4,$out4,$ivec -+ vncipherlast $out5,$out5,$in4 -+ vncipherlast $out6,$out6,$in5 -+ vncipherlast $out7,$out7,$in6 -+ vmr $ivec,$in7 -+ -+ le?vperm $out4,$out4,$out4,$inpperm -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x00,$out -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x10,$out -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x20,$out -+ stvx_u $out7,$x30,$out -+ addi $out,$out,0x40 -+ b Lcbc_dec8x_done -+ -+.align 5 -+Lcbc_dec8x_three: -+ vncipherlast $out5,$out5,$ivec -+ vncipherlast $out6,$out6,$in5 -+ vncipherlast $out7,$out7,$in6 -+ vmr $ivec,$in7 -+ -+ le?vperm $out5,$out5,$out5,$inpperm -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x00,$out -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x10,$out -+ stvx_u $out7,$x20,$out -+ addi $out,$out,0x30 -+ b Lcbc_dec8x_done -+ -+.align 5 -+Lcbc_dec8x_two: -+ vncipherlast $out6,$out6,$ivec -+ vncipherlast $out7,$out7,$in6 -+ vmr $ivec,$in7 -+ -+ le?vperm $out6,$out6,$out6,$inpperm -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x00,$out -+ stvx_u $out7,$x10,$out -+ addi $out,$out,0x20 -+ b Lcbc_dec8x_done -+ -+.align 5 -+Lcbc_dec8x_one: -+ vncipherlast $out7,$out7,$ivec -+ vmr $ivec,$in7 -+ -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out7,0,$out -+ addi $out,$out,0x10 -+ -+Lcbc_dec8x_done: -+ le?vperm $ivec,$ivec,$ivec,$inpperm -+ stvx_u $ivec,0,$ivp # write [unaligned] iv -+ -+ li r10,`$FRAME+15` -+ li r11,`$FRAME+31` -+ stvx $inpperm,r10,$sp # wipe copies of round keys -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ stvx $inpperm,r10,$sp -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ stvx $inpperm,r10,$sp -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ stvx $inpperm,r10,$sp -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ -+ mtspr 256,$vrsave -+ lvx v20,r10,$sp # ABI says so -+ addi r10,r10,32 -+ lvx v21,r11,$sp -+ addi r11,r11,32 -+ lvx v22,r10,$sp -+ addi r10,r10,32 -+ lvx v23,r11,$sp -+ addi r11,r11,32 -+ lvx v24,r10,$sp -+ addi r10,r10,32 -+ lvx v25,r11,$sp -+ addi r11,r11,32 -+ lvx v26,r10,$sp -+ addi r10,r10,32 -+ lvx v27,r11,$sp -+ addi r11,r11,32 -+ lvx v28,r10,$sp -+ addi r10,r10,32 -+ lvx v29,r11,$sp -+ addi r11,r11,32 -+ lvx v30,r10,$sp -+ lvx v31,r11,$sp -+ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` -+ blr -+ .long 0 -+ .byte 0,12,0x04,0,0x80,6,6,0 -+ .long 0 -+.size .${prefix}_cbc_encrypt,.-.${prefix}_cbc_encrypt -+___ -+}} }}} -+ -+######################################################################### -+{{{ # CTR procedure[s] # -+my ($inp,$out,$len,$key,$ivp,$x10,$rounds,$idx)=map("r$_",(3..10)); -+my ($rndkey0,$rndkey1,$inout,$tmp)= map("v$_",(0..3)); -+my ($ivec,$inptail,$inpperm,$outhead,$outperm,$outmask,$keyperm,$one)= -+ map("v$_",(4..11)); -+my $dat=$tmp; -+ -+$code.=<<___; -+.globl .${prefix}_ctr32_encrypt_blocks -+.align 5 -+.${prefix}_ctr32_encrypt_blocks: -+ ${UCMP}i $len,1 -+ bltlr- -+ -+ lis r0,0xfff0 -+ mfspr $vrsave,256 -+ mtspr 256,r0 -+ -+ li $idx,15 -+ vxor $rndkey0,$rndkey0,$rndkey0 -+ le?vspltisb $tmp,0x0f -+ -+ lvx $ivec,0,$ivp # load [unaligned] iv -+ lvsl $inpperm,0,$ivp -+ lvx $inptail,$idx,$ivp -+ vspltisb $one,1 -+ le?vxor $inpperm,$inpperm,$tmp -+ vperm $ivec,$ivec,$inptail,$inpperm -+ vsldoi $one,$rndkey0,$one,1 -+ -+ neg r11,$inp -+ ?lvsl $keyperm,0,$key # prepare for unaligned key -+ lwz $rounds,240($key) -+ -+ lvsr $inpperm,0,r11 # prepare for unaligned load -+ lvx $inptail,0,$inp -+ addi $inp,$inp,15 # 15 is not typo -+ le?vxor $inpperm,$inpperm,$tmp -+ -+ srwi $rounds,$rounds,1 -+ li $idx,16 -+ subi $rounds,$rounds,1 -+ -+ ${UCMP}i $len,8 -+ bge _aesp8_ctr32_encrypt8x -+ -+ ?lvsr $outperm,0,$out # prepare for unaligned store -+ vspltisb $outmask,-1 -+ lvx $outhead,0,$out -+ ?vperm $outmask,$rndkey0,$outmask,$outperm -+ le?vxor $outperm,$outperm,$tmp -+ -+ lvx $rndkey0,0,$key -+ mtctr $rounds -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$ivec,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ b Loop_ctr32_enc -+ -+.align 5 -+Loop_ctr32_enc: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipher $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ bdnz Loop_ctr32_enc -+ -+ vadduwm $ivec,$ivec,$one -+ vmr $dat,$inptail -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ subic. $len,$len,1 # blocks-- -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key -+ vperm $dat,$dat,$inptail,$inpperm -+ li $idx,16 -+ ?vperm $rndkey1,$rndkey0,$rndkey1,$keyperm -+ lvx $rndkey0,0,$key -+ vxor $dat,$dat,$rndkey1 # last round key -+ vcipherlast $inout,$inout,$dat -+ -+ lvx $rndkey1,$idx,$key -+ addi $idx,$idx,16 -+ vperm $inout,$inout,$inout,$outperm -+ vsel $dat,$outhead,$inout,$outmask -+ mtctr $rounds -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vmr $outhead,$inout -+ vxor $inout,$ivec,$rndkey0 -+ lvx $rndkey0,$idx,$key -+ addi $idx,$idx,16 -+ stvx $dat,0,$out -+ addi $out,$out,16 -+ bne Loop_ctr32_enc -+ -+ addi $out,$out,-1 -+ lvx $inout,0,$out # redundant in aligned case -+ vsel $inout,$outhead,$inout,$outmask -+ stvx $inout,0,$out -+ -+ mtspr 256,$vrsave -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,6,0 -+ .long 0 -+___ -+######################################################################### -+{{ # Optimized CTR procedure # -+my $key_="r11"; -+my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,8,26..31)); -+ $x00=0 if ($flavour =~ /osx/); -+my ($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7 )=map("v$_",(0..3,10,12..14)); -+my ($out0,$out1,$out2,$out3,$out4,$out5,$out6,$out7)=map("v$_",(15..22)); -+my $rndkey0="v23"; # v24-v25 rotating buffer for first found keys -+ # v26-v31 last 6 round keys -+my ($tmp,$keyperm)=($in3,$in4); # aliases with "caller", redundant assignment -+my ($two,$three,$four)=($outhead,$outperm,$outmask); -+ -+$code.=<<___; -+.align 5 -+_aesp8_ctr32_encrypt8x: -+ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) -+ li r10,`$FRAME+8*16+15` -+ li r11,`$FRAME+8*16+31` -+ stvx v20,r10,$sp # ABI says so -+ addi r10,r10,32 -+ stvx v21,r11,$sp -+ addi r11,r11,32 -+ stvx v22,r10,$sp -+ addi r10,r10,32 -+ stvx v23,r11,$sp -+ addi r11,r11,32 -+ stvx v24,r10,$sp -+ addi r10,r10,32 -+ stvx v25,r11,$sp -+ addi r11,r11,32 -+ stvx v26,r10,$sp -+ addi r10,r10,32 -+ stvx v27,r11,$sp -+ addi r11,r11,32 -+ stvx v28,r10,$sp -+ addi r10,r10,32 -+ stvx v29,r11,$sp -+ addi r11,r11,32 -+ stvx v30,r10,$sp -+ stvx v31,r11,$sp -+ li r0,-1 -+ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave -+ li $x10,0x10 -+ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ li $x20,0x20 -+ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ li $x30,0x30 -+ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ li $x40,0x40 -+ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ li $x50,0x50 -+ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ li $x60,0x60 -+ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ li $x70,0x70 -+ mtspr 256,r0 -+ -+ subi $rounds,$rounds,3 # -4 in total -+ -+ lvx $rndkey0,$x00,$key # load key schedule -+ lvx v30,$x10,$key -+ addi $key,$key,0x20 -+ lvx v31,$x00,$key -+ ?vperm $rndkey0,$rndkey0,v30,$keyperm -+ addi $key_,$sp,`$FRAME+15` -+ mtctr $rounds -+ -+Load_ctr32_enc_key: -+ ?vperm v24,v30,v31,$keyperm -+ lvx v30,$x10,$key -+ addi $key,$key,0x20 -+ stvx v24,$x00,$key_ # off-load round[1] -+ ?vperm v25,v31,v30,$keyperm -+ lvx v31,$x00,$key -+ stvx v25,$x10,$key_ # off-load round[2] -+ addi $key_,$key_,0x20 -+ bdnz Load_ctr32_enc_key -+ -+ lvx v26,$x10,$key -+ ?vperm v24,v30,v31,$keyperm -+ lvx v27,$x20,$key -+ stvx v24,$x00,$key_ # off-load round[3] -+ ?vperm v25,v31,v26,$keyperm -+ lvx v28,$x30,$key -+ stvx v25,$x10,$key_ # off-load round[4] -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ ?vperm v26,v26,v27,$keyperm -+ lvx v29,$x40,$key -+ ?vperm v27,v27,v28,$keyperm -+ lvx v30,$x50,$key -+ ?vperm v28,v28,v29,$keyperm -+ lvx v31,$x60,$key -+ ?vperm v29,v29,v30,$keyperm -+ lvx $out0,$x70,$key # borrow $out0 -+ ?vperm v30,v30,v31,$keyperm -+ lvx v24,$x00,$key_ # pre-load round[1] -+ ?vperm v31,v31,$out0,$keyperm -+ lvx v25,$x10,$key_ # pre-load round[2] -+ -+ vadduwm $two,$one,$one -+ subi $inp,$inp,15 # undo "caller" -+ $SHL $len,$len,4 -+ -+ vadduwm $out1,$ivec,$one # counter values ... -+ vadduwm $out2,$ivec,$two -+ vxor $out0,$ivec,$rndkey0 # ... xored with rndkey[0] -+ le?li $idx,8 -+ vadduwm $out3,$out1,$two -+ vxor $out1,$out1,$rndkey0 -+ le?lvsl $inpperm,0,$idx -+ vadduwm $out4,$out2,$two -+ vxor $out2,$out2,$rndkey0 -+ le?vspltisb $tmp,0x0f -+ vadduwm $out5,$out3,$two -+ vxor $out3,$out3,$rndkey0 -+ le?vxor $inpperm,$inpperm,$tmp # transform for lvx_u/stvx_u -+ vadduwm $out6,$out4,$two -+ vxor $out4,$out4,$rndkey0 -+ vadduwm $out7,$out5,$two -+ vxor $out5,$out5,$rndkey0 -+ vadduwm $ivec,$out6,$two # next counter value -+ vxor $out6,$out6,$rndkey0 -+ vxor $out7,$out7,$rndkey0 -+ -+ mtctr $rounds -+ b Loop_ctr32_enc8x -+.align 5 -+Loop_ctr32_enc8x: -+ vcipher $out0,$out0,v24 -+ vcipher $out1,$out1,v24 -+ vcipher $out2,$out2,v24 -+ vcipher $out3,$out3,v24 -+ vcipher $out4,$out4,v24 -+ vcipher $out5,$out5,v24 -+ vcipher $out6,$out6,v24 -+ vcipher $out7,$out7,v24 -+Loop_ctr32_enc8x_middle: -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vcipher $out0,$out0,v25 -+ vcipher $out1,$out1,v25 -+ vcipher $out2,$out2,v25 -+ vcipher $out3,$out3,v25 -+ vcipher $out4,$out4,v25 -+ vcipher $out5,$out5,v25 -+ vcipher $out6,$out6,v25 -+ vcipher $out7,$out7,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_ctr32_enc8x -+ -+ subic r11,$len,256 # $len-256, borrow $key_ -+ vcipher $out0,$out0,v24 -+ vcipher $out1,$out1,v24 -+ vcipher $out2,$out2,v24 -+ vcipher $out3,$out3,v24 -+ vcipher $out4,$out4,v24 -+ vcipher $out5,$out5,v24 -+ vcipher $out6,$out6,v24 -+ vcipher $out7,$out7,v24 -+ -+ subfe r0,r0,r0 # borrow?-1:0 -+ vcipher $out0,$out0,v25 -+ vcipher $out1,$out1,v25 -+ vcipher $out2,$out2,v25 -+ vcipher $out3,$out3,v25 -+ vcipher $out4,$out4,v25 -+ vcipher $out5,$out5,v25 -+ vcipher $out6,$out6,v25 -+ vcipher $out7,$out7,v25 -+ -+ and r0,r0,r11 -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vcipher $out0,$out0,v26 -+ vcipher $out1,$out1,v26 -+ vcipher $out2,$out2,v26 -+ vcipher $out3,$out3,v26 -+ vcipher $out4,$out4,v26 -+ vcipher $out5,$out5,v26 -+ vcipher $out6,$out6,v26 -+ vcipher $out7,$out7,v26 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ -+ subic $len,$len,129 # $len-=129 -+ vcipher $out0,$out0,v27 -+ addi $len,$len,1 # $len-=128 really -+ vcipher $out1,$out1,v27 -+ vcipher $out2,$out2,v27 -+ vcipher $out3,$out3,v27 -+ vcipher $out4,$out4,v27 -+ vcipher $out5,$out5,v27 -+ vcipher $out6,$out6,v27 -+ vcipher $out7,$out7,v27 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ -+ vcipher $out0,$out0,v28 -+ lvx_u $in0,$x00,$inp # load input -+ vcipher $out1,$out1,v28 -+ lvx_u $in1,$x10,$inp -+ vcipher $out2,$out2,v28 -+ lvx_u $in2,$x20,$inp -+ vcipher $out3,$out3,v28 -+ lvx_u $in3,$x30,$inp -+ vcipher $out4,$out4,v28 -+ lvx_u $in4,$x40,$inp -+ vcipher $out5,$out5,v28 -+ lvx_u $in5,$x50,$inp -+ vcipher $out6,$out6,v28 -+ lvx_u $in6,$x60,$inp -+ vcipher $out7,$out7,v28 -+ lvx_u $in7,$x70,$inp -+ addi $inp,$inp,0x80 -+ -+ vcipher $out0,$out0,v29 -+ le?vperm $in0,$in0,$in0,$inpperm -+ vcipher $out1,$out1,v29 -+ le?vperm $in1,$in1,$in1,$inpperm -+ vcipher $out2,$out2,v29 -+ le?vperm $in2,$in2,$in2,$inpperm -+ vcipher $out3,$out3,v29 -+ le?vperm $in3,$in3,$in3,$inpperm -+ vcipher $out4,$out4,v29 -+ le?vperm $in4,$in4,$in4,$inpperm -+ vcipher $out5,$out5,v29 -+ le?vperm $in5,$in5,$in5,$inpperm -+ vcipher $out6,$out6,v29 -+ le?vperm $in6,$in6,$in6,$inpperm -+ vcipher $out7,$out7,v29 -+ le?vperm $in7,$in7,$in7,$inpperm -+ -+ add $inp,$inp,r0 # $inp is adjusted in such -+ # way that at exit from the -+ # loop inX-in7 are loaded -+ # with last "words" -+ subfe. r0,r0,r0 # borrow?-1:0 -+ vcipher $out0,$out0,v30 -+ vxor $in0,$in0,v31 # xor with last round key -+ vcipher $out1,$out1,v30 -+ vxor $in1,$in1,v31 -+ vcipher $out2,$out2,v30 -+ vxor $in2,$in2,v31 -+ vcipher $out3,$out3,v30 -+ vxor $in3,$in3,v31 -+ vcipher $out4,$out4,v30 -+ vxor $in4,$in4,v31 -+ vcipher $out5,$out5,v30 -+ vxor $in5,$in5,v31 -+ vcipher $out6,$out6,v30 -+ vxor $in6,$in6,v31 -+ vcipher $out7,$out7,v30 -+ vxor $in7,$in7,v31 -+ -+ bne Lctr32_enc8x_break # did $len-129 borrow? -+ -+ vcipherlast $in0,$out0,$in0 -+ vcipherlast $in1,$out1,$in1 -+ vadduwm $out1,$ivec,$one # counter values ... -+ vcipherlast $in2,$out2,$in2 -+ vadduwm $out2,$ivec,$two -+ vxor $out0,$ivec,$rndkey0 # ... xored with rndkey[0] -+ vcipherlast $in3,$out3,$in3 -+ vadduwm $out3,$out1,$two -+ vxor $out1,$out1,$rndkey0 -+ vcipherlast $in4,$out4,$in4 -+ vadduwm $out4,$out2,$two -+ vxor $out2,$out2,$rndkey0 -+ vcipherlast $in5,$out5,$in5 -+ vadduwm $out5,$out3,$two -+ vxor $out3,$out3,$rndkey0 -+ vcipherlast $in6,$out6,$in6 -+ vadduwm $out6,$out4,$two -+ vxor $out4,$out4,$rndkey0 -+ vcipherlast $in7,$out7,$in7 -+ vadduwm $out7,$out5,$two -+ vxor $out5,$out5,$rndkey0 -+ le?vperm $in0,$in0,$in0,$inpperm -+ vadduwm $ivec,$out6,$two # next counter value -+ vxor $out6,$out6,$rndkey0 -+ le?vperm $in1,$in1,$in1,$inpperm -+ vxor $out7,$out7,$rndkey0 -+ mtctr $rounds -+ -+ vcipher $out0,$out0,v24 -+ stvx_u $in0,$x00,$out -+ le?vperm $in2,$in2,$in2,$inpperm -+ vcipher $out1,$out1,v24 -+ stvx_u $in1,$x10,$out -+ le?vperm $in3,$in3,$in3,$inpperm -+ vcipher $out2,$out2,v24 -+ stvx_u $in2,$x20,$out -+ le?vperm $in4,$in4,$in4,$inpperm -+ vcipher $out3,$out3,v24 -+ stvx_u $in3,$x30,$out -+ le?vperm $in5,$in5,$in5,$inpperm -+ vcipher $out4,$out4,v24 -+ stvx_u $in4,$x40,$out -+ le?vperm $in6,$in6,$in6,$inpperm -+ vcipher $out5,$out5,v24 -+ stvx_u $in5,$x50,$out -+ le?vperm $in7,$in7,$in7,$inpperm -+ vcipher $out6,$out6,v24 -+ stvx_u $in6,$x60,$out -+ vcipher $out7,$out7,v24 -+ stvx_u $in7,$x70,$out -+ addi $out,$out,0x80 -+ -+ b Loop_ctr32_enc8x_middle -+ -+.align 5 -+Lctr32_enc8x_break: -+ cmpwi $len,-0x60 -+ blt Lctr32_enc8x_one -+ nop -+ beq Lctr32_enc8x_two -+ cmpwi $len,-0x40 -+ blt Lctr32_enc8x_three -+ nop -+ beq Lctr32_enc8x_four -+ cmpwi $len,-0x20 -+ blt Lctr32_enc8x_five -+ nop -+ beq Lctr32_enc8x_six -+ cmpwi $len,0x00 -+ blt Lctr32_enc8x_seven -+ -+Lctr32_enc8x_eight: -+ vcipherlast $out0,$out0,$in0 -+ vcipherlast $out1,$out1,$in1 -+ vcipherlast $out2,$out2,$in2 -+ vcipherlast $out3,$out3,$in3 -+ vcipherlast $out4,$out4,$in4 -+ vcipherlast $out5,$out5,$in5 -+ vcipherlast $out6,$out6,$in6 -+ vcipherlast $out7,$out7,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x20,$out -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x30,$out -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x40,$out -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x50,$out -+ le?vperm $out7,$out7,$out7,$inpperm -+ stvx_u $out6,$x60,$out -+ stvx_u $out7,$x70,$out -+ addi $out,$out,0x80 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_seven: -+ vcipherlast $out0,$out0,$in1 -+ vcipherlast $out1,$out1,$in2 -+ vcipherlast $out2,$out2,$in3 -+ vcipherlast $out3,$out3,$in4 -+ vcipherlast $out4,$out4,$in5 -+ vcipherlast $out5,$out5,$in6 -+ vcipherlast $out6,$out6,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x20,$out -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x30,$out -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x40,$out -+ le?vperm $out6,$out6,$out6,$inpperm -+ stvx_u $out5,$x50,$out -+ stvx_u $out6,$x60,$out -+ addi $out,$out,0x70 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_six: -+ vcipherlast $out0,$out0,$in2 -+ vcipherlast $out1,$out1,$in3 -+ vcipherlast $out2,$out2,$in4 -+ vcipherlast $out3,$out3,$in5 -+ vcipherlast $out4,$out4,$in6 -+ vcipherlast $out5,$out5,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x20,$out -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x30,$out -+ le?vperm $out5,$out5,$out5,$inpperm -+ stvx_u $out4,$x40,$out -+ stvx_u $out5,$x50,$out -+ addi $out,$out,0x60 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_five: -+ vcipherlast $out0,$out0,$in3 -+ vcipherlast $out1,$out1,$in4 -+ vcipherlast $out2,$out2,$in5 -+ vcipherlast $out3,$out3,$in6 -+ vcipherlast $out4,$out4,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x20,$out -+ le?vperm $out4,$out4,$out4,$inpperm -+ stvx_u $out3,$x30,$out -+ stvx_u $out4,$x40,$out -+ addi $out,$out,0x50 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_four: -+ vcipherlast $out0,$out0,$in4 -+ vcipherlast $out1,$out1,$in5 -+ vcipherlast $out2,$out2,$in6 -+ vcipherlast $out3,$out3,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$inpperm -+ stvx_u $out2,$x20,$out -+ stvx_u $out3,$x30,$out -+ addi $out,$out,0x40 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_three: -+ vcipherlast $out0,$out0,$in5 -+ vcipherlast $out1,$out1,$in6 -+ vcipherlast $out2,$out2,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ le?vperm $out2,$out2,$out2,$inpperm -+ stvx_u $out1,$x10,$out -+ stvx_u $out2,$x20,$out -+ addi $out,$out,0x30 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_two: -+ vcipherlast $out0,$out0,$in6 -+ vcipherlast $out1,$out1,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ le?vperm $out1,$out1,$out1,$inpperm -+ stvx_u $out0,$x00,$out -+ stvx_u $out1,$x10,$out -+ addi $out,$out,0x20 -+ b Lctr32_enc8x_done -+ -+.align 5 -+Lctr32_enc8x_one: -+ vcipherlast $out0,$out0,$in7 -+ -+ le?vperm $out0,$out0,$out0,$inpperm -+ stvx_u $out0,0,$out -+ addi $out,$out,0x10 -+ -+Lctr32_enc8x_done: -+ li r10,`$FRAME+15` -+ li r11,`$FRAME+31` -+ stvx $inpperm,r10,$sp # wipe copies of round keys -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ stvx $inpperm,r10,$sp -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ stvx $inpperm,r10,$sp -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ stvx $inpperm,r10,$sp -+ addi r10,r10,32 -+ stvx $inpperm,r11,$sp -+ addi r11,r11,32 -+ -+ mtspr 256,$vrsave -+ lvx v20,r10,$sp # ABI says so -+ addi r10,r10,32 -+ lvx v21,r11,$sp -+ addi r11,r11,32 -+ lvx v22,r10,$sp -+ addi r10,r10,32 -+ lvx v23,r11,$sp -+ addi r11,r11,32 -+ lvx v24,r10,$sp -+ addi r10,r10,32 -+ lvx v25,r11,$sp -+ addi r11,r11,32 -+ lvx v26,r10,$sp -+ addi r10,r10,32 -+ lvx v27,r11,$sp -+ addi r11,r11,32 -+ lvx v28,r10,$sp -+ addi r10,r10,32 -+ lvx v29,r11,$sp -+ addi r11,r11,32 -+ lvx v30,r10,$sp -+ lvx v31,r11,$sp -+ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` -+ blr -+ .long 0 -+ .byte 0,12,0x04,0,0x80,6,6,0 -+ .long 0 -+.size .${prefix}_ctr32_encrypt_blocks,.-.${prefix}_ctr32_encrypt_blocks -+___ -+}} }}} -+ -+######################################################################### -+{{{ # XTS procedures # -+# int aes_p8_xts_[en|de]crypt(const char *inp, char *out, size_t len, # -+# const AES_KEY *key1, const AES_KEY *key2, # -+# [const] unsigned char iv[16]); # -+# If $key2 is NULL, then a "tweak chaining" mode is engaged, in which # -+# input tweak value is assumed to be encrypted already, and last tweak # -+# value, one suitable for consecutive call on same chunk of data, is # -+# written back to original buffer. In addition, in "tweak chaining" # -+# mode only complete input blocks are processed. # -+ -+my ($inp,$out,$len,$key1,$key2,$ivp,$rounds,$idx) = map("r$_",(3..10)); -+my ($rndkey0,$rndkey1,$inout) = map("v$_",(0..2)); -+my ($output,$inptail,$inpperm,$leperm,$keyperm) = map("v$_",(3..7)); -+my ($tweak,$seven,$eighty7,$tmp,$tweak1) = map("v$_",(8..12)); -+my $taillen = $key2; -+ -+ ($inp,$idx) = ($idx,$inp); # reassign -+ -+$code.=<<___; -+.globl .${prefix}_xts_encrypt -+.align 5 -+.${prefix}_xts_encrypt: -+ mr $inp,r3 # reassign -+ li r3,-1 -+ ${UCMP}i $len,16 -+ bltlr- -+ -+ lis r0,0xfff0 -+ mfspr r12,256 # save vrsave -+ li r11,0 -+ mtspr 256,r0 -+ -+ vspltisb $seven,0x07 # 0x070707..07 -+ le?lvsl $leperm,r11,r11 -+ le?vspltisb $tmp,0x0f -+ le?vxor $leperm,$leperm,$seven -+ -+ li $idx,15 -+ lvx $tweak,0,$ivp # load [unaligned] iv -+ lvsl $inpperm,0,$ivp -+ lvx $inptail,$idx,$ivp -+ le?vxor $inpperm,$inpperm,$tmp -+ vperm $tweak,$tweak,$inptail,$inpperm -+ -+ neg r11,$inp -+ lvsr $inpperm,0,r11 # prepare for unaligned load -+ lvx $inout,0,$inp -+ addi $inp,$inp,15 # 15 is not typo -+ le?vxor $inpperm,$inpperm,$tmp -+ -+ ${UCMP}i $key2,0 # key2==NULL? -+ beq Lxts_enc_no_key2 -+ -+ ?lvsl $keyperm,0,$key2 # prepare for unaligned key -+ lwz $rounds,240($key2) -+ srwi $rounds,$rounds,1 -+ subi $rounds,$rounds,1 -+ li $idx,16 -+ -+ lvx $rndkey0,0,$key2 -+ lvx $rndkey1,$idx,$key2 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $tweak,$tweak,$rndkey0 -+ lvx $rndkey0,$idx,$key2 -+ addi $idx,$idx,16 -+ mtctr $rounds -+ -+Ltweak_xts_enc: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $tweak,$tweak,$rndkey1 -+ lvx $rndkey1,$idx,$key2 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipher $tweak,$tweak,$rndkey0 -+ lvx $rndkey0,$idx,$key2 -+ addi $idx,$idx,16 -+ bdnz Ltweak_xts_enc -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $tweak,$tweak,$rndkey1 -+ lvx $rndkey1,$idx,$key2 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipherlast $tweak,$tweak,$rndkey0 -+ -+ li $ivp,0 # don't chain the tweak -+ b Lxts_enc -+ -+Lxts_enc_no_key2: -+ li $idx,-16 -+ and $len,$len,$idx # in "tweak chaining" -+ # mode only complete -+ # blocks are processed -+Lxts_enc: -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ -+ ?lvsl $keyperm,0,$key1 # prepare for unaligned key -+ lwz $rounds,240($key1) -+ srwi $rounds,$rounds,1 -+ subi $rounds,$rounds,1 -+ li $idx,16 -+ -+ vslb $eighty7,$seven,$seven # 0x808080..80 -+ vor $eighty7,$eighty7,$seven # 0x878787..87 -+ vspltisb $tmp,1 # 0x010101..01 -+ vsldoi $eighty7,$eighty7,$tmp,15 # 0x870101..01 -+ -+ ${UCMP}i $len,96 -+ bge _aesp8_xts_encrypt6x -+ -+ andi. $taillen,$len,15 -+ subic r0,$len,32 -+ subi $taillen,$taillen,16 -+ subfe r0,r0,r0 -+ and r0,r0,$taillen -+ add $inp,$inp,r0 -+ -+ lvx $rndkey0,0,$key1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ vperm $inout,$inout,$inptail,$inpperm -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$inout,$tweak -+ vxor $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ mtctr $rounds -+ b Loop_xts_enc -+ -+.align 5 -+Loop_xts_enc: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipher $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ bdnz Loop_xts_enc -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key1 -+ li $idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $rndkey0,$rndkey0,$tweak -+ vcipherlast $output,$inout,$rndkey0 -+ -+ le?vperm $tmp,$output,$output,$leperm -+ be?nop -+ le?stvx_u $tmp,0,$out -+ be?stvx_u $output,0,$out -+ addi $out,$out,16 -+ -+ subic. $len,$len,16 -+ beq Lxts_enc_done -+ -+ vmr $inout,$inptail -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ lvx $rndkey0,0,$key1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ -+ subic r0,$len,32 -+ subfe r0,r0,r0 -+ and r0,r0,$taillen -+ add $inp,$inp,r0 -+ -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $tweak,$tweak,$tmp -+ -+ vperm $inout,$inout,$inptail,$inpperm -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$inout,$tweak -+ vxor $output,$output,$rndkey0 # just in case $len<16 -+ vxor $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ -+ mtctr $rounds -+ ${UCMP}i $len,16 -+ bge Loop_xts_enc -+ -+ vxor $output,$output,$tweak -+ lvsr $inpperm,0,$len # $inpperm is no longer needed -+ vxor $inptail,$inptail,$inptail # $inptail is no longer needed -+ vspltisb $tmp,-1 -+ vperm $inptail,$inptail,$tmp,$inpperm -+ vsel $inout,$inout,$output,$inptail -+ -+ subi r11,$out,17 -+ subi $out,$out,16 -+ mtctr $len -+ li $len,16 -+Loop_xts_enc_steal: -+ lbzu r0,1(r11) -+ stb r0,16(r11) -+ bdnz Loop_xts_enc_steal -+ -+ mtctr $rounds -+ b Loop_xts_enc # one more time... -+ -+Lxts_enc_done: -+ ${UCMP}i $ivp,0 -+ beq Lxts_enc_ret -+ -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $tweak,$tweak,$tmp -+ -+ le?vperm $tweak,$tweak,$tweak,$leperm -+ stvx_u $tweak,0,$ivp -+ -+Lxts_enc_ret: -+ mtspr 256,r12 # restore vrsave -+ li r3,0 -+ blr -+ .long 0 -+ .byte 0,12,0x04,0,0x80,6,6,0 -+ .long 0 -+.size .${prefix}_xts_encrypt,.-.${prefix}_xts_encrypt -+ -+.globl .${prefix}_xts_decrypt -+.align 5 -+.${prefix}_xts_decrypt: -+ mr $inp,r3 # reassign -+ li r3,-1 -+ ${UCMP}i $len,16 -+ bltlr- -+ -+ lis r0,0xfff8 -+ mfspr r12,256 # save vrsave -+ li r11,0 -+ mtspr 256,r0 -+ -+ andi. r0,$len,15 -+ neg r0,r0 -+ andi. r0,r0,16 -+ sub $len,$len,r0 -+ -+ vspltisb $seven,0x07 # 0x070707..07 -+ le?lvsl $leperm,r11,r11 -+ le?vspltisb $tmp,0x0f -+ le?vxor $leperm,$leperm,$seven -+ -+ li $idx,15 -+ lvx $tweak,0,$ivp # load [unaligned] iv -+ lvsl $inpperm,0,$ivp -+ lvx $inptail,$idx,$ivp -+ le?vxor $inpperm,$inpperm,$tmp -+ vperm $tweak,$tweak,$inptail,$inpperm -+ -+ neg r11,$inp -+ lvsr $inpperm,0,r11 # prepare for unaligned load -+ lvx $inout,0,$inp -+ addi $inp,$inp,15 # 15 is not typo -+ le?vxor $inpperm,$inpperm,$tmp -+ -+ ${UCMP}i $key2,0 # key2==NULL? -+ beq Lxts_dec_no_key2 -+ -+ ?lvsl $keyperm,0,$key2 # prepare for unaligned key -+ lwz $rounds,240($key2) -+ srwi $rounds,$rounds,1 -+ subi $rounds,$rounds,1 -+ li $idx,16 -+ -+ lvx $rndkey0,0,$key2 -+ lvx $rndkey1,$idx,$key2 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $tweak,$tweak,$rndkey0 -+ lvx $rndkey0,$idx,$key2 -+ addi $idx,$idx,16 -+ mtctr $rounds -+ -+Ltweak_xts_dec: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $tweak,$tweak,$rndkey1 -+ lvx $rndkey1,$idx,$key2 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipher $tweak,$tweak,$rndkey0 -+ lvx $rndkey0,$idx,$key2 -+ addi $idx,$idx,16 -+ bdnz Ltweak_xts_dec -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vcipher $tweak,$tweak,$rndkey1 -+ lvx $rndkey1,$idx,$key2 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vcipherlast $tweak,$tweak,$rndkey0 -+ -+ li $ivp,0 # don't chain the tweak -+ b Lxts_dec -+ -+Lxts_dec_no_key2: -+ neg $idx,$len -+ andi. $idx,$idx,15 -+ add $len,$len,$idx # in "tweak chaining" -+ # mode only complete -+ # blocks are processed -+Lxts_dec: -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ -+ ?lvsl $keyperm,0,$key1 # prepare for unaligned key -+ lwz $rounds,240($key1) -+ srwi $rounds,$rounds,1 -+ subi $rounds,$rounds,1 -+ li $idx,16 -+ -+ vslb $eighty7,$seven,$seven # 0x808080..80 -+ vor $eighty7,$eighty7,$seven # 0x878787..87 -+ vspltisb $tmp,1 # 0x010101..01 -+ vsldoi $eighty7,$eighty7,$tmp,15 # 0x870101..01 -+ -+ ${UCMP}i $len,96 -+ bge _aesp8_xts_decrypt6x -+ -+ lvx $rndkey0,0,$key1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ vperm $inout,$inout,$inptail,$inpperm -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$inout,$tweak -+ vxor $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ mtctr $rounds -+ -+ ${UCMP}i $len,16 -+ blt Ltail_xts_dec -+ be?b Loop_xts_dec -+ -+.align 5 -+Loop_xts_dec: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vncipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vncipher $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ bdnz Loop_xts_dec -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vncipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key1 -+ li $idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $rndkey0,$rndkey0,$tweak -+ vncipherlast $output,$inout,$rndkey0 -+ -+ le?vperm $tmp,$output,$output,$leperm -+ be?nop -+ le?stvx_u $tmp,0,$out -+ be?stvx_u $output,0,$out -+ addi $out,$out,16 -+ -+ subic. $len,$len,16 -+ beq Lxts_dec_done -+ -+ vmr $inout,$inptail -+ lvx $inptail,0,$inp -+ addi $inp,$inp,16 -+ lvx $rndkey0,0,$key1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $tweak,$tweak,$tmp -+ -+ vperm $inout,$inout,$inptail,$inpperm -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $inout,$inout,$tweak -+ vxor $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ -+ mtctr $rounds -+ ${UCMP}i $len,16 -+ bge Loop_xts_dec -+ -+Ltail_xts_dec: -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak1,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $tweak1,$tweak1,$tmp -+ -+ subi $inp,$inp,16 -+ add $inp,$inp,$len -+ -+ vxor $inout,$inout,$tweak # :-( -+ vxor $inout,$inout,$tweak1 # :-) -+ -+Loop_xts_dec_short: -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vncipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vncipher $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ bdnz Loop_xts_dec_short -+ -+ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm -+ vncipher $inout,$inout,$rndkey1 -+ lvx $rndkey1,$idx,$key1 -+ li $idx,16 -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ vxor $rndkey0,$rndkey0,$tweak1 -+ vncipherlast $output,$inout,$rndkey0 -+ -+ le?vperm $tmp,$output,$output,$leperm -+ be?nop -+ le?stvx_u $tmp,0,$out -+ be?stvx_u $output,0,$out -+ -+ vmr $inout,$inptail -+ lvx $inptail,0,$inp -+ #addi $inp,$inp,16 -+ lvx $rndkey0,0,$key1 -+ lvx $rndkey1,$idx,$key1 -+ addi $idx,$idx,16 -+ vperm $inout,$inout,$inptail,$inpperm -+ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm -+ -+ lvsr $inpperm,0,$len # $inpperm is no longer needed -+ vxor $inptail,$inptail,$inptail # $inptail is no longer needed -+ vspltisb $tmp,-1 -+ vperm $inptail,$inptail,$tmp,$inpperm -+ vsel $inout,$inout,$output,$inptail -+ -+ vxor $rndkey0,$rndkey0,$tweak -+ vxor $inout,$inout,$rndkey0 -+ lvx $rndkey0,$idx,$key1 -+ addi $idx,$idx,16 -+ -+ subi r11,$out,1 -+ mtctr $len -+ li $len,16 -+Loop_xts_dec_steal: -+ lbzu r0,1(r11) -+ stb r0,16(r11) -+ bdnz Loop_xts_dec_steal -+ -+ mtctr $rounds -+ b Loop_xts_dec # one more time... -+ -+Lxts_dec_done: -+ ${UCMP}i $ivp,0 -+ beq Lxts_dec_ret -+ -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $tweak,$tweak,$tmp -+ -+ le?vperm $tweak,$tweak,$tweak,$leperm -+ stvx_u $tweak,0,$ivp -+ -+Lxts_dec_ret: -+ mtspr 256,r12 # restore vrsave -+ li r3,0 -+ blr -+ .long 0 -+ .byte 0,12,0x04,0,0x80,6,6,0 -+ .long 0 -+.size .${prefix}_xts_decrypt,.-.${prefix}_xts_decrypt -+___ -+######################################################################### -+{{ # Optimized XTS procedures # -+my $key_=$key2; -+my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,3,26..31)); -+ $x00=0 if ($flavour =~ /osx/); -+my ($in0, $in1, $in2, $in3, $in4, $in5 )=map("v$_",(0..5)); -+my ($out0, $out1, $out2, $out3, $out4, $out5)=map("v$_",(7,12..16)); -+my ($twk0, $twk1, $twk2, $twk3, $twk4, $twk5)=map("v$_",(17..22)); -+my $rndkey0="v23"; # v24-v25 rotating buffer for first found keys -+ # v26-v31 last 6 round keys -+my ($keyperm)=($out0); # aliases with "caller", redundant assignment -+my $taillen=$x70; -+ -+$code.=<<___; -+.align 5 -+_aesp8_xts_encrypt6x: -+ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) -+ mflr r11 -+ li r7,`$FRAME+8*16+15` -+ li r3,`$FRAME+8*16+31` -+ $PUSH r11,`$FRAME+21*16+6*$SIZE_T+$LRSAVE`($sp) -+ stvx v20,r7,$sp # ABI says so -+ addi r7,r7,32 -+ stvx v21,r3,$sp -+ addi r3,r3,32 -+ stvx v22,r7,$sp -+ addi r7,r7,32 -+ stvx v23,r3,$sp -+ addi r3,r3,32 -+ stvx v24,r7,$sp -+ addi r7,r7,32 -+ stvx v25,r3,$sp -+ addi r3,r3,32 -+ stvx v26,r7,$sp -+ addi r7,r7,32 -+ stvx v27,r3,$sp -+ addi r3,r3,32 -+ stvx v28,r7,$sp -+ addi r7,r7,32 -+ stvx v29,r3,$sp -+ addi r3,r3,32 -+ stvx v30,r7,$sp -+ stvx v31,r3,$sp -+ li r0,-1 -+ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave -+ li $x10,0x10 -+ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ li $x20,0x20 -+ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ li $x30,0x30 -+ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ li $x40,0x40 -+ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ li $x50,0x50 -+ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ li $x60,0x60 -+ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ li $x70,0x70 -+ mtspr 256,r0 -+ -+ subi $rounds,$rounds,3 # -4 in total -+ -+ lvx $rndkey0,$x00,$key1 # load key schedule -+ lvx v30,$x10,$key1 -+ addi $key1,$key1,0x20 -+ lvx v31,$x00,$key1 -+ ?vperm $rndkey0,$rndkey0,v30,$keyperm -+ addi $key_,$sp,`$FRAME+15` -+ mtctr $rounds -+ -+Load_xts_enc_key: -+ ?vperm v24,v30,v31,$keyperm -+ lvx v30,$x10,$key1 -+ addi $key1,$key1,0x20 -+ stvx v24,$x00,$key_ # off-load round[1] -+ ?vperm v25,v31,v30,$keyperm -+ lvx v31,$x00,$key1 -+ stvx v25,$x10,$key_ # off-load round[2] -+ addi $key_,$key_,0x20 -+ bdnz Load_xts_enc_key -+ -+ lvx v26,$x10,$key1 -+ ?vperm v24,v30,v31,$keyperm -+ lvx v27,$x20,$key1 -+ stvx v24,$x00,$key_ # off-load round[3] -+ ?vperm v25,v31,v26,$keyperm -+ lvx v28,$x30,$key1 -+ stvx v25,$x10,$key_ # off-load round[4] -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ ?vperm v26,v26,v27,$keyperm -+ lvx v29,$x40,$key1 -+ ?vperm v27,v27,v28,$keyperm -+ lvx v30,$x50,$key1 -+ ?vperm v28,v28,v29,$keyperm -+ lvx v31,$x60,$key1 -+ ?vperm v29,v29,v30,$keyperm -+ lvx $twk5,$x70,$key1 # borrow $twk5 -+ ?vperm v30,v30,v31,$keyperm -+ lvx v24,$x00,$key_ # pre-load round[1] -+ ?vperm v31,v31,$twk5,$keyperm -+ lvx v25,$x10,$key_ # pre-load round[2] -+ -+ vperm $in0,$inout,$inptail,$inpperm -+ subi $inp,$inp,31 # undo "caller" -+ vxor $twk0,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $out0,$in0,$twk0 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in1,$x10,$inp -+ vxor $twk1,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in1,$in1,$in1,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out1,$in1,$twk1 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in2,$x20,$inp -+ andi. $taillen,$len,15 -+ vxor $twk2,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in2,$in2,$in2,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out2,$in2,$twk2 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in3,$x30,$inp -+ sub $len,$len,$taillen -+ vxor $twk3,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in3,$in3,$in3,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out3,$in3,$twk3 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in4,$x40,$inp -+ subi $len,$len,0x60 -+ vxor $twk4,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in4,$in4,$in4,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out4,$in4,$twk4 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in5,$x50,$inp -+ addi $inp,$inp,0x60 -+ vxor $twk5,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in5,$in5,$in5,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out5,$in5,$twk5 -+ vxor $tweak,$tweak,$tmp -+ -+ vxor v31,v31,$rndkey0 -+ mtctr $rounds -+ b Loop_xts_enc6x -+ -+.align 5 -+Loop_xts_enc6x: -+ vcipher $out0,$out0,v24 -+ vcipher $out1,$out1,v24 -+ vcipher $out2,$out2,v24 -+ vcipher $out3,$out3,v24 -+ vcipher $out4,$out4,v24 -+ vcipher $out5,$out5,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vcipher $out0,$out0,v25 -+ vcipher $out1,$out1,v25 -+ vcipher $out2,$out2,v25 -+ vcipher $out3,$out3,v25 -+ vcipher $out4,$out4,v25 -+ vcipher $out5,$out5,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_xts_enc6x -+ -+ subic $len,$len,96 # $len-=96 -+ vxor $in0,$twk0,v31 # xor with last round key -+ vcipher $out0,$out0,v24 -+ vcipher $out1,$out1,v24 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk0,$tweak,$rndkey0 -+ vaddubm $tweak,$tweak,$tweak -+ vcipher $out2,$out2,v24 -+ vcipher $out3,$out3,v24 -+ vsldoi $tmp,$tmp,$tmp,15 -+ vcipher $out4,$out4,v24 -+ vcipher $out5,$out5,v24 -+ -+ subfe. r0,r0,r0 # borrow?-1:0 -+ vand $tmp,$tmp,$eighty7 -+ vcipher $out0,$out0,v25 -+ vcipher $out1,$out1,v25 -+ vxor $tweak,$tweak,$tmp -+ vcipher $out2,$out2,v25 -+ vcipher $out3,$out3,v25 -+ vxor $in1,$twk1,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk1,$tweak,$rndkey0 -+ vcipher $out4,$out4,v25 -+ vcipher $out5,$out5,v25 -+ -+ and r0,r0,$len -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vcipher $out0,$out0,v26 -+ vcipher $out1,$out1,v26 -+ vand $tmp,$tmp,$eighty7 -+ vcipher $out2,$out2,v26 -+ vcipher $out3,$out3,v26 -+ vxor $tweak,$tweak,$tmp -+ vcipher $out4,$out4,v26 -+ vcipher $out5,$out5,v26 -+ -+ add $inp,$inp,r0 # $inp is adjusted in such -+ # way that at exit from the -+ # loop inX-in5 are loaded -+ # with last "words" -+ vxor $in2,$twk2,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk2,$tweak,$rndkey0 -+ vaddubm $tweak,$tweak,$tweak -+ vcipher $out0,$out0,v27 -+ vcipher $out1,$out1,v27 -+ vsldoi $tmp,$tmp,$tmp,15 -+ vcipher $out2,$out2,v27 -+ vcipher $out3,$out3,v27 -+ vand $tmp,$tmp,$eighty7 -+ vcipher $out4,$out4,v27 -+ vcipher $out5,$out5,v27 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vxor $tweak,$tweak,$tmp -+ vcipher $out0,$out0,v28 -+ vcipher $out1,$out1,v28 -+ vxor $in3,$twk3,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk3,$tweak,$rndkey0 -+ vcipher $out2,$out2,v28 -+ vcipher $out3,$out3,v28 -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vcipher $out4,$out4,v28 -+ vcipher $out5,$out5,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ vand $tmp,$tmp,$eighty7 -+ -+ vcipher $out0,$out0,v29 -+ vcipher $out1,$out1,v29 -+ vxor $tweak,$tweak,$tmp -+ vcipher $out2,$out2,v29 -+ vcipher $out3,$out3,v29 -+ vxor $in4,$twk4,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk4,$tweak,$rndkey0 -+ vcipher $out4,$out4,v29 -+ vcipher $out5,$out5,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ -+ vcipher $out0,$out0,v30 -+ vcipher $out1,$out1,v30 -+ vand $tmp,$tmp,$eighty7 -+ vcipher $out2,$out2,v30 -+ vcipher $out3,$out3,v30 -+ vxor $tweak,$tweak,$tmp -+ vcipher $out4,$out4,v30 -+ vcipher $out5,$out5,v30 -+ vxor $in5,$twk5,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk5,$tweak,$rndkey0 -+ -+ vcipherlast $out0,$out0,$in0 -+ lvx_u $in0,$x00,$inp # load next input block -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vcipherlast $out1,$out1,$in1 -+ lvx_u $in1,$x10,$inp -+ vcipherlast $out2,$out2,$in2 -+ le?vperm $in0,$in0,$in0,$leperm -+ lvx_u $in2,$x20,$inp -+ vand $tmp,$tmp,$eighty7 -+ vcipherlast $out3,$out3,$in3 -+ le?vperm $in1,$in1,$in1,$leperm -+ lvx_u $in3,$x30,$inp -+ vcipherlast $out4,$out4,$in4 -+ le?vperm $in2,$in2,$in2,$leperm -+ lvx_u $in4,$x40,$inp -+ vxor $tweak,$tweak,$tmp -+ vcipherlast $tmp,$out5,$in5 # last block might be needed -+ # in stealing mode -+ le?vperm $in3,$in3,$in3,$leperm -+ lvx_u $in5,$x50,$inp -+ addi $inp,$inp,0x60 -+ le?vperm $in4,$in4,$in4,$leperm -+ le?vperm $in5,$in5,$in5,$leperm -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $out0,$in0,$twk0 -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ vxor $out1,$in1,$twk1 -+ le?vperm $out3,$out3,$out3,$leperm -+ stvx_u $out2,$x20,$out -+ vxor $out2,$in2,$twk2 -+ le?vperm $out4,$out4,$out4,$leperm -+ stvx_u $out3,$x30,$out -+ vxor $out3,$in3,$twk3 -+ le?vperm $out5,$tmp,$tmp,$leperm -+ stvx_u $out4,$x40,$out -+ vxor $out4,$in4,$twk4 -+ le?stvx_u $out5,$x50,$out -+ be?stvx_u $tmp, $x50,$out -+ vxor $out5,$in5,$twk5 -+ addi $out,$out,0x60 -+ -+ mtctr $rounds -+ beq Loop_xts_enc6x # did $len-=96 borrow? -+ -+ addic. $len,$len,0x60 -+ beq Lxts_enc6x_zero -+ cmpwi $len,0x20 -+ blt Lxts_enc6x_one -+ nop -+ beq Lxts_enc6x_two -+ cmpwi $len,0x40 -+ blt Lxts_enc6x_three -+ nop -+ beq Lxts_enc6x_four -+ -+Lxts_enc6x_five: -+ vxor $out0,$in1,$twk0 -+ vxor $out1,$in2,$twk1 -+ vxor $out2,$in3,$twk2 -+ vxor $out3,$in4,$twk3 -+ vxor $out4,$in5,$twk4 -+ -+ bl _aesp8_xts_enc5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk5 # unused tweak -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$leperm -+ stvx_u $out2,$x20,$out -+ vxor $tmp,$out4,$twk5 # last block prep for stealing -+ le?vperm $out4,$out4,$out4,$leperm -+ stvx_u $out3,$x30,$out -+ stvx_u $out4,$x40,$out -+ addi $out,$out,0x50 -+ bne Lxts_enc6x_steal -+ b Lxts_enc6x_done -+ -+.align 4 -+Lxts_enc6x_four: -+ vxor $out0,$in2,$twk0 -+ vxor $out1,$in3,$twk1 -+ vxor $out2,$in4,$twk2 -+ vxor $out3,$in5,$twk3 -+ vxor $out4,$out4,$out4 -+ -+ bl _aesp8_xts_enc5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk4 # unused tweak -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ vxor $tmp,$out3,$twk4 # last block prep for stealing -+ le?vperm $out3,$out3,$out3,$leperm -+ stvx_u $out2,$x20,$out -+ stvx_u $out3,$x30,$out -+ addi $out,$out,0x40 -+ bne Lxts_enc6x_steal -+ b Lxts_enc6x_done -+ -+.align 4 -+Lxts_enc6x_three: -+ vxor $out0,$in3,$twk0 -+ vxor $out1,$in4,$twk1 -+ vxor $out2,$in5,$twk2 -+ vxor $out3,$out3,$out3 -+ vxor $out4,$out4,$out4 -+ -+ bl _aesp8_xts_enc5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk3 # unused tweak -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $tmp,$out2,$twk3 # last block prep for stealing -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ stvx_u $out2,$x20,$out -+ addi $out,$out,0x30 -+ bne Lxts_enc6x_steal -+ b Lxts_enc6x_done -+ -+.align 4 -+Lxts_enc6x_two: -+ vxor $out0,$in4,$twk0 -+ vxor $out1,$in5,$twk1 -+ vxor $out2,$out2,$out2 -+ vxor $out3,$out3,$out3 -+ vxor $out4,$out4,$out4 -+ -+ bl _aesp8_xts_enc5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk2 # unused tweak -+ vxor $tmp,$out1,$twk2 # last block prep for stealing -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ stvx_u $out1,$x10,$out -+ addi $out,$out,0x20 -+ bne Lxts_enc6x_steal -+ b Lxts_enc6x_done -+ -+.align 4 -+Lxts_enc6x_one: -+ vxor $out0,$in5,$twk0 -+ nop -+Loop_xts_enc1x: -+ vcipher $out0,$out0,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vcipher $out0,$out0,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_xts_enc1x -+ -+ add $inp,$inp,$taillen -+ cmpwi $taillen,0 -+ vcipher $out0,$out0,v24 -+ -+ subi $inp,$inp,16 -+ vcipher $out0,$out0,v25 -+ -+ lvsr $inpperm,0,$taillen -+ vcipher $out0,$out0,v26 -+ -+ lvx_u $in0,0,$inp -+ vcipher $out0,$out0,v27 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vcipher $out0,$out0,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ -+ vcipher $out0,$out0,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vxor $twk0,$twk0,v31 -+ -+ le?vperm $in0,$in0,$in0,$leperm -+ vcipher $out0,$out0,v30 -+ -+ vperm $in0,$in0,$in0,$inpperm -+ vcipherlast $out0,$out0,$twk0 -+ -+ vmr $twk0,$twk1 # unused tweak -+ vxor $tmp,$out0,$twk1 # last block prep for stealing -+ le?vperm $out0,$out0,$out0,$leperm -+ stvx_u $out0,$x00,$out # store output -+ addi $out,$out,0x10 -+ bne Lxts_enc6x_steal -+ b Lxts_enc6x_done -+ -+.align 4 -+Lxts_enc6x_zero: -+ cmpwi $taillen,0 -+ beq Lxts_enc6x_done -+ -+ add $inp,$inp,$taillen -+ subi $inp,$inp,16 -+ lvx_u $in0,0,$inp -+ lvsr $inpperm,0,$taillen # $in5 is no more -+ le?vperm $in0,$in0,$in0,$leperm -+ vperm $in0,$in0,$in0,$inpperm -+ vxor $tmp,$tmp,$twk0 -+Lxts_enc6x_steal: -+ vxor $in0,$in0,$twk0 -+ vxor $out0,$out0,$out0 -+ vspltisb $out1,-1 -+ vperm $out0,$out0,$out1,$inpperm -+ vsel $out0,$in0,$tmp,$out0 # $tmp is last block, remember? -+ -+ subi r30,$out,17 -+ subi $out,$out,16 -+ mtctr $taillen -+Loop_xts_enc6x_steal: -+ lbzu r0,1(r30) -+ stb r0,16(r30) -+ bdnz Loop_xts_enc6x_steal -+ -+ li $taillen,0 -+ mtctr $rounds -+ b Loop_xts_enc1x # one more time... -+ -+.align 4 -+Lxts_enc6x_done: -+ ${UCMP}i $ivp,0 -+ beq Lxts_enc6x_ret -+ -+ vxor $tweak,$twk0,$rndkey0 -+ le?vperm $tweak,$tweak,$tweak,$leperm -+ stvx_u $tweak,0,$ivp -+ -+Lxts_enc6x_ret: -+ mtlr r11 -+ li r10,`$FRAME+15` -+ li r11,`$FRAME+31` -+ stvx $seven,r10,$sp # wipe copies of round keys -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ stvx $seven,r10,$sp -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ stvx $seven,r10,$sp -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ stvx $seven,r10,$sp -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ -+ mtspr 256,$vrsave -+ lvx v20,r10,$sp # ABI says so -+ addi r10,r10,32 -+ lvx v21,r11,$sp -+ addi r11,r11,32 -+ lvx v22,r10,$sp -+ addi r10,r10,32 -+ lvx v23,r11,$sp -+ addi r11,r11,32 -+ lvx v24,r10,$sp -+ addi r10,r10,32 -+ lvx v25,r11,$sp -+ addi r11,r11,32 -+ lvx v26,r10,$sp -+ addi r10,r10,32 -+ lvx v27,r11,$sp -+ addi r11,r11,32 -+ lvx v28,r10,$sp -+ addi r10,r10,32 -+ lvx v29,r11,$sp -+ addi r11,r11,32 -+ lvx v30,r10,$sp -+ lvx v31,r11,$sp -+ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` -+ blr -+ .long 0 -+ .byte 0,12,0x04,1,0x80,6,6,0 -+ .long 0 -+ -+.align 5 -+_aesp8_xts_enc5x: -+ vcipher $out0,$out0,v24 -+ vcipher $out1,$out1,v24 -+ vcipher $out2,$out2,v24 -+ vcipher $out3,$out3,v24 -+ vcipher $out4,$out4,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vcipher $out0,$out0,v25 -+ vcipher $out1,$out1,v25 -+ vcipher $out2,$out2,v25 -+ vcipher $out3,$out3,v25 -+ vcipher $out4,$out4,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz _aesp8_xts_enc5x -+ -+ add $inp,$inp,$taillen -+ cmpwi $taillen,0 -+ vcipher $out0,$out0,v24 -+ vcipher $out1,$out1,v24 -+ vcipher $out2,$out2,v24 -+ vcipher $out3,$out3,v24 -+ vcipher $out4,$out4,v24 -+ -+ subi $inp,$inp,16 -+ vcipher $out0,$out0,v25 -+ vcipher $out1,$out1,v25 -+ vcipher $out2,$out2,v25 -+ vcipher $out3,$out3,v25 -+ vcipher $out4,$out4,v25 -+ vxor $twk0,$twk0,v31 -+ -+ vcipher $out0,$out0,v26 -+ lvsr $inpperm,0,$taillen # $in5 is no more -+ vcipher $out1,$out1,v26 -+ vcipher $out2,$out2,v26 -+ vcipher $out3,$out3,v26 -+ vcipher $out4,$out4,v26 -+ vxor $in1,$twk1,v31 -+ -+ vcipher $out0,$out0,v27 -+ lvx_u $in0,0,$inp -+ vcipher $out1,$out1,v27 -+ vcipher $out2,$out2,v27 -+ vcipher $out3,$out3,v27 -+ vcipher $out4,$out4,v27 -+ vxor $in2,$twk2,v31 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vcipher $out0,$out0,v28 -+ vcipher $out1,$out1,v28 -+ vcipher $out2,$out2,v28 -+ vcipher $out3,$out3,v28 -+ vcipher $out4,$out4,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ vxor $in3,$twk3,v31 -+ -+ vcipher $out0,$out0,v29 -+ le?vperm $in0,$in0,$in0,$leperm -+ vcipher $out1,$out1,v29 -+ vcipher $out2,$out2,v29 -+ vcipher $out3,$out3,v29 -+ vcipher $out4,$out4,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vxor $in4,$twk4,v31 -+ -+ vcipher $out0,$out0,v30 -+ vperm $in0,$in0,$in0,$inpperm -+ vcipher $out1,$out1,v30 -+ vcipher $out2,$out2,v30 -+ vcipher $out3,$out3,v30 -+ vcipher $out4,$out4,v30 -+ -+ vcipherlast $out0,$out0,$twk0 -+ vcipherlast $out1,$out1,$in1 -+ vcipherlast $out2,$out2,$in2 -+ vcipherlast $out3,$out3,$in3 -+ vcipherlast $out4,$out4,$in4 -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,0,0 -+ -+.align 5 -+_aesp8_xts_decrypt6x: -+ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) -+ mflr r11 -+ li r7,`$FRAME+8*16+15` -+ li r3,`$FRAME+8*16+31` -+ $PUSH r11,`$FRAME+21*16+6*$SIZE_T+$LRSAVE`($sp) -+ stvx v20,r7,$sp # ABI says so -+ addi r7,r7,32 -+ stvx v21,r3,$sp -+ addi r3,r3,32 -+ stvx v22,r7,$sp -+ addi r7,r7,32 -+ stvx v23,r3,$sp -+ addi r3,r3,32 -+ stvx v24,r7,$sp -+ addi r7,r7,32 -+ stvx v25,r3,$sp -+ addi r3,r3,32 -+ stvx v26,r7,$sp -+ addi r7,r7,32 -+ stvx v27,r3,$sp -+ addi r3,r3,32 -+ stvx v28,r7,$sp -+ addi r7,r7,32 -+ stvx v29,r3,$sp -+ addi r3,r3,32 -+ stvx v30,r7,$sp -+ stvx v31,r3,$sp -+ li r0,-1 -+ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave -+ li $x10,0x10 -+ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ li $x20,0x20 -+ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ li $x30,0x30 -+ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ li $x40,0x40 -+ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ li $x50,0x50 -+ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ li $x60,0x60 -+ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ li $x70,0x70 -+ mtspr 256,r0 -+ -+ subi $rounds,$rounds,3 # -4 in total -+ -+ lvx $rndkey0,$x00,$key1 # load key schedule -+ lvx v30,$x10,$key1 -+ addi $key1,$key1,0x20 -+ lvx v31,$x00,$key1 -+ ?vperm $rndkey0,$rndkey0,v30,$keyperm -+ addi $key_,$sp,`$FRAME+15` -+ mtctr $rounds -+ -+Load_xts_dec_key: -+ ?vperm v24,v30,v31,$keyperm -+ lvx v30,$x10,$key1 -+ addi $key1,$key1,0x20 -+ stvx v24,$x00,$key_ # off-load round[1] -+ ?vperm v25,v31,v30,$keyperm -+ lvx v31,$x00,$key1 -+ stvx v25,$x10,$key_ # off-load round[2] -+ addi $key_,$key_,0x20 -+ bdnz Load_xts_dec_key -+ -+ lvx v26,$x10,$key1 -+ ?vperm v24,v30,v31,$keyperm -+ lvx v27,$x20,$key1 -+ stvx v24,$x00,$key_ # off-load round[3] -+ ?vperm v25,v31,v26,$keyperm -+ lvx v28,$x30,$key1 -+ stvx v25,$x10,$key_ # off-load round[4] -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ ?vperm v26,v26,v27,$keyperm -+ lvx v29,$x40,$key1 -+ ?vperm v27,v27,v28,$keyperm -+ lvx v30,$x50,$key1 -+ ?vperm v28,v28,v29,$keyperm -+ lvx v31,$x60,$key1 -+ ?vperm v29,v29,v30,$keyperm -+ lvx $twk5,$x70,$key1 # borrow $twk5 -+ ?vperm v30,v30,v31,$keyperm -+ lvx v24,$x00,$key_ # pre-load round[1] -+ ?vperm v31,v31,$twk5,$keyperm -+ lvx v25,$x10,$key_ # pre-load round[2] -+ -+ vperm $in0,$inout,$inptail,$inpperm -+ subi $inp,$inp,31 # undo "caller" -+ vxor $twk0,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vand $tmp,$tmp,$eighty7 -+ vxor $out0,$in0,$twk0 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in1,$x10,$inp -+ vxor $twk1,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in1,$in1,$in1,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out1,$in1,$twk1 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in2,$x20,$inp -+ andi. $taillen,$len,15 -+ vxor $twk2,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in2,$in2,$in2,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out2,$in2,$twk2 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in3,$x30,$inp -+ sub $len,$len,$taillen -+ vxor $twk3,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in3,$in3,$in3,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out3,$in3,$twk3 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in4,$x40,$inp -+ subi $len,$len,0x60 -+ vxor $twk4,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in4,$in4,$in4,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out4,$in4,$twk4 -+ vxor $tweak,$tweak,$tmp -+ -+ lvx_u $in5,$x50,$inp -+ addi $inp,$inp,0x60 -+ vxor $twk5,$tweak,$rndkey0 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ le?vperm $in5,$in5,$in5,$leperm -+ vand $tmp,$tmp,$eighty7 -+ vxor $out5,$in5,$twk5 -+ vxor $tweak,$tweak,$tmp -+ -+ vxor v31,v31,$rndkey0 -+ mtctr $rounds -+ b Loop_xts_dec6x -+ -+.align 5 -+Loop_xts_dec6x: -+ vncipher $out0,$out0,v24 -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ vncipher $out5,$out5,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vncipher $out0,$out0,v25 -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ vncipher $out5,$out5,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_xts_dec6x -+ -+ subic $len,$len,96 # $len-=96 -+ vxor $in0,$twk0,v31 # xor with last round key -+ vncipher $out0,$out0,v24 -+ vncipher $out1,$out1,v24 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk0,$tweak,$rndkey0 -+ vaddubm $tweak,$tweak,$tweak -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vsldoi $tmp,$tmp,$tmp,15 -+ vncipher $out4,$out4,v24 -+ vncipher $out5,$out5,v24 -+ -+ subfe. r0,r0,r0 # borrow?-1:0 -+ vand $tmp,$tmp,$eighty7 -+ vncipher $out0,$out0,v25 -+ vncipher $out1,$out1,v25 -+ vxor $tweak,$tweak,$tmp -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vxor $in1,$twk1,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk1,$tweak,$rndkey0 -+ vncipher $out4,$out4,v25 -+ vncipher $out5,$out5,v25 -+ -+ and r0,r0,$len -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vncipher $out0,$out0,v26 -+ vncipher $out1,$out1,v26 -+ vand $tmp,$tmp,$eighty7 -+ vncipher $out2,$out2,v26 -+ vncipher $out3,$out3,v26 -+ vxor $tweak,$tweak,$tmp -+ vncipher $out4,$out4,v26 -+ vncipher $out5,$out5,v26 -+ -+ add $inp,$inp,r0 # $inp is adjusted in such -+ # way that at exit from the -+ # loop inX-in5 are loaded -+ # with last "words" -+ vxor $in2,$twk2,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk2,$tweak,$rndkey0 -+ vaddubm $tweak,$tweak,$tweak -+ vncipher $out0,$out0,v27 -+ vncipher $out1,$out1,v27 -+ vsldoi $tmp,$tmp,$tmp,15 -+ vncipher $out2,$out2,v27 -+ vncipher $out3,$out3,v27 -+ vand $tmp,$tmp,$eighty7 -+ vncipher $out4,$out4,v27 -+ vncipher $out5,$out5,v27 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vxor $tweak,$tweak,$tmp -+ vncipher $out0,$out0,v28 -+ vncipher $out1,$out1,v28 -+ vxor $in3,$twk3,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk3,$tweak,$rndkey0 -+ vncipher $out2,$out2,v28 -+ vncipher $out3,$out3,v28 -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vncipher $out4,$out4,v28 -+ vncipher $out5,$out5,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ vand $tmp,$tmp,$eighty7 -+ -+ vncipher $out0,$out0,v29 -+ vncipher $out1,$out1,v29 -+ vxor $tweak,$tweak,$tmp -+ vncipher $out2,$out2,v29 -+ vncipher $out3,$out3,v29 -+ vxor $in4,$twk4,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk4,$tweak,$rndkey0 -+ vncipher $out4,$out4,v29 -+ vncipher $out5,$out5,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ -+ vncipher $out0,$out0,v30 -+ vncipher $out1,$out1,v30 -+ vand $tmp,$tmp,$eighty7 -+ vncipher $out2,$out2,v30 -+ vncipher $out3,$out3,v30 -+ vxor $tweak,$tweak,$tmp -+ vncipher $out4,$out4,v30 -+ vncipher $out5,$out5,v30 -+ vxor $in5,$twk5,v31 -+ vsrab $tmp,$tweak,$seven # next tweak value -+ vxor $twk5,$tweak,$rndkey0 -+ -+ vncipherlast $out0,$out0,$in0 -+ lvx_u $in0,$x00,$inp # load next input block -+ vaddubm $tweak,$tweak,$tweak -+ vsldoi $tmp,$tmp,$tmp,15 -+ vncipherlast $out1,$out1,$in1 -+ lvx_u $in1,$x10,$inp -+ vncipherlast $out2,$out2,$in2 -+ le?vperm $in0,$in0,$in0,$leperm -+ lvx_u $in2,$x20,$inp -+ vand $tmp,$tmp,$eighty7 -+ vncipherlast $out3,$out3,$in3 -+ le?vperm $in1,$in1,$in1,$leperm -+ lvx_u $in3,$x30,$inp -+ vncipherlast $out4,$out4,$in4 -+ le?vperm $in2,$in2,$in2,$leperm -+ lvx_u $in4,$x40,$inp -+ vxor $tweak,$tweak,$tmp -+ vncipherlast $out5,$out5,$in5 -+ le?vperm $in3,$in3,$in3,$leperm -+ lvx_u $in5,$x50,$inp -+ addi $inp,$inp,0x60 -+ le?vperm $in4,$in4,$in4,$leperm -+ le?vperm $in5,$in5,$in5,$leperm -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $out0,$in0,$twk0 -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ vxor $out1,$in1,$twk1 -+ le?vperm $out3,$out3,$out3,$leperm -+ stvx_u $out2,$x20,$out -+ vxor $out2,$in2,$twk2 -+ le?vperm $out4,$out4,$out4,$leperm -+ stvx_u $out3,$x30,$out -+ vxor $out3,$in3,$twk3 -+ le?vperm $out5,$out5,$out5,$leperm -+ stvx_u $out4,$x40,$out -+ vxor $out4,$in4,$twk4 -+ stvx_u $out5,$x50,$out -+ vxor $out5,$in5,$twk5 -+ addi $out,$out,0x60 -+ -+ mtctr $rounds -+ beq Loop_xts_dec6x # did $len-=96 borrow? -+ -+ addic. $len,$len,0x60 -+ beq Lxts_dec6x_zero -+ cmpwi $len,0x20 -+ blt Lxts_dec6x_one -+ nop -+ beq Lxts_dec6x_two -+ cmpwi $len,0x40 -+ blt Lxts_dec6x_three -+ nop -+ beq Lxts_dec6x_four -+ -+Lxts_dec6x_five: -+ vxor $out0,$in1,$twk0 -+ vxor $out1,$in2,$twk1 -+ vxor $out2,$in3,$twk2 -+ vxor $out3,$in4,$twk3 -+ vxor $out4,$in5,$twk4 -+ -+ bl _aesp8_xts_dec5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk5 # unused tweak -+ vxor $twk1,$tweak,$rndkey0 -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $out0,$in0,$twk1 -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$leperm -+ stvx_u $out2,$x20,$out -+ le?vperm $out4,$out4,$out4,$leperm -+ stvx_u $out3,$x30,$out -+ stvx_u $out4,$x40,$out -+ addi $out,$out,0x50 -+ bne Lxts_dec6x_steal -+ b Lxts_dec6x_done -+ -+.align 4 -+Lxts_dec6x_four: -+ vxor $out0,$in2,$twk0 -+ vxor $out1,$in3,$twk1 -+ vxor $out2,$in4,$twk2 -+ vxor $out3,$in5,$twk3 -+ vxor $out4,$out4,$out4 -+ -+ bl _aesp8_xts_dec5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk4 # unused tweak -+ vmr $twk1,$twk5 -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $out0,$in0,$twk5 -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ le?vperm $out3,$out3,$out3,$leperm -+ stvx_u $out2,$x20,$out -+ stvx_u $out3,$x30,$out -+ addi $out,$out,0x40 -+ bne Lxts_dec6x_steal -+ b Lxts_dec6x_done -+ -+.align 4 -+Lxts_dec6x_three: -+ vxor $out0,$in3,$twk0 -+ vxor $out1,$in4,$twk1 -+ vxor $out2,$in5,$twk2 -+ vxor $out3,$out3,$out3 -+ vxor $out4,$out4,$out4 -+ -+ bl _aesp8_xts_dec5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk3 # unused tweak -+ vmr $twk1,$twk4 -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $out0,$in0,$twk4 -+ le?vperm $out2,$out2,$out2,$leperm -+ stvx_u $out1,$x10,$out -+ stvx_u $out2,$x20,$out -+ addi $out,$out,0x30 -+ bne Lxts_dec6x_steal -+ b Lxts_dec6x_done -+ -+.align 4 -+Lxts_dec6x_two: -+ vxor $out0,$in4,$twk0 -+ vxor $out1,$in5,$twk1 -+ vxor $out2,$out2,$out2 -+ vxor $out3,$out3,$out3 -+ vxor $out4,$out4,$out4 -+ -+ bl _aesp8_xts_dec5x -+ -+ le?vperm $out0,$out0,$out0,$leperm -+ vmr $twk0,$twk2 # unused tweak -+ vmr $twk1,$twk3 -+ le?vperm $out1,$out1,$out1,$leperm -+ stvx_u $out0,$x00,$out # store output -+ vxor $out0,$in0,$twk3 -+ stvx_u $out1,$x10,$out -+ addi $out,$out,0x20 -+ bne Lxts_dec6x_steal -+ b Lxts_dec6x_done -+ -+.align 4 -+Lxts_dec6x_one: -+ vxor $out0,$in5,$twk0 -+ nop -+Loop_xts_dec1x: -+ vncipher $out0,$out0,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vncipher $out0,$out0,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Loop_xts_dec1x -+ -+ subi r0,$taillen,1 -+ vncipher $out0,$out0,v24 -+ -+ andi. r0,r0,16 -+ cmpwi $taillen,0 -+ vncipher $out0,$out0,v25 -+ -+ sub $inp,$inp,r0 -+ vncipher $out0,$out0,v26 -+ -+ lvx_u $in0,0,$inp -+ vncipher $out0,$out0,v27 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vncipher $out0,$out0,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ -+ vncipher $out0,$out0,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vxor $twk0,$twk0,v31 -+ -+ le?vperm $in0,$in0,$in0,$leperm -+ vncipher $out0,$out0,v30 -+ -+ mtctr $rounds -+ vncipherlast $out0,$out0,$twk0 -+ -+ vmr $twk0,$twk1 # unused tweak -+ vmr $twk1,$twk2 -+ le?vperm $out0,$out0,$out0,$leperm -+ stvx_u $out0,$x00,$out # store output -+ addi $out,$out,0x10 -+ vxor $out0,$in0,$twk2 -+ bne Lxts_dec6x_steal -+ b Lxts_dec6x_done -+ -+.align 4 -+Lxts_dec6x_zero: -+ cmpwi $taillen,0 -+ beq Lxts_dec6x_done -+ -+ lvx_u $in0,0,$inp -+ le?vperm $in0,$in0,$in0,$leperm -+ vxor $out0,$in0,$twk1 -+Lxts_dec6x_steal: -+ vncipher $out0,$out0,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vncipher $out0,$out0,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz Lxts_dec6x_steal -+ -+ add $inp,$inp,$taillen -+ vncipher $out0,$out0,v24 -+ -+ cmpwi $taillen,0 -+ vncipher $out0,$out0,v25 -+ -+ lvx_u $in0,0,$inp -+ vncipher $out0,$out0,v26 -+ -+ lvsr $inpperm,0,$taillen # $in5 is no more -+ vncipher $out0,$out0,v27 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vncipher $out0,$out0,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ -+ vncipher $out0,$out0,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vxor $twk1,$twk1,v31 -+ -+ le?vperm $in0,$in0,$in0,$leperm -+ vncipher $out0,$out0,v30 -+ -+ vperm $in0,$in0,$in0,$inpperm -+ vncipherlast $tmp,$out0,$twk1 -+ -+ le?vperm $out0,$tmp,$tmp,$leperm -+ le?stvx_u $out0,0,$out -+ be?stvx_u $tmp,0,$out -+ -+ vxor $out0,$out0,$out0 -+ vspltisb $out1,-1 -+ vperm $out0,$out0,$out1,$inpperm -+ vsel $out0,$in0,$tmp,$out0 -+ vxor $out0,$out0,$twk0 -+ -+ subi r30,$out,1 -+ mtctr $taillen -+Loop_xts_dec6x_steal: -+ lbzu r0,1(r30) -+ stb r0,16(r30) -+ bdnz Loop_xts_dec6x_steal -+ -+ li $taillen,0 -+ mtctr $rounds -+ b Loop_xts_dec1x # one more time... -+ -+.align 4 -+Lxts_dec6x_done: -+ ${UCMP}i $ivp,0 -+ beq Lxts_dec6x_ret -+ -+ vxor $tweak,$twk0,$rndkey0 -+ le?vperm $tweak,$tweak,$tweak,$leperm -+ stvx_u $tweak,0,$ivp -+ -+Lxts_dec6x_ret: -+ mtlr r11 -+ li r10,`$FRAME+15` -+ li r11,`$FRAME+31` -+ stvx $seven,r10,$sp # wipe copies of round keys -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ stvx $seven,r10,$sp -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ stvx $seven,r10,$sp -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ stvx $seven,r10,$sp -+ addi r10,r10,32 -+ stvx $seven,r11,$sp -+ addi r11,r11,32 -+ -+ mtspr 256,$vrsave -+ lvx v20,r10,$sp # ABI says so -+ addi r10,r10,32 -+ lvx v21,r11,$sp -+ addi r11,r11,32 -+ lvx v22,r10,$sp -+ addi r10,r10,32 -+ lvx v23,r11,$sp -+ addi r11,r11,32 -+ lvx v24,r10,$sp -+ addi r10,r10,32 -+ lvx v25,r11,$sp -+ addi r11,r11,32 -+ lvx v26,r10,$sp -+ addi r10,r10,32 -+ lvx v27,r11,$sp -+ addi r11,r11,32 -+ lvx v28,r10,$sp -+ addi r10,r10,32 -+ lvx v29,r11,$sp -+ addi r11,r11,32 -+ lvx v30,r10,$sp -+ lvx v31,r11,$sp -+ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) -+ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) -+ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) -+ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) -+ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) -+ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) -+ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` -+ blr -+ .long 0 -+ .byte 0,12,0x04,1,0x80,6,6,0 -+ .long 0 -+ -+.align 5 -+_aesp8_xts_dec5x: -+ vncipher $out0,$out0,v24 -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ lvx v24,$x20,$key_ # round[3] -+ addi $key_,$key_,0x20 -+ -+ vncipher $out0,$out0,v25 -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ lvx v25,$x10,$key_ # round[4] -+ bdnz _aesp8_xts_dec5x -+ -+ subi r0,$taillen,1 -+ vncipher $out0,$out0,v24 -+ vncipher $out1,$out1,v24 -+ vncipher $out2,$out2,v24 -+ vncipher $out3,$out3,v24 -+ vncipher $out4,$out4,v24 -+ -+ andi. r0,r0,16 -+ cmpwi $taillen,0 -+ vncipher $out0,$out0,v25 -+ vncipher $out1,$out1,v25 -+ vncipher $out2,$out2,v25 -+ vncipher $out3,$out3,v25 -+ vncipher $out4,$out4,v25 -+ vxor $twk0,$twk0,v31 -+ -+ sub $inp,$inp,r0 -+ vncipher $out0,$out0,v26 -+ vncipher $out1,$out1,v26 -+ vncipher $out2,$out2,v26 -+ vncipher $out3,$out3,v26 -+ vncipher $out4,$out4,v26 -+ vxor $in1,$twk1,v31 -+ -+ vncipher $out0,$out0,v27 -+ lvx_u $in0,0,$inp -+ vncipher $out1,$out1,v27 -+ vncipher $out2,$out2,v27 -+ vncipher $out3,$out3,v27 -+ vncipher $out4,$out4,v27 -+ vxor $in2,$twk2,v31 -+ -+ addi $key_,$sp,`$FRAME+15` # rewind $key_ -+ vncipher $out0,$out0,v28 -+ vncipher $out1,$out1,v28 -+ vncipher $out2,$out2,v28 -+ vncipher $out3,$out3,v28 -+ vncipher $out4,$out4,v28 -+ lvx v24,$x00,$key_ # re-pre-load round[1] -+ vxor $in3,$twk3,v31 -+ -+ vncipher $out0,$out0,v29 -+ le?vperm $in0,$in0,$in0,$leperm -+ vncipher $out1,$out1,v29 -+ vncipher $out2,$out2,v29 -+ vncipher $out3,$out3,v29 -+ vncipher $out4,$out4,v29 -+ lvx v25,$x10,$key_ # re-pre-load round[2] -+ vxor $in4,$twk4,v31 -+ -+ vncipher $out0,$out0,v30 -+ vncipher $out1,$out1,v30 -+ vncipher $out2,$out2,v30 -+ vncipher $out3,$out3,v30 -+ vncipher $out4,$out4,v30 -+ -+ vncipherlast $out0,$out0,$twk0 -+ vncipherlast $out1,$out1,$in1 -+ vncipherlast $out2,$out2,$in2 -+ vncipherlast $out3,$out3,$in3 -+ vncipherlast $out4,$out4,$in4 -+ mtctr $rounds -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,0,0 -+___ -+}} }}} -+ -+my $consts=1; -+foreach(split("\n",$code)) { -+ s/\`([^\`]*)\`/eval($1)/geo; -+ -+ # constants table endian-specific conversion -+ if ($consts && m/\.(long|byte)\s+(.+)\s+(\?[a-z]*)$/o) { -+ my $conv=$3; -+ my @bytes=(); -+ -+ # convert to endian-agnostic format -+ if ($1 eq "long") { -+ foreach (split(/,\s*/,$2)) { -+ my $l = /^0/?oct:int; -+ push @bytes,($l>>24)&0xff,($l>>16)&0xff,($l>>8)&0xff,$l&0xff; -+ } -+ } else { -+ @bytes = map(/^0/?oct:int,split(/,\s*/,$2)); -+ } -+ -+ # little-endian conversion -+ if ($flavour =~ /le$/o) { -+ SWITCH: for($conv) { -+ /\?inv/ && do { @bytes=map($_^0xf,@bytes); last; }; -+ /\?rev/ && do { @bytes=reverse(@bytes); last; }; -+ } -+ } -+ -+ #emit -+ print ".byte\t",join(',',map (sprintf("0x%02x",$_),@bytes)),"\n"; -+ next; -+ } -+ $consts=0 if (m/Lconsts:/o); # end of table -+ -+ # instructions prefixed with '?' are endian-specific and need -+ # to be adjusted accordingly... -+ if ($flavour =~ /le$/o) { # little-endian -+ s/le\?//o or -+ s/be\?/#be#/o or -+ s/\?lvsr/lvsl/o or -+ s/\?lvsl/lvsr/o or -+ s/\?(vperm\s+v[0-9]+,\s*)(v[0-9]+,\s*)(v[0-9]+,\s*)(v[0-9]+)/$1$3$2$4/o or -+ s/\?(vsldoi\s+v[0-9]+,\s*)(v[0-9]+,)\s*(v[0-9]+,\s*)([0-9]+)/$1$3$2 16-$4/o or -+ s/\?(vspltw\s+v[0-9]+,\s*)(v[0-9]+,)\s*([0-9])/$1$2 3-$3/o; -+ } else { # big-endian -+ s/le\?/#le#/o or -+ s/be\?//o or -+ s/\?([a-z]+)/$1/o; -+ } -+ -+ print $_,"\n"; -+} -+ -+close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -@@ -82,6 +82,12 @@ inline int vpaes_capable(void) { return - inline int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); } - #endif - -+#elif defined(OPENSSL_PPC64LE) -+#define HWAES -+ -+OPENSSL_INLINE int hwaes_capable(void) { -+ return CRYPTO_is_PPC64LE_vcrypto_capable(); -+} - #endif - - #endif // !NO_ASM -@@ -504,6 +510,13 @@ void aes_gcm_dec_kernel(const uint8_t *i - const u128 Htable[16]); - #endif - -+#elif defined(OPENSSL_PPC64LE) -+#define GHASH_ASM_PPC64LE -+#define GCM_FUNCREF -+void gcm_init_p8(u128 Htable[16], const uint64_t Xi[2]); -+void gcm_gmult_p8(uint8_t Xi[16], const u128 Htable[16]); -+void gcm_ghash_p8(uint8_t Xi[16], const u128 Htable[16], const uint8_t *inp, -+ size_t len); - #endif - #endif // OPENSSL_NO_ASM - -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bcm.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.cc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bcm.cc -@@ -105,6 +105,7 @@ - #include "self_check/fips.cc.inc" - #include "self_check/self_check.cc.inc" - #include "service_indicator/service_indicator.cc.inc" -+#include "sha/sha1-altivec.cc.inc" - #include "sha/sha1.cc.inc" - #include "sha/sha256.cc.inc" - #include "sha/sha512.cc.inc" -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc -@@ -330,6 +330,23 @@ int bn_expand(BIGNUM *bn, size_t bits) { - } - - int bn_resize_words(BIGNUM *bn, size_t words) { -+#if defined(OPENSSL_PPC64LE) -+ // This is a workaround for a miscompilation bug in Clang 7.0.1 on POWER. -+ // The unittests catch the miscompilation, if it occurs, and it manifests -+ // as a crash in |bn_fits_in_words|. -+ // -+ // The bug only triggers if building in FIPS mode and with -O3. Clang 8.0.1 -+ // has the same bug but this workaround is not effective there---I've not -+ // been able to find a workaround for 8.0.1. -+ // -+ // At the time of writing (2019-08-08), Clang git does *not* have this bug -+ // and does not need this workaroud. The current git version should go on to -+ // be Clang 10 thus, once we can depend on that, this can be removed. -+ if (value_barrier_w((size_t)bn->width == words)) { -+ return 1; -+ } -+#endif -+ - if ((size_t)bn->width <= words) { - if (!bn_wexpand(bn, words)) { - return 0; -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc -@@ -1234,6 +1234,8 @@ int EVP_has_aes_hardware(void) { - return hwaes_capable() && crypto_gcm_clmul_enabled(); - #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) - return hwaes_capable() && CRYPTO_is_ARMv8_PMULL_capable(); -+#elif defined(OPENSSL_PPC64LE) -+ return CRYPTO_is_PPC64LE_vcrypto_capable(); - #else - return 0; - #endif -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl -@@ -0,0 +1,671 @@ -+#! /usr/bin/env perl -+# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. -+# -+# Licensed under the OpenSSL license (the "License"). You may not use -+# this file except in compliance with the License. You can obtain a copy -+# in the file LICENSE in the source distribution or at -+# https://www.openssl.org/source/license.html -+ -+# -+# ==================================================================== -+# Written by Andy Polyakov for the OpenSSL -+# project. The module is, however, dual licensed under OpenSSL and -+# CRYPTOGAMS licenses depending on where you obtain it. For further -+# details see http://www.openssl.org/~appro/cryptogams/. -+# ==================================================================== -+# -+# GHASH for for PowerISA v2.07. -+# -+# July 2014 -+# -+# Accurate performance measurements are problematic, because it's -+# always virtualized setup with possibly throttled processor. -+# Relative comparison is therefore more informative. This initial -+# version is ~2.1x slower than hardware-assisted AES-128-CTR, ~12x -+# faster than "4-bit" integer-only compiler-generated 64-bit code. -+# "Initial version" means that there is room for futher improvement. -+ -+# May 2016 -+# -+# 2x aggregated reduction improves performance by 50% (resulting -+# performance on POWER8 is 1 cycle per processed byte), and 4x -+# aggregated reduction - by 170% or 2.7x (resulting in 0.55 cpb). -+ -+$flavour=shift; -+$output =shift; -+ -+if ($flavour =~ /64/) { -+ $SIZE_T=8; -+ $LRSAVE=2*$SIZE_T; -+ $STU="stdu"; -+ $POP="ld"; -+ $PUSH="std"; -+ $UCMP="cmpld"; -+ $SHRI="srdi"; -+} elsif ($flavour =~ /32/) { -+ $SIZE_T=4; -+ $LRSAVE=$SIZE_T; -+ $STU="stwu"; -+ $POP="lwz"; -+ $PUSH="stw"; -+ $UCMP="cmplw"; -+ $SHRI="srwi"; -+} else { die "nonsense $flavour"; } -+ -+$sp="r1"; -+$FRAME=6*$SIZE_T+13*16; # 13*16 is for v20-v31 offload -+ -+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; -+( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or -+( $xlate="${dir}../../../perlasm/ppc-xlate.pl" and -f $xlate) or -+die "can't locate ppc-xlate.pl"; -+ -+open OUT,"| $^X \"$xlate\" $flavour \"$output\"" || die "can't call $xlate: $!"; -+*STDOUT=*OUT; -+ -+my ($Xip,$Htbl,$inp,$len)=map("r$_",(3..6)); # argument block -+ -+my ($Xl,$Xm,$Xh,$IN)=map("v$_",(0..3)); -+my ($zero,$t0,$t1,$t2,$xC2,$H,$Hh,$Hl,$lemask)=map("v$_",(4..12)); -+my ($Xl1,$Xm1,$Xh1,$IN1,$H2,$H2h,$H2l)=map("v$_",(13..19)); -+my $vrsave="r12"; -+ -+$code=<<___; -+.machine "any" -+ -+.text -+ -+.globl .gcm_init_p8 -+.align 5 -+.gcm_init_p8: -+ li r0,-4096 -+ li r8,0x10 -+ mfspr $vrsave,256 -+ li r9,0x20 -+ mtspr 256,r0 -+ li r10,0x30 -+ lvx_u $H,0,r4 # load H -+ -+ vspltisb $xC2,-16 # 0xf0 -+ vspltisb $t0,1 # one -+ vaddubm $xC2,$xC2,$xC2 # 0xe0 -+ vxor $zero,$zero,$zero -+ vor $xC2,$xC2,$t0 # 0xe1 -+ vsldoi $xC2,$xC2,$zero,15 # 0xe1... -+ vsldoi $t1,$zero,$t0,1 # ...1 -+ vaddubm $xC2,$xC2,$xC2 # 0xc2... -+ vspltisb $t2,7 -+ vor $xC2,$xC2,$t1 # 0xc2....01 -+ vspltb $t1,$H,0 # most significant byte -+ vsl $H,$H,$t0 # H<<=1 -+ vsrab $t1,$t1,$t2 # broadcast carry bit -+ vand $t1,$t1,$xC2 -+ vxor $IN,$H,$t1 # twisted H -+ -+ vsldoi $H,$IN,$IN,8 # twist even more ... -+ vsldoi $xC2,$zero,$xC2,8 # 0xc2.0 -+ vsldoi $Hl,$zero,$H,8 # ... and split -+ vsldoi $Hh,$H,$zero,8 -+ -+ stvx_u $xC2,0,r3 # save pre-computed table -+ stvx_u $Hl,r8,r3 -+ li r8,0x40 -+ stvx_u $H, r9,r3 -+ li r9,0x50 -+ stvx_u $Hh,r10,r3 -+ li r10,0x60 -+ -+ vpmsumd $Xl,$IN,$Hl # H.lo·H.lo -+ vpmsumd $Xm,$IN,$H # H.hi·H.lo+H.lo·H.hi -+ vpmsumd $Xh,$IN,$Hh # H.hi·H.hi -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vxor $Xl,$Xl,$t2 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vpmsumd $Xl,$Xl,$xC2 -+ vxor $t1,$t1,$Xh -+ vxor $IN1,$Xl,$t1 -+ -+ vsldoi $H2,$IN1,$IN1,8 -+ vsldoi $H2l,$zero,$H2,8 -+ vsldoi $H2h,$H2,$zero,8 -+ -+ stvx_u $H2l,r8,r3 # save H^2 -+ li r8,0x70 -+ stvx_u $H2,r9,r3 -+ li r9,0x80 -+ stvx_u $H2h,r10,r3 -+ li r10,0x90 -+___ -+{ -+my ($t4,$t5,$t6) = ($Hl,$H,$Hh); -+$code.=<<___; -+ vpmsumd $Xl,$IN,$H2l # H.lo·H^2.lo -+ vpmsumd $Xl1,$IN1,$H2l # H^2.lo·H^2.lo -+ vpmsumd $Xm,$IN,$H2 # H.hi·H^2.lo+H.lo·H^2.hi -+ vpmsumd $Xm1,$IN1,$H2 # H^2.hi·H^2.lo+H^2.lo·H^2.hi -+ vpmsumd $Xh,$IN,$H2h # H.hi·H^2.hi -+ vpmsumd $Xh1,$IN1,$H2h # H^2.hi·H^2.hi -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ vpmsumd $t6,$Xl1,$xC2 # 1st reduction phase -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vsldoi $t4,$Xm1,$zero,8 -+ vsldoi $t5,$zero,$Xm1,8 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ vxor $Xl1,$Xl1,$t4 -+ vxor $Xh1,$Xh1,$t5 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vsldoi $Xl1,$Xl1,$Xl1,8 -+ vxor $Xl,$Xl,$t2 -+ vxor $Xl1,$Xl1,$t6 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vsldoi $t5,$Xl1,$Xl1,8 # 2nd reduction phase -+ vpmsumd $Xl,$Xl,$xC2 -+ vpmsumd $Xl1,$Xl1,$xC2 -+ vxor $t1,$t1,$Xh -+ vxor $t5,$t5,$Xh1 -+ vxor $Xl,$Xl,$t1 -+ vxor $Xl1,$Xl1,$t5 -+ -+ vsldoi $H,$Xl,$Xl,8 -+ vsldoi $H2,$Xl1,$Xl1,8 -+ vsldoi $Hl,$zero,$H,8 -+ vsldoi $Hh,$H,$zero,8 -+ vsldoi $H2l,$zero,$H2,8 -+ vsldoi $H2h,$H2,$zero,8 -+ -+ stvx_u $Hl,r8,r3 # save H^3 -+ li r8,0xa0 -+ stvx_u $H,r9,r3 -+ li r9,0xb0 -+ stvx_u $Hh,r10,r3 -+ li r10,0xc0 -+ stvx_u $H2l,r8,r3 # save H^4 -+ stvx_u $H2,r9,r3 -+ stvx_u $H2h,r10,r3 -+ -+ mtspr 256,$vrsave -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,2,0 -+ .long 0 -+.size .gcm_init_p8,.-.gcm_init_p8 -+___ -+} -+$code.=<<___; -+.globl .gcm_gmult_p8 -+.align 5 -+.gcm_gmult_p8: -+ lis r0,0xfff8 -+ li r8,0x10 -+ mfspr $vrsave,256 -+ li r9,0x20 -+ mtspr 256,r0 -+ li r10,0x30 -+ lvx_u $IN,0,$Xip # load Xi -+ -+ lvx_u $Hl,r8,$Htbl # load pre-computed table -+ le?lvsl $lemask,r0,r0 -+ lvx_u $H, r9,$Htbl -+ le?vspltisb $t0,0x07 -+ lvx_u $Hh,r10,$Htbl -+ le?vxor $lemask,$lemask,$t0 -+ lvx_u $xC2,0,$Htbl -+ le?vperm $IN,$IN,$IN,$lemask -+ vxor $zero,$zero,$zero -+ -+ vpmsumd $Xl,$IN,$Hl # H.lo·Xi.lo -+ vpmsumd $Xm,$IN,$H # H.hi·Xi.lo+H.lo·Xi.hi -+ vpmsumd $Xh,$IN,$Hh # H.hi·Xi.hi -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vxor $Xl,$Xl,$t2 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vpmsumd $Xl,$Xl,$xC2 -+ vxor $t1,$t1,$Xh -+ vxor $Xl,$Xl,$t1 -+ -+ le?vperm $Xl,$Xl,$Xl,$lemask -+ stvx_u $Xl,0,$Xip # write out Xi -+ -+ mtspr 256,$vrsave -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,2,0 -+ .long 0 -+.size .gcm_gmult_p8,.-.gcm_gmult_p8 -+ -+.globl .gcm_ghash_p8 -+.align 5 -+.gcm_ghash_p8: -+ li r0,-4096 -+ li r8,0x10 -+ mfspr $vrsave,256 -+ li r9,0x20 -+ mtspr 256,r0 -+ li r10,0x30 -+ lvx_u $Xl,0,$Xip # load Xi -+ -+ lvx_u $Hl,r8,$Htbl # load pre-computed table -+ li r8,0x40 -+ le?lvsl $lemask,r0,r0 -+ lvx_u $H, r9,$Htbl -+ li r9,0x50 -+ le?vspltisb $t0,0x07 -+ lvx_u $Hh,r10,$Htbl -+ li r10,0x60 -+ le?vxor $lemask,$lemask,$t0 -+ lvx_u $xC2,0,$Htbl -+ le?vperm $Xl,$Xl,$Xl,$lemask -+ vxor $zero,$zero,$zero -+ -+ ${UCMP}i $len,64 -+ bge Lgcm_ghash_p8_4x -+ -+ lvx_u $IN,0,$inp -+ addi $inp,$inp,16 -+ subic. $len,$len,16 -+ le?vperm $IN,$IN,$IN,$lemask -+ vxor $IN,$IN,$Xl -+ beq Lshort -+ -+ lvx_u $H2l,r8,$Htbl # load H^2 -+ li r8,16 -+ lvx_u $H2, r9,$Htbl -+ add r9,$inp,$len # end of input -+ lvx_u $H2h,r10,$Htbl -+ be?b Loop_2x -+ -+.align 5 -+Loop_2x: -+ lvx_u $IN1,0,$inp -+ le?vperm $IN1,$IN1,$IN1,$lemask -+ -+ subic $len,$len,32 -+ vpmsumd $Xl,$IN,$H2l # H^2.lo·Xi.lo -+ vpmsumd $Xl1,$IN1,$Hl # H.lo·Xi+1.lo -+ subfe r0,r0,r0 # borrow?-1:0 -+ vpmsumd $Xm,$IN,$H2 # H^2.hi·Xi.lo+H^2.lo·Xi.hi -+ vpmsumd $Xm1,$IN1,$H # H.hi·Xi+1.lo+H.lo·Xi+1.hi -+ and r0,r0,$len -+ vpmsumd $Xh,$IN,$H2h # H^2.hi·Xi.hi -+ vpmsumd $Xh1,$IN1,$Hh # H.hi·Xi+1.hi -+ add $inp,$inp,r0 -+ -+ vxor $Xl,$Xl,$Xl1 -+ vxor $Xm,$Xm,$Xm1 -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vxor $Xh,$Xh,$Xh1 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vxor $Xl,$Xl,$t2 -+ lvx_u $IN,r8,$inp -+ addi $inp,$inp,32 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vpmsumd $Xl,$Xl,$xC2 -+ le?vperm $IN,$IN,$IN,$lemask -+ vxor $t1,$t1,$Xh -+ vxor $IN,$IN,$t1 -+ vxor $IN,$IN,$Xl -+ $UCMP r9,$inp -+ bgt Loop_2x # done yet? -+ -+ cmplwi $len,0 -+ bne Leven -+ -+Lshort: -+ vpmsumd $Xl,$IN,$Hl # H.lo·Xi.lo -+ vpmsumd $Xm,$IN,$H # H.hi·Xi.lo+H.lo·Xi.hi -+ vpmsumd $Xh,$IN,$Hh # H.hi·Xi.hi -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vxor $Xl,$Xl,$t2 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vpmsumd $Xl,$Xl,$xC2 -+ vxor $t1,$t1,$Xh -+ -+Leven: -+ vxor $Xl,$Xl,$t1 -+ le?vperm $Xl,$Xl,$Xl,$lemask -+ stvx_u $Xl,0,$Xip # write out Xi -+ -+ mtspr 256,$vrsave -+ blr -+ .long 0 -+ .byte 0,12,0x14,0,0,0,4,0 -+ .long 0 -+___ -+{ -+my ($Xl3,$Xm2,$IN2,$H3l,$H3,$H3h, -+ $Xh3,$Xm3,$IN3,$H4l,$H4,$H4h) = map("v$_",(20..31)); -+my $IN0=$IN; -+my ($H21l,$H21h,$loperm,$hiperm) = ($Hl,$Hh,$H2l,$H2h); -+ -+$code.=<<___; -+.align 5 -+.gcm_ghash_p8_4x: -+Lgcm_ghash_p8_4x: -+ $STU $sp,-$FRAME($sp) -+ li r10,`15+6*$SIZE_T` -+ li r11,`31+6*$SIZE_T` -+ stvx v20,r10,$sp -+ addi r10,r10,32 -+ stvx v21,r11,$sp -+ addi r11,r11,32 -+ stvx v22,r10,$sp -+ addi r10,r10,32 -+ stvx v23,r11,$sp -+ addi r11,r11,32 -+ stvx v24,r10,$sp -+ addi r10,r10,32 -+ stvx v25,r11,$sp -+ addi r11,r11,32 -+ stvx v26,r10,$sp -+ addi r10,r10,32 -+ stvx v27,r11,$sp -+ addi r11,r11,32 -+ stvx v28,r10,$sp -+ addi r10,r10,32 -+ stvx v29,r11,$sp -+ addi r11,r11,32 -+ stvx v30,r10,$sp -+ li r10,0x60 -+ stvx v31,r11,$sp -+ li r0,-1 -+ stw $vrsave,`$FRAME-4`($sp) # save vrsave -+ mtspr 256,r0 # preserve all AltiVec registers -+ -+ lvsl $t0,0,r8 # 0x0001..0e0f -+ #lvx_u $H2l,r8,$Htbl # load H^2 -+ li r8,0x70 -+ lvx_u $H2, r9,$Htbl -+ li r9,0x80 -+ vspltisb $t1,8 # 0x0808..0808 -+ #lvx_u $H2h,r10,$Htbl -+ li r10,0x90 -+ lvx_u $H3l,r8,$Htbl # load H^3 -+ li r8,0xa0 -+ lvx_u $H3, r9,$Htbl -+ li r9,0xb0 -+ lvx_u $H3h,r10,$Htbl -+ li r10,0xc0 -+ lvx_u $H4l,r8,$Htbl # load H^4 -+ li r8,0x10 -+ lvx_u $H4, r9,$Htbl -+ li r9,0x20 -+ lvx_u $H4h,r10,$Htbl -+ li r10,0x30 -+ -+ vsldoi $t2,$zero,$t1,8 # 0x0000..0808 -+ vaddubm $hiperm,$t0,$t2 # 0x0001..1617 -+ vaddubm $loperm,$t1,$hiperm # 0x0809..1e1f -+ -+ $SHRI $len,$len,4 # this allows to use sign bit -+ # as carry -+ lvx_u $IN0,0,$inp # load input -+ lvx_u $IN1,r8,$inp -+ subic. $len,$len,8 -+ lvx_u $IN2,r9,$inp -+ lvx_u $IN3,r10,$inp -+ addi $inp,$inp,0x40 -+ le?vperm $IN0,$IN0,$IN0,$lemask -+ le?vperm $IN1,$IN1,$IN1,$lemask -+ le?vperm $IN2,$IN2,$IN2,$lemask -+ le?vperm $IN3,$IN3,$IN3,$lemask -+ -+ vxor $Xh,$IN0,$Xl -+ -+ vpmsumd $Xl1,$IN1,$H3l -+ vpmsumd $Xm1,$IN1,$H3 -+ vpmsumd $Xh1,$IN1,$H3h -+ -+ vperm $H21l,$H2,$H,$hiperm -+ vperm $t0,$IN2,$IN3,$loperm -+ vperm $H21h,$H2,$H,$loperm -+ vperm $t1,$IN2,$IN3,$hiperm -+ vpmsumd $Xm2,$IN2,$H2 # H^2.lo·Xi+2.hi+H^2.hi·Xi+2.lo -+ vpmsumd $Xl3,$t0,$H21l # H^2.lo·Xi+2.lo+H.lo·Xi+3.lo -+ vpmsumd $Xm3,$IN3,$H # H.hi·Xi+3.lo +H.lo·Xi+3.hi -+ vpmsumd $Xh3,$t1,$H21h # H^2.hi·Xi+2.hi+H.hi·Xi+3.hi -+ -+ vxor $Xm2,$Xm2,$Xm1 -+ vxor $Xl3,$Xl3,$Xl1 -+ vxor $Xm3,$Xm3,$Xm2 -+ vxor $Xh3,$Xh3,$Xh1 -+ -+ blt Ltail_4x -+ -+Loop_4x: -+ lvx_u $IN0,0,$inp -+ lvx_u $IN1,r8,$inp -+ subic. $len,$len,4 -+ lvx_u $IN2,r9,$inp -+ lvx_u $IN3,r10,$inp -+ addi $inp,$inp,0x40 -+ le?vperm $IN1,$IN1,$IN1,$lemask -+ le?vperm $IN2,$IN2,$IN2,$lemask -+ le?vperm $IN3,$IN3,$IN3,$lemask -+ le?vperm $IN0,$IN0,$IN0,$lemask -+ -+ vpmsumd $Xl,$Xh,$H4l # H^4.lo·Xi.lo -+ vpmsumd $Xm,$Xh,$H4 # H^4.hi·Xi.lo+H^4.lo·Xi.hi -+ vpmsumd $Xh,$Xh,$H4h # H^4.hi·Xi.hi -+ vpmsumd $Xl1,$IN1,$H3l -+ vpmsumd $Xm1,$IN1,$H3 -+ vpmsumd $Xh1,$IN1,$H3h -+ -+ vxor $Xl,$Xl,$Xl3 -+ vxor $Xm,$Xm,$Xm3 -+ vxor $Xh,$Xh,$Xh3 -+ vperm $t0,$IN2,$IN3,$loperm -+ vperm $t1,$IN2,$IN3,$hiperm -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ vpmsumd $Xl3,$t0,$H21l # H.lo·Xi+3.lo +H^2.lo·Xi+2.lo -+ vpmsumd $Xh3,$t1,$H21h # H.hi·Xi+3.hi +H^2.hi·Xi+2.hi -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vxor $Xl,$Xl,$t2 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vpmsumd $Xm2,$IN2,$H2 # H^2.hi·Xi+2.lo+H^2.lo·Xi+2.hi -+ vpmsumd $Xm3,$IN3,$H # H.hi·Xi+3.lo +H.lo·Xi+3.hi -+ vpmsumd $Xl,$Xl,$xC2 -+ -+ vxor $Xl3,$Xl3,$Xl1 -+ vxor $Xh3,$Xh3,$Xh1 -+ vxor $Xh,$Xh,$IN0 -+ vxor $Xm2,$Xm2,$Xm1 -+ vxor $Xh,$Xh,$t1 -+ vxor $Xm3,$Xm3,$Xm2 -+ vxor $Xh,$Xh,$Xl -+ bge Loop_4x -+ -+Ltail_4x: -+ vpmsumd $Xl,$Xh,$H4l # H^4.lo·Xi.lo -+ vpmsumd $Xm,$Xh,$H4 # H^4.hi·Xi.lo+H^4.lo·Xi.hi -+ vpmsumd $Xh,$Xh,$H4h # H^4.hi·Xi.hi -+ -+ vxor $Xl,$Xl,$Xl3 -+ vxor $Xm,$Xm,$Xm3 -+ -+ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase -+ -+ vsldoi $t0,$Xm,$zero,8 -+ vsldoi $t1,$zero,$Xm,8 -+ vxor $Xh,$Xh,$Xh3 -+ vxor $Xl,$Xl,$t0 -+ vxor $Xh,$Xh,$t1 -+ -+ vsldoi $Xl,$Xl,$Xl,8 -+ vxor $Xl,$Xl,$t2 -+ -+ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase -+ vpmsumd $Xl,$Xl,$xC2 -+ vxor $t1,$t1,$Xh -+ vxor $Xl,$Xl,$t1 -+ -+ addic. $len,$len,4 -+ beq Ldone_4x -+ -+ lvx_u $IN0,0,$inp -+ ${UCMP}i $len,2 -+ li $len,-4 -+ blt Lone -+ lvx_u $IN1,r8,$inp -+ beq Ltwo -+ -+Lthree: -+ lvx_u $IN2,r9,$inp -+ le?vperm $IN0,$IN0,$IN0,$lemask -+ le?vperm $IN1,$IN1,$IN1,$lemask -+ le?vperm $IN2,$IN2,$IN2,$lemask -+ -+ vxor $Xh,$IN0,$Xl -+ vmr $H4l,$H3l -+ vmr $H4, $H3 -+ vmr $H4h,$H3h -+ -+ vperm $t0,$IN1,$IN2,$loperm -+ vperm $t1,$IN1,$IN2,$hiperm -+ vpmsumd $Xm2,$IN1,$H2 # H^2.lo·Xi+1.hi+H^2.hi·Xi+1.lo -+ vpmsumd $Xm3,$IN2,$H # H.hi·Xi+2.lo +H.lo·Xi+2.hi -+ vpmsumd $Xl3,$t0,$H21l # H^2.lo·Xi+1.lo+H.lo·Xi+2.lo -+ vpmsumd $Xh3,$t1,$H21h # H^2.hi·Xi+1.hi+H.hi·Xi+2.hi -+ -+ vxor $Xm3,$Xm3,$Xm2 -+ b Ltail_4x -+ -+.align 4 -+Ltwo: -+ le?vperm $IN0,$IN0,$IN0,$lemask -+ le?vperm $IN1,$IN1,$IN1,$lemask -+ -+ vxor $Xh,$IN0,$Xl -+ vperm $t0,$zero,$IN1,$loperm -+ vperm $t1,$zero,$IN1,$hiperm -+ -+ vsldoi $H4l,$zero,$H2,8 -+ vmr $H4, $H2 -+ vsldoi $H4h,$H2,$zero,8 -+ -+ vpmsumd $Xl3,$t0, $H21l # H.lo·Xi+1.lo -+ vpmsumd $Xm3,$IN1,$H # H.hi·Xi+1.lo+H.lo·Xi+2.hi -+ vpmsumd $Xh3,$t1, $H21h # H.hi·Xi+1.hi -+ -+ b Ltail_4x -+ -+.align 4 -+Lone: -+ le?vperm $IN0,$IN0,$IN0,$lemask -+ -+ vsldoi $H4l,$zero,$H,8 -+ vmr $H4, $H -+ vsldoi $H4h,$H,$zero,8 -+ -+ vxor $Xh,$IN0,$Xl -+ vxor $Xl3,$Xl3,$Xl3 -+ vxor $Xm3,$Xm3,$Xm3 -+ vxor $Xh3,$Xh3,$Xh3 -+ -+ b Ltail_4x -+ -+Ldone_4x: -+ le?vperm $Xl,$Xl,$Xl,$lemask -+ stvx_u $Xl,0,$Xip # write out Xi -+ -+ li r10,`15+6*$SIZE_T` -+ li r11,`31+6*$SIZE_T` -+ mtspr 256,$vrsave -+ lvx v20,r10,$sp -+ addi r10,r10,32 -+ lvx v21,r11,$sp -+ addi r11,r11,32 -+ lvx v22,r10,$sp -+ addi r10,r10,32 -+ lvx v23,r11,$sp -+ addi r11,r11,32 -+ lvx v24,r10,$sp -+ addi r10,r10,32 -+ lvx v25,r11,$sp -+ addi r11,r11,32 -+ lvx v26,r10,$sp -+ addi r10,r10,32 -+ lvx v27,r11,$sp -+ addi r11,r11,32 -+ lvx v28,r10,$sp -+ addi r10,r10,32 -+ lvx v29,r11,$sp -+ addi r11,r11,32 -+ lvx v30,r10,$sp -+ lvx v31,r11,$sp -+ addi $sp,$sp,$FRAME -+ blr -+ .long 0 -+ .byte 0,12,0x04,0,0x80,0,4,0 -+ .long 0 -+___ -+} -+$code.=<<___; -+.size .gcm_ghash_p8,.-.gcm_ghash_p8 -+ -+.asciz "GHASH for PowerISA 2.07, CRYPTOGAMS by " -+.align 2 -+___ -+ -+foreach (split("\n",$code)) { -+ s/\`([^\`]*)\`/eval $1/geo; -+ -+ if ($flavour =~ /le$/o) { # little-endian -+ s/le\?//o or -+ s/be\?/#be#/o; -+ } else { -+ s/le\?/#le#/o or -+ s/be\?//o; -+ } -+ print $_,"\n"; -+} -+ -+close STDOUT or die "error closing STDOUT: $!"; # enforce flush -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc -@@ -233,6 +233,13 @@ void CRYPTO_ghash_init(gmult_func *out_m - *out_hash = gcm_ghash_neon; - return; - } -+#elif defined(GHASH_ASM_PPC64LE) -+ if (CRYPTO_is_PPC64LE_vcrypto_capable()) { -+ gcm_init_p8(out_table, H); -+ *out_mult = gcm_gmult_p8; -+ *out_hash = gcm_ghash_p8; -+ return; -+ } - #endif - - gcm_init_nohw(out_table, H); -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc -@@ -170,5 +170,15 @@ TEST(GCMTest, ABI) { - } - } - #endif -+ -+#if defined(GHASH_ASM_PPC64LE) -+ if (CRYPTO_is_PPC64LE_vcrypto_capable()) { -+ CHECK_ABI(gcm_init_p8, Htable, kH); -+ CHECK_ABI(gcm_gmult_p8, X, Htable); -+ for (size_t blocks : kBlockCounts) { -+ CHECK_ABI(gcm_ghash_p8, X, Htable, buf, 16 * blocks); -+ } -+ } -+#endif // GHASH_ASM_PPC64LE - } - #endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/rand/getrandom_fillin.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/rand/getrandom_fillin.h -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/rand/getrandom_fillin.h -@@ -30,6 +30,8 @@ - #define EXPECTED_NR_getrandom 278 - #elif defined(OPENSSL_ARM) - #define EXPECTED_NR_getrandom 384 -+#elif defined(OPENSSL_PPC64LE) -+#define EXPECTED_NR_getrandom 359 - #elif defined(OPENSSL_RISCV64) - #define EXPECTED_NR_getrandom 278 - #endif -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc -@@ -431,6 +431,11 @@ bcm_infallible BCM_rand_bytes_with_addit - // Take a read lock around accesses to |state->drbg|. This is needed to - // avoid returning bad entropy if we race with - // |rand_thread_state_clear_all|. -+ // -+ // This lock must be taken after any calls to |CRYPTO_sysrand| to avoid a -+ // bug on ppc64le. glibc may implement pthread locks by wrapping user code -+ // in a hardware transaction, but, on some older versions of glibc and the -+ // kernel, syscalls made with |syscall| did not abort the transaction. - CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock); - #endif - if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data, -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h -@@ -23,6 +23,16 @@ - extern "C" { - #endif - -+#if defined(OPENSSL_PPC64LE) -+// POWER has an intrinsics-based implementation of SHA-1 and thus the functions -+// normally defined in assembly are available even with |OPENSSL_NO_ASM| in -+// this case. -+#define SHA1_ASM_PPC64 -+void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *in, -+ size_t num_blocks); -+#endif -+ -+ - // Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is - // defined in assembly. - -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc -@@ -0,0 +1,369 @@ -+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.ccom) -+ * All rights reserved. -+ * -+ * This package is an SSL implementation written -+ * by Eric Young (eay@cryptsoft.ccom). -+ * The implementation was written so as to conform with Netscapes SSL. -+ * -+ * This library is free for commercial and non-commercial use as long as -+ * the following conditions are aheared to. The following conditions -+ * apply to all code found in this distribution, be it the RC4, RSA, -+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation -+ * included with this distribution is covered by the same copyright terms -+ * except that the holder is Tim Hudson (tjh@cryptsoft.ccom). -+ * -+ * Copyright remains Eric Young's, and as such any Copyright notices in -+ * the code are not to be removed. -+ * If this package is used in a product, Eric Young should be given attribution -+ * as the author of the parts of the library used. -+ * This can be in the form of a textual message at program startup or -+ * in documentation (online or textual) provided with the package. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * "This product includes cryptographic software written by -+ * Eric Young (eay@cryptsoft.ccom)" -+ * The word 'cryptographic' can be left out if the rouines from the library -+ * being used are not cryptographic related :-). -+ * 4. If you include any Windows specific code (or a derivative thereof) from -+ * the apps directory (application code) you must include an acknowledgement: -+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.ccom)" -+ * -+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * The licence and distribution terms for any publically available version or -+ * derivative of this code cannot be changed. i.e. this code cannot simply be -+ * copied and put under another distribution licence -+ * [including the GNU Public Licence.] */ -+ -+// Altivec-optimized SHA1 in C. This is tested on ppc64le only. -+// -+// References: -+// https://software.intel.ccom/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1 -+// http://arctic.org/~dean/crypto/sha1.html -+// -+// This code used the generic SHA-1 from OpenSSL as a basis and AltiVec -+// optimisations were added on top. -+ -+#include -+ -+#if defined(OPENSSL_PPC64LE) -+ -+#if defined(__cplusplus) -+extern "C" { -+#endif -+ -+#include -+ -+void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *data, size_t num); -+ -+static uint32_t rotate(uint32_t a, int n) { return (a << n) | (a >> (32 - n)); } -+ -+typedef vector unsigned int vec_uint32_t; -+typedef vector unsigned char vec_uint8_t; -+ -+// Vector constants -+static const vec_uint8_t k_swap_endianness = {3, 2, 1, 0, 7, 6, 5, 4, -+ 11, 10, 9, 8, 15, 14, 13, 12}; -+ -+// Shift amounts for byte and bit shifts and rotations -+static const vec_uint8_t k_4_bytes = {32, 32, 32, 32, 32, 32, 32, 32, -+ 32, 32, 32, 32, 32, 32, 32, 32}; -+static const vec_uint8_t k_12_bytes = {96, 96, 96, 96, 96, 96, 96, 96, -+ 96, 96, 96, 96, 96, 96, 96, 96}; -+ -+#define K_00_19 0x5a827999UL -+#define K_20_39 0x6ed9eba1UL -+#define K_40_59 0x8f1bbcdcUL -+#define K_60_79 0xca62c1d6UL -+ -+// Vector versions of the above. -+static const vec_uint32_t K_00_19_x_4 = {K_00_19, K_00_19, K_00_19, K_00_19}; -+static const vec_uint32_t K_20_39_x_4 = {K_20_39, K_20_39, K_20_39, K_20_39}; -+static const vec_uint32_t K_40_59_x_4 = {K_40_59, K_40_59, K_40_59, K_40_59}; -+static const vec_uint32_t K_60_79_x_4 = {K_60_79, K_60_79, K_60_79, K_60_79}; -+ -+// vector message scheduling: compute message schedule for round i..i+3 where i -+// is divisible by 4. We return the schedule w[i..i+3] as a vector. In -+// addition, we also precompute sum w[i..+3] and an additive constant K. This -+// is done to offload some computation of f() in the integer execution units. -+// -+// Byte shifting code below may not be correct for big-endian systems. -+static vec_uint32_t sched_00_15(vec_uint32_t *pre_added, const void *data, -+ vec_uint32_t k) { -+ const vector unsigned char unaligned_data = -+ vec_vsx_ld(0, (const unsigned char*) data); -+ const vec_uint32_t v = (vec_uint32_t) unaligned_data; -+ const vec_uint32_t w = vec_perm(v, v, k_swap_endianness); -+ vec_st(w + k, 0, pre_added); -+ return w; -+} -+ -+// Compute w[i..i+3] using these steps for i in [16, 20, 24, 28] -+// -+// w'[i ] = (w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16]) <<< 1 -+// w'[i+1] = (w[i-2] ^ w[i-7] ^ w[i-13] ^ w[i-15]) <<< 1 -+// w'[i+2] = (w[i-1] ^ w[i-6] ^ w[i-12] ^ w[i-14]) <<< 1 -+// w'[i+3] = ( 0 ^ w[i-5] ^ w[i-11] ^ w[i-13]) <<< 1 -+// -+// w[ i] = w'[ i] -+// w[i+1] = w'[i+1] -+// w[i+2] = w'[i+2] -+// w[i+3] = w'[i+3] ^ (w'[i] <<< 1) -+static vec_uint32_t sched_16_31(vec_uint32_t *pre_added, vec_uint32_t minus_4, -+ vec_uint32_t minus_8, vec_uint32_t minus_12, -+ vec_uint32_t minus_16, vec_uint32_t k) { -+ const vec_uint32_t minus_3 = vec_sro(minus_4, k_4_bytes); -+ const vec_uint32_t minus_14 = vec_sld((minus_12), (minus_16), 8); -+ const vec_uint32_t k_1_bit = vec_splat_u32(1); -+ const vec_uint32_t w_prime = -+ vec_rl(minus_3 ^ minus_8 ^ minus_14 ^ minus_16, k_1_bit); -+ const vec_uint32_t w = -+ w_prime ^ vec_rl(vec_slo(w_prime, k_12_bytes), k_1_bit); -+ vec_st(w + k, 0, pre_added); -+ return w; -+} -+ -+// Compute w[i..i+3] using this relation for i in [32, 36, 40 ... 76] -+// w[i] = (w[i-6] ^ w[i-16] ^ w[i-28] ^ w[i-32]), 2) <<< 2 -+static vec_uint32_t sched_32_79(vec_uint32_t *pre_added, vec_uint32_t minus_4, -+ vec_uint32_t minus_8, vec_uint32_t minus_16, -+ vec_uint32_t minus_28, vec_uint32_t minus_32, -+ vec_uint32_t k) { -+ const vec_uint32_t minus_6 = vec_sld(minus_4, minus_8, 8); -+ const vec_uint32_t k_2_bits = vec_splat_u32(2); -+ const vec_uint32_t w = -+ vec_rl(minus_6 ^ minus_16 ^ minus_28 ^ minus_32, k_2_bits); -+ vec_st(w + k, 0, pre_added); -+ return w; -+} -+ -+// As pointed out by Wei Dai , F() below can be simplified -+// to the code in F_00_19. Wei attributes these optimisations to Peter -+// Gutmann's SHS code, and he attributes it to Rich Schroeppel. #define -+// F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) I've just become aware of another -+// tweak to be made, again from Wei Dai, in F_40_59, (x&a)|(y&a) -> (x|y)&a -+#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d)) -+#define F_20_39(b, c, d) ((b) ^ (c) ^ (d)) -+#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d))) -+#define F_60_79(b, c, d) F_20_39(b, c, d) -+ -+// We pre-added the K constants during message scheduling. -+#define BODY_00_19(i, a, b, c, d, e, f) \ -+ do { \ -+ (f) = w[i] + (e) + rotate((a), 5) + F_00_19((b), (c), (d)); \ -+ (b) = rotate((b), 30); \ -+ } while (0) -+ -+#define BODY_20_39(i, a, b, c, d, e, f) \ -+ do { \ -+ (f) = w[i] + (e) + rotate((a), 5) + F_20_39((b), (c), (d)); \ -+ (b) = rotate((b), 30); \ -+ } while (0) -+ -+#define BODY_40_59(i, a, b, c, d, e, f) \ -+ do { \ -+ (f) = w[i] + (e) + rotate((a), 5) + F_40_59((b), (c), (d)); \ -+ (b) = rotate((b), 30); \ -+ } while (0) -+ -+#define BODY_60_79(i, a, b, c, d, e, f) \ -+ do { \ -+ (f) = w[i] + (e) + rotate((a), 5) + F_60_79((b), (c), (d)); \ -+ (b) = rotate((b), 30); \ -+ } while (0) -+ -+void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *data, size_t num) { -+ uint32_t A, B, C, D, E, T; -+ -+ A = state[0]; -+ B = state[1]; -+ C = state[2]; -+ D = state[3]; -+ E = state[4]; -+ -+ for (;;) { -+ vec_uint32_t vw[20]; -+ const uint32_t *w = (const uint32_t *)&vw; -+ -+ vec_uint32_t k = K_00_19_x_4; -+ const vec_uint32_t w0 = sched_00_15(vw + 0, data + 0, k); -+ BODY_00_19(0, A, B, C, D, E, T); -+ BODY_00_19(1, T, A, B, C, D, E); -+ BODY_00_19(2, E, T, A, B, C, D); -+ BODY_00_19(3, D, E, T, A, B, C); -+ -+ const vec_uint32_t w4 = sched_00_15(vw + 1, data + 16, k); -+ BODY_00_19(4, C, D, E, T, A, B); -+ BODY_00_19(5, B, C, D, E, T, A); -+ BODY_00_19(6, A, B, C, D, E, T); -+ BODY_00_19(7, T, A, B, C, D, E); -+ -+ const vec_uint32_t w8 = sched_00_15(vw + 2, data + 32, k); -+ BODY_00_19(8, E, T, A, B, C, D); -+ BODY_00_19(9, D, E, T, A, B, C); -+ BODY_00_19(10, C, D, E, T, A, B); -+ BODY_00_19(11, B, C, D, E, T, A); -+ -+ const vec_uint32_t w12 = sched_00_15(vw + 3, data + 48, k); -+ BODY_00_19(12, A, B, C, D, E, T); -+ BODY_00_19(13, T, A, B, C, D, E); -+ BODY_00_19(14, E, T, A, B, C, D); -+ BODY_00_19(15, D, E, T, A, B, C); -+ -+ const vec_uint32_t w16 = sched_16_31(vw + 4, w12, w8, w4, w0, k); -+ BODY_00_19(16, C, D, E, T, A, B); -+ BODY_00_19(17, B, C, D, E, T, A); -+ BODY_00_19(18, A, B, C, D, E, T); -+ BODY_00_19(19, T, A, B, C, D, E); -+ -+ k = K_20_39_x_4; -+ const vec_uint32_t w20 = sched_16_31(vw + 5, w16, w12, w8, w4, k); -+ BODY_20_39(20, E, T, A, B, C, D); -+ BODY_20_39(21, D, E, T, A, B, C); -+ BODY_20_39(22, C, D, E, T, A, B); -+ BODY_20_39(23, B, C, D, E, T, A); -+ -+ const vec_uint32_t w24 = sched_16_31(vw + 6, w20, w16, w12, w8, k); -+ BODY_20_39(24, A, B, C, D, E, T); -+ BODY_20_39(25, T, A, B, C, D, E); -+ BODY_20_39(26, E, T, A, B, C, D); -+ BODY_20_39(27, D, E, T, A, B, C); -+ -+ const vec_uint32_t w28 = sched_16_31(vw + 7, w24, w20, w16, w12, k); -+ BODY_20_39(28, C, D, E, T, A, B); -+ BODY_20_39(29, B, C, D, E, T, A); -+ BODY_20_39(30, A, B, C, D, E, T); -+ BODY_20_39(31, T, A, B, C, D, E); -+ -+ const vec_uint32_t w32 = sched_32_79(vw + 8, w28, w24, w16, w4, w0, k); -+ BODY_20_39(32, E, T, A, B, C, D); -+ BODY_20_39(33, D, E, T, A, B, C); -+ BODY_20_39(34, C, D, E, T, A, B); -+ BODY_20_39(35, B, C, D, E, T, A); -+ -+ const vec_uint32_t w36 = sched_32_79(vw + 9, w32, w28, w20, w8, w4, k); -+ BODY_20_39(36, A, B, C, D, E, T); -+ BODY_20_39(37, T, A, B, C, D, E); -+ BODY_20_39(38, E, T, A, B, C, D); -+ BODY_20_39(39, D, E, T, A, B, C); -+ -+ k = K_40_59_x_4; -+ const vec_uint32_t w40 = sched_32_79(vw + 10, w36, w32, w24, w12, w8, k); -+ BODY_40_59(40, C, D, E, T, A, B); -+ BODY_40_59(41, B, C, D, E, T, A); -+ BODY_40_59(42, A, B, C, D, E, T); -+ BODY_40_59(43, T, A, B, C, D, E); -+ -+ const vec_uint32_t w44 = sched_32_79(vw + 11, w40, w36, w28, w16, w12, k); -+ BODY_40_59(44, E, T, A, B, C, D); -+ BODY_40_59(45, D, E, T, A, B, C); -+ BODY_40_59(46, C, D, E, T, A, B); -+ BODY_40_59(47, B, C, D, E, T, A); -+ -+ const vec_uint32_t w48 = sched_32_79(vw + 12, w44, w40, w32, w20, w16, k); -+ BODY_40_59(48, A, B, C, D, E, T); -+ BODY_40_59(49, T, A, B, C, D, E); -+ BODY_40_59(50, E, T, A, B, C, D); -+ BODY_40_59(51, D, E, T, A, B, C); -+ -+ const vec_uint32_t w52 = sched_32_79(vw + 13, w48, w44, w36, w24, w20, k); -+ BODY_40_59(52, C, D, E, T, A, B); -+ BODY_40_59(53, B, C, D, E, T, A); -+ BODY_40_59(54, A, B, C, D, E, T); -+ BODY_40_59(55, T, A, B, C, D, E); -+ -+ const vec_uint32_t w56 = sched_32_79(vw + 14, w52, w48, w40, w28, w24, k); -+ BODY_40_59(56, E, T, A, B, C, D); -+ BODY_40_59(57, D, E, T, A, B, C); -+ BODY_40_59(58, C, D, E, T, A, B); -+ BODY_40_59(59, B, C, D, E, T, A); -+ -+ k = K_60_79_x_4; -+ const vec_uint32_t w60 = sched_32_79(vw + 15, w56, w52, w44, w32, w28, k); -+ BODY_60_79(60, A, B, C, D, E, T); -+ BODY_60_79(61, T, A, B, C, D, E); -+ BODY_60_79(62, E, T, A, B, C, D); -+ BODY_60_79(63, D, E, T, A, B, C); -+ -+ const vec_uint32_t w64 = sched_32_79(vw + 16, w60, w56, w48, w36, w32, k); -+ BODY_60_79(64, C, D, E, T, A, B); -+ BODY_60_79(65, B, C, D, E, T, A); -+ BODY_60_79(66, A, B, C, D, E, T); -+ BODY_60_79(67, T, A, B, C, D, E); -+ -+ const vec_uint32_t w68 = sched_32_79(vw + 17, w64, w60, w52, w40, w36, k); -+ BODY_60_79(68, E, T, A, B, C, D); -+ BODY_60_79(69, D, E, T, A, B, C); -+ BODY_60_79(70, C, D, E, T, A, B); -+ BODY_60_79(71, B, C, D, E, T, A); -+ -+ const vec_uint32_t w72 = sched_32_79(vw + 18, w68, w64, w56, w44, w40, k); -+ BODY_60_79(72, A, B, C, D, E, T); -+ BODY_60_79(73, T, A, B, C, D, E); -+ BODY_60_79(74, E, T, A, B, C, D); -+ BODY_60_79(75, D, E, T, A, B, C); -+ -+ // We don't use the last value -+ (void)sched_32_79(vw + 19, w72, w68, w60, w48, w44, k); -+ BODY_60_79(76, C, D, E, T, A, B); -+ BODY_60_79(77, B, C, D, E, T, A); -+ BODY_60_79(78, A, B, C, D, E, T); -+ BODY_60_79(79, T, A, B, C, D, E); -+ -+ const uint32_t mask = 0xffffffffUL; -+ state[0] = (state[0] + E) & mask; -+ state[1] = (state[1] + T) & mask; -+ state[2] = (state[2] + A) & mask; -+ state[3] = (state[3] + B) & mask; -+ state[4] = (state[4] + C) & mask; -+ -+ data += 64; -+ if (--num == 0) { -+ break; -+ } -+ -+ A = state[0]; -+ B = state[1]; -+ C = state[2]; -+ D = state[3]; -+ E = state[4]; -+ } -+} -+ -+#if defined(__cplusplus) -+} -+#endif -+ -+#endif // OPENSSL_PPC64LE -+ -+#undef K_00_19 -+#undef K_20_39 -+#undef K_40_59 -+#undef K_60_79 -+#undef F_00_19 -+#undef F_20_39 -+#undef F_40_59 -+#undef F_60_79 -+#undef BODY_00_19 -+#undef BODY_20_39 -+#undef BODY_40_59 -+#undef BODY_60_79 -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/internal.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/internal.h -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/internal.h -@@ -61,8 +61,9 @@ extern "C" { - #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ - (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ - defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) --// x86, x86_64, and the ARMs need to record the result of a cpuid/getauxval call --// for the asm to work correctly, unless compiled without asm code. -+// x86, x86_64, the ARMs, and ppc64le need to record the result of a -+// cpuid/getauxval call for the asm to work correctly, unless compiled without -+// asm code. - #define NEED_CPUID - - // OPENSSL_cpuid_setup initializes the platform-specific feature cache. This -@@ -1402,6 +1403,16 @@ inline int CRYPTO_is_ARMv8_SHA512_capabl - - #endif // OPENSSL_ARM || OPENSSL_AARCH64 - -+#if defined(OPENSSL_PPC64LE) -+ -+// CRYPTO_is_PPC64LE_vcrypto_capable returns true iff the current CPU supports -+// the Vector.AES category of instructions. -+int CRYPTO_is_PPC64LE_vcrypto_capable(void); -+ -+extern unsigned long OPENSSL_ppc64le_hwcap2; -+ -+#endif // OPENSSL_PPC64LE -+ - #if defined(BORINGSSL_DISPATCH_TEST) - // Runtime CPU dispatch testing support - -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl -@@ -0,0 +1,320 @@ -+#! /usr/bin/env perl -+# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. -+# -+# Licensed under the OpenSSL license (the "License"). You may not use -+# this file except in compliance with the License. You can obtain a copy -+# in the file LICENSE in the source distribution or at -+# https://www.openssl.org/source/license.html -+ -+my $flavour = shift; -+my $output = shift; -+open STDOUT,">$output" || die "can't open $output: $!"; -+ -+my %GLOBALS; -+my %TYPES; -+my $dotinlocallabels=($flavour=~/linux/)?1:0; -+ -+################################################################ -+# directives which need special treatment on different platforms -+################################################################ -+my $type = sub { -+ my ($dir,$name,$type) = @_; -+ -+ $TYPES{$name} = $type; -+ if ($flavour =~ /linux/) { -+ $name =~ s|^\.||; -+ ".type $name,$type"; -+ } else { -+ ""; -+ } -+}; -+my $globl = sub { -+ my $junk = shift; -+ my $name = shift; -+ my $global = \$GLOBALS{$name}; -+ my $type = \$TYPES{$name}; -+ my $ret; -+ -+ $name =~ s|^\.||; -+ -+ SWITCH: for ($flavour) { -+ /aix/ && do { if (!$$type) { -+ $$type = "\@function"; -+ } -+ if ($$type =~ /function/) { -+ $name = ".$name"; -+ } -+ last; -+ }; -+ /osx/ && do { $name = "_$name"; -+ last; -+ }; -+ /linux.*(32|64le)/ -+ && do { $ret .= ".globl $name"; -+ if (!$$type) { -+ $ret .= "\n.type $name,\@function"; -+ $$type = "\@function"; -+ } -+ last; -+ }; -+ /linux.*64/ && do { $ret .= ".globl $name"; -+ if (!$$type) { -+ $ret .= "\n.type $name,\@function"; -+ $$type = "\@function"; -+ } -+ if ($$type =~ /function/) { -+ $ret .= "\n.section \".opd\",\"aw\""; -+ $ret .= "\n.align 3"; -+ $ret .= "\n$name:"; -+ $ret .= "\n.quad .$name,.TOC.\@tocbase,0"; -+ $ret .= "\n.previous"; -+ $name = ".$name"; -+ } -+ last; -+ }; -+ } -+ -+ $ret = ".globl $name" if (!$ret); -+ $$global = $name; -+ $ret; -+}; -+my $text = sub { -+ my $ret = ($flavour =~ /aix/) ? ".ccsect\t.text[PR],7" : ".text"; -+ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/); -+ $ret; -+}; -+my $machine = sub { -+ my $junk = shift; -+ my $arch = shift; -+ if ($flavour =~ /osx/) -+ { $arch =~ s/\"//g; -+ $arch = ($flavour=~/64/) ? "ppc970-64" : "ppc970" if ($arch eq "any"); -+ } -+ ".machine $arch"; -+}; -+my $size = sub { -+ if ($flavour =~ /linux/) -+ { shift; -+ my $name = shift; -+ my $real = $GLOBALS{$name} ? \$GLOBALS{$name} : \$name; -+ my $ret = ".size $$real,.-$$real"; -+ $name =~ s|^\.||; -+ if ($$real ne $name) { -+ $ret .= "\n.size $name,.-$$real"; -+ } -+ $ret; -+ } -+ else -+ { ""; } -+}; -+my $asciz = sub { -+ shift; -+ my $line = join(",",@_); -+ if ($line =~ /^"(.*)"$/) -+ { ".byte " . join(",",unpack("C*",$1),0) . "\n.align 2"; } -+ else -+ { ""; } -+}; -+my $quad = sub { -+ shift; -+ my @ret; -+ my ($hi,$lo); -+ for (@_) { -+ if (/^0x([0-9a-f]*?)([0-9a-f]{1,8})$/io) -+ { $hi=$1?"0x$1":"0"; $lo="0x$2"; } -+ elsif (/^([0-9]+)$/o) -+ { $hi=$1>>32; $lo=$1&0xffffffff; } # error-prone with 32-bit perl -+ else -+ { $hi=undef; $lo=$_; } -+ -+ if (defined($hi)) -+ { push(@ret,$flavour=~/le$/o?".long\t$lo,$hi":".long\t$hi,$lo"); } -+ else -+ { push(@ret,".quad $lo"); } -+ } -+ join("\n",@ret); -+}; -+ -+################################################################ -+# simplified mnemonics not handled by at least one assembler -+################################################################ -+my $cmplw = sub { -+ my $f = shift; -+ my $cr = 0; $cr = shift if ($#_>1); -+ # Some out-of-date 32-bit GNU assembler just can't handle cmplw... -+ ($flavour =~ /linux.*32/) ? -+ " .long ".sprintf "0x%x",31<<26|$cr<<23|$_[0]<<16|$_[1]<<11|64 : -+ " cmplw ".join(',',$cr,@_); -+}; -+my $bdnz = sub { -+ my $f = shift; -+ my $bo = $f=~/[\+\-]/ ? 16+9 : 16; # optional "to be taken" hint -+ " bc $bo,0,".shift; -+} if ($flavour!~/linux/); -+my $bltlr = sub { -+ my $f = shift; -+ my $bo = $f=~/\-/ ? 12+2 : 12; # optional "not to be taken" hint -+ ($flavour =~ /linux/) ? # GNU as doesn't allow most recent hints -+ " .long ".sprintf "0x%x",19<<26|$bo<<21|16<<1 : -+ " bclr $bo,0"; -+}; -+my $bnelr = sub { -+ my $f = shift; -+ my $bo = $f=~/\-/ ? 4+2 : 4; # optional "not to be taken" hint -+ ($flavour =~ /linux/) ? # GNU as doesn't allow most recent hints -+ " .long ".sprintf "0x%x",19<<26|$bo<<21|2<<16|16<<1 : -+ " bclr $bo,2"; -+}; -+my $beqlr = sub { -+ my $f = shift; -+ my $bo = $f=~/-/ ? 12+2 : 12; # optional "not to be taken" hint -+ ($flavour =~ /linux/) ? # GNU as doesn't allow most recent hints -+ " .long ".sprintf "0x%X",19<<26|$bo<<21|2<<16|16<<1 : -+ " bclr $bo,2"; -+}; -+# GNU assembler can't handle extrdi rA,rS,16,48, or when sum of last two -+# arguments is 64, with "operand out of range" error. -+my $extrdi = sub { -+ my ($f,$ra,$rs,$n,$b) = @_; -+ $b = ($b+$n)&63; $n = 64-$n; -+ " rldicl $ra,$rs,$b,$n"; -+}; -+my $vmr = sub { -+ my ($f,$vx,$vy) = @_; -+ " vor $vx,$vy,$vy"; -+}; -+ -+# Some ABIs specify vrsave, special-purpose register #256, as reserved -+# for system use. -+my $no_vrsave = ($flavour =~ /aix|linux64le/); -+my $mtspr = sub { -+ my ($f,$idx,$ra) = @_; -+ if ($idx == 256 && $no_vrsave) { -+ " or $ra,$ra,$ra"; -+ } else { -+ " mtspr $idx,$ra"; -+ } -+}; -+my $mfspr = sub { -+ my ($f,$rd,$idx) = @_; -+ if ($idx == 256 && $no_vrsave) { -+ " li $rd,-1"; -+ } else { -+ " mfspr $rd,$idx"; -+ } -+}; -+ -+# PowerISA 2.06 stuff -+sub vsxmem_op { -+ my ($f, $vrt, $ra, $rb, $op) = @_; -+ " .long ".sprintf "0x%X",(31<<26)|($vrt<<21)|($ra<<16)|($rb<<11)|($op*2+1); -+} -+# made-up unaligned memory reference AltiVec/VMX instructions -+my $lvx_u = sub { vsxmem_op(@_, 844); }; # lxvd2x -+my $stvx_u = sub { vsxmem_op(@_, 972); }; # stxvd2x -+my $lvdx_u = sub { vsxmem_op(@_, 588); }; # lxsdx -+my $stvdx_u = sub { vsxmem_op(@_, 716); }; # stxsdx -+my $lvx_4w = sub { vsxmem_op(@_, 780); }; # lxvw4x -+my $stvx_4w = sub { vsxmem_op(@_, 908); }; # stxvw4x -+ -+# PowerISA 2.07 stuff -+sub vcrypto_op { -+ my ($f, $vrt, $vra, $vrb, $op) = @_; -+ " .long ".sprintf "0x%X",(4<<26)|($vrt<<21)|($vra<<16)|($vrb<<11)|$op; -+} -+my $vcipher = sub { vcrypto_op(@_, 1288); }; -+my $vcipherlast = sub { vcrypto_op(@_, 1289); }; -+my $vncipher = sub { vcrypto_op(@_, 1352); }; -+my $vncipherlast= sub { vcrypto_op(@_, 1353); }; -+my $vsbox = sub { vcrypto_op(@_, 0, 1480); }; -+my $vshasigmad = sub { my ($st,$six)=splice(@_,-2); vcrypto_op(@_, $st<<4|$six, 1730); }; -+my $vshasigmaw = sub { my ($st,$six)=splice(@_,-2); vcrypto_op(@_, $st<<4|$six, 1666); }; -+my $vpmsumb = sub { vcrypto_op(@_, 1032); }; -+my $vpmsumd = sub { vcrypto_op(@_, 1224); }; -+my $vpmsubh = sub { vcrypto_op(@_, 1096); }; -+my $vpmsumw = sub { vcrypto_op(@_, 1160); }; -+my $vaddudm = sub { vcrypto_op(@_, 192); }; -+ -+my $mtsle = sub { -+ my ($f, $arg) = @_; -+ " .long ".sprintf "0x%X",(31<<26)|($arg<<21)|(147*2); -+}; -+ -+# PowerISA 3.0 stuff -+my $maddhdu = sub { -+ my ($f, $rt, $ra, $rb, $rc) = @_; -+ " .long ".sprintf "0x%X",(4<<26)|($rt<<21)|($ra<<16)|($rb<<11)|($rc<<6)|49; -+}; -+my $maddld = sub { -+ my ($f, $rt, $ra, $rb, $rc) = @_; -+ " .long ".sprintf "0x%X",(4<<26)|($rt<<21)|($ra<<16)|($rb<<11)|($rc<<6)|51; -+}; -+ -+my $darn = sub { -+ my ($f, $rt, $l) = @_; -+ " .long ".sprintf "0x%X",(31<<26)|($rt<<21)|($l<<16)|(755<<1); -+}; -+ -+print <<___; -+// This file is generated from a similarly-named Perl script in the BoringSSL -+// source tree. Do not edit by hand. -+ -+#if defined(__has_feature) -+#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -+#define OPENSSL_NO_ASM -+#endif -+#endif -+ -+#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) -+___ -+ -+while($line=<>) { -+ -+ $line =~ s|[#!;].*$||; # get rid of asm-style comments... -+ $line =~ s|/\*.*\*/||; # ... and C-style comments... -+ $line =~ s|^\s+||; # ... and skip white spaces in beginning... -+ $line =~ s|\s+$||; # ... and at the end -+ -+ { -+ $line =~ s|\.L(\w+)|L$1|g; # common denominator for Locallabel -+ $line =~ s|\bL(\w+)|\.L$1|g if ($dotinlocallabels); -+ } -+ -+ { -+ $line =~ s|(^[\.\w]+)\:\s*||; -+ my $label = $1; -+ if ($label) { -+ my $xlated = ($GLOBALS{$label} or $label); -+ print "$xlated:"; -+ if ($flavour =~ /linux.*64le/) { -+ if ($TYPES{$label} =~ /function/) { -+ printf "\n.localentry %s,0\n",$xlated; -+ } -+ } -+ } -+ } -+ -+ { -+ $line =~ s|^\s*(\.?)(\w+)([\.\+\-]?)\s*||; -+ my $c = $1; $c = "\t" if ($c eq ""); -+ my $mnemonic = $2; -+ my $f = $3; -+ my $opcode = eval("\$$mnemonic"); -+ $line =~ s/\b(c?[rf]|v|vs)([0-9]+)\b/$2/g if ($c ne "." and $flavour !~ /osx/); -+ if (ref($opcode) eq 'CODE') { $line = &$opcode($f,split(',',$line)); } -+ elsif ($mnemonic) { $line = $c.$mnemonic.$f."\t".$line; } -+ } -+ -+ print $line if ($line); -+ print "\n"; -+} -+ -+print <<___; -+#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ -+#if defined(__ELF__) -+// See https://www.airs.ccom/blog/archives/518. -+.section .note.GNU-stack,"",\%progbits -+#endif -+___ -+ -+close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl -@@ -0,0 +1,262 @@ -+#!/usr/bin/env perl -+# Copyright (c) 2019, Google Inc. -+# -+# Permission to use, copy, modify, and/or distribute this software for any -+# purpose with or without fee is hereby granted, provided that the above -+# copyright notice and this permission notice appear in all copies. -+# -+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ -+# This file defines helper functions for crypto/test/abi_test.h on ppc64le. See -+# that header for details on how to use this. -+# -+# For convenience, this file is linked into libcrypto, where consuming builds -+# already support architecture-specific sources. The static linker should drop -+# this code in non-test binaries. This includes a shared library build of -+# libcrypto, provided --gc-sections or equivalent is used. -+# -+# References: -+# -+# ELFv2: http://openpowerfoundation.org/wp-content/uploads/resources/leabi/leabi-20170510.pdf -+ -+use strict; -+ -+my $flavour = shift; -+my $output = shift; -+if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } -+ -+$0 =~ m/(.*[\/\\])[^\/\\]+$/; -+my $dir = $1; -+my $xlate; -+( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or -+( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or -+die "can't locate ppc-xlate.pl"; -+ -+open OUT, "| \"$^X\" \"$xlate\" $flavour \"$output\""; -+*STDOUT = *OUT; -+ -+unless ($flavour =~ /linux.*64le/) { -+ die "This file only supports the ELFv2 ABI, used by ppc64le"; -+} -+ -+my $code = ""; -+ -+sub load_or_store_regs { -+ # $op is "l" or "st". -+ my ($op, $base_reg, $base_offset) = @_; -+ # Vector registers. -+ foreach (20..31) { -+ my $offset = $base_offset + ($_ - 20) * 16; -+ # Vector registers only support indexed register addressing. -+ $code .= "\tli\tr11, $offset\n"; -+ $code .= "\t${op}vx\tv$_, r11, $base_reg\n"; -+ } -+ # Save general registers. -+ foreach (14..31) { -+ my $offset = $base_offset + 192 + ($_ - 14) * 8; -+ $code .= "\t${op}d\tr$_, $offset($base_reg)\n"; -+ } -+ # Save floating point registers. -+ foreach (14..31) { -+ my $offset = $base_offset + 336 + ($_ - 14) * 8; -+ $code .= "\t${op}fd\tf$_, $offset($base_reg)\n"; -+ } -+} -+ -+sub load_regs { -+ my ($base_reg, $base_offset) = @_; -+ load_or_store_regs("l", $base_reg, $base_offset); -+} -+ -+sub store_regs { -+ my ($base_reg, $base_offset) = @_; -+ load_or_store_regs("st", $base_reg, $base_offset); -+} -+ -+my ($func, $state, $argv, $argc) = ("r3", "r4", "r5", "r6"); -+$code .= <<____; -+.machine "any" -+.text -+ -+# abi_test_trampoline loads callee-saved registers from |state|, calls |func| -+# with |argv|, then saves the callee-saved registers into |state|. It returns -+# the result of |func|. The |unwind| argument is unused. -+# uint64_t abi_test_trampoline(void (*func)(...), CallerState *state, -+# const uint64_t *argv, size_t argc, -+# uint64_t unwind); -+.globl abi_test_trampoline -+.align 5 -+abi_test_trampoline: -+ # LR is saved into the caller's stack frame. -+ mflr r0 -+ std r0, 16(r1) -+ -+ # Allocate 66*8 = 528 bytes of stack frame. From the top of the stack -+ # to the bottom, the stack frame is: -+ # -+ # 0(r1) - Back chain pointer -+ # 8(r1) - CR save area -+ # 16(r1) - LR save area (for |func|) -+ # 24(r1) - TOC pointer save area -+ # 32(r1) - Saved copy of |state| -+ # 40(r1) - Padding -+ # 48(r1) - Vector register save area (v20-v31, 12 registers) -+ # 240(r1) - General register save area (r14-r31, 18 registers) -+ # 384(r1) - Floating point register save area (f14-f31, 18 registers) -+ # -+ # Note the layouts of the register save areas and CallerState match. -+ # -+ # In the ELFv2 ABI, the parameter save area is optional if the function -+ # is non-variadic and all parameters fit in registers. We only support -+ # such functions, so we omit it to test that |func| does not rely on it. -+ stdu r1, -528(r1) -+ -+ mfcr r0 -+ std r0, 8(r1) # Save CR -+ std r2, 24(r1) # Save TOC -+ std $state, 32(r1) # Save |state| -+____ -+# Save registers to the stack. -+store_regs("r1", 48); -+# Load registers from the caller. -+load_regs($state, 0); -+$code .= <<____; -+ # Load CR from |state|. -+ ld r0, 480($state) -+ mtcr r0 -+ -+ # Move parameters into temporary registers so they are not clobbered. -+ addi r11, $argv, -8 # Adjust for ldu below -+ mr r12, $func -+ -+ # Load parameters into registers. -+ cmpdi $argc, 0 -+ beq .Largs_done -+ mtctr $argc -+ ldu r3, 8(r11) -+ bdz .Largs_done -+ ldu r4, 8(r11) -+ bdz .Largs_done -+ ldu r5, 8(r11) -+ bdz .Largs_done -+ ldu r6, 8(r11) -+ bdz .Largs_done -+ ldu r7, 8(r11) -+ bdz .Largs_done -+ ldu r8, 8(r11) -+ bdz .Largs_done -+ ldu r9, 8(r11) -+ bdz .Largs_done -+ ldu r10, 8(r11) -+ -+.Largs_done: -+ li r2, 0 # Clear TOC to test |func|'s global entry point -+ mtctr r12 -+ bctrl -+ ld r2, 24(r1) # Restore TOC -+ -+ ld $state, 32(r1) # Reload |state| -+____ -+# Output resulting registers to the caller. -+store_regs($state, 0); -+# Restore registers from the stack. -+load_regs("r1", 48); -+$code .= <<____; -+ mfcr r0 -+ std r0, 480($state) # Output CR to caller -+ ld r0, 8(r1) -+ mtcrf 0b00111000, r0 # Restore CR2-CR4 -+ addi r1, r1, 528 -+ ld r0, 16(r1) # Restore LR -+ mtlr r0 -+ blr -+.size abi_test_trampoline,.-abi_test_trampoline -+____ -+ -+# abi_test_clobber_* clobbers the corresponding register. These are used to test -+# the ABI-testing framework. -+foreach (0..31) { -+ # r1 is the stack pointer. r13 is the thread pointer. -+ next if ($_ == 1 || $_ == 13); -+ $code .= <<____; -+.globl abi_test_clobber_r$_ -+.align 5 -+abi_test_clobber_r$_: -+ li r$_, 0 -+ blr -+.size abi_test_clobber_r$_,.-abi_test_clobber_r$_ -+____ -+} -+ -+foreach (0..31) { -+ $code .= <<____; -+.globl abi_test_clobber_f$_ -+.align 4 -+abi_test_clobber_f$_: -+ li r0, 0 -+ # Use the red zone. -+ std r0, -8(r1) -+ lfd f$_, -8(r1) -+ blr -+.size abi_test_clobber_f$_,.-abi_test_clobber_f$_ -+____ -+} -+ -+foreach (0..31) { -+ $code .= <<____; -+.globl abi_test_clobber_v$_ -+.align 4 -+abi_test_clobber_v$_: -+ vxor v$_, v$_, v$_ -+ blr -+.size abi_test_clobber_v$_,.-abi_test_clobber_v$_ -+____ -+} -+ -+foreach (0..7) { -+ # PPC orders CR fields in big-endian, so the mask is reversed from what one -+ # would expect. -+ my $mask = 1 << (7 - $_); -+ $code .= <<____; -+.globl abi_test_clobber_cr$_ -+.align 4 -+abi_test_clobber_cr$_: -+ # Flip the bits on cr$_ rather than setting to zero. With a four-bit -+ # register, zeroing it will do nothing 1 in 16 times. -+ mfcr r0 -+ not r0, r0 -+ mtcrf $mask, r0 -+ blr -+.size abi_test_clobber_cr$_,.-abi_test_clobber_cr$_ -+____ -+} -+ -+$code .= <<____; -+.globl abi_test_clobber_ctr -+.align 4 -+abi_test_clobber_ctr: -+ li r0, 0 -+ mtctr r0 -+ blr -+.size abi_test_clobber_ctr,.-abi_test_clobber_ctr -+ -+.globl abi_test_clobber_lr -+.align 4 -+abi_test_clobber_lr: -+ mflr r0 -+ mtctr r0 -+ li r0, 0 -+ mtlr r0 -+ bctr -+.size abi_test_clobber_lr,.-abi_test_clobber_lr -+ -+____ -+ -+print $code; -+close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-134.0.6998.35/third_party/boringssl/src/include/openssl/target.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/include/openssl/target.h -+++ chromium-134.0.6998.35/third_party/boringssl/src/include/openssl/target.h -@@ -34,6 +34,9 @@ - #elif defined(__ARMEL__) || defined(_M_ARM) - #define OPENSSL_32_BIT - #define OPENSSL_ARM -+#elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN) -+#define OPENSSL_64_BIT -+#define OPENSSL_PPC64LE - #elif defined(__MIPSEL__) && !defined(__LP64__) - #define OPENSSL_32_BIT - #define OPENSSL_MIPS -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc -@@ -35,6 +35,8 @@ int main(int argc, char **argv) { - puts("ARM (32-bit)"); - #elif defined(OPENSSL_AARCH64) - puts("aarch64 (64-bit)"); -+#elif defined(OPENSSL_PPC64LE) -+ puts("PPC64LE (64-bit)"); - #else - #error "FIPS build not supported on this architecture" - #endif -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.go -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.go -@@ -54,7 +54,8 @@ type stringWriter interface { - type processorType int - - const ( -- x86_64 processorType = iota + 1 -+ ppc64le processorType = iota + 1 -+ x86_64 - aarch64 - ) - -@@ -67,6 +68,8 @@ type delocation struct { - - // symbols is the set of symbols defined in the module. - symbols map[string]struct{} -+ // localEntrySymbols is the set of symbols with .localentry directives. -+ localEntrySymbols map[string]struct{} - // redirectors maps from out-call symbol name to the name of a - // redirector function for that symbol. E.g. “memcpy” -> - // “bcm_redirector_memcpy”. -@@ -75,6 +78,9 @@ type delocation struct { - // should be used to reference it. E.g. “P384_data_storage” -> - // “P384_data_storage”. - bssAccessorsNeeded map[string]string -+ // tocLoaders is a set of symbol names for which TOC helper functions -+ // are required. (ppc64le only.) -+ tocLoaders map[string]struct{} - // gotExternalsNeeded is a set of symbol names for which we need - // “delta” symbols: symbols that contain the offset from their location - // to the memory in question. -@@ -151,6 +157,8 @@ func (d *delocation) processInput(input - switch d.processor { - case x86_64: - statement, err = d.processIntelInstruction(statement, node.up) -+ case ppc64le: -+ statement, err = d.processPPCInstruction(statement, node.up) - case aarch64: - statement, err = d.processAarch64Instruction(statement, node.up) - default: -@@ -247,7 +255,7 @@ func (d *delocation) processDirective(st - d.writeNode(statement) - break - -- case ".debug", ".note": -+ case ".debug", ".note", ".toc": - d.writeNode(statement) - break - -@@ -336,6 +344,10 @@ func (d *delocation) processLabelContain - d.output.WriteString("\t" + name + "\t" + strings.Join(args, ", ") + "\n") - } - -+ if name == ".localentry" { -+ d.output.WriteString(localEntryName(args[0]) + ":\n") -+ } -+ - return statement, nil - } - -@@ -659,6 +671,191 @@ func (d *delocation) processAarch64Instr - return statement, nil - } - -+/* ppc64le -+ -+[PABI]: “64-Bit ELF V2 ABI Specification. Power Architecture.” March 21st, -+ 2017 -+ -+(Also useful is “Power ISA Version 2.07 B”. Note that version three of that -+document is /not/ good as that's POWER9 specific.) -+ -+ppc64le doesn't have IP-relative addressing and does a lot to work around this. -+Rather than reference a PLT and GOT direction, it has a single structure called -+the TOC (Table Of Contents). Within the TOC is the contents of .rodata, .data, -+.got, .plt, .bss, etc sections [PABI;3.3]. -+ -+A pointer to the TOC is maintained in r2 and the following pattern is used to -+load the address of an element into a register: -+ -+ addis
, 2, foo@toc@ha -+ addi
,
, foo@toc@l -+ -+The “addis” instruction shifts a signed constant left 16 bits and adds the -+result to its second argument, saving the result in the first argument. The -+“addi” instruction does the same, but without shifting. Thus the “@toc@ha" -+suffix on a symbol means “the top 16 bits of the TOC offset” and “@toc@l” means -+“the bottom 16 bits of the offset”. However, note that both values are signed, -+thus offsets in the top half of a 64KB chunk will have an @ha value that's one -+greater than expected and a negative @l value. -+ -+The TOC is specific to a “module” (basically an executable or shared object). -+This means that there's not a single TOC in a process and that r2 needs to -+change as control moves between modules. Thus functions have two entry points: -+the “global” entry point and the “local” entry point. Jumps from within the -+same module can use the local entry while jumps from other modules must use the -+global entry. The global entry establishes the correct value of r2 before -+running the function and the local entry skips that code. -+ -+The global entry point for a function is defined by its label. The local entry -+is a power-of-two number of bytes from the global entry, set by the -+“.localentry” directive. (ppc64le instructions are always 32 bits, so an offset -+of 1 or 2 bytes is treated as an offset of zero.) -+ -+In order to help the global entry code set r2 to point to the local TOC, r12 is -+set to the address of the global entry point when called [PABI;2.2.1.1]. Thus -+the global entry will typically use an addis+addi pair to add a known offset to -+r12 and store it in r2. For example: -+ -+foo: -+ addis 2, 12, .TOC. - foo@ha -+ addi 2, 2, .TOC. - foo@l -+ -+(It's worth noting that the '@' operator binds very loosely, so the 3rd -+arguments parse as (.TOC. - foo)@ha and (.TOC. - foo)@l.) -+ -+When calling a function, the compiler doesn't know whether that function is in -+the same module or not. Thus it doesn't know whether r12 needs to be set nor -+whether r2 will be clobbered on return. Rather than always assume the worst, -+the linker fixes stuff up once it knows that a call is going out of module: -+ -+Firstly, calling, say, memcpy (which we assume to be in a different module) -+won't actually jump directly to memcpy, or even a PLT resolution function. -+It'll call a synthesised function that: -+ a) saves r2 in the caller's stack frame -+ b) loads the address of memcpy@PLT into r12 -+ c) jumps to r12. -+ -+As this synthesised function loads memcpy@PLT, a call to memcpy from the -+compiled code just references “memcpy” directly, not “memcpy@PLT”. -+ -+Since it jumps directly to memcpy@PLT, it can't restore r2 on return. Thus -+calls must be followed by a nop. If the call ends up going out-of-module, the -+linker will rewrite that nop to load r2 from the stack. -+ -+Speaking of the stack, the stack pointer is kept in r1 and there's a 288-byte -+red-zone. The format of the stack frame is defined [PABI;2.2.2] and must be -+followed as called functions will write into their parent's stack frame. For -+example, the synthesised out-of-module trampolines will save r2 24 bytes into -+the caller's frame and all non-leaf functions save the return address 16 bytes -+into the caller's frame. -+ -+A final point worth noting: some RISC ISAs have r0 wired to zero: all reads -+result in zero and all writes are discarded. POWER does something a little like -+that, but r0 is only special in certain argument positions for certain -+instructions. You just have to read the manual to know which they are. -+ -+ -+Delocation is easier than Intel because there's just TOC references, but it's -+also harder because there's no IP-relative addressing. -+ -+Jumps are IP-relative however, and have a 24-bit immediate value. So we can -+jump to functions that set a register to the needed value. (r3 is the -+return-value register and so that's what is generally used here.) */ -+ -+// isPPC64LEAPair recognises an addis+addi pair that's adding the offset of -+// source to relative and writing the result to target. -+func (d *delocation) isPPC64LEAPair(statement *node32) (target, source, relative string, ok bool) { -+ instruction := skipWS(statement.up).up -+ assertNodeType(instruction, ruleInstructionName) -+ name1 := d.ccontents(instruction) -+ args1 := instructionArgs(instruction.next) -+ -+ statement = statement.next -+ instruction = skipWS(statement.up).up -+ assertNodeType(instruction, ruleInstructionName) -+ name2 := d.ccontents(instruction) -+ args2 := instructionArgs(instruction.next) -+ -+ if name1 != "addis" || -+ len(args1) != 3 || -+ name2 != "addi" || -+ len(args2) != 3 { -+ return "", "", "", false -+ } -+ -+ target = d.ccontents(args1[0]) -+ relative = d.ccontents(args1[1]) -+ source1 := d.ccontents(args1[2]) -+ source2 := d.ccontents(args2[2]) -+ -+ if !strings.HasSuffix(source1, "@ha") || -+ !strings.HasSuffix(source2, "@l") || -+ source1[:len(source1)-3] != source2[:len(source2)-2] || -+ d.ccontents(args2[0]) != target || -+ d.ccontents(args2[1]) != target { -+ return "", "", "", false -+ } -+ -+ source = source1[:len(source1)-3] -+ ok = true -+ return -+} -+ -+// establishTOC writes the global entry prelude for a function. The standard -+// prelude involves relocations so this version moves the relocation outside -+// the integrity-checked area. -+func establishTOC(w stringWriter) { -+ w.WriteString("999:\n") -+ w.WriteString("\taddis 2, 12, .LBORINGSSL_external_toc-999b@ha\n") -+ w.WriteString("\taddi 2, 2, .LBORINGSSL_external_toc-999b@l\n") -+ w.WriteString("\tld 12, 0(2)\n") -+ w.WriteString("\tadd 2, 2, 12\n") -+} -+ -+// loadTOCFuncName returns the name of a synthesized function that sets r3 to -+// the value of “symbol+offset”. -+func loadTOCFuncName(symbol, offset string) string { -+ symbol = strings.Replace(symbol, ".", "_dot_", -1) -+ ret := ".Lbcm_loadtoc_" + symbol -+ if len(offset) != 0 { -+ offset = strings.Replace(offset, "+", "_plus_", -1) -+ offset = strings.Replace(offset, "-", "_minus_", -1) -+ ret += "_" + offset -+ } -+ return ret -+} -+ -+func (d *delocation) loadFromTOC(w stringWriter, symbol, offset, dest string) wrapperFunc { -+ d.tocLoaders[symbol+"\x00"+offset] = struct{}{} -+ -+ return func(k func()) { -+ w.WriteString("\taddi 1, 1, -288\n") // Clear the red zone. -+ w.WriteString("\tmflr " + dest + "\n") // Stash the link register. -+ w.WriteString("\tstd " + dest + ", -8(1)\n") -+ // The TOC loader will use r3, so stash it if necessary. -+ if dest != "3" { -+ w.WriteString("\tstd 3, -16(1)\n") -+ } -+ -+ // Because loadTOCFuncName returns a “.L” name, we don't need a -+ // nop after this call. -+ w.WriteString("\tbl " + loadTOCFuncName(symbol, offset) + "\n") -+ -+ // Cycle registers around. We need r3 -> destReg, -8(1) -> -+ // lr and, optionally, -16(1) -> r3. -+ w.WriteString("\tstd 3, -24(1)\n") -+ w.WriteString("\tld 3, -8(1)\n") -+ w.WriteString("\tmtlr 3\n") -+ w.WriteString("\tld " + dest + ", -24(1)\n") -+ if dest != "3" { -+ w.WriteString("\tld 3, -16(1)\n") -+ } -+ w.WriteString("\taddi 1, 1, 288\n") -+ -+ k() -+ } -+} -+ - func (d *delocation) gatherOffsets(symRef *node32, offsets string) (*node32, string) { - for symRef != nil && symRef.pegRule == ruleOffset { - offset := d.contents(symRef) -@@ -713,6 +910,215 @@ func (d *delocation) parseMemRef(memRef - return - } - -+func (d *delocation) processPPCInstruction(statement, instruction *node32) (*node32, error) { -+ assertNodeType(instruction, ruleInstructionName) -+ instructionName := d.ccontents(instruction) -+ isBranch := instructionName[0] == 'b' -+ -+ argNodes := instructionArgs(instruction.next) -+ -+ var wrappers wrapperStack -+ var args []string -+ changed := false -+ -+Args: -+ for i, arg := range argNodes { -+ fullArg := arg -+ isIndirect := false -+ -+ if arg.pegRule == ruleIndirectionIndicator { -+ arg = arg.next -+ isIndirect = true -+ } -+ -+ switch arg.pegRule { -+ case ruleRegisterOrConstant, ruleLocalLabelRef: -+ args = append(args, d.ccontents(fullArg)) -+ -+ case ruleTOCRefLow: -+ return nil, errors.New("Found low TOC reference outside preamble pattern") -+ -+ case ruleTOCRefHigh: -+ target, _, relative, ok := d.isPPC64LEAPair(statement) -+ if !ok { -+ return nil, errors.New("Found high TOC reference outside preamble pattern") -+ } -+ -+ if relative != "12" { -+ return nil, fmt.Errorf("preamble is relative to %q, not r12", relative) -+ } -+ -+ if target != "2" { -+ return nil, fmt.Errorf("preamble is setting %q, not r2", target) -+ } -+ -+ statement = statement.next -+ establishTOC(d.output) -+ instructionName = "" -+ changed = true -+ break Args -+ -+ case ruleMemoryRef: -+ symbol, offset, section, didChange, symbolIsLocal, memRef := d.parseMemRef(arg.up) -+ changed = didChange -+ -+ if len(symbol) > 0 { -+ if _, localEntrySymbol := d.localEntrySymbols[symbol]; localEntrySymbol && isBranch { -+ symbol = localEntryName(symbol) -+ changed = true -+ } else if _, knownSymbol := d.symbols[symbol]; knownSymbol { -+ symbol = localTargetName(symbol) -+ changed = true -+ } else if !symbolIsLocal && !isSynthesized(symbol) && len(section) == 0 { -+ changed = true -+ d.redirectors[symbol] = redirectorName(symbol) -+ symbol = redirectorName(symbol) -+ // TODO(davidben): This should sanity-check the next -+ // instruction is a nop and ideally remove it. -+ wrappers = append(wrappers, func(k func()) { -+ k() -+ // Like the linker's PLT stubs, redirector functions -+ // expect callers to restore r2. -+ d.output.WriteString("\tld 2, 24(1)\n") -+ }) -+ } -+ } -+ -+ switch section { -+ case "": -+ -+ case "tls": -+ // This section identifier just tells the -+ // assembler to use r13, the pointer to the -+ // thread-local data [PABI;3.7.3.3]. -+ -+ case "toc@ha": -+ // Delete toc@ha instructions. Per -+ // [PABI;3.6.3], the linker is allowed to erase -+ // toc@ha instructions. We take advantage of -+ // this by unconditionally erasing the toc@ha -+ // instructions and doing the full lookup when -+ // processing toc@l. -+ // -+ // Note that any offset here applies before @ha -+ // and @l. That is, 42+foo@toc@ha is -+ // #ha(42+foo-.TOC.), not 42+#ha(foo-.TOC.). Any -+ // corresponding toc@l references are required -+ // by the ABI to have the same offset. The -+ // offset will be incorporated in full when -+ // those are processed. -+ if instructionName != "addis" || len(argNodes) != 3 || i != 2 || args[1] != "2" { -+ return nil, errors.New("can't process toc@ha reference") -+ } -+ changed = true -+ instructionName = "" -+ break Args -+ -+ case "toc@l": -+ // Per [PAB;3.6.3], this instruction must take -+ // as input a register which was the output of -+ // a toc@ha computation and compute the actual -+ // address of some symbol. The toc@ha -+ // computation was elided, so we ignore that -+ // input register and compute the address -+ // directly. -+ changed = true -+ -+ // For all supported toc@l instructions, the -+ // destination register is the first argument. -+ destReg := args[0] -+ -+ wrappers = append(wrappers, d.loadFromTOC(d.output, symbol, offset, destReg)) -+ switch instructionName { -+ case "addi": -+ // The original instruction was: -+ // addi destReg, tocHaReg, offset+symbol@toc@l -+ instructionName = "" -+ -+ case "ld", "lhz", "lwz": -+ // The original instruction was: -+ // l?? destReg, offset+symbol@toc@l(tocHaReg) -+ // -+ // We transform that into the -+ // equivalent dereference of destReg: -+ // l?? destReg, 0(destReg) -+ origInstructionName := instructionName -+ instructionName = "" -+ -+ assertNodeType(memRef, ruleBaseIndexScale) -+ assertNodeType(memRef.up, ruleRegisterOrConstant) -+ if memRef.next != nil || memRef.up.next != nil { -+ return nil, errors.New("expected single register in BaseIndexScale for ld argument") -+ } -+ -+ baseReg := destReg -+ if baseReg == "0" { -+ // Register zero is special as the base register for a load. -+ // Avoid it by spilling and using r3 instead. -+ baseReg = "3" -+ wrappers = append(wrappers, func(k func()) { -+ d.output.WriteString("\taddi 1, 1, -288\n") // Clear the red zone. -+ d.output.WriteString("\tstd " + baseReg + ", -8(1)\n") -+ d.output.WriteString("\tmr " + baseReg + ", " + destReg + "\n") -+ k() -+ d.output.WriteString("\tld " + baseReg + ", -8(1)\n") -+ d.output.WriteString("\taddi 1, 1, 288\n") // Clear the red zone. -+ }) -+ } -+ -+ wrappers = append(wrappers, func(k func()) { -+ d.output.WriteString("\t" + origInstructionName + " " + destReg + ", 0(" + baseReg + ")\n") -+ }) -+ default: -+ return nil, fmt.Errorf("can't process TOC argument to %q", instructionName) -+ } -+ -+ default: -+ return nil, fmt.Errorf("Unknown section type %q", section) -+ } -+ -+ argStr := "" -+ if isIndirect { -+ argStr += "*" -+ } -+ argStr += symbol -+ if len(offset) > 0 { -+ argStr += offset -+ } -+ if len(section) > 0 { -+ argStr += "@" -+ argStr += section -+ } -+ -+ for ; memRef != nil; memRef = memRef.next { -+ argStr += d.ccontents(memRef) -+ } -+ -+ args = append(args, argStr) -+ -+ default: -+ panic(fmt.Sprintf("unknown instruction argument type %q", rul3s[arg.pegRule])) -+ } -+ } -+ -+ if changed { -+ d.writeCommentedNode(statement) -+ -+ var replacement string -+ if len(instructionName) > 0 { -+ replacement = "\t" + instructionName + "\t" + strings.Join(args, ", ") + "\n" -+ } -+ -+ wrappers.do(func() { -+ d.output.WriteString(replacement) -+ }) -+ } else { -+ d.writeNode(statement) -+ } -+ -+ return statement, nil -+} -+ - /* Intel */ - - type instructionType int -@@ -1345,6 +1751,8 @@ func writeAarch64Function(w stringWriter - func transform(w stringWriter, inputs []inputFile) error { - // symbols contains all defined symbols. - symbols := make(map[string]struct{}) -+ // localEntrySymbols contains all symbols with a .localentry directive. -+ localEntrySymbols := make(map[string]struct{}) - // fileNumbers is the set of IDs seen in .file directives. - fileNumbers := make(map[int]struct{}) - // maxObservedFileNumber contains the largest seen file number in a -@@ -1368,6 +1776,25 @@ func transform(w stringWriter, inputs [] - }, ruleStatement, ruleLabel, ruleSymbolName) - - forEachPath(input.ast.up, func(node *node32) { -+ node = node.up -+ assertNodeType(node, ruleLabelContainingDirectiveName) -+ directive := input.ccontents[node.begin:node.end] -+ if directive != ".localentry" { -+ return -+ } -+ // Extract the first argument. -+ node = skipWS(node.next) -+ assertNodeType(node, ruleSymbolArgs) -+ node = node.up -+ assertNodeType(node, ruleSymbolArg) -+ symbol := input.ccontents[node.begin:node.end] -+ if _, ok := localEntrySymbols[symbol]; ok { -+ panic(fmt.Sprintf("Duplicate .localentry directive found: %q in %q", symbol, input.path)) -+ } -+ localEntrySymbols[symbol] = struct{}{} -+ }, ruleStatement, ruleLabelContainingDirective) -+ -+ forEachPath(input.ast.up, func(node *node32) { - assertNodeType(node, ruleLocationDirective) - directive := input.contents[node.begin:node.end] - if !strings.HasPrefix(directive, ".file") { -@@ -1415,11 +1842,13 @@ func transform(w stringWriter, inputs [] - - d := &delocation{ - symbols: symbols, -+ localEntrySymbols: localEntrySymbols, - processor: processor, - commentIndicator: commentIndicator, - output: w, - redirectors: make(map[string]string), - bssAccessorsNeeded: make(map[string]string), -+ tocLoaders: make(map[string]struct{}), - gotExternalsNeeded: make(map[string]struct{}), - gotOffsetsNeeded: make(map[string]struct{}), - gotOffOffsetsNeeded: make(map[string]struct{}), -@@ -1454,6 +1883,22 @@ func transform(w stringWriter, inputs [] - for _, name := range redirectorNames { - redirector := d.redirectors[name] - switch d.processor { -+ case ppc64le: -+ w.WriteString(".section \".toc\", \"aw\"\n") -+ w.WriteString(".Lredirector_toc_" + name + ":\n") -+ w.WriteString(".quad " + name + "\n") -+ w.WriteString(".text\n") -+ w.WriteString(".type " + redirector + ", @function\n") -+ w.WriteString(redirector + ":\n") -+ // |name| will clobber r2, so save it. This is matched by a restore in -+ // redirector calls. -+ w.WriteString("\tstd 2, 24(1)\n") -+ // Load and call |name|'s global entry point. -+ w.WriteString("\taddis 12, 2, .Lredirector_toc_" + name + "@toc@ha\n") -+ w.WriteString("\tld 12, .Lredirector_toc_" + name + "@toc@l(12)\n") -+ w.WriteString("\tmtctr 12\n") -+ w.WriteString("\tbctr\n") -+ - case aarch64: - writeAarch64Function(w, redirector, func(w stringWriter) { - w.WriteString("\tb " + name + "\n") -@@ -1478,6 +1923,13 @@ func transform(w stringWriter, inputs [] - target := d.bssAccessorsNeeded[name] - - switch d.processor { -+ case ppc64le: -+ w.WriteString(".type " + funcName + ", @function\n") -+ w.WriteString(funcName + ":\n") -+ w.WriteString("\taddis 3, 2, " + target + "@toc@ha\n") -+ w.WriteString("\taddi 3, 3, " + target + "@toc@l\n") -+ w.WriteString("\tblr\n") -+ - case x86_64: - w.WriteString(".type " + funcName + ", @function\n") - w.WriteString(funcName + ":\n") -@@ -1493,6 +1945,26 @@ func transform(w stringWriter, inputs [] - } - - switch d.processor { -+ case ppc64le: -+ loadTOCNames := sortedSet(d.tocLoaders) -+ for _, symbolAndOffset := range loadTOCNames { -+ parts := strings.SplitN(symbolAndOffset, "\x00", 2) -+ symbol, offset := parts[0], parts[1] -+ -+ funcName := loadTOCFuncName(symbol, offset) -+ ref := symbol + offset -+ -+ w.WriteString(".type " + funcName[2:] + ", @function\n") -+ w.WriteString(funcName[2:] + ":\n") -+ w.WriteString(funcName + ":\n") -+ w.WriteString("\taddis 3, 2, " + ref + "@toc@ha\n") -+ w.WriteString("\taddi 3, 3, " + ref + "@toc@l\n") -+ w.WriteString("\tblr\n") -+ } -+ -+ w.WriteString(".LBORINGSSL_external_toc:\n") -+ w.WriteString(".quad .TOC.-.LBORINGSSL_external_toc\n") -+ - case aarch64: - externalNames := sortedSet(d.gotExternalsNeeded) - for _, symbol := range externalNames { -@@ -1803,6 +2275,10 @@ func localTargetName(name string) string - return ".L" + name + "_local_target" - } - -+func localEntryName(name string) string { -+ return ".L" + name + "_local_entry" -+} -+ - func isSynthesized(symbol string) bool { - return strings.HasSuffix(symbol, "_bss_get") || - symbol == "OPENSSL_ia32cap_get" || -@@ -1894,6 +2370,8 @@ func detectProcessor(input inputFile) pr - switch instructionName { - case "movq", "call", "leaq": - return x86_64 -+ case "addis", "addi", "mflr": -+ return ppc64le - case "str", "bl", "ldr", "st1": - return aarch64 - } -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.peg -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.peg -@@ -12,9 +12,9 @@ - # See the License for the specific language governing permissions and - # limitations under the License. - --# This is a rough parser for x86-64 and aarch64 assembly designed to work with --# https://github.com/pointlander/peg. delocate.go has a go:generate line for --# rebuilding delocate.peg.go from this file. -+# This is a rough parser for x86-64, ppc64el, and aarch64 assembly designed -+# to work with https://github.com/pointlander/peg. delocate.go has a -+# go:generate line for rebuilding delocate.peg.go from this file. - - # To regenerate delocate.peg.go: - # -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go -@@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri - - var delocateTests = []delocateTest{ - {"generic-FileDirectives", []string{"in.s"}, "out.s"}, -+ {"ppc64le-GlobalEntry", []string{"in.s"}, "out.s"}, -+ {"ppc64le-LoadToR0", []string{"in.s"}, "out.s"}, -+ {"ppc64le-Sample2", []string{"in.s"}, "out.s"}, -+ {"ppc64le-Sample", []string{"in.s"}, "out.s"}, -+ {"ppc64le-TOCWithOffset", []string{"in.s"}, "out.s"}, - {"x86_64-Basic", []string{"in.s"}, "out.s"}, - {"x86_64-BSS", []string{"in.s"}, "out.s"}, - {"x86_64-GOTRewrite", []string{"in.s"}, "out.s"}, -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s -@@ -0,0 +1,9 @@ -+ .text -+foo: -+.LCF0: -+0: -+ addis 2,12,.TOC.-.LCF0@ha -+ addi 2,2,.TOC.-.LCF0@l -+ .localentry foo,.-foo -+.LVL0: -+ bl -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s -@@ -0,0 +1,62 @@ -+.text -+.file 1 "inserted_by_delocate.cc" -+.loc 1 1 0 -+BORINGSSL_bcm_text_start: -+ .text -+.Lfoo_local_target: -+foo: -+.LCF0: -+ -+0: -+ -+999: -+ addis 2, 12, .LBORINGSSL_external_toc-999b@ha -+ addi 2, 2, .LBORINGSSL_external_toc-999b@l -+ ld 12, 0(2) -+ add 2, 2, 12 -+# WAS addi 2,2,.TOC.-.LCF0@l -+ .localentry foo,.-foo -+.Lfoo_local_entry: -+.LVL0: -+ -+ bl -+.text -+.loc 1 2 0 -+BORINGSSL_bcm_text_end: -+.LBORINGSSL_external_toc: -+.quad .TOC.-.LBORINGSSL_external_toc -+.type BORINGSSL_bcm_text_hash, @object -+.size BORINGSSL_bcm_text_hash, 32 -+BORINGSSL_bcm_text_hash: -+.byte 0xae -+.byte 0x2c -+.byte 0xea -+.byte 0x2a -+.byte 0xbd -+.byte 0xa6 -+.byte 0xf3 -+.byte 0xec -+.byte 0x97 -+.byte 0x7f -+.byte 0x9b -+.byte 0xf6 -+.byte 0x94 -+.byte 0x9a -+.byte 0xfc -+.byte 0x83 -+.byte 0x68 -+.byte 0x27 -+.byte 0xcb -+.byte 0xa0 -+.byte 0xa0 -+.byte 0x9f -+.byte 0x6b -+.byte 0x6f -+.byte 0xde -+.byte 0x52 -+.byte 0xcd -+.byte 0xe2 -+.byte 0xcd -+.byte 0xff -+.byte 0x31 -+.byte 0x80 -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s -@@ -0,0 +1,4 @@ -+ .text -+foo: -+ addis 22,2,bar@toc@ha -+ ld 0,bar@toc@l(22) -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s -@@ -0,0 +1,72 @@ -+.text -+.file 1 "inserted_by_delocate.cc" -+.loc 1 1 0 -+BORINGSSL_bcm_text_start: -+ .text -+.Lfoo_local_target: -+foo: -+# WAS addis 22,2,bar@toc@ha -+# WAS ld 0,bar@toc@l(22) -+ addi 1, 1, -288 -+ mflr 0 -+ std 0, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc_bar -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 0, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ addi 1, 1, -288 -+ std 3, -8(1) -+ mr 3, 0 -+ ld 0, 0(3) -+ ld 3, -8(1) -+ addi 1, 1, 288 -+.text -+.loc 1 2 0 -+BORINGSSL_bcm_text_end: -+.type bcm_loadtoc_bar, @function -+bcm_loadtoc_bar: -+.Lbcm_loadtoc_bar: -+ addis 3, 2, bar@toc@ha -+ addi 3, 3, bar@toc@l -+ blr -+.LBORINGSSL_external_toc: -+.quad .TOC.-.LBORINGSSL_external_toc -+.type BORINGSSL_bcm_text_hash, @object -+.size BORINGSSL_bcm_text_hash, 32 -+BORINGSSL_bcm_text_hash: -+.byte 0xae -+.byte 0x2c -+.byte 0xea -+.byte 0x2a -+.byte 0xbd -+.byte 0xa6 -+.byte 0xf3 -+.byte 0xec -+.byte 0x97 -+.byte 0x7f -+.byte 0x9b -+.byte 0xf6 -+.byte 0x94 -+.byte 0x9a -+.byte 0xfc -+.byte 0x83 -+.byte 0x68 -+.byte 0x27 -+.byte 0xcb -+.byte 0xa0 -+.byte 0xa0 -+.byte 0x9f -+.byte 0x6b -+.byte 0x6f -+.byte 0xde -+.byte 0x52 -+.byte 0xcd -+.byte 0xe2 -+.byte 0xcd -+.byte 0xff -+.byte 0x31 -+.byte 0x80 -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s -@@ -0,0 +1,161 @@ -+ .file "foo.cc" -+ .abiversion 2 -+ .section ".toc","aw" -+ .section ".text" -+ .section .rodata -+ .align 3 -+ .type kString, @object -+ .size kString, 12 -+kString: -+ .string "hello world" -+ .globl kExportedString -+ .align 3 -+ .type kExportedString, @object -+ .size kExportedString, 26 -+kExportedString: -+ .string "hello world, more visibly" -+ .align 2 -+ .type kGiantArray, @object -+ .size kGiantArray, 400000 -+kGiantArray: -+ .long 1 -+ .long 0 -+ .zero 399992 -+ .lcomm bss,20,4 -+ .type bss, @object -+ .align 3 -+.LC1: -+ .string "kString is %p\n" -+ .align 3 -+.LC2: -+ .string "kExportedString is %p\n" -+ .align 3 -+.LC4: -+ .string "function is %p\n" -+ .align 3 -+.LC5: -+ .string "exported_function is %p\n" -+ .align 3 -+.LC7: -+ .string "&kString[5] is %p\n" -+ .align 3 -+.LC9: -+ .string "&kGiantArray[0x12345] is %p\n" -+ .section ".toc","aw" -+.LC0: -+ .quad stderr -+.LC3: -+ .quad kExportedString -+.LC6: -+ .quad exported_function -+.LC8: -+ .quad kString+5 -+.LC10: -+ .quad kGiantArray+298260 -+ .section ".text" -+ .align 2 -+ .type function, @function -+function: -+0: addis 2,12,.TOC.-0b@ha -+ addi 2,2,.TOC.-0b@l -+ .localentry function,.-function -+ mflr 0 -+ std 0,16(1) -+ std 31,-8(1) -+ stdu 1,-112(1) -+ mr 31,1 -+ addis 10,2,.LC0@toc@ha -+ ld 9,.LC0@toc@l(10) -+ ld 9,0(9) -+ mr 3,9 -+ addis 4,2,.LC1@toc@ha -+ addi 4,4,.LC1@toc@l -+ addis 5,2,kString@toc@ha -+ addi 5,5,kString@toc@l -+ bl fprintf -+ nop -+ addis 10,2,.LC0@toc@ha -+ ld 9,.LC0@toc@l(10) -+ ld 9,0(9) -+ mr 3,9 -+ addis 4,2,.LC2@toc@ha -+ addi 4,4,.LC2@toc@l -+ addis 9,2,.LC3@toc@ha -+ ld 5,.LC3@toc@l(9) -+ bl fprintf -+ nop -+ addis 10,2,.LC0@toc@ha -+ ld 9,.LC0@toc@l(10) -+ ld 9,0(9) -+ mr 3,9 -+ addis 4,2,.LC4@toc@ha -+ addi 4,4,.LC4@toc@l -+ addis 5,2,function@toc@ha -+ addi 5,5,function@toc@l -+ bl fprintf -+ nop -+ addis 10,2,.LC0@toc@ha -+ ld 9,.LC0@toc@l(10) -+ ld 9,0(9) -+ mr 3,9 -+ addis 4,2,.LC5@toc@ha -+ addi 4,4,.LC5@toc@l -+ addis 9,2,.LC6@toc@ha -+ ld 5,.LC6@toc@l(9) -+ bl fprintf -+ nop -+ addis 10,2,.LC0@toc@ha -+ ld 9,.LC0@toc@l(10) -+ ld 9,0(9) -+ mr 3,9 -+ addis 4,2,.LC7@toc@ha -+ addi 4,4,.LC7@toc@l -+ addis 9,2,.LC8@toc@ha -+ ld 5,.LC8@toc@l(9) -+ bl fprintf -+ nop -+ addis 10,2,.LC0@toc@ha -+ ld 9,.LC0@toc@l(10) -+ ld 9,0(9) -+ mr 3,9 -+ addis 4,2,.LC9@toc@ha -+ addi 4,4,.LC9@toc@l -+ addis 9,2,.LC10@toc@ha -+ ld 5,.LC10@toc@l(9) -+ bl fprintf -+ nop -+ bl exported_function -+ nop -+ mr 3,9 -+ addi 1,31,112 -+ ld 0,16(1) -+ mtlr 0 -+ ld 31,-8(1) -+ blr -+ .long 0 -+ .byte 0,0,0,1,128,1,0,1 -+ .size function,.-function -+ .align 2 -+ .globl exported_function -+ .type exported_function, @function -+exported_function: -+0: addis 2,12,.TOC.-0b@ha -+ addi 2,2,.TOC.-0b@l -+ .localentry exported_function,.-exported_function -+ mflr 0 -+ std 0,16(1) -+ std 31,-8(1) -+ stdu 1,-48(1) -+ mr 31,1 -+ bl function -+ mr 3,9 -+ addi 1,31,48 -+ ld 0,16(1) -+ mtlr 0 -+ ld 31,-8(1) -+ blr -+ .long 0 -+ .byte 0,0,0,1,128,1,0,1 -+ .size exported_function,.-exported_function -+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" -+ .section .note.GNU-stack,"",@progbits -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s -@@ -0,0 +1,552 @@ -+.text -+.file 1 "inserted_by_delocate.cc" -+.loc 1 1 0 -+BORINGSSL_bcm_text_start: -+ .file "foo.cc" -+ .abiversion 2 -+ .section ".toc","aw" -+# WAS .section ".text" -+.text -+# WAS .section .rodata -+.text -+ .align 3 -+ .type kString, @object -+ .size kString, 12 -+.LkString_local_target: -+kString: -+ .string "hello world" -+ .globl kExportedString -+ .align 3 -+ .type kExportedString, @object -+ .size kExportedString, 26 -+.LkExportedString_local_target: -+kExportedString: -+ .string "hello world, more visibly" -+ .align 2 -+ .type kGiantArray, @object -+ .size kGiantArray, 400000 -+.LkGiantArray_local_target: -+kGiantArray: -+ .long 1 -+ .long 0 -+ .zero 399992 -+ .lcomm bss,20,4 -+ .type bss, @object -+ .align 3 -+.LC1: -+ -+ .string "kString is %p\n" -+ .align 3 -+.LC2: -+ -+ .string "kExportedString is %p\n" -+ .align 3 -+.LC4: -+ -+ .string "function is %p\n" -+ .align 3 -+.LC5: -+ -+ .string "exported_function is %p\n" -+ .align 3 -+.LC7: -+ -+ .string "&kString[5] is %p\n" -+ .align 3 -+.LC9: -+ -+ .string "&kGiantArray[0x12345] is %p\n" -+ .section ".toc","aw" -+.LC0: -+ -+ .quad stderr -+.LC3: -+ -+ .quad kExportedString -+.LC6: -+ -+ .quad exported_function -+.LC8: -+ -+ .quad kString+5 -+.LC10: -+ -+ .quad kGiantArray+298260 -+# WAS .section ".text" -+.text -+ .align 2 -+ .type function, @function -+.Lfunction_local_target: -+function: -+0: -+999: -+ addis 2, 12, .LBORINGSSL_external_toc-999b@ha -+ addi 2, 2, .LBORINGSSL_external_toc-999b@l -+ ld 12, 0(2) -+ add 2, 2, 12 -+# WAS addi 2,2,.TOC.-0b@l -+ .localentry function,.-function -+.Lfunction_local_entry: -+ mflr 0 -+ std 0,16(1) -+ std 31,-8(1) -+ stdu 1,-112(1) -+ mr 31,1 -+# WAS addis 10,2,.LC0@toc@ha -+# WAS ld 9,.LC0@toc@l(10) -+ addi 1, 1, -288 -+ mflr 9 -+ std 9, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 9, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 9, 0(9) -+ ld 9,0(9) -+ mr 3,9 -+# WAS addis 4,2,.LC1@toc@ha -+# WAS addi 4,4,.LC1@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC1 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 5,2,kString@toc@ha -+# WAS addi 5,5,kString@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LkString_local_target -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS bl fprintf -+ bl bcm_redirector_fprintf -+ ld 2, 24(1) -+ nop -+# WAS addis 10,2,.LC0@toc@ha -+# WAS ld 9,.LC0@toc@l(10) -+ addi 1, 1, -288 -+ mflr 9 -+ std 9, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 9, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 9, 0(9) -+ ld 9,0(9) -+ mr 3,9 -+# WAS addis 4,2,.LC2@toc@ha -+# WAS addi 4,4,.LC2@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC2 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 9,2,.LC3@toc@ha -+# WAS ld 5,.LC3@toc@l(9) -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC3 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 5, 0(5) -+# WAS bl fprintf -+ bl bcm_redirector_fprintf -+ ld 2, 24(1) -+ nop -+# WAS addis 10,2,.LC0@toc@ha -+# WAS ld 9,.LC0@toc@l(10) -+ addi 1, 1, -288 -+ mflr 9 -+ std 9, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 9, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 9, 0(9) -+ ld 9,0(9) -+ mr 3,9 -+# WAS addis 4,2,.LC4@toc@ha -+# WAS addi 4,4,.LC4@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC4 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 5,2,function@toc@ha -+# WAS addi 5,5,function@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfunction_local_target -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS bl fprintf -+ bl bcm_redirector_fprintf -+ ld 2, 24(1) -+ nop -+# WAS addis 10,2,.LC0@toc@ha -+# WAS ld 9,.LC0@toc@l(10) -+ addi 1, 1, -288 -+ mflr 9 -+ std 9, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 9, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 9, 0(9) -+ ld 9,0(9) -+ mr 3,9 -+# WAS addis 4,2,.LC5@toc@ha -+# WAS addi 4,4,.LC5@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC5 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 9,2,.LC6@toc@ha -+# WAS ld 5,.LC6@toc@l(9) -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC6 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 5, 0(5) -+# WAS bl fprintf -+ bl bcm_redirector_fprintf -+ ld 2, 24(1) -+ nop -+# WAS addis 10,2,.LC0@toc@ha -+# WAS ld 9,.LC0@toc@l(10) -+ addi 1, 1, -288 -+ mflr 9 -+ std 9, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 9, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 9, 0(9) -+ ld 9,0(9) -+ mr 3,9 -+# WAS addis 4,2,.LC7@toc@ha -+# WAS addi 4,4,.LC7@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC7 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 9,2,.LC8@toc@ha -+# WAS ld 5,.LC8@toc@l(9) -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC8 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 5, 0(5) -+# WAS bl fprintf -+ bl bcm_redirector_fprintf -+ ld 2, 24(1) -+ nop -+# WAS addis 10,2,.LC0@toc@ha -+# WAS ld 9,.LC0@toc@l(10) -+ addi 1, 1, -288 -+ mflr 9 -+ std 9, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 9, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 9, 0(9) -+ ld 9,0(9) -+ mr 3,9 -+# WAS addis 4,2,.LC9@toc@ha -+# WAS addi 4,4,.LC9@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC9 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 9,2,.LC10@toc@ha -+# WAS ld 5,.LC10@toc@l(9) -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC10 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 5, 0(5) -+# WAS bl fprintf -+ bl bcm_redirector_fprintf -+ ld 2, 24(1) -+ nop -+# WAS bl exported_function -+ bl .Lexported_function_local_entry -+ nop -+ mr 3,9 -+ addi 1,31,112 -+ ld 0,16(1) -+ mtlr 0 -+ ld 31,-8(1) -+ blr -+ .long 0 -+ .byte 0,0,0,1,128,1,0,1 -+ .size function,.-function -+ .align 2 -+ .globl exported_function -+ .type exported_function, @function -+.Lexported_function_local_target: -+exported_function: -+0: -+999: -+ addis 2, 12, .LBORINGSSL_external_toc-999b@ha -+ addi 2, 2, .LBORINGSSL_external_toc-999b@l -+ ld 12, 0(2) -+ add 2, 2, 12 -+# WAS addi 2,2,.TOC.-0b@l -+ .localentry exported_function,.-exported_function -+.Lexported_function_local_entry: -+ mflr 0 -+ std 0,16(1) -+ std 31,-8(1) -+ stdu 1,-48(1) -+ mr 31,1 -+# WAS bl function -+ bl .Lfunction_local_entry -+ mr 3,9 -+ addi 1,31,48 -+ ld 0,16(1) -+ mtlr 0 -+ ld 31,-8(1) -+ blr -+ .long 0 -+ .byte 0,0,0,1,128,1,0,1 -+ .size exported_function,.-exported_function -+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" -+ .section .note.GNU-stack,"",@progbits -+.text -+.loc 1 2 0 -+BORINGSSL_bcm_text_end: -+.section ".toc", "aw" -+.Lredirector_toc_fprintf: -+.quad fprintf -+.text -+.type bcm_redirector_fprintf, @function -+bcm_redirector_fprintf: -+ std 2, 24(1) -+ addis 12, 2, .Lredirector_toc_fprintf@toc@ha -+ ld 12, .Lredirector_toc_fprintf@toc@l(12) -+ mtctr 12 -+ bctr -+.type bss_bss_get, @function -+bss_bss_get: -+ addis 3, 2, bss@toc@ha -+ addi 3, 3, bss@toc@l -+ blr -+.type bcm_loadtoc__dot_LC0, @function -+bcm_loadtoc__dot_LC0: -+.Lbcm_loadtoc__dot_LC0: -+ addis 3, 2, .LC0@toc@ha -+ addi 3, 3, .LC0@toc@l -+ blr -+.type bcm_loadtoc__dot_LC1, @function -+bcm_loadtoc__dot_LC1: -+.Lbcm_loadtoc__dot_LC1: -+ addis 3, 2, .LC1@toc@ha -+ addi 3, 3, .LC1@toc@l -+ blr -+.type bcm_loadtoc__dot_LC10, @function -+bcm_loadtoc__dot_LC10: -+.Lbcm_loadtoc__dot_LC10: -+ addis 3, 2, .LC10@toc@ha -+ addi 3, 3, .LC10@toc@l -+ blr -+.type bcm_loadtoc__dot_LC2, @function -+bcm_loadtoc__dot_LC2: -+.Lbcm_loadtoc__dot_LC2: -+ addis 3, 2, .LC2@toc@ha -+ addi 3, 3, .LC2@toc@l -+ blr -+.type bcm_loadtoc__dot_LC3, @function -+bcm_loadtoc__dot_LC3: -+.Lbcm_loadtoc__dot_LC3: -+ addis 3, 2, .LC3@toc@ha -+ addi 3, 3, .LC3@toc@l -+ blr -+.type bcm_loadtoc__dot_LC4, @function -+bcm_loadtoc__dot_LC4: -+.Lbcm_loadtoc__dot_LC4: -+ addis 3, 2, .LC4@toc@ha -+ addi 3, 3, .LC4@toc@l -+ blr -+.type bcm_loadtoc__dot_LC5, @function -+bcm_loadtoc__dot_LC5: -+.Lbcm_loadtoc__dot_LC5: -+ addis 3, 2, .LC5@toc@ha -+ addi 3, 3, .LC5@toc@l -+ blr -+.type bcm_loadtoc__dot_LC6, @function -+bcm_loadtoc__dot_LC6: -+.Lbcm_loadtoc__dot_LC6: -+ addis 3, 2, .LC6@toc@ha -+ addi 3, 3, .LC6@toc@l -+ blr -+.type bcm_loadtoc__dot_LC7, @function -+bcm_loadtoc__dot_LC7: -+.Lbcm_loadtoc__dot_LC7: -+ addis 3, 2, .LC7@toc@ha -+ addi 3, 3, .LC7@toc@l -+ blr -+.type bcm_loadtoc__dot_LC8, @function -+bcm_loadtoc__dot_LC8: -+.Lbcm_loadtoc__dot_LC8: -+ addis 3, 2, .LC8@toc@ha -+ addi 3, 3, .LC8@toc@l -+ blr -+.type bcm_loadtoc__dot_LC9, @function -+bcm_loadtoc__dot_LC9: -+.Lbcm_loadtoc__dot_LC9: -+ addis 3, 2, .LC9@toc@ha -+ addi 3, 3, .LC9@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfunction_local_target, @function -+bcm_loadtoc__dot_Lfunction_local_target: -+.Lbcm_loadtoc__dot_Lfunction_local_target: -+ addis 3, 2, .Lfunction_local_target@toc@ha -+ addi 3, 3, .Lfunction_local_target@toc@l -+ blr -+.type bcm_loadtoc__dot_LkString_local_target, @function -+bcm_loadtoc__dot_LkString_local_target: -+.Lbcm_loadtoc__dot_LkString_local_target: -+ addis 3, 2, .LkString_local_target@toc@ha -+ addi 3, 3, .LkString_local_target@toc@l -+ blr -+.LBORINGSSL_external_toc: -+.quad .TOC.-.LBORINGSSL_external_toc -+.type BORINGSSL_bcm_text_hash, @object -+.size BORINGSSL_bcm_text_hash, 32 -+BORINGSSL_bcm_text_hash: -+.byte 0xae -+.byte 0x2c -+.byte 0xea -+.byte 0x2a -+.byte 0xbd -+.byte 0xa6 -+.byte 0xf3 -+.byte 0xec -+.byte 0x97 -+.byte 0x7f -+.byte 0x9b -+.byte 0xf6 -+.byte 0x94 -+.byte 0x9a -+.byte 0xfc -+.byte 0x83 -+.byte 0x68 -+.byte 0x27 -+.byte 0xcb -+.byte 0xa0 -+.byte 0xa0 -+.byte 0x9f -+.byte 0x6b -+.byte 0x6f -+.byte 0xde -+.byte 0x52 -+.byte 0xcd -+.byte 0xe2 -+.byte 0xcd -+.byte 0xff -+.byte 0x31 -+.byte 0x80 -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s -@@ -0,0 +1,226 @@ -+ .file "foo.cc" -+ .abiversion 2 -+ .section ".toc","aw" -+ .section ".text" -+ .section ".toc","aw" -+.LC0: -+ .quad stderr -+.LC3: -+ .quad kExportedString -+.LC6: -+ .quad exported_function -+ .section ".text" -+ .align 2 -+ .p2align 4,,15 -+ .globl exported_function -+ .type exported_function, @function -+exported_function: -+0: addis 2,12,.TOC.-0b@ha -+ addi 2,2,.TOC.-0b@l -+ .localentry exported_function,.-exported_function -+ mflr 0 -+ std 19,-104(1) -+ std 20,-96(1) -+ std 21,-88(1) -+ std 22,-80(1) -+ addis 21,2,.LC1@toc@ha -+ addis 22,2,.LC2@toc@ha -+ std 23,-72(1) -+ std 24,-64(1) -+ addis 23,2,.LC4@toc@ha -+ addis 24,2,function@toc@ha -+ std 25,-56(1) -+ std 26,-48(1) -+ addis 25,2,.LC5@toc@ha -+ addis 26,2,.LC7@toc@ha -+ std 27,-40(1) -+ std 28,-32(1) -+ addis 28,2,.LC8@toc@ha -+ addi 21,21,.LC1@toc@l -+ std 29,-24(1) -+ std 30,-16(1) -+ addis 29,2,.LANCHOR0@toc@ha -+ addi 22,22,.LC2@toc@l -+ std 31,-8(1) -+ std 0,16(1) -+ addi 29,29,.LANCHOR0@toc@l -+ addi 23,23,.LC4@toc@l -+ stdu 1,-208(1) -+ addis 31,2,.LC0@toc@ha # gpr load fusion, type long -+ ld 31,.LC0@toc@l(31) -+ addis 19,2,.LC3@toc@ha # gpr load fusion, type long -+ ld 19,.LC3@toc@l(19) -+ addis 30,29,0x5 -+ addi 24,24,function@toc@l -+ addis 20,2,.LC6@toc@ha # gpr load fusion, type long -+ ld 20,.LC6@toc@l(20) -+ addi 25,25,.LC5@toc@l -+ addi 26,26,.LC7@toc@l -+ addi 27,29,5 -+ addi 28,28,.LC8@toc@l -+ addi 30,30,-29404 -+ .p2align 4,,15 -+.L2: -+ ld 3,0(31) -+ mr 5,21 -+ mr 6,29 -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ mr 5,22 -+ mr 6,19 -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ mr 5,23 -+ mr 6,24 -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ mr 5,25 -+ mr 6,20 -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ mr 5,26 -+ mr 6,27 -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ li 4,1 -+ mr 5,28 -+ mr 6,30 -+ bl __fprintf_chk -+ nop -+ b .L2 -+ .long 0 -+ .byte 0,0,0,1,128,13,0,0 -+ .size exported_function,.-exported_function -+ .section ".toc","aw" -+ .set .LC11,.LC0 -+ .set .LC12,.LC3 -+ .set .LC13,.LC6 -+ .section ".text" -+ .align 2 -+ .p2align 4,,15 -+ .type function, @function -+function: -+0: addis 2,12,.TOC.-0b@ha -+ addi 2,2,.TOC.-0b@l -+ .localentry function,.-function -+ mflr 0 -+ std 31,-8(1) -+ addis 31,2,.LC11@toc@ha # gpr load fusion, type long -+ ld 31,.LC11@toc@l(31) -+ addis 5,2,.LC1@toc@ha -+ std 30,-16(1) -+ addis 30,2,.LANCHOR0@toc@ha -+ addi 5,5,.LC1@toc@l -+ addi 30,30,.LANCHOR0@toc@l -+ li 4,1 -+ mr 6,30 -+ std 0,16(1) -+ stdu 1,-112(1) -+ ld 3,0(31) -+ bl __fprintf_chk -+ nop -+ addis 6,2,.LC12@toc@ha # gpr load fusion, type long -+ ld 6,.LC12@toc@l(6) -+ ld 3,0(31) -+ addis 5,2,.LC2@toc@ha -+ li 4,1 -+ addi 5,5,.LC2@toc@l -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ addis 5,2,.LC4@toc@ha -+ addis 6,2,function@toc@ha -+ addi 5,5,.LC4@toc@l -+ addi 6,6,function@toc@l -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ addis 6,2,.LC13@toc@ha # gpr load fusion, type long -+ ld 6,.LC13@toc@l(6) -+ ld 3,0(31) -+ addis 5,2,.LC5@toc@ha -+ li 4,1 -+ addi 5,5,.LC5@toc@l -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ addis 5,2,.LC7@toc@ha -+ addi 6,30,5 -+ addi 5,5,.LC7@toc@l -+ li 4,1 -+ bl __fprintf_chk -+ nop -+ ld 3,0(31) -+ addis 6,30,0x5 -+ addis 5,2,.LC8@toc@ha -+ li 4,1 -+ addi 5,5,.LC8@toc@l -+ addi 6,6,-29404 -+ bl __fprintf_chk -+ nop -+ bl exported_function -+ nop -+ addi 1,1,112 -+ ld 0,16(1) -+ ld 30,-16(1) -+ ld 31,-8(1) -+ mtlr 0 -+ blr -+ .long 0 -+ .byte 0,0,0,1,128,2,0,0 -+ .size function,.-function -+ .globl kExportedString -+ .section .rodata -+ .align 4 -+ .set .LANCHOR0,. + 0 -+ .type kString, @object -+ .size kString, 12 -+kString: -+ .string "hello world" -+ .zero 4 -+ .type kGiantArray, @object -+ .size kGiantArray, 400000 -+kGiantArray: -+ .long 1 -+ .long 0 -+ .zero 399992 -+ .type kExportedString, @object -+ .size kExportedString, 26 -+kExportedString: -+ .string "hello world, more visibly" -+ .section .rodata.str1.8,"aMS",@progbits,1 -+ .align 3 -+.LC1: -+ .string "kString is %p\n" -+ .zero 1 -+.LC2: -+ .string "kExportedString is %p\n" -+ .zero 1 -+.LC4: -+ .string "function is %p\n" -+.LC5: -+ .string "exported_function is %p\n" -+ .zero 7 -+.LC7: -+ .string "&kString[5] is %p\n" -+ .zero 5 -+.LC8: -+ .string "&kGiantArray[0x12345] is %p\n" -+ .section ".bss" -+ .align 2 -+ .type bss, @object -+ .size bss, 20 -+bss: -+ .zero 20 -+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" -+ .section .note.GNU-stack,"",@progbits -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s -@@ -0,0 +1,677 @@ -+.text -+.file 1 "inserted_by_delocate.cc" -+.loc 1 1 0 -+BORINGSSL_bcm_text_start: -+ .file "foo.cc" -+ .abiversion 2 -+ .section ".toc","aw" -+# WAS .section ".text" -+.text -+ .section ".toc","aw" -+.LC0: -+ -+ .quad stderr -+.LC3: -+ -+ .quad kExportedString -+.LC6: -+ -+ .quad exported_function -+# WAS .section ".text" -+.text -+ .align 2 -+ .p2align 4,,15 -+ .globl exported_function -+ .type exported_function, @function -+.Lexported_function_local_target: -+exported_function: -+0: -+999: -+ addis 2, 12, .LBORINGSSL_external_toc-999b@ha -+ addi 2, 2, .LBORINGSSL_external_toc-999b@l -+ ld 12, 0(2) -+ add 2, 2, 12 -+# WAS addi 2,2,.TOC.-0b@l -+ .localentry exported_function,.-exported_function -+.Lexported_function_local_entry: -+ mflr 0 -+ std 19,-104(1) -+ std 20,-96(1) -+ std 21,-88(1) -+ std 22,-80(1) -+# WAS addis 21,2,.LC1@toc@ha -+# WAS addis 22,2,.LC2@toc@ha -+ std 23,-72(1) -+ std 24,-64(1) -+# WAS addis 23,2,.LC4@toc@ha -+# WAS addis 24,2,function@toc@ha -+ std 25,-56(1) -+ std 26,-48(1) -+# WAS addis 25,2,.LC5@toc@ha -+# WAS addis 26,2,.LC7@toc@ha -+ std 27,-40(1) -+ std 28,-32(1) -+# WAS addis 28,2,.LC8@toc@ha -+# WAS addi 21,21,.LC1@toc@l -+ addi 1, 1, -288 -+ mflr 21 -+ std 21, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC1 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 21, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ std 29,-24(1) -+ std 30,-16(1) -+# WAS addis 29,2,.LANCHOR0@toc@ha -+# WAS addi 22,22,.LC2@toc@l -+ addi 1, 1, -288 -+ mflr 22 -+ std 22, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC2 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 22, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ std 31,-8(1) -+ std 0,16(1) -+# WAS addi 29,29,.LANCHOR0@toc@l -+ addi 1, 1, -288 -+ mflr 29 -+ std 29, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LANCHOR0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 29, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addi 23,23,.LC4@toc@l -+ addi 1, 1, -288 -+ mflr 23 -+ std 23, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC4 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 23, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ stdu 1,-208(1) -+# WAS addis 31,2,.LC0@toc@ha # gpr load fusion, type long -+# WAS ld 31,.LC0@toc@l(31) -+ addi 1, 1, -288 -+ mflr 31 -+ std 31, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 31, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 31, 0(31) -+# WAS addis 19,2,.LC3@toc@ha # gpr load fusion, type long -+# WAS ld 19,.LC3@toc@l(19) -+ addi 1, 1, -288 -+ mflr 19 -+ std 19, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC3 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 19, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 19, 0(19) -+ addis 30,29,0x5 -+# WAS addi 24,24,function@toc@l -+ addi 1, 1, -288 -+ mflr 24 -+ std 24, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfunction_local_target -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 24, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addis 20,2,.LC6@toc@ha # gpr load fusion, type long -+# WAS ld 20,.LC6@toc@l(20) -+ addi 1, 1, -288 -+ mflr 20 -+ std 20, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC6 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 20, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 20, 0(20) -+# WAS addi 25,25,.LC5@toc@l -+ addi 1, 1, -288 -+ mflr 25 -+ std 25, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC5 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 25, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addi 26,26,.LC7@toc@l -+ addi 1, 1, -288 -+ mflr 26 -+ std 26, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC7 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 26, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ addi 27,29,5 -+# WAS addi 28,28,.LC8@toc@l -+ addi 1, 1, -288 -+ mflr 28 -+ std 28, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC8 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 28, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ addi 30,30,-29404 -+ .p2align 4,,15 -+.L2: -+ -+ ld 3,0(31) -+ mr 5,21 -+ mr 6,29 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+ mr 5,22 -+ mr 6,19 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+ mr 5,23 -+ mr 6,24 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+ mr 5,25 -+ mr 6,20 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+ mr 5,26 -+ mr 6,27 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+ li 4,1 -+ mr 5,28 -+ mr 6,30 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ b .L2 -+ .long 0 -+ .byte 0,0,0,1,128,13,0,0 -+ .size exported_function,.-exported_function -+ .section ".toc","aw" -+ .set .LC11,.LC0 -+ .set .LC12,.LC3 -+ .set .LC13,.LC6 -+# WAS .section ".text" -+.text -+ .align 2 -+ .p2align 4,,15 -+ .type function, @function -+.Lfunction_local_target: -+function: -+0: -+999: -+ addis 2, 12, .LBORINGSSL_external_toc-999b@ha -+ addi 2, 2, .LBORINGSSL_external_toc-999b@l -+ ld 12, 0(2) -+ add 2, 2, 12 -+# WAS addi 2,2,.TOC.-0b@l -+ .localentry function,.-function -+.Lfunction_local_entry: -+ mflr 0 -+ std 31,-8(1) -+# WAS addis 31,2,.LC11@toc@ha # gpr load fusion, type long -+# WAS ld 31,.LC11@toc@l(31) -+ addi 1, 1, -288 -+ mflr 31 -+ std 31, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC11 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 31, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 31, 0(31) -+# WAS addis 5,2,.LC1@toc@ha -+ std 30,-16(1) -+# WAS addis 30,2,.LANCHOR0@toc@ha -+# WAS addi 5,5,.LC1@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC1 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addi 30,30,.LANCHOR0@toc@l -+ addi 1, 1, -288 -+ mflr 30 -+ std 30, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LANCHOR0 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 30, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ li 4,1 -+ mr 6,30 -+ std 0,16(1) -+ stdu 1,-112(1) -+ ld 3,0(31) -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+# WAS addis 6,2,.LC12@toc@ha # gpr load fusion, type long -+# WAS ld 6,.LC12@toc@l(6) -+ addi 1, 1, -288 -+ mflr 6 -+ std 6, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC12 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 6, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 6, 0(6) -+ ld 3,0(31) -+# WAS addis 5,2,.LC2@toc@ha -+ li 4,1 -+# WAS addi 5,5,.LC2@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC2 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+# WAS addis 5,2,.LC4@toc@ha -+# WAS addis 6,2,function@toc@ha -+# WAS addi 5,5,.LC4@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC4 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS addi 6,6,function@toc@l -+ addi 1, 1, -288 -+ mflr 6 -+ std 6, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfunction_local_target -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 6, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+# WAS addis 6,2,.LC13@toc@ha # gpr load fusion, type long -+# WAS ld 6,.LC13@toc@l(6) -+ addi 1, 1, -288 -+ mflr 6 -+ std 6, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC13 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 6, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 6, 0(6) -+ ld 3,0(31) -+# WAS addis 5,2,.LC5@toc@ha -+ li 4,1 -+# WAS addi 5,5,.LC5@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC5 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+# WAS addis 5,2,.LC7@toc@ha -+ addi 6,30,5 -+# WAS addi 5,5,.LC7@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC7 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ li 4,1 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+ ld 3,0(31) -+ addis 6,30,0x5 -+# WAS addis 5,2,.LC8@toc@ha -+ li 4,1 -+# WAS addi 5,5,.LC8@toc@l -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_LC8 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ addi 6,6,-29404 -+# WAS bl __fprintf_chk -+ bl bcm_redirector___fprintf_chk -+ ld 2, 24(1) -+ nop -+# WAS bl exported_function -+ bl .Lexported_function_local_entry -+ nop -+ addi 1,1,112 -+ ld 0,16(1) -+ ld 30,-16(1) -+ ld 31,-8(1) -+ mtlr 0 -+ blr -+ .long 0 -+ .byte 0,0,0,1,128,2,0,0 -+ .size function,.-function -+ .globl kExportedString -+# WAS .section .rodata -+.text -+ .align 4 -+ .set .LANCHOR0,. + 0 -+ .type kString, @object -+ .size kString, 12 -+.LkString_local_target: -+kString: -+ .string "hello world" -+ .zero 4 -+ .type kGiantArray, @object -+ .size kGiantArray, 400000 -+.LkGiantArray_local_target: -+kGiantArray: -+ .long 1 -+ .long 0 -+ .zero 399992 -+ .type kExportedString, @object -+ .size kExportedString, 26 -+.LkExportedString_local_target: -+kExportedString: -+ .string "hello world, more visibly" -+# WAS .section .rodata.str1.8,"aMS",@progbits,1 -+.text -+ .align 3 -+.LC1: -+ -+ .string "kString is %p\n" -+ .zero 1 -+.LC2: -+ -+ .string "kExportedString is %p\n" -+ .zero 1 -+.LC4: -+ -+ .string "function is %p\n" -+.LC5: -+ -+ .string "exported_function is %p\n" -+ .zero 7 -+.LC7: -+ -+ .string "&kString[5] is %p\n" -+ .zero 5 -+.LC8: -+ -+ .string "&kGiantArray[0x12345] is %p\n" -+ .section ".bss" -+ .align 2 -+ .type bss, @object -+ .size bss, 20 -+bss: -+.Lbss_local_target: -+ -+ .zero 20 -+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" -+ .section .note.GNU-stack,"",@progbits -+.text -+.loc 1 2 0 -+BORINGSSL_bcm_text_end: -+.section ".toc", "aw" -+.Lredirector_toc___fprintf_chk: -+.quad __fprintf_chk -+.text -+.type bcm_redirector___fprintf_chk, @function -+bcm_redirector___fprintf_chk: -+ std 2, 24(1) -+ addis 12, 2, .Lredirector_toc___fprintf_chk@toc@ha -+ ld 12, .Lredirector_toc___fprintf_chk@toc@l(12) -+ mtctr 12 -+ bctr -+.type bss_bss_get, @function -+bss_bss_get: -+ addis 3, 2, .Lbss_local_target@toc@ha -+ addi 3, 3, .Lbss_local_target@toc@l -+ blr -+.type bcm_loadtoc__dot_LANCHOR0, @function -+bcm_loadtoc__dot_LANCHOR0: -+.Lbcm_loadtoc__dot_LANCHOR0: -+ addis 3, 2, .LANCHOR0@toc@ha -+ addi 3, 3, .LANCHOR0@toc@l -+ blr -+.type bcm_loadtoc__dot_LC0, @function -+bcm_loadtoc__dot_LC0: -+.Lbcm_loadtoc__dot_LC0: -+ addis 3, 2, .LC0@toc@ha -+ addi 3, 3, .LC0@toc@l -+ blr -+.type bcm_loadtoc__dot_LC1, @function -+bcm_loadtoc__dot_LC1: -+.Lbcm_loadtoc__dot_LC1: -+ addis 3, 2, .LC1@toc@ha -+ addi 3, 3, .LC1@toc@l -+ blr -+.type bcm_loadtoc__dot_LC11, @function -+bcm_loadtoc__dot_LC11: -+.Lbcm_loadtoc__dot_LC11: -+ addis 3, 2, .LC11@toc@ha -+ addi 3, 3, .LC11@toc@l -+ blr -+.type bcm_loadtoc__dot_LC12, @function -+bcm_loadtoc__dot_LC12: -+.Lbcm_loadtoc__dot_LC12: -+ addis 3, 2, .LC12@toc@ha -+ addi 3, 3, .LC12@toc@l -+ blr -+.type bcm_loadtoc__dot_LC13, @function -+bcm_loadtoc__dot_LC13: -+.Lbcm_loadtoc__dot_LC13: -+ addis 3, 2, .LC13@toc@ha -+ addi 3, 3, .LC13@toc@l -+ blr -+.type bcm_loadtoc__dot_LC2, @function -+bcm_loadtoc__dot_LC2: -+.Lbcm_loadtoc__dot_LC2: -+ addis 3, 2, .LC2@toc@ha -+ addi 3, 3, .LC2@toc@l -+ blr -+.type bcm_loadtoc__dot_LC3, @function -+bcm_loadtoc__dot_LC3: -+.Lbcm_loadtoc__dot_LC3: -+ addis 3, 2, .LC3@toc@ha -+ addi 3, 3, .LC3@toc@l -+ blr -+.type bcm_loadtoc__dot_LC4, @function -+bcm_loadtoc__dot_LC4: -+.Lbcm_loadtoc__dot_LC4: -+ addis 3, 2, .LC4@toc@ha -+ addi 3, 3, .LC4@toc@l -+ blr -+.type bcm_loadtoc__dot_LC5, @function -+bcm_loadtoc__dot_LC5: -+.Lbcm_loadtoc__dot_LC5: -+ addis 3, 2, .LC5@toc@ha -+ addi 3, 3, .LC5@toc@l -+ blr -+.type bcm_loadtoc__dot_LC6, @function -+bcm_loadtoc__dot_LC6: -+.Lbcm_loadtoc__dot_LC6: -+ addis 3, 2, .LC6@toc@ha -+ addi 3, 3, .LC6@toc@l -+ blr -+.type bcm_loadtoc__dot_LC7, @function -+bcm_loadtoc__dot_LC7: -+.Lbcm_loadtoc__dot_LC7: -+ addis 3, 2, .LC7@toc@ha -+ addi 3, 3, .LC7@toc@l -+ blr -+.type bcm_loadtoc__dot_LC8, @function -+bcm_loadtoc__dot_LC8: -+.Lbcm_loadtoc__dot_LC8: -+ addis 3, 2, .LC8@toc@ha -+ addi 3, 3, .LC8@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfunction_local_target, @function -+bcm_loadtoc__dot_Lfunction_local_target: -+.Lbcm_loadtoc__dot_Lfunction_local_target: -+ addis 3, 2, .Lfunction_local_target@toc@ha -+ addi 3, 3, .Lfunction_local_target@toc@l -+ blr -+.LBORINGSSL_external_toc: -+.quad .TOC.-.LBORINGSSL_external_toc -+.type BORINGSSL_bcm_text_hash, @object -+.size BORINGSSL_bcm_text_hash, 32 -+BORINGSSL_bcm_text_hash: -+.byte 0xae -+.byte 0x2c -+.byte 0xea -+.byte 0x2a -+.byte 0xbd -+.byte 0xa6 -+.byte 0xf3 -+.byte 0xec -+.byte 0x97 -+.byte 0x7f -+.byte 0x9b -+.byte 0xf6 -+.byte 0x94 -+.byte 0x9a -+.byte 0xfc -+.byte 0x83 -+.byte 0x68 -+.byte 0x27 -+.byte 0xcb -+.byte 0xa0 -+.byte 0xa0 -+.byte 0x9f -+.byte 0x6b -+.byte 0x6f -+.byte 0xde -+.byte 0x52 -+.byte 0xcd -+.byte 0xe2 -+.byte 0xcd -+.byte 0xff -+.byte 0x31 -+.byte 0x80 -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s -@@ -0,0 +1,23 @@ -+ .text -+foo: -+ # TOC references may have offsets. -+ addis 3, 2, 5+foo@toc@ha -+ addi 3, 3, 10+foo@toc@l -+ -+ addis 3, 2, 15+foo@toc@ha -+ addi 3, 3, 20+foo@toc@l -+ -+ addis 4, 2, foo@toc@ha -+ addi 4, 4, foo@toc@l -+ -+ addis 5, 2, 5+foo@toc@ha -+ ld 5, 10+foo@toc@l(5) -+ -+ addis 4, 2, foo-10@toc@ha -+ addi 4, 4, foo-10@toc@l -+ -+ addis 4, 2, foo@toc@ha+25 -+ addi 4, 4, foo@toc@l+25 -+ -+ addis 4, 2, 1+foo-2@toc@ha+3 -+ addi 4, 4, 1+foo-2@toc@l+3 -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s -@@ -0,0 +1,178 @@ -+.text -+.file 1 "inserted_by_delocate.cc" -+.loc 1 1 0 -+BORINGSSL_bcm_text_start: -+ .text -+.Lfoo_local_target: -+foo: -+ # TOC references may have offsets. -+# WAS addis 3, 2, 5+foo@toc@ha -+# WAS addi 3, 3, 10+foo@toc@l -+ addi 1, 1, -288 -+ mflr 3 -+ std 3, -8(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_10 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 3, -24(1) -+ addi 1, 1, 288 -+ -+# WAS addis 3, 2, 15+foo@toc@ha -+# WAS addi 3, 3, 20+foo@toc@l -+ addi 1, 1, -288 -+ mflr 3 -+ std 3, -8(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_20 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 3, -24(1) -+ addi 1, 1, 288 -+ -+# WAS addis 4, 2, foo@toc@ha -+# WAS addi 4, 4, foo@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ -+# WAS addis 5, 2, 5+foo@toc@ha -+# WAS ld 5, 10+foo@toc@l(5) -+ addi 1, 1, -288 -+ mflr 5 -+ std 5, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_10 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 5, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ ld 5, 0(5) -+ -+# WAS addis 4, 2, foo-10@toc@ha -+# WAS addi 4, 4, foo-10@toc@l -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target__minus_10 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ -+# WAS addis 4, 2, foo@toc@ha+25 -+# WAS addi 4, 4, foo@toc@l+25 -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_25 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+ -+# WAS addis 4, 2, 1+foo-2@toc@ha+3 -+# WAS addi 4, 4, 1+foo-2@toc@l+3 -+ addi 1, 1, -288 -+ mflr 4 -+ std 4, -8(1) -+ std 3, -16(1) -+ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3 -+ std 3, -24(1) -+ ld 3, -8(1) -+ mtlr 3 -+ ld 4, -24(1) -+ ld 3, -16(1) -+ addi 1, 1, 288 -+.text -+.loc 1 2 0 -+BORINGSSL_bcm_text_end: -+.type bcm_loadtoc__dot_Lfoo_local_target, @function -+bcm_loadtoc__dot_Lfoo_local_target: -+.Lbcm_loadtoc__dot_Lfoo_local_target: -+ addis 3, 2, .Lfoo_local_target@toc@ha -+ addi 3, 3, .Lfoo_local_target@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3, @function -+bcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3: -+.Lbcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3: -+ addis 3, 2, .Lfoo_local_target+1-2+3@toc@ha -+ addi 3, 3, .Lfoo_local_target+1-2+3@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfoo_local_target__plus_10, @function -+bcm_loadtoc__dot_Lfoo_local_target__plus_10: -+.Lbcm_loadtoc__dot_Lfoo_local_target__plus_10: -+ addis 3, 2, .Lfoo_local_target+10@toc@ha -+ addi 3, 3, .Lfoo_local_target+10@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfoo_local_target__plus_20, @function -+bcm_loadtoc__dot_Lfoo_local_target__plus_20: -+.Lbcm_loadtoc__dot_Lfoo_local_target__plus_20: -+ addis 3, 2, .Lfoo_local_target+20@toc@ha -+ addi 3, 3, .Lfoo_local_target+20@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfoo_local_target__plus_25, @function -+bcm_loadtoc__dot_Lfoo_local_target__plus_25: -+.Lbcm_loadtoc__dot_Lfoo_local_target__plus_25: -+ addis 3, 2, .Lfoo_local_target+25@toc@ha -+ addi 3, 3, .Lfoo_local_target+25@toc@l -+ blr -+.type bcm_loadtoc__dot_Lfoo_local_target__minus_10, @function -+bcm_loadtoc__dot_Lfoo_local_target__minus_10: -+.Lbcm_loadtoc__dot_Lfoo_local_target__minus_10: -+ addis 3, 2, .Lfoo_local_target-10@toc@ha -+ addi 3, 3, .Lfoo_local_target-10@toc@l -+ blr -+.LBORINGSSL_external_toc: -+.quad .TOC.-.LBORINGSSL_external_toc -+.type BORINGSSL_bcm_text_hash, @object -+.size BORINGSSL_bcm_text_hash, 32 -+BORINGSSL_bcm_text_hash: -+.byte 0xae -+.byte 0x2c -+.byte 0xea -+.byte 0x2a -+.byte 0xbd -+.byte 0xa6 -+.byte 0xf3 -+.byte 0xec -+.byte 0x97 -+.byte 0x7f -+.byte 0x9b -+.byte 0xf6 -+.byte 0x94 -+.byte 0x9a -+.byte 0xfc -+.byte 0x83 -+.byte 0x68 -+.byte 0x27 -+.byte 0xcb -+.byte 0xa0 -+.byte 0xa0 -+.byte 0x9f -+.byte 0x6b -+.byte 0x6f -+.byte 0xde -+.byte 0x52 -+.byte 0xcd -+.byte 0xe2 -+.byte 0xcd -+.byte 0xff -+.byte 0x31 -+.byte 0x80 -Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc -+++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc -@@ -367,6 +367,10 @@ static void sha1_block_data_order(uint32 - return; - } - #endif -+#if defined(SHA1_ASM_PPC64) -+ sha1_block_data_order_ppc64(state, data, num); -+ return; -+#endif - sha1_block_data_order_nohw(state, data, num); - } - -Index: chromium-134.0.6998.35/third_party/boringssl/src/build.json -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/build.json -+++ chromium-134.0.6998.35/third_party/boringssl/src/build.json -@@ -126,6 +126,10 @@ - {"src": "crypto/fipsmodule/sha/asm/sha512-armv4.pl"}, - {"src": "crypto/fipsmodule/aes/asm/vpaes-armv7.pl"} - ], -+ "perlasm_ppc64le": [ -+ {"src": "crypto/fipsmodule/aes/asm/aesp8-ppc.pl"}, -+ {"src": "crypto/fipsmodule/aes/asm/ghashp8-ppc.pl"} -+ ], - "perlasm_x86": [ - {"src": "crypto/fipsmodule/aes/asm/aesni-x86.pl"}, - {"src": "crypto/fipsmodule/bn/asm/bn-586.pl"}, -@@ -229,6 +233,7 @@ - "crypto/cpu_arm_freebsd.cc", - "crypto/cpu_arm_linux.cc", - "crypto/cpu_intel.cc", -+ "crypto/cpu_ppc64le.cc", - "crypto/crypto.cc", - "crypto/curve25519/curve25519.cc", - "crypto/curve25519/curve25519_64_adx.cc", -@@ -787,6 +792,9 @@ - "perlasm_arm": [ - {"src": "crypto/test/asm/trampoline-armv4.pl"} - ], -+ "perlasm_ppc64le": [ -+ {"src": "crypto/test/asm/trampoline-ppc.pl"} -+ ], - "perlasm_x86": [ - {"src": "crypto/test/asm/trampoline-x86.pl"} - ], -Index: chromium-134.0.6998.35/third_party/boringssl/src/util/pregenerate/build.go -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/pregenerate/build.go -+++ chromium-134.0.6998.35/third_party/boringssl/src/util/pregenerate/build.go -@@ -38,6 +38,7 @@ type InputTarget struct { - // architecture. - PerlasmAarch64 []PerlasmSource `json:"perlasm_aarch64,omitempty"` - PerlasmArm []PerlasmSource `json:"perlasm_arm,omitempty"` -+ PerlasmPPC64LE []PerlasmSource `json:"perlasm_ppc64le,omitempty"` - PerlasmX86 []PerlasmSource `json:"perlasm_x86,omitempty"` - PerlasmX86_64 []PerlasmSource `json:"perlasm_x86_64,omitempty"` - } -@@ -116,6 +117,9 @@ func (in *InputTarget) Pregenerate(name - for _, p := range in.PerlasmArm { - addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"linux32"}) - } -+ for _, p := range in.PerlasmPPC64LE { -+ addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"linux64le"}) -+ } - for _, p := range in.PerlasmX86 { - addPerlasmTask(&out.Asm, &p, "-apple.S", []string{"macosx", "-fPIC"}) - addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"elf", "-fPIC"}) -Index: chromium-134.0.6998.35/third_party/boringssl/README.ppc64le -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/README.ppc64le -@@ -0,0 +1,8 @@ -+============================================================== -+To recreate boringssl pregenerated files patch for ppc64le: -+ -+cd third_party/boringssl/src -+cp -Rp gen gen.orig -+go run ./util/pregenerate -+cd ../../../../ -+diff -urN chromium-*/third_party/boringssl/src/gen.orig chromium-*/third_party/boringssl/src/gen -Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.gni -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/gen/sources.gni -+++ chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.gni -@@ -119,6 +119,7 @@ bcm_sources_asm = [ - "gen/bcm/aesv8-gcm-armv8-apple.S", - "gen/bcm/aesv8-gcm-armv8-linux.S", - "gen/bcm/aesv8-gcm-armv8-win.S", -+ "gen/bcm/aesp8-ppc-linux.S", - "gen/bcm/armv4-mont-linux.S", - "gen/bcm/armv8-mont-apple.S", - "gen/bcm/armv8-mont-linux.S", -@@ -135,6 +136,7 @@ bcm_sources_asm = [ - "gen/bcm/ghash-neon-armv8-apple.S", - "gen/bcm/ghash-neon-armv8-linux.S", - "gen/bcm/ghash-neon-armv8-win.S", -+ "gen/bcm/ghashp8-ppc-linux.S", - "gen/bcm/ghash-ssse3-x86-apple.S", - "gen/bcm/ghash-ssse3-x86-linux.S", - "gen/bcm/ghash-ssse3-x86_64-apple.S", -@@ -328,6 +330,7 @@ crypto_sources = [ - "crypto/cpu_arm_freebsd.cc", - "crypto/cpu_arm_linux.cc", - "crypto/cpu_intel.cc", -+ "crypto/cpu_ppc64le.cc", - "crypto/crypto.cc", - "crypto/curve25519/curve25519.cc", - "crypto/curve25519/curve25519_64_adx.cc", -Index: chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/lss/linux_syscall_support.h -+++ chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h -@@ -4638,7 +4638,7 @@ struct kernel_statx { - LSS_REG(2, buf); - LSS_BODY(void*, mmap2, "0"(__r2)); - } --#else -+#elif !defined(__powerpc64__) /* ppc64 doesn't have mmap2 */ - #define __NR__mmap2 __NR_mmap2 - LSS_INLINE _syscall6(void*, _mmap2, void*, s, - size_t, l, int, p, -@@ -4749,7 +4749,7 @@ struct kernel_statx { - #if defined(__i386__) || \ - defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ -- defined(__PPC__) || \ -+ (defined(__PPC__) && !defined(__powerpc64__)) || \ - (defined(__s390__) && !defined(__s390x__)) - /* On these architectures, implement mmap() with mmap2(). */ - LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, -Index: chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/lss/linux_syscall_support.h -+++ chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h -@@ -87,7 +87,7 @@ - * Porting to other related platforms should not be difficult. - */ - #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) || \ -- defined(__mips__) || defined(__PPC__) || defined(__ARM_EABI__) || \ -+ defined(__mips__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ARM_EABI__) || \ - defined(__aarch64__) || defined(__s390__) || defined(__e2k__) || \ - (defined(__riscv) && __riscv_xlen == 64) || defined(__loongarch_lp64)) \ - && (defined(__linux) || defined(__ANDROID__)) -@@ -399,7 +399,7 @@ struct kernel_stat64 { - unsigned __pad2; - unsigned long long st_blocks; - }; --#elif defined __PPC__ -+#elif defined __PPC__ && !defined(__powerpc64__) - struct kernel_stat64 { - unsigned long long st_dev; - unsigned long long st_ino; -@@ -421,6 +421,28 @@ struct kernel_stat64 { - unsigned long __unused4; - unsigned long __unused5; - }; -+#elif defined(__powerpc64__) -+struct kernel_stat64 { -+ unsigned long int st_dev; -+ unsigned long int st_ino; -+ unsigned int st_mode; -+ unsigned long int st_nlink; -+ unsigned int st_uid; -+ unsigned int st_gid; -+ unsigned long int st_rdev; -+ unsigned short int __pad2; -+ long int st_size; -+ long int st_blksize; -+ long int st_blocks; -+ long int st_atime_; -+ unsigned long int st_atime_nsec_; -+ long int st_mtime_; -+ unsigned long int st_mtime_nsec_; -+ long int st_ctime_; -+ unsigned long int st_ctime_nsec_; -+ unsigned long int __unused4; -+ unsigned long int __unused5; -+}; - #elif defined(__e2k__) - struct kernel_stat64 { - unsigned long long st_dev; -@@ -537,7 +559,7 @@ struct kernel_stat { - uint64_t st_ctime_nsec_; - int64_t __unused4[3]; - }; --#elif defined(__PPC__) -+#elif defined(__PPC__) && !defined(__powerpc64__) - typedef unsigned long kernel_blkcnt_t; - typedef unsigned long kernel_blksize_t; - typedef unsigned kernel_dev_t; -@@ -568,6 +590,37 @@ struct kernel_stat { - unsigned long __unused4; - unsigned long __unused5; - }; -+#elif defined(__powerpc64__) -+typedef long int kernel_blkcnt_t; -+typedef long int kernel_blksize_t; -+typedef unsigned long int kernel_dev_t; -+typedef unsigned int kernel_gid_t; -+typedef unsigned long int kernel_ino_t; -+typedef unsigned int kernel_mode_t; -+typedef unsigned long int kernel_nlink_t; -+typedef long int kernel_off_t; -+typedef long int kernel_time_t; -+typedef unsigned int kernel_uid_t; -+struct kernel_stat { -+ kernel_dev_t st_dev; -+ kernel_ino_t st_ino; -+ kernel_mode_t st_mode; -+ kernel_nlink_t st_nlink; -+ kernel_uid_t st_uid; -+ kernel_gid_t st_gid; -+ kernel_dev_t st_rdev; -+ kernel_off_t st_size; -+ kernel_blksize_t st_blksize; -+ kernel_blkcnt_t st_blocks; -+ kernel_time_t st_atime_; -+ unsigned long int st_atime_nsec_; -+ kernel_time_t st_mtime_; -+ unsigned long int st_mtime_nsec_; -+ kernel_time_t st_ctime_; -+ unsigned long int st_ctime_nsec_; -+ unsigned long int __unused4; -+ unsigned long int __unused5; -+}; - #elif (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64) - typedef int kernel_blkcnt_t; - typedef int kernel_blksize_t; -@@ -1824,6 +1877,28 @@ struct kernel_statx { - #ifndef __NR_getcpu - #define __NR_getcpu 302 - #endif -+ -+/* Linux commit 86250b9d12caa1a3dee12a7cf638b7dd70eaadb6 (2010) adds -+ * direct socket system calls to PPC */ -+#ifndef __NR_socket -+#define __NR_socket 326 -+#endif -+#ifndef __NR_socketpair -+#define __NR_socketpair 333 -+#endif -+#ifndef __NR_sendto -+#define __NR_sendto 335 -+#endif -+#ifndef __NR_shutdown -+#define __NR_shutdown 338 -+#endif -+#ifndef __NR_sendmsg -+#define __NR_sendmsg 341 -+#endif -+#ifndef __NR_recvmsg -+#define __NR_recvmsg 342 -+#endif -+ - /* End of powerpc defininitions */ - #elif defined(__s390__) - #ifndef __NR_quotactl -@@ -3363,6 +3438,11 @@ struct kernel_statx { - /* TODO(csilvers): consider wrapping some args up in a struct, like we - * do for i386's _syscall6, so we can compile successfully on gcc 2.95 - */ -+ #ifdef __powerpc64__ -+ /* TODO: implement clone() for ppc64. -+ * until then, use system libc */ -+ #define sys_clone clone -+ #else - LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack, - int flags, void *arg, int *parent_tidptr, - void *newtls, int *child_tidptr) { -@@ -3433,6 +3513,7 @@ struct kernel_statx { - } - LSS_RETURN(int, __ret, __err); - } -+ #endif - #elif defined(__s390__) - #undef LSS_REG - #define LSS_REG(r, a) register unsigned long __r##r __asm__("r"#r) = (unsigned long) a -@@ -4783,7 +4864,7 @@ struct kernel_statx { - LSS_INLINE _syscall6(void*, mmap, void*, addr, size_t, length, int, prot, - int, flags, int, fd, int64_t, offset) - #endif -- #if defined(__PPC__) -+ #if defined(__PPC__) && !defined(__powerpc64__) - #undef LSS_SC_LOADARGS_0 - #define LSS_SC_LOADARGS_0(dummy...) - #undef LSS_SC_LOADARGS_1 -@@ -5173,7 +5254,11 @@ struct kernel_statx { - #endif - - #if !defined(__NR_pipe) -+#if defined(__powerpc64__) -+ LSS_INLINE pid_t LSS_NAME(pipe)(int *pipefd) { -+#else - LSS_INLINE int LSS_NAME(pipe)(int *pipefd) { -+#endif - return LSS_NAME(pipe2)(pipefd, 0); - } - #endif -From 40309fb53e39477490fd6928ebe67c4fb78de380 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Sun, 10 Mar 2019 21:01:37 -0500 -Subject: [PATCH] Add ppc64 target to libaom - ---- - third_party/libaom/BUILD.gn | 12 ++++++++++++ - third_party/libaom/cmake_update.sh | 3 +++ - 2 files changed, 15 insertions(+) - -Index: chromium-134.0.6998.35/third_party/libaom/BUILD.gn -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libaom/BUILD.gn -+++ chromium-134.0.6998.35/third_party/libaom/BUILD.gn -@@ -303,6 +303,18 @@ if (current_cpu == "arm64") { - } - } - -+if (current_cpu == "ppc64") { -+ source_set("libaom_intrinsics_vsx") { -+ configs -= [ "//build/config/compiler:chromium_code" ] -+ configs += [ "//build/config/compiler:no_chromium_code" ] -+ configs += [ ":libaom_config" ] -+ sources = [ -+ "//third_party/libaom/source/libaom/aom_ports/ppc_cpudetect.c", -+ ] -+ sources += aom_av1_common_intrin_vsx -+ } -+} -+ - static_library("libaom") { - check_includes = false - if (!is_debug && is_win) { -@@ -372,6 +384,9 @@ static_library("libaom") { - # This is needed by all arm boards due to aom_arm_cpu_caps() - sources += [ "source/libaom/aom_ports/aarch32_cpudetect.c" ] - } -+ if (current_cpu == "ppc64") { -+ deps += [ ":libaom_intrinsics_vsx" ] -+ } - if (is_android) { - deps += [ "//third_party/cpu_features:ndk_compat" ] - } -Index: chromium-134.0.6998.35/third_party/libaom/cmake_update.sh -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libaom/cmake_update.sh -+++ chromium-134.0.6998.35/third_party/libaom/cmake_update.sh -@@ -164,6 +164,9 @@ egrep \ - "#define [A-Z0-9_]+[[:space:]]+[01]" "${CFG}/win/ia32/config/aom_config.h" \ - | awk '{print "%define " $2 " " $3}' > "${CFG}/win/ia32/config/aom_config.asm" - -+reset_dirs linux/ppc64 -+gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake ${all_platforms}" -+ - # Copy linux configurations and modify for Windows. - reset_dirs win/x64 - cp "${CFG}/linux/x64/config"/* "${CFG}/win/x64/config/" -Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm -@@ -0,0 +1,95 @@ -+; -+; Copyright (c) 2024, Alliance for Open Media. All rights reserved. -+; -+; This source code is subject to the terms of the BSD 2 Clause License and -+; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License -+; was not distributed with this source code in the LICENSE file, you can -+; obtain it at www.aomedia.org/license/software. If the Alliance for Open -+; Media Patent License 1.0 was not distributed with this source code in the -+; PATENTS file, you can obtain it at www.aomedia.org/license/patent. -+; -+AOM_ARCH_AARCH64 equ 0 -+AOM_ARCH_ARM equ 0 -+AOM_ARCH_PPC equ 1 -+AOM_ARCH_X86 equ 0 -+AOM_ARCH_X86_64 equ 0 -+CONFIG_ACCOUNTING equ 0 -+CONFIG_ANALYZER equ 0 -+CONFIG_AV1_DECODER equ 0 -+CONFIG_AV1_ENCODER equ 1 -+CONFIG_AV1_HIGHBITDEPTH equ 0 -+CONFIG_AV1_TEMPORAL_DENOISING equ 1 -+CONFIG_BIG_ENDIAN equ 0 -+CONFIG_BITRATE_ACCURACY equ 0 -+CONFIG_BITRATE_ACCURACY_BL equ 0 -+CONFIG_BITSTREAM_DEBUG equ 0 -+CONFIG_COEFFICIENT_RANGE_CHECKING equ 0 -+CONFIG_COLLECT_COMPONENT_TIMING equ 0 -+CONFIG_COLLECT_PARTITION_STATS equ 0 -+CONFIG_COLLECT_RD_STATS equ 0 -+CONFIG_CWG_C013 equ 0 -+CONFIG_DEBUG equ 0 -+CONFIG_DENOISE equ 1 -+CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1 -+CONFIG_ENTROPY_STATS equ 0 -+CONFIG_EXCLUDE_SIMD_MISMATCH equ 0 -+CONFIG_FPMT_TEST equ 0 -+CONFIG_GCC equ 1 -+CONFIG_GCOV equ 0 -+CONFIG_GPROF equ 0 -+CONFIG_INSPECTION equ 0 -+CONFIG_INTERNAL_STATS equ 0 -+CONFIG_INTER_STATS_ONLY equ 0 -+CONFIG_LIBVMAF_PSNR_PEAK equ 1 -+CONFIG_LIBYUV equ 0 -+CONFIG_MAX_DECODE_PROFILE equ 2 -+CONFIG_MISMATCH_DEBUG equ 0 -+CONFIG_MULTITHREAD equ 1 -+CONFIG_NN_V2 equ 0 -+CONFIG_NORMAL_TILE_MODE equ 0 -+CONFIG_OPTICAL_FLOW_API equ 0 -+CONFIG_OS_SUPPORT equ 1 -+CONFIG_OUTPUT_FRAME_SIZE equ 0 -+CONFIG_PARTITION_SEARCH_ORDER equ 0 -+CONFIG_PIC equ 1 -+CONFIG_QUANT_MATRIX equ 0 -+CONFIG_RATECTRL_LOG equ 0 -+CONFIG_RD_COMMAND equ 0 -+CONFIG_RD_DEBUG equ 0 -+CONFIG_REALTIME_ONLY equ 1 -+CONFIG_RT_ML_PARTITIONING equ 0 -+CONFIG_RUNTIME_CPU_DETECT equ 0 -+CONFIG_SALIENCY_MAP equ 0 -+CONFIG_SHARED equ 0 -+CONFIG_SIZE_LIMIT equ 1 -+CONFIG_SPEED_STATS equ 0 -+CONFIG_SVT_AV1 equ 1 -+CONFIG_TFLITE equ 0 -+CONFIG_THREE_PASS equ 0 -+CONFIG_TUNE_BUTTERAUGLI equ 0 -+CONFIG_TUNE_VMAF equ 0 -+CONFIG_WEBM_IO equ 1 -+DECODE_HEIGHT_LIMIT equ 16384 -+DECODE_WIDTH_LIMIT equ 16384 -+FORCE_HIGHBITDEPTH_DECODING equ 0 -+HAVE_ARM_CRC32 equ 0 -+HAVE_AVX equ 0 -+HAVE_AVX2 equ 0 -+HAVE_FEXCEPT equ 1 -+HAVE_MMX equ 0 -+HAVE_NEON equ 0 -+HAVE_NEON_DOTPROD equ 0 -+HAVE_NEON_I8MM equ 0 -+HAVE_PTHREAD_H equ 1 -+HAVE_SSE equ 0 -+HAVE_SSE2 equ 0 -+HAVE_SSE3 equ 0 -+HAVE_SSE4_1 equ 0 -+HAVE_SSE4_2 equ 0 -+HAVE_SSSE3 equ 0 -+HAVE_SVE equ 0 -+HAVE_SVE2 equ 0 -+HAVE_UNISTD_H equ 1 -+HAVE_VSX equ 1 -+HAVE_WXWIDGETS equ 0 -+STATIC_LINK_JXL equ 0 -Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.c -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.c -@@ -0,0 +1,13 @@ -+/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. -+ * -+ * This source code is subject to the terms of the BSD 2 Clause License and -+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License -+ * was not distributed with this source code in the LICENSE file, you can -+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open -+ * Media Patent License 1.0 was not distributed with this source code in the -+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. -+ */ -+#include "aom/aom_codec.h" -+static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_DECODER=0 -DCONFIG_AV1_ENCODER=1 -DCONFIG_LIBYUV=0 -DCONFIG_AV1_HIGHBITDEPTH=0 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_QUANT_MATRIX=0 -DCONFIG_REALTIME_ONLY=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; -+const char *aom_codec_build_config(void) {return cfg;} -Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.h -@@ -0,0 +1,98 @@ -+/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. -+ * -+ * This source code is subject to the terms of the BSD 2 Clause License and -+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License -+ * was not distributed with this source code in the LICENSE file, you can -+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open -+ * Media Patent License 1.0 was not distributed with this source code in the -+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. -+ */ -+#ifndef AOM_CONFIG_H_ -+#define AOM_CONFIG_H_ -+#define AOM_ARCH_AARCH64 0 -+#define AOM_ARCH_ARM 0 -+#define AOM_ARCH_PPC 1 -+#define AOM_ARCH_X86 0 -+#define AOM_ARCH_X86_64 0 -+#define CONFIG_ACCOUNTING 0 -+#define CONFIG_ANALYZER 0 -+#define CONFIG_AV1_DECODER 0 -+#define CONFIG_AV1_ENCODER 1 -+#define CONFIG_AV1_HIGHBITDEPTH 0 -+#define CONFIG_AV1_TEMPORAL_DENOISING 1 -+#define CONFIG_BIG_ENDIAN 0 -+#define CONFIG_BITRATE_ACCURACY 0 -+#define CONFIG_BITRATE_ACCURACY_BL 0 -+#define CONFIG_BITSTREAM_DEBUG 0 -+#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 -+#define CONFIG_COLLECT_COMPONENT_TIMING 0 -+#define CONFIG_COLLECT_PARTITION_STATS 0 -+#define CONFIG_COLLECT_RD_STATS 0 -+#define CONFIG_CWG_C013 0 -+#define CONFIG_DEBUG 0 -+#define CONFIG_DENOISE 1 -+#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1 -+#define CONFIG_ENTROPY_STATS 0 -+#define CONFIG_EXCLUDE_SIMD_MISMATCH 0 -+#define CONFIG_FPMT_TEST 0 -+#define CONFIG_GCC 1 -+#define CONFIG_GCOV 0 -+#define CONFIG_GPROF 0 -+#define CONFIG_INSPECTION 0 -+#define CONFIG_INTERNAL_STATS 0 -+#define CONFIG_INTER_STATS_ONLY 0 -+#define CONFIG_LIBVMAF_PSNR_PEAK 1 -+#define CONFIG_LIBYUV 0 -+#define CONFIG_MAX_DECODE_PROFILE 2 -+#define CONFIG_MISMATCH_DEBUG 0 -+#define CONFIG_MULTITHREAD 1 -+#define CONFIG_NN_V2 0 -+#define CONFIG_NORMAL_TILE_MODE 0 -+#define CONFIG_OPTICAL_FLOW_API 0 -+#define CONFIG_OS_SUPPORT 1 -+#define CONFIG_OUTPUT_FRAME_SIZE 0 -+#define CONFIG_PARTITION_SEARCH_ORDER 0 -+#define CONFIG_PIC 1 -+#define CONFIG_QUANT_MATRIX 0 -+#define CONFIG_RATECTRL_LOG 0 -+#define CONFIG_RD_COMMAND 0 -+#define CONFIG_RD_DEBUG 0 -+#define CONFIG_REALTIME_ONLY 1 -+#define CONFIG_RT_ML_PARTITIONING 0 -+#define CONFIG_RUNTIME_CPU_DETECT 0 -+#define CONFIG_SALIENCY_MAP 0 -+#define CONFIG_SHARED 0 -+#define CONFIG_SIZE_LIMIT 1 -+#define CONFIG_SPEED_STATS 0 -+#define CONFIG_SVT_AV1 1 -+#define CONFIG_TFLITE 0 -+#define CONFIG_THREE_PASS 0 -+#define CONFIG_TUNE_BUTTERAUGLI 0 -+#define CONFIG_TUNE_VMAF 0 -+#define CONFIG_WEBM_IO 1 -+#define DECODE_HEIGHT_LIMIT 16384 -+#define DECODE_WIDTH_LIMIT 16384 -+#define FORCE_HIGHBITDEPTH_DECODING 0 -+#define HAVE_ARM_CRC32 0 -+#define HAVE_AVX 0 -+#define HAVE_AVX2 0 -+#define HAVE_FEXCEPT 1 -+#define HAVE_MMX 0 -+#define HAVE_NEON 0 -+#define HAVE_NEON_DOTPROD 0 -+#define HAVE_NEON_I8MM 0 -+#define HAVE_PTHREAD_H 1 -+#define HAVE_SSE 0 -+#define HAVE_SSE2 0 -+#define HAVE_SSE3 0 -+#define HAVE_SSE4_1 0 -+#define HAVE_SSE4_2 0 -+#define HAVE_SSSE3 0 -+#define HAVE_SVE 0 -+#define HAVE_SVE2 0 -+#define HAVE_UNISTD_H 1 -+#define HAVE_VSX 1 -+#define HAVE_WXWIDGETS 0 -+#define STATIC_LINK_JXL 0 -+#endif // AOM_CONFIG_H_ -Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h -@@ -0,0 +1,1501 @@ -+/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. -+ * -+ * This source code is subject to the terms of the BSD 2 Clause License and -+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License -+ * was not distributed with this source code in the LICENSE file, you can -+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open -+ * Media Patent License 1.0 was not distributed with this source code in the -+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. -+ */ -+ -+// This file is generated. Do not edit. -+#ifndef AOM_DSP_RTCD_H_ -+#define AOM_DSP_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+/* -+ * DSP -+ */ -+ -+#include "aom/aom_integer.h" -+#include "aom_dsp/aom_dsp_common.h" -+#include "av1/common/blockd.h" -+#include "av1/common/enums.h" -+ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+unsigned int aom_avg_4x4_c(const uint8_t *, int p); -+#define aom_avg_4x4 aom_avg_4x4_c -+ -+unsigned int aom_avg_8x8_c(const uint8_t *, int p); -+#define aom_avg_8x8 aom_avg_8x8_c -+ -+void aom_avg_8x8_quad_c(const uint8_t *s, int p, int x16_idx, int y16_idx, int *avg); -+#define aom_avg_8x8_quad aom_avg_8x8_quad_c -+ -+void aom_blend_a64_hmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int w, int h); -+#define aom_blend_a64_hmask aom_blend_a64_hmask_c -+ -+void aom_blend_a64_mask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subw, int subh); -+#define aom_blend_a64_mask aom_blend_a64_mask_c -+ -+void aom_blend_a64_vmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int w, int h); -+#define aom_blend_a64_vmask aom_blend_a64_vmask_c -+ -+void aom_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride); -+#define aom_comp_avg_pred aom_comp_avg_pred_c -+ -+void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask); -+#define aom_comp_mask_pred aom_comp_mask_pred_c -+ -+void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h); -+#define aom_convolve8_horiz aom_convolve8_horiz_c -+ -+void aom_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h); -+#define aom_convolve8_vert aom_convolve8_vert_c -+ -+void aom_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, int w, int h); -+#define aom_convolve_copy aom_convolve_copy_c -+ -+void aom_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_16x16 aom_dc_128_predictor_16x16_c -+ -+void aom_dc_128_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_16x32 aom_dc_128_predictor_16x32_c -+ -+void aom_dc_128_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_16x4 aom_dc_128_predictor_16x4_c -+ -+void aom_dc_128_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_16x64 aom_dc_128_predictor_16x64_c -+ -+void aom_dc_128_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_16x8 aom_dc_128_predictor_16x8_c -+ -+void aom_dc_128_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_32x16 aom_dc_128_predictor_32x16_c -+ -+void aom_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_32x32 aom_dc_128_predictor_32x32_c -+ -+void aom_dc_128_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_32x64 aom_dc_128_predictor_32x64_c -+ -+void aom_dc_128_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_32x8 aom_dc_128_predictor_32x8_c -+ -+void aom_dc_128_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_4x16 aom_dc_128_predictor_4x16_c -+ -+void aom_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_4x4 aom_dc_128_predictor_4x4_c -+ -+void aom_dc_128_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_4x8 aom_dc_128_predictor_4x8_c -+ -+void aom_dc_128_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_64x16 aom_dc_128_predictor_64x16_c -+ -+void aom_dc_128_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_64x32 aom_dc_128_predictor_64x32_c -+ -+void aom_dc_128_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_64x64 aom_dc_128_predictor_64x64_c -+ -+void aom_dc_128_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_8x16 aom_dc_128_predictor_8x16_c -+ -+void aom_dc_128_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_8x32 aom_dc_128_predictor_8x32_c -+ -+void aom_dc_128_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_8x4 aom_dc_128_predictor_8x4_c -+ -+void aom_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_128_predictor_8x8 aom_dc_128_predictor_8x8_c -+ -+void aom_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_16x16 aom_dc_left_predictor_16x16_c -+ -+void aom_dc_left_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_16x32 aom_dc_left_predictor_16x32_c -+ -+void aom_dc_left_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_16x4 aom_dc_left_predictor_16x4_c -+ -+void aom_dc_left_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_16x64 aom_dc_left_predictor_16x64_c -+ -+void aom_dc_left_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_16x8 aom_dc_left_predictor_16x8_c -+ -+void aom_dc_left_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_32x16 aom_dc_left_predictor_32x16_c -+ -+void aom_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_32x32 aom_dc_left_predictor_32x32_c -+ -+void aom_dc_left_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_32x64 aom_dc_left_predictor_32x64_c -+ -+void aom_dc_left_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_32x8 aom_dc_left_predictor_32x8_c -+ -+void aom_dc_left_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_4x16 aom_dc_left_predictor_4x16_c -+ -+void aom_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_4x4 aom_dc_left_predictor_4x4_c -+ -+void aom_dc_left_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_4x8 aom_dc_left_predictor_4x8_c -+ -+void aom_dc_left_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_64x16 aom_dc_left_predictor_64x16_c -+ -+void aom_dc_left_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_64x32 aom_dc_left_predictor_64x32_c -+ -+void aom_dc_left_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_64x64 aom_dc_left_predictor_64x64_c -+ -+void aom_dc_left_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_8x16 aom_dc_left_predictor_8x16_c -+ -+void aom_dc_left_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_8x32 aom_dc_left_predictor_8x32_c -+ -+void aom_dc_left_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_8x4 aom_dc_left_predictor_8x4_c -+ -+void aom_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_left_predictor_8x8 aom_dc_left_predictor_8x8_c -+ -+void aom_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_16x16 aom_dc_predictor_16x16_c -+ -+void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_16x32 aom_dc_predictor_16x32_c -+ -+void aom_dc_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_16x4 aom_dc_predictor_16x4_c -+ -+void aom_dc_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_16x64 aom_dc_predictor_16x64_c -+ -+void aom_dc_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_16x8 aom_dc_predictor_16x8_c -+ -+void aom_dc_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_32x16 aom_dc_predictor_32x16_c -+ -+void aom_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_32x32 aom_dc_predictor_32x32_c -+ -+void aom_dc_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_32x64 aom_dc_predictor_32x64_c -+ -+void aom_dc_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_32x8 aom_dc_predictor_32x8_c -+ -+void aom_dc_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_4x16 aom_dc_predictor_4x16_c -+ -+void aom_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_4x4 aom_dc_predictor_4x4_c -+ -+void aom_dc_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_4x8 aom_dc_predictor_4x8_c -+ -+void aom_dc_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_64x16 aom_dc_predictor_64x16_c -+ -+void aom_dc_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_64x32 aom_dc_predictor_64x32_c -+ -+void aom_dc_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_64x64 aom_dc_predictor_64x64_c -+ -+void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_8x16 aom_dc_predictor_8x16_c -+ -+void aom_dc_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_8x32 aom_dc_predictor_8x32_c -+ -+void aom_dc_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_8x4 aom_dc_predictor_8x4_c -+ -+void aom_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_predictor_8x8 aom_dc_predictor_8x8_c -+ -+void aom_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_16x16 aom_dc_top_predictor_16x16_c -+ -+void aom_dc_top_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_16x32 aom_dc_top_predictor_16x32_c -+ -+void aom_dc_top_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_16x4 aom_dc_top_predictor_16x4_c -+ -+void aom_dc_top_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_16x64 aom_dc_top_predictor_16x64_c -+ -+void aom_dc_top_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_16x8 aom_dc_top_predictor_16x8_c -+ -+void aom_dc_top_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_32x16 aom_dc_top_predictor_32x16_c -+ -+void aom_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_32x32 aom_dc_top_predictor_32x32_c -+ -+void aom_dc_top_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_32x64 aom_dc_top_predictor_32x64_c -+ -+void aom_dc_top_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_32x8 aom_dc_top_predictor_32x8_c -+ -+void aom_dc_top_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_4x16 aom_dc_top_predictor_4x16_c -+ -+void aom_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_4x4 aom_dc_top_predictor_4x4_c -+ -+void aom_dc_top_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_4x8 aom_dc_top_predictor_4x8_c -+ -+void aom_dc_top_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_64x16 aom_dc_top_predictor_64x16_c -+ -+void aom_dc_top_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_64x32 aom_dc_top_predictor_64x32_c -+ -+void aom_dc_top_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_64x64 aom_dc_top_predictor_64x64_c -+ -+void aom_dc_top_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_8x16 aom_dc_top_predictor_8x16_c -+ -+void aom_dc_top_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_8x32 aom_dc_top_predictor_8x32_c -+ -+void aom_dc_top_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_8x4 aom_dc_top_predictor_8x4_c -+ -+void aom_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_dc_top_predictor_8x8 aom_dc_top_predictor_8x8_c -+ -+void aom_dist_wtd_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_comp_avg_pred aom_dist_wtd_comp_avg_pred_c -+ -+unsigned int aom_dist_wtd_sad128x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad128x128_avg aom_dist_wtd_sad128x128_avg_c -+ -+unsigned int aom_dist_wtd_sad128x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad128x64_avg aom_dist_wtd_sad128x64_avg_c -+ -+unsigned int aom_dist_wtd_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad16x16_avg aom_dist_wtd_sad16x16_avg_c -+ -+unsigned int aom_dist_wtd_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad16x32_avg aom_dist_wtd_sad16x32_avg_c -+ -+unsigned int aom_dist_wtd_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad16x8_avg aom_dist_wtd_sad16x8_avg_c -+ -+unsigned int aom_dist_wtd_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad32x16_avg aom_dist_wtd_sad32x16_avg_c -+ -+unsigned int aom_dist_wtd_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad32x32_avg aom_dist_wtd_sad32x32_avg_c -+ -+unsigned int aom_dist_wtd_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad32x64_avg aom_dist_wtd_sad32x64_avg_c -+ -+unsigned int aom_dist_wtd_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad4x4_avg aom_dist_wtd_sad4x4_avg_c -+ -+unsigned int aom_dist_wtd_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad4x8_avg aom_dist_wtd_sad4x8_avg_c -+ -+unsigned int aom_dist_wtd_sad64x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad64x128_avg aom_dist_wtd_sad64x128_avg_c -+ -+unsigned int aom_dist_wtd_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad64x32_avg aom_dist_wtd_sad64x32_avg_c -+ -+unsigned int aom_dist_wtd_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad64x64_avg aom_dist_wtd_sad64x64_avg_c -+ -+unsigned int aom_dist_wtd_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad8x16_avg aom_dist_wtd_sad8x16_avg_c -+ -+unsigned int aom_dist_wtd_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad8x4_avg aom_dist_wtd_sad8x4_avg_c -+ -+unsigned int aom_dist_wtd_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sad8x8_avg aom_dist_wtd_sad8x8_avg_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance128x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance128x128 aom_dist_wtd_sub_pixel_avg_variance128x128_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance128x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance128x64 aom_dist_wtd_sub_pixel_avg_variance128x64_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance16x16 aom_dist_wtd_sub_pixel_avg_variance16x16_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance16x32 aom_dist_wtd_sub_pixel_avg_variance16x32_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance16x8 aom_dist_wtd_sub_pixel_avg_variance16x8_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance32x16 aom_dist_wtd_sub_pixel_avg_variance32x16_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance32x32 aom_dist_wtd_sub_pixel_avg_variance32x32_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance32x64 aom_dist_wtd_sub_pixel_avg_variance32x64_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance4x4 aom_dist_wtd_sub_pixel_avg_variance4x4_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance4x8 aom_dist_wtd_sub_pixel_avg_variance4x8_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance64x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance64x128 aom_dist_wtd_sub_pixel_avg_variance64x128_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance64x32 aom_dist_wtd_sub_pixel_avg_variance64x32_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance64x64 aom_dist_wtd_sub_pixel_avg_variance64x64_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance8x16 aom_dist_wtd_sub_pixel_avg_variance8x16_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance8x4 aom_dist_wtd_sub_pixel_avg_variance8x4_c -+ -+uint32_t aom_dist_wtd_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); -+#define aom_dist_wtd_sub_pixel_avg_variance8x8 aom_dist_wtd_sub_pixel_avg_variance8x8_c -+ -+void aom_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride); -+#define aom_fdct4x4 aom_fdct4x4_c -+ -+void aom_fdct4x4_lp_c(const int16_t *input, int16_t *output, int stride); -+#define aom_fdct4x4_lp aom_fdct4x4_lp_c -+ -+void aom_fft16x16_float_c(const float *input, float *temp, float *output); -+#define aom_fft16x16_float aom_fft16x16_float_c -+ -+void aom_fft2x2_float_c(const float *input, float *temp, float *output); -+#define aom_fft2x2_float aom_fft2x2_float_c -+ -+void aom_fft32x32_float_c(const float *input, float *temp, float *output); -+#define aom_fft32x32_float aom_fft32x32_float_c -+ -+void aom_fft4x4_float_c(const float *input, float *temp, float *output); -+#define aom_fft4x4_float aom_fft4x4_float_c -+ -+void aom_fft8x8_float_c(const float *input, float *temp, float *output); -+#define aom_fft8x8_float aom_fft8x8_float_c -+ -+void aom_get_blk_sse_sum_c(const int16_t *data, int stride, int bw, int bh, int *x_sum, int64_t *x2_sum); -+#define aom_get_blk_sse_sum aom_get_blk_sse_sum_c -+ -+unsigned int aom_get_mb_ss_c(const int16_t *); -+#define aom_get_mb_ss aom_get_mb_ss_c -+ -+void aom_get_var_sse_sum_16x16_dual_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse16x16, unsigned int *tot_sse, int *tot_sum, uint32_t *var16x16); -+#define aom_get_var_sse_sum_16x16_dual aom_get_var_sse_sum_16x16_dual_c -+ -+void aom_get_var_sse_sum_8x8_quad_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse8x8, int *sum8x8, unsigned int *tot_sse, int *tot_sum, uint32_t *var8x8); -+#define aom_get_var_sse_sum_8x8_quad aom_get_var_sse_sum_8x8_quad_c -+ -+void aom_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_16x16 aom_h_predictor_16x16_c -+ -+void aom_h_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_16x32 aom_h_predictor_16x32_c -+ -+void aom_h_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_16x4 aom_h_predictor_16x4_c -+ -+void aom_h_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_16x64 aom_h_predictor_16x64_c -+ -+void aom_h_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_16x8 aom_h_predictor_16x8_c -+ -+void aom_h_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_32x16 aom_h_predictor_32x16_c -+ -+void aom_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_32x32 aom_h_predictor_32x32_c -+ -+void aom_h_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_32x64 aom_h_predictor_32x64_c -+ -+void aom_h_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_32x8 aom_h_predictor_32x8_c -+ -+void aom_h_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_4x16 aom_h_predictor_4x16_c -+ -+void aom_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_4x4 aom_h_predictor_4x4_c -+ -+void aom_h_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_4x8 aom_h_predictor_4x8_c -+ -+void aom_h_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_64x16 aom_h_predictor_64x16_c -+ -+void aom_h_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_64x32 aom_h_predictor_64x32_c -+ -+void aom_h_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_64x64 aom_h_predictor_64x64_c -+ -+void aom_h_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_8x16 aom_h_predictor_8x16_c -+ -+void aom_h_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_8x32 aom_h_predictor_8x32_c -+ -+void aom_h_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_8x4 aom_h_predictor_8x4_c -+ -+void aom_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_h_predictor_8x8 aom_h_predictor_8x8_c -+ -+void aom_hadamard_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); -+#define aom_hadamard_16x16 aom_hadamard_16x16_c -+ -+void aom_hadamard_32x32_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); -+#define aom_hadamard_32x32 aom_hadamard_32x32_c -+ -+void aom_hadamard_4x4_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); -+#define aom_hadamard_4x4 aom_hadamard_4x4_c -+ -+void aom_hadamard_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); -+#define aom_hadamard_8x8 aom_hadamard_8x8_c -+ -+void aom_hadamard_lp_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff); -+#define aom_hadamard_lp_16x16 aom_hadamard_lp_16x16_c -+ -+void aom_hadamard_lp_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff); -+#define aom_hadamard_lp_8x8 aom_hadamard_lp_8x8_c -+ -+void aom_hadamard_lp_8x8_dual_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff); -+#define aom_hadamard_lp_8x8_dual aom_hadamard_lp_8x8_dual_c -+ -+void aom_ifft16x16_float_c(const float *input, float *temp, float *output); -+#define aom_ifft16x16_float aom_ifft16x16_float_c -+ -+void aom_ifft2x2_float_c(const float *input, float *temp, float *output); -+#define aom_ifft2x2_float aom_ifft2x2_float_c -+ -+void aom_ifft32x32_float_c(const float *input, float *temp, float *output); -+#define aom_ifft32x32_float aom_ifft32x32_float_c -+ -+void aom_ifft4x4_float_c(const float *input, float *temp, float *output); -+#define aom_ifft4x4_float aom_ifft4x4_float_c -+ -+void aom_ifft8x8_float_c(const float *input, float *temp, float *output); -+#define aom_ifft8x8_float aom_ifft8x8_float_c -+ -+void aom_int_pro_col_c(int16_t *vbuf, const uint8_t *ref, const int ref_stride, const int width, const int height, int norm_factor); -+#define aom_int_pro_col aom_int_pro_col_c -+ -+void aom_int_pro_row_c(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int width, const int height, int norm_factor); -+#define aom_int_pro_row aom_int_pro_row_c -+ -+void aom_lowbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subw, int subh, ConvolveParams *conv_params); -+#define aom_lowbd_blend_a64_d16_mask aom_lowbd_blend_a64_d16_mask_c -+ -+void aom_lpf_horizontal_14_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_horizontal_14 aom_lpf_horizontal_14_c -+ -+void aom_lpf_horizontal_14_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_horizontal_14_dual aom_lpf_horizontal_14_dual_c -+ -+void aom_lpf_horizontal_14_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_horizontal_14_quad aom_lpf_horizontal_14_quad_c -+ -+void aom_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_horizontal_4 aom_lpf_horizontal_4_c -+ -+void aom_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_horizontal_4_dual aom_lpf_horizontal_4_dual_c -+ -+void aom_lpf_horizontal_4_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_horizontal_4_quad aom_lpf_horizontal_4_quad_c -+ -+void aom_lpf_horizontal_6_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_horizontal_6 aom_lpf_horizontal_6_c -+ -+void aom_lpf_horizontal_6_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_horizontal_6_dual aom_lpf_horizontal_6_dual_c -+ -+void aom_lpf_horizontal_6_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_horizontal_6_quad aom_lpf_horizontal_6_quad_c -+ -+void aom_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_horizontal_8 aom_lpf_horizontal_8_c -+ -+void aom_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_horizontal_8_dual aom_lpf_horizontal_8_dual_c -+ -+void aom_lpf_horizontal_8_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_horizontal_8_quad aom_lpf_horizontal_8_quad_c -+ -+void aom_lpf_vertical_14_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_vertical_14 aom_lpf_vertical_14_c -+ -+void aom_lpf_vertical_14_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_vertical_14_dual aom_lpf_vertical_14_dual_c -+ -+void aom_lpf_vertical_14_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_vertical_14_quad aom_lpf_vertical_14_quad_c -+ -+void aom_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_vertical_4 aom_lpf_vertical_4_c -+ -+void aom_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_vertical_4_dual aom_lpf_vertical_4_dual_c -+ -+void aom_lpf_vertical_4_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_vertical_4_quad aom_lpf_vertical_4_quad_c -+ -+void aom_lpf_vertical_6_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_vertical_6 aom_lpf_vertical_6_c -+ -+void aom_lpf_vertical_6_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_vertical_6_dual aom_lpf_vertical_6_dual_c -+ -+void aom_lpf_vertical_6_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_vertical_6_quad aom_lpf_vertical_6_quad_c -+ -+void aom_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); -+#define aom_lpf_vertical_8 aom_lpf_vertical_8_c -+ -+void aom_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); -+#define aom_lpf_vertical_8_dual aom_lpf_vertical_8_dual_c -+ -+void aom_lpf_vertical_8_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); -+#define aom_lpf_vertical_8_quad aom_lpf_vertical_8_quad_c -+ -+unsigned int aom_masked_sad128x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad128x128 aom_masked_sad128x128_c -+ -+unsigned int aom_masked_sad128x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad128x64 aom_masked_sad128x64_c -+ -+unsigned int aom_masked_sad16x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad16x16 aom_masked_sad16x16_c -+ -+unsigned int aom_masked_sad16x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad16x32 aom_masked_sad16x32_c -+ -+unsigned int aom_masked_sad16x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad16x8 aom_masked_sad16x8_c -+ -+unsigned int aom_masked_sad32x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad32x16 aom_masked_sad32x16_c -+ -+unsigned int aom_masked_sad32x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad32x32 aom_masked_sad32x32_c -+ -+unsigned int aom_masked_sad32x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad32x64 aom_masked_sad32x64_c -+ -+unsigned int aom_masked_sad4x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad4x4 aom_masked_sad4x4_c -+ -+unsigned int aom_masked_sad4x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad4x8 aom_masked_sad4x8_c -+ -+unsigned int aom_masked_sad64x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad64x128 aom_masked_sad64x128_c -+ -+unsigned int aom_masked_sad64x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad64x32 aom_masked_sad64x32_c -+ -+unsigned int aom_masked_sad64x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad64x64 aom_masked_sad64x64_c -+ -+unsigned int aom_masked_sad8x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad8x16 aom_masked_sad8x16_c -+ -+unsigned int aom_masked_sad8x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad8x4 aom_masked_sad8x4_c -+ -+unsigned int aom_masked_sad8x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); -+#define aom_masked_sad8x8 aom_masked_sad8x8_c -+ -+unsigned int aom_masked_sub_pixel_variance128x128_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance128x128 aom_masked_sub_pixel_variance128x128_c -+ -+unsigned int aom_masked_sub_pixel_variance128x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance128x64 aom_masked_sub_pixel_variance128x64_c -+ -+unsigned int aom_masked_sub_pixel_variance16x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance16x16 aom_masked_sub_pixel_variance16x16_c -+ -+unsigned int aom_masked_sub_pixel_variance16x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance16x32 aom_masked_sub_pixel_variance16x32_c -+ -+unsigned int aom_masked_sub_pixel_variance16x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance16x8 aom_masked_sub_pixel_variance16x8_c -+ -+unsigned int aom_masked_sub_pixel_variance32x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance32x16 aom_masked_sub_pixel_variance32x16_c -+ -+unsigned int aom_masked_sub_pixel_variance32x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance32x32 aom_masked_sub_pixel_variance32x32_c -+ -+unsigned int aom_masked_sub_pixel_variance32x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance32x64 aom_masked_sub_pixel_variance32x64_c -+ -+unsigned int aom_masked_sub_pixel_variance4x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance4x4 aom_masked_sub_pixel_variance4x4_c -+ -+unsigned int aom_masked_sub_pixel_variance4x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance4x8 aom_masked_sub_pixel_variance4x8_c -+ -+unsigned int aom_masked_sub_pixel_variance64x128_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance64x128 aom_masked_sub_pixel_variance64x128_c -+ -+unsigned int aom_masked_sub_pixel_variance64x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance64x32 aom_masked_sub_pixel_variance64x32_c -+ -+unsigned int aom_masked_sub_pixel_variance64x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance64x64 aom_masked_sub_pixel_variance64x64_c -+ -+unsigned int aom_masked_sub_pixel_variance8x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance8x16 aom_masked_sub_pixel_variance8x16_c -+ -+unsigned int aom_masked_sub_pixel_variance8x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance8x4 aom_masked_sub_pixel_variance8x4_c -+ -+unsigned int aom_masked_sub_pixel_variance8x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); -+#define aom_masked_sub_pixel_variance8x8 aom_masked_sub_pixel_variance8x8_c -+ -+void aom_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max); -+#define aom_minmax_8x8 aom_minmax_8x8_c -+ -+unsigned int aom_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); -+#define aom_mse16x16 aom_mse16x16_c -+ -+unsigned int aom_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); -+#define aom_mse16x8 aom_mse16x8_c -+ -+unsigned int aom_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); -+#define aom_mse8x16 aom_mse8x16_c -+ -+unsigned int aom_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); -+#define aom_mse8x8 aom_mse8x8_c -+ -+uint64_t aom_mse_16xh_16bit_c(uint8_t *dst, int dstride,uint16_t *src, int w, int h); -+#define aom_mse_16xh_16bit aom_mse_16xh_16bit_c -+ -+uint64_t aom_mse_wxh_16bit_c(uint8_t *dst, int dstride,uint16_t *src, int sstride, int w, int h); -+#define aom_mse_wxh_16bit aom_mse_wxh_16bit_c -+ -+void aom_paeth_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_16x16 aom_paeth_predictor_16x16_c -+ -+void aom_paeth_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_16x32 aom_paeth_predictor_16x32_c -+ -+void aom_paeth_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_16x4 aom_paeth_predictor_16x4_c -+ -+void aom_paeth_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_16x64 aom_paeth_predictor_16x64_c -+ -+void aom_paeth_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_16x8 aom_paeth_predictor_16x8_c -+ -+void aom_paeth_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_32x16 aom_paeth_predictor_32x16_c -+ -+void aom_paeth_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_32x32 aom_paeth_predictor_32x32_c -+ -+void aom_paeth_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_32x64 aom_paeth_predictor_32x64_c -+ -+void aom_paeth_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_32x8 aom_paeth_predictor_32x8_c -+ -+void aom_paeth_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_4x16 aom_paeth_predictor_4x16_c -+ -+void aom_paeth_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_4x4 aom_paeth_predictor_4x4_c -+ -+void aom_paeth_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_4x8 aom_paeth_predictor_4x8_c -+ -+void aom_paeth_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_64x16 aom_paeth_predictor_64x16_c -+ -+void aom_paeth_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_64x32 aom_paeth_predictor_64x32_c -+ -+void aom_paeth_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_64x64 aom_paeth_predictor_64x64_c -+ -+void aom_paeth_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_8x16 aom_paeth_predictor_8x16_c -+ -+void aom_paeth_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_8x32 aom_paeth_predictor_8x32_c -+ -+void aom_paeth_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_8x4 aom_paeth_predictor_8x4_c -+ -+void aom_paeth_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_paeth_predictor_8x8 aom_paeth_predictor_8x8_c -+ -+void aom_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define aom_quantize_b aom_quantize_b_c -+ -+void aom_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define aom_quantize_b_32x32 aom_quantize_b_32x32_c -+ -+void aom_quantize_b_64x64_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define aom_quantize_b_64x64 aom_quantize_b_64x64_c -+ -+unsigned int aom_sad128x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad128x128 aom_sad128x128_c -+ -+unsigned int aom_sad128x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad128x128_avg aom_sad128x128_avg_c -+ -+void aom_sad128x128x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad128x128x3d aom_sad128x128x3d_c -+ -+void aom_sad128x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad128x128x4d aom_sad128x128x4d_c -+ -+unsigned int aom_sad128x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad128x64 aom_sad128x64_c -+ -+unsigned int aom_sad128x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad128x64_avg aom_sad128x64_avg_c -+ -+void aom_sad128x64x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad128x64x3d aom_sad128x64x3d_c -+ -+void aom_sad128x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad128x64x4d aom_sad128x64x4d_c -+ -+unsigned int aom_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad16x16 aom_sad16x16_c -+ -+unsigned int aom_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad16x16_avg aom_sad16x16_avg_c -+ -+void aom_sad16x16x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad16x16x3d aom_sad16x16x3d_c -+ -+void aom_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad16x16x4d aom_sad16x16x4d_c -+ -+unsigned int aom_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad16x32 aom_sad16x32_c -+ -+unsigned int aom_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad16x32_avg aom_sad16x32_avg_c -+ -+void aom_sad16x32x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad16x32x3d aom_sad16x32x3d_c -+ -+void aom_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad16x32x4d aom_sad16x32x4d_c -+ -+unsigned int aom_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad16x8 aom_sad16x8_c -+ -+unsigned int aom_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad16x8_avg aom_sad16x8_avg_c -+ -+void aom_sad16x8x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad16x8x3d aom_sad16x8x3d_c -+ -+void aom_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad16x8x4d aom_sad16x8x4d_c -+ -+unsigned int aom_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad32x16 aom_sad32x16_c -+ -+unsigned int aom_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad32x16_avg aom_sad32x16_avg_c -+ -+void aom_sad32x16x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad32x16x3d aom_sad32x16x3d_c -+ -+void aom_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad32x16x4d aom_sad32x16x4d_c -+ -+unsigned int aom_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad32x32 aom_sad32x32_c -+ -+unsigned int aom_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad32x32_avg aom_sad32x32_avg_c -+ -+void aom_sad32x32x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad32x32x3d aom_sad32x32x3d_c -+ -+void aom_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad32x32x4d aom_sad32x32x4d_c -+ -+unsigned int aom_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad32x64 aom_sad32x64_c -+ -+unsigned int aom_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad32x64_avg aom_sad32x64_avg_c -+ -+void aom_sad32x64x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad32x64x3d aom_sad32x64x3d_c -+ -+void aom_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad32x64x4d aom_sad32x64x4d_c -+ -+unsigned int aom_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad4x4 aom_sad4x4_c -+ -+unsigned int aom_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad4x4_avg aom_sad4x4_avg_c -+ -+void aom_sad4x4x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad4x4x3d aom_sad4x4x3d_c -+ -+void aom_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad4x4x4d aom_sad4x4x4d_c -+ -+unsigned int aom_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad4x8 aom_sad4x8_c -+ -+unsigned int aom_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad4x8_avg aom_sad4x8_avg_c -+ -+void aom_sad4x8x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad4x8x3d aom_sad4x8x3d_c -+ -+void aom_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad4x8x4d aom_sad4x8x4d_c -+ -+unsigned int aom_sad64x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad64x128 aom_sad64x128_c -+ -+unsigned int aom_sad64x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad64x128_avg aom_sad64x128_avg_c -+ -+void aom_sad64x128x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad64x128x3d aom_sad64x128x3d_c -+ -+void aom_sad64x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad64x128x4d aom_sad64x128x4d_c -+ -+unsigned int aom_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad64x32 aom_sad64x32_c -+ -+unsigned int aom_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad64x32_avg aom_sad64x32_avg_c -+ -+void aom_sad64x32x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad64x32x3d aom_sad64x32x3d_c -+ -+void aom_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad64x32x4d aom_sad64x32x4d_c -+ -+unsigned int aom_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad64x64 aom_sad64x64_c -+ -+unsigned int aom_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad64x64_avg aom_sad64x64_avg_c -+ -+void aom_sad64x64x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad64x64x3d aom_sad64x64x3d_c -+ -+void aom_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad64x64x4d aom_sad64x64x4d_c -+ -+unsigned int aom_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad8x16 aom_sad8x16_c -+ -+unsigned int aom_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad8x16_avg aom_sad8x16_avg_c -+ -+void aom_sad8x16x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad8x16x3d aom_sad8x16x3d_c -+ -+void aom_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad8x16x4d aom_sad8x16x4d_c -+ -+unsigned int aom_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad8x4 aom_sad8x4_c -+ -+unsigned int aom_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad8x4_avg aom_sad8x4_avg_c -+ -+void aom_sad8x4x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad8x4x3d aom_sad8x4x3d_c -+ -+void aom_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad8x4x4d aom_sad8x4x4d_c -+ -+unsigned int aom_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad8x8 aom_sad8x8_c -+ -+unsigned int aom_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); -+#define aom_sad8x8_avg aom_sad8x8_avg_c -+ -+void aom_sad8x8x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad8x8x3d aom_sad8x8x3d_c -+ -+void aom_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad8x8x4d aom_sad8x8x4d_c -+ -+unsigned int aom_sad_skip_128x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_128x128 aom_sad_skip_128x128_c -+ -+void aom_sad_skip_128x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_128x128x4d aom_sad_skip_128x128x4d_c -+ -+unsigned int aom_sad_skip_128x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_128x64 aom_sad_skip_128x64_c -+ -+void aom_sad_skip_128x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_128x64x4d aom_sad_skip_128x64x4d_c -+ -+unsigned int aom_sad_skip_16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_16x16 aom_sad_skip_16x16_c -+ -+void aom_sad_skip_16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_16x16x4d aom_sad_skip_16x16x4d_c -+ -+unsigned int aom_sad_skip_16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_16x32 aom_sad_skip_16x32_c -+ -+void aom_sad_skip_16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_16x32x4d aom_sad_skip_16x32x4d_c -+ -+unsigned int aom_sad_skip_16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_16x8 aom_sad_skip_16x8_c -+ -+void aom_sad_skip_16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_16x8x4d aom_sad_skip_16x8x4d_c -+ -+unsigned int aom_sad_skip_32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_32x16 aom_sad_skip_32x16_c -+ -+void aom_sad_skip_32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_32x16x4d aom_sad_skip_32x16x4d_c -+ -+unsigned int aom_sad_skip_32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_32x32 aom_sad_skip_32x32_c -+ -+void aom_sad_skip_32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_32x32x4d aom_sad_skip_32x32x4d_c -+ -+unsigned int aom_sad_skip_32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_32x64 aom_sad_skip_32x64_c -+ -+void aom_sad_skip_32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_32x64x4d aom_sad_skip_32x64x4d_c -+ -+unsigned int aom_sad_skip_4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_4x4 aom_sad_skip_4x4_c -+ -+void aom_sad_skip_4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_4x4x4d aom_sad_skip_4x4x4d_c -+ -+unsigned int aom_sad_skip_4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_4x8 aom_sad_skip_4x8_c -+ -+void aom_sad_skip_4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_4x8x4d aom_sad_skip_4x8x4d_c -+ -+unsigned int aom_sad_skip_64x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_64x128 aom_sad_skip_64x128_c -+ -+void aom_sad_skip_64x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_64x128x4d aom_sad_skip_64x128x4d_c -+ -+unsigned int aom_sad_skip_64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_64x32 aom_sad_skip_64x32_c -+ -+void aom_sad_skip_64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_64x32x4d aom_sad_skip_64x32x4d_c -+ -+unsigned int aom_sad_skip_64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_64x64 aom_sad_skip_64x64_c -+ -+void aom_sad_skip_64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_64x64x4d aom_sad_skip_64x64x4d_c -+ -+unsigned int aom_sad_skip_8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_8x16 aom_sad_skip_8x16_c -+ -+void aom_sad_skip_8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_8x16x4d aom_sad_skip_8x16x4d_c -+ -+unsigned int aom_sad_skip_8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_8x4 aom_sad_skip_8x4_c -+ -+void aom_sad_skip_8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_8x4x4d aom_sad_skip_8x4x4d_c -+ -+unsigned int aom_sad_skip_8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); -+#define aom_sad_skip_8x8 aom_sad_skip_8x8_c -+ -+void aom_sad_skip_8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); -+#define aom_sad_skip_8x8x4d aom_sad_skip_8x8x4d_c -+ -+int aom_satd_c(const tran_low_t *coeff, int length); -+#define aom_satd aom_satd_c -+ -+int aom_satd_lp_c(const int16_t *coeff, int length); -+#define aom_satd_lp aom_satd_lp_c -+ -+void aom_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h); -+#define aom_scaled_2d aom_scaled_2d_c -+ -+void aom_smooth_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_16x16 aom_smooth_h_predictor_16x16_c -+ -+void aom_smooth_h_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_16x32 aom_smooth_h_predictor_16x32_c -+ -+void aom_smooth_h_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_16x4 aom_smooth_h_predictor_16x4_c -+ -+void aom_smooth_h_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_16x64 aom_smooth_h_predictor_16x64_c -+ -+void aom_smooth_h_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_16x8 aom_smooth_h_predictor_16x8_c -+ -+void aom_smooth_h_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_32x16 aom_smooth_h_predictor_32x16_c -+ -+void aom_smooth_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_32x32 aom_smooth_h_predictor_32x32_c -+ -+void aom_smooth_h_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_32x64 aom_smooth_h_predictor_32x64_c -+ -+void aom_smooth_h_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_32x8 aom_smooth_h_predictor_32x8_c -+ -+void aom_smooth_h_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_4x16 aom_smooth_h_predictor_4x16_c -+ -+void aom_smooth_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_4x4 aom_smooth_h_predictor_4x4_c -+ -+void aom_smooth_h_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_4x8 aom_smooth_h_predictor_4x8_c -+ -+void aom_smooth_h_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_64x16 aom_smooth_h_predictor_64x16_c -+ -+void aom_smooth_h_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_64x32 aom_smooth_h_predictor_64x32_c -+ -+void aom_smooth_h_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_64x64 aom_smooth_h_predictor_64x64_c -+ -+void aom_smooth_h_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_8x16 aom_smooth_h_predictor_8x16_c -+ -+void aom_smooth_h_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_8x32 aom_smooth_h_predictor_8x32_c -+ -+void aom_smooth_h_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_8x4 aom_smooth_h_predictor_8x4_c -+ -+void aom_smooth_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_h_predictor_8x8 aom_smooth_h_predictor_8x8_c -+ -+void aom_smooth_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_16x16 aom_smooth_predictor_16x16_c -+ -+void aom_smooth_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_16x32 aom_smooth_predictor_16x32_c -+ -+void aom_smooth_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_16x4 aom_smooth_predictor_16x4_c -+ -+void aom_smooth_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_16x64 aom_smooth_predictor_16x64_c -+ -+void aom_smooth_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_16x8 aom_smooth_predictor_16x8_c -+ -+void aom_smooth_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_32x16 aom_smooth_predictor_32x16_c -+ -+void aom_smooth_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_32x32 aom_smooth_predictor_32x32_c -+ -+void aom_smooth_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_32x64 aom_smooth_predictor_32x64_c -+ -+void aom_smooth_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_32x8 aom_smooth_predictor_32x8_c -+ -+void aom_smooth_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_4x16 aom_smooth_predictor_4x16_c -+ -+void aom_smooth_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_4x4 aom_smooth_predictor_4x4_c -+ -+void aom_smooth_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_4x8 aom_smooth_predictor_4x8_c -+ -+void aom_smooth_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_64x16 aom_smooth_predictor_64x16_c -+ -+void aom_smooth_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_64x32 aom_smooth_predictor_64x32_c -+ -+void aom_smooth_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_64x64 aom_smooth_predictor_64x64_c -+ -+void aom_smooth_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_8x16 aom_smooth_predictor_8x16_c -+ -+void aom_smooth_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_8x32 aom_smooth_predictor_8x32_c -+ -+void aom_smooth_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_8x4 aom_smooth_predictor_8x4_c -+ -+void aom_smooth_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_predictor_8x8 aom_smooth_predictor_8x8_c -+ -+void aom_smooth_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_16x16 aom_smooth_v_predictor_16x16_c -+ -+void aom_smooth_v_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_16x32 aom_smooth_v_predictor_16x32_c -+ -+void aom_smooth_v_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_16x4 aom_smooth_v_predictor_16x4_c -+ -+void aom_smooth_v_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_16x64 aom_smooth_v_predictor_16x64_c -+ -+void aom_smooth_v_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_16x8 aom_smooth_v_predictor_16x8_c -+ -+void aom_smooth_v_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_32x16 aom_smooth_v_predictor_32x16_c -+ -+void aom_smooth_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_32x32 aom_smooth_v_predictor_32x32_c -+ -+void aom_smooth_v_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_32x64 aom_smooth_v_predictor_32x64_c -+ -+void aom_smooth_v_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_32x8 aom_smooth_v_predictor_32x8_c -+ -+void aom_smooth_v_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_4x16 aom_smooth_v_predictor_4x16_c -+ -+void aom_smooth_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_4x4 aom_smooth_v_predictor_4x4_c -+ -+void aom_smooth_v_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_4x8 aom_smooth_v_predictor_4x8_c -+ -+void aom_smooth_v_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_64x16 aom_smooth_v_predictor_64x16_c -+ -+void aom_smooth_v_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_64x32 aom_smooth_v_predictor_64x32_c -+ -+void aom_smooth_v_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_64x64 aom_smooth_v_predictor_64x64_c -+ -+void aom_smooth_v_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_8x16 aom_smooth_v_predictor_8x16_c -+ -+void aom_smooth_v_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_8x32 aom_smooth_v_predictor_8x32_c -+ -+void aom_smooth_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_8x4 aom_smooth_v_predictor_8x4_c -+ -+void aom_smooth_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_smooth_v_predictor_8x8 aom_smooth_v_predictor_8x8_c -+ -+int64_t aom_sse_c(const uint8_t *a, int a_stride, const uint8_t *b,int b_stride, int width, int height); -+#define aom_sse aom_sse_c -+ -+void aom_ssim_parms_8x8_c(const uint8_t *s, int sp, const uint8_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr); -+#define aom_ssim_parms_8x8 aom_ssim_parms_8x8_c -+ -+uint32_t aom_sub_pixel_avg_variance128x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance128x128 aom_sub_pixel_avg_variance128x128_c -+ -+uint32_t aom_sub_pixel_avg_variance128x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance128x64 aom_sub_pixel_avg_variance128x64_c -+ -+uint32_t aom_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance16x16 aom_sub_pixel_avg_variance16x16_c -+ -+uint32_t aom_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance16x32 aom_sub_pixel_avg_variance16x32_c -+ -+uint32_t aom_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance16x8 aom_sub_pixel_avg_variance16x8_c -+ -+uint32_t aom_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance32x16 aom_sub_pixel_avg_variance32x16_c -+ -+uint32_t aom_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance32x32 aom_sub_pixel_avg_variance32x32_c -+ -+uint32_t aom_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance32x64 aom_sub_pixel_avg_variance32x64_c -+ -+uint32_t aom_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance4x4 aom_sub_pixel_avg_variance4x4_c -+ -+uint32_t aom_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance4x8 aom_sub_pixel_avg_variance4x8_c -+ -+uint32_t aom_sub_pixel_avg_variance64x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance64x128 aom_sub_pixel_avg_variance64x128_c -+ -+uint32_t aom_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance64x32 aom_sub_pixel_avg_variance64x32_c -+ -+uint32_t aom_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance64x64 aom_sub_pixel_avg_variance64x64_c -+ -+uint32_t aom_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance8x16 aom_sub_pixel_avg_variance8x16_c -+ -+uint32_t aom_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance8x4 aom_sub_pixel_avg_variance8x4_c -+ -+uint32_t aom_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); -+#define aom_sub_pixel_avg_variance8x8 aom_sub_pixel_avg_variance8x8_c -+ -+uint32_t aom_sub_pixel_variance128x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance128x128 aom_sub_pixel_variance128x128_c -+ -+uint32_t aom_sub_pixel_variance128x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance128x64 aom_sub_pixel_variance128x64_c -+ -+uint32_t aom_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance16x16 aom_sub_pixel_variance16x16_c -+ -+uint32_t aom_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance16x32 aom_sub_pixel_variance16x32_c -+ -+uint32_t aom_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance16x8 aom_sub_pixel_variance16x8_c -+ -+uint32_t aom_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance32x16 aom_sub_pixel_variance32x16_c -+ -+uint32_t aom_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance32x32 aom_sub_pixel_variance32x32_c -+ -+uint32_t aom_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance32x64 aom_sub_pixel_variance32x64_c -+ -+uint32_t aom_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance4x4 aom_sub_pixel_variance4x4_c -+ -+uint32_t aom_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance4x8 aom_sub_pixel_variance4x8_c -+ -+uint32_t aom_sub_pixel_variance64x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance64x128 aom_sub_pixel_variance64x128_c -+ -+uint32_t aom_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance64x32 aom_sub_pixel_variance64x32_c -+ -+uint32_t aom_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance64x64 aom_sub_pixel_variance64x64_c -+ -+uint32_t aom_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance8x16 aom_sub_pixel_variance8x16_c -+ -+uint32_t aom_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance8x4 aom_sub_pixel_variance8x4_c -+ -+uint32_t aom_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); -+#define aom_sub_pixel_variance8x8 aom_sub_pixel_variance8x8_c -+ -+void aom_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride); -+#define aom_subtract_block aom_subtract_block_c -+ -+uint64_t aom_sum_squares_2d_i16_c(const int16_t *src, int stride, int width, int height); -+#define aom_sum_squares_2d_i16 aom_sum_squares_2d_i16_c -+ -+uint64_t aom_sum_squares_i16_c(const int16_t *src, uint32_t N); -+#define aom_sum_squares_i16 aom_sum_squares_i16_c -+ -+uint64_t aom_sum_sse_2d_i16_c(const int16_t *src, int src_stride, int width, int height, int *sum); -+#define aom_sum_sse_2d_i16 aom_sum_sse_2d_i16_c -+ -+void aom_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_16x16 aom_v_predictor_16x16_c -+ -+void aom_v_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_16x32 aom_v_predictor_16x32_c -+ -+void aom_v_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_16x4 aom_v_predictor_16x4_c -+ -+void aom_v_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_16x64 aom_v_predictor_16x64_c -+ -+void aom_v_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_16x8 aom_v_predictor_16x8_c -+ -+void aom_v_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_32x16 aom_v_predictor_32x16_c -+ -+void aom_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_32x32 aom_v_predictor_32x32_c -+ -+void aom_v_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_32x64 aom_v_predictor_32x64_c -+ -+void aom_v_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_32x8 aom_v_predictor_32x8_c -+ -+void aom_v_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_4x16 aom_v_predictor_4x16_c -+ -+void aom_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_4x4 aom_v_predictor_4x4_c -+ -+void aom_v_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_4x8 aom_v_predictor_4x8_c -+ -+void aom_v_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_64x16 aom_v_predictor_64x16_c -+ -+void aom_v_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_64x32 aom_v_predictor_64x32_c -+ -+void aom_v_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_64x64 aom_v_predictor_64x64_c -+ -+void aom_v_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_8x16 aom_v_predictor_8x16_c -+ -+void aom_v_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_8x32 aom_v_predictor_8x32_c -+ -+void aom_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_8x4 aom_v_predictor_8x4_c -+ -+void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -+#define aom_v_predictor_8x8 aom_v_predictor_8x8_c -+ -+uint64_t aom_var_2d_u16_c(uint8_t *src, int src_stride, int width, int height); -+#define aom_var_2d_u16 aom_var_2d_u16_c -+ -+uint64_t aom_var_2d_u8_c(uint8_t *src, int src_stride, int width, int height); -+#define aom_var_2d_u8 aom_var_2d_u8_c -+ -+unsigned int aom_variance128x128_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance128x128 aom_variance128x128_c -+ -+unsigned int aom_variance128x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance128x64 aom_variance128x64_c -+ -+unsigned int aom_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance16x16 aom_variance16x16_c -+ -+unsigned int aom_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance16x32 aom_variance16x32_c -+ -+unsigned int aom_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance16x8 aom_variance16x8_c -+ -+unsigned int aom_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance32x16 aom_variance32x16_c -+ -+unsigned int aom_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance32x32 aom_variance32x32_c -+ -+unsigned int aom_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance32x64 aom_variance32x64_c -+ -+unsigned int aom_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance4x4 aom_variance4x4_c -+ -+unsigned int aom_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance4x8 aom_variance4x8_c -+ -+unsigned int aom_variance64x128_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance64x128 aom_variance64x128_c -+ -+unsigned int aom_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance64x32 aom_variance64x32_c -+ -+unsigned int aom_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance64x64 aom_variance64x64_c -+ -+unsigned int aom_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance8x16 aom_variance8x16_c -+ -+unsigned int aom_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance8x4 aom_variance8x4_c -+ -+unsigned int aom_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); -+#define aom_variance8x8 aom_variance8x8_c -+ -+int aom_vector_var_c(const int16_t *ref, const int16_t *src, int bwl); -+#define aom_vector_var aom_vector_var_c -+ -+void aom_dsp_rtcd(void); -+ -+#include "config/aom_config.h" -+ -+#ifdef RTCD_C -+#include "aom_ports/ppc.h" -+static void setup_rtcd_internal(void) -+{ -+ int flags = ppc_simd_caps(); -+ -+ (void)flags; -+ -+} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h -@@ -0,0 +1,91 @@ -+/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. -+ * -+ * This source code is subject to the terms of the BSD 2 Clause License and -+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License -+ * was not distributed with this source code in the LICENSE file, you can -+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open -+ * Media Patent License 1.0 was not distributed with this source code in the -+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. -+ */ -+ -+// This file is generated. Do not edit. -+#ifndef AOM_SCALE_RTCD_H_ -+#define AOM_SCALE_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+#include -+ -+struct yv12_buffer_config; -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, int num_planes); -+#define aom_extend_frame_borders aom_extend_frame_borders_c -+ -+void aom_extend_frame_borders_plane_row_c(const struct yv12_buffer_config *ybf, int plane, int v_start, int v_end); -+#define aom_extend_frame_borders_plane_row aom_extend_frame_borders_plane_row_c -+ -+void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes); -+#define aom_yv12_copy_frame aom_yv12_copy_frame_c -+ -+void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int use_crop); -+#define aom_yv12_copy_u aom_yv12_copy_u_c -+ -+void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int use_crop); -+#define aom_yv12_copy_v aom_yv12_copy_v_c -+ -+void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int use_crop); -+#define aom_yv12_copy_y aom_yv12_copy_y_c -+ -+void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes); -+#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c -+ -+void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend); -+#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c -+ -+void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend); -+#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c -+ -+void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend); -+#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c -+ -+void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2); -+#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c -+ -+void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2); -+#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c -+ -+void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2); -+#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c -+ -+int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, bool alloc_pyramid, int num_planes); -+#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c -+ -+void aom_scale_rtcd(void); -+ -+#include "config/aom_config.h" -+ -+#ifdef RTCD_C -+#include "aom_ports/ppc.h" -+static void setup_rtcd_internal(void) -+{ -+ int flags = ppc_simd_caps(); -+ -+ (void)flags; -+ -+} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h -@@ -0,0 +1,438 @@ -+/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. -+ * -+ * This source code is subject to the terms of the BSD 2 Clause License and -+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License -+ * was not distributed with this source code in the LICENSE file, you can -+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open -+ * Media Patent License 1.0 was not distributed with this source code in the -+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. -+ */ -+ -+// This file is generated. Do not edit. -+#ifndef AV1_RTCD_H_ -+#define AV1_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+/* -+ * AV1 -+ */ -+ -+#include "aom/aom_integer.h" -+#include "aom_dsp/odintrin.h" -+#include "aom_dsp/txfm_common.h" -+#include "av1/common/av1_txfm.h" -+#include "av1/common/common.h" -+#include "av1/common/convolve.h" -+#include "av1/common/enums.h" -+#include "av1/common/filter.h" -+#include "av1/common/quant_common.h" -+#include "av1/common/restoration.h" -+ -+struct macroblockd; -+ -+/* Encoder forward decls */ -+struct macroblock; -+struct txfm_param; -+struct aom_variance_vtable; -+struct search_site_config; -+struct yv12_buffer_config; -+struct NN_CONFIG; -+typedef struct NN_CONFIG NN_CONFIG; -+ -+enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION); -+#if CONFIG_NN_V2 -+enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS); -+struct NN_CONFIG_V2; -+typedef struct NN_CONFIG_V2 NN_CONFIG_V2; -+struct FC_LAYER; -+typedef struct FC_LAYER FC_LAYER; -+#endif // CONFIG_NN_V2 -+ -+struct CNN_CONFIG; -+typedef struct CNN_CONFIG CNN_CONFIG; -+struct CNN_LAYER_CONFIG; -+typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG; -+struct CNN_THREAD_DATA; -+typedef struct CNN_THREAD_DATA CNN_THREAD_DATA; -+struct CNN_BRANCH_CONFIG; -+typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG; -+struct CNN_MULTI_OUT; -+typedef struct CNN_MULTI_OUT CNN_MULTI_OUT; -+ -+/* Function pointers return by CfL functions */ -+typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride, -+ uint16_t *output_q3); -+ -+#if CONFIG_AV1_HIGHBITDEPTH -+typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride, -+ uint16_t *output_q3); -+ -+typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst, -+ int dst_stride, int alpha_q3, int bd); -+#endif -+ -+typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst); -+ -+typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst, -+ int dst_stride, int alpha_q3); -+ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+void aom_comp_avg_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, -+ const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width, -+ int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref, -+ int ref_stride, int subpel_search); -+#define aom_comp_avg_upsampled_pred aom_comp_avg_upsampled_pred_c -+ -+void aom_quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale); -+#define aom_quantize_b_helper aom_quantize_b_helper_c -+ -+void aom_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, -+ const MV *const mv, uint8_t *comp_pred, int width, int height, int subpel_x_q3, -+ int subpel_y_q3, const uint8_t *ref, int ref_stride, int subpel_search); -+#define aom_upsampled_pred aom_upsampled_pred_c -+ -+int av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd); -+#define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_c -+ -+int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz); -+#define av1_block_error av1_block_error_c -+ -+int64_t av1_block_error_lp_c(const int16_t *coeff, const int16_t *dqcoeff, intptr_t block_size); -+#define av1_block_error_lp av1_block_error_lp_c -+ -+void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w); -+#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c -+ -+void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd); -+#define av1_build_compound_diffwtd_mask_d16 av1_build_compound_diffwtd_mask_d16_c -+ -+void av1_calc_indices_dim1_c(const int16_t *data, const int16_t *centroids, uint8_t *indices, int64_t *total_dist, int n, int k); -+#define av1_calc_indices_dim1 av1_calc_indices_dim1_c -+ -+void av1_calc_indices_dim2_c(const int16_t *data, const int16_t *centroids, uint8_t *indices, int64_t *total_dist, int n, int k); -+#define av1_calc_indices_dim2 av1_calc_indices_dim2_c -+ -+void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params); -+#define av1_convolve_2d_scale av1_convolve_2d_scale_c -+ -+void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params); -+#define av1_convolve_2d_sr av1_convolve_2d_sr_c -+ -+void av1_convolve_2d_sr_intrabc_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params); -+#define av1_convolve_2d_sr_intrabc av1_convolve_2d_sr_intrabc_c -+ -+void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn); -+#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c -+ -+void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params); -+#define av1_convolve_x_sr av1_convolve_x_sr_c -+ -+void av1_convolve_x_sr_intrabc_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params); -+#define av1_convolve_x_sr_intrabc av1_convolve_x_sr_intrabc_c -+ -+void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn); -+#define av1_convolve_y_sr av1_convolve_y_sr_c -+ -+void av1_convolve_y_sr_intrabc_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn); -+#define av1_convolve_y_sr_intrabc av1_convolve_y_sr_intrabc_c -+ -+int av1_denoiser_filter_c(const uint8_t *sig, int sig_stride, const uint8_t *mc_avg, int mc_avg_stride, uint8_t *avg, int avg_stride, int increase_denoising, BLOCK_SIZE bs, int motion_magnitude); -+#define av1_denoiser_filter av1_denoiser_filter_c -+ -+void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params); -+#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_c -+ -+void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params); -+#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_c -+ -+void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params); -+#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_c -+ -+void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params); -+#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_c -+ -+void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy); -+#define av1_dr_prediction_z1 av1_dr_prediction_z1_c -+ -+void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy); -+#define av1_dr_prediction_z2 av1_dr_prediction_z2_c -+ -+void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy); -+#define av1_dr_prediction_z3 av1_dr_prediction_z3_c -+ -+void av1_fdwt8x8_uint8_input_c(const uint8_t *input, tran_low_t *output, int stride, int hbd); -+#define av1_fdwt8x8_uint8_input av1_fdwt8x8_uint8_input_c -+ -+void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength); -+#define av1_filter_intra_edge av1_filter_intra_edge_c -+ -+void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode); -+#define av1_filter_intra_predictor av1_filter_intra_predictor_c -+ -+void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_16x16 av1_fwd_txfm2d_16x16_c -+ -+void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c -+ -+void av1_fwd_txfm2d_16x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_16x4 av1_fwd_txfm2d_16x4_c -+ -+void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c -+ -+void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c -+ -+void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_32x32 av1_fwd_txfm2d_32x32_c -+ -+void av1_fwd_txfm2d_32x64_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_32x64 av1_fwd_txfm2d_32x64_c -+ -+void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_4x4 av1_fwd_txfm2d_4x4_c -+ -+void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c -+ -+void av1_fwd_txfm2d_64x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_64x32 av1_fwd_txfm2d_64x32_c -+ -+void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_64x64 av1_fwd_txfm2d_64x64_c -+ -+void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c -+ -+void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c -+ -+void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_fwd_txfm2d_8x8 av1_fwd_txfm2d_8x8_c -+ -+void av1_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride); -+#define av1_fwht4x4 av1_fwht4x4_c -+ -+uint32_t av1_get_crc32c_value_c(void *crc_calculator, uint8_t *p, size_t length); -+#define av1_get_crc32c_value av1_get_crc32c_value_c -+ -+void av1_get_horver_correlation_full_c(const int16_t *diff, int stride, int w, int h, float *hcorr, float *vcorr); -+#define av1_get_horver_correlation_full av1_get_horver_correlation_full_c -+ -+void av1_get_nz_map_contexts_c(const uint8_t *const levels, const int16_t *const scan, const uint16_t eob, const TX_SIZE tx_size, const TX_CLASS tx_class, int8_t *const coeff_contexts); -+#define av1_get_nz_map_contexts av1_get_nz_map_contexts_c -+ -+void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c -+ -+void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd); -+#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c -+ -+void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd); -+#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c -+ -+void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c -+ -+void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c -+ -+void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c -+ -+void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c -+ -+void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c -+ -+void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c -+ -+void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c -+ -+void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c -+ -+void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c -+ -+void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c -+ -+void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c -+ -+void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c -+ -+void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c -+ -+void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c -+ -+void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c -+ -+void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c -+ -+void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c -+ -+void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c -+ -+void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); -+#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c -+ -+void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param); -+#define av1_inv_txfm_add av1_inv_txfm_add_c -+ -+void av1_lowbd_fwd_txfm_c(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param); -+#define av1_lowbd_fwd_txfm av1_lowbd_fwd_txfm_c -+ -+void av1_nn_fast_softmax_16_c(const float *input_nodes, float *output); -+#define av1_nn_fast_softmax_16 av1_nn_fast_softmax_16_c -+ -+void av1_nn_predict_c(const float *input_nodes, const NN_CONFIG *const nn_config, int reduce_prec, float *const output); -+#define av1_nn_predict av1_nn_predict_c -+ -+void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr, int log_scale); -+#define av1_quantize_b av1_quantize_b_c -+ -+void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define av1_quantize_fp av1_quantize_fp_c -+ -+void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c -+ -+void av1_quantize_fp_64x64_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define av1_quantize_fp_64x64 av1_quantize_fp_64x64_c -+ -+void av1_quantize_lp_c(const int16_t *coeff_ptr, intptr_t n_coeffs, const int16_t *round_ptr, const int16_t *quant_ptr, int16_t *qcoeff_ptr, int16_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); -+#define av1_quantize_lp av1_quantize_lp_c -+ -+void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes); -+#define av1_resize_and_extend_frame av1_resize_and_extend_frame_c -+ -+void av1_resize_horz_dir_c(const uint8_t *const input, int in_stride, uint8_t *intbuf, int height, int filtered_length, int width2); -+#define av1_resize_horz_dir av1_resize_horz_dir_c -+ -+bool av1_resize_vert_dir_c(uint8_t *intbuf, uint8_t *output, int out_stride, int height, int height2, int width2, int start_col); -+#define av1_resize_vert_dir av1_resize_vert_dir_c -+ -+void av1_round_shift_array_c(int32_t *arr, int size, int bit); -+#define av1_round_shift_array av1_round_shift_array_c -+ -+int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height, -+ int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride, -+ int sgr_params_idx, int bit_depth, int highbd); -+#define av1_selfguided_restoration av1_selfguided_restoration_c -+ -+void av1_txb_init_levels_c(const tran_low_t *const coeff, const int width, const int height, uint8_t *const levels); -+#define av1_txb_init_levels av1_txb_init_levels_c -+ -+void av1_upsample_intra_edge_c(uint8_t *p, int sz); -+#define av1_upsample_intra_edge av1_upsample_intra_edge_c -+ -+void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta); -+#define av1_warp_affine av1_warp_affine_c -+ -+void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N); -+#define av1_wedge_compute_delta_squares av1_wedge_compute_delta_squares_c -+ -+int8_t av1_wedge_sign_from_residuals_c(const int16_t *ds, const uint8_t *m, int N, int64_t limit); -+#define av1_wedge_sign_from_residuals av1_wedge_sign_from_residuals_c -+ -+uint64_t av1_wedge_sse_from_residuals_c(const int16_t *r1, const int16_t *d, const uint8_t *m, int N); -+#define av1_wedge_sse_from_residuals av1_wedge_sse_from_residuals_c -+ -+void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const WienerConvolveParams *conv_params); -+#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_c -+ -+void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int width, int height); -+#define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_c -+ -+void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int width, int height); -+#define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_c -+ -+void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_16_0 cdef_filter_16_0_c -+ -+void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_16_1 cdef_filter_16_1_c -+ -+void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_16_2 cdef_filter_16_2_c -+ -+void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_16_3 cdef_filter_16_3_c -+ -+void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_8_0 cdef_filter_8_0_c -+ -+void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_8_1 cdef_filter_8_1_c -+ -+void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_8_2 cdef_filter_8_2_c -+ -+void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); -+#define cdef_filter_8_3 cdef_filter_8_3_c -+ -+int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift); -+#define cdef_find_dir cdef_find_dir_c -+ -+void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2); -+#define cdef_find_dir_dual cdef_find_dir_dual_c -+ -+cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size); -+#define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_c -+ -+cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size); -+#define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_c -+ -+cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size); -+#define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_c -+ -+cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size); -+#define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_c -+ -+cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size); -+cfl_subtract_average_fn cfl_get_subtract_average_fn_vsx(TX_SIZE tx_size); -+#define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_vsx -+ -+void av1_rtcd(void); -+ -+#include "config/aom_config.h" -+ -+#ifdef RTCD_C -+#include "aom_ports/ppc.h" -+static void setup_rtcd_internal(void) -+{ -+ int flags = ppc_simd_caps(); -+ -+ (void)flags; -+ -+} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h -+++ /dev/null -@@ -1,330 +0,0 @@ --/* -- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. -- * -- * Use of this source code is governed by a BSD-style license -- * that can be found in the LICENSE file in the root of the source -- * tree. An additional intellectual property rights grant can be found -- * in the file PATENTS. All contributing project authors may -- * be found in the AUTHORS file in the root of the source tree. -- */ -- --// This file is generated. Do not edit. --#ifndef VP8_RTCD_H_ --#define VP8_RTCD_H_ -- --#ifdef RTCD_C --#define RTCD_EXTERN --#else --#define RTCD_EXTERN extern --#endif -- --/* -- * VP8 -- */ -- --struct blockd; --struct macroblockd; --struct loop_filter_info; -- --/* Encoder forward decls */ --struct block; --struct macroblock; --struct variance_vtable; --union int_mv; --struct yv12_buffer_config; -- --#ifdef __cplusplus --extern "C" { --#endif -- --void vp8_bilinear_predict16x16_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c -- --void vp8_bilinear_predict4x4_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c -- --void vp8_bilinear_predict8x4_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c -- --void vp8_bilinear_predict8x8_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c -- --int vp8_block_error_c(short* coeff, short* dqcoeff); --#define vp8_block_error vp8_block_error_c -- --void vp8_copy32xn_c(const unsigned char* src_ptr, -- int src_stride, -- unsigned char* dst_ptr, -- int dst_stride, -- int height); --#define vp8_copy32xn vp8_copy32xn_c -- --void vp8_copy_mem16x16_c(unsigned char* src, -- int src_stride, -- unsigned char* dst, -- int dst_stride); --#define vp8_copy_mem16x16 vp8_copy_mem16x16_c -- --void vp8_copy_mem8x4_c(unsigned char* src, -- int src_stride, -- unsigned char* dst, -- int dst_stride); --#define vp8_copy_mem8x4 vp8_copy_mem8x4_c -- --void vp8_copy_mem8x8_c(unsigned char* src, -- int src_stride, -- unsigned char* dst, -- int dst_stride); --#define vp8_copy_mem8x8 vp8_copy_mem8x8_c -- --void vp8_dc_only_idct_add_c(short input_dc, -- unsigned char* pred_ptr, -- int pred_stride, -- unsigned char* dst_ptr, -- int dst_stride); --#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c -- --int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y, -- int mc_avg_y_stride, -- unsigned char* running_avg_y, -- int avg_y_stride, -- unsigned char* sig, -- int sig_stride, -- unsigned int motion_magnitude, -- int increase_denoising); --#define vp8_denoiser_filter vp8_denoiser_filter_c -- --int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg, -- int mc_avg_stride, -- unsigned char* running_avg, -- int avg_stride, -- unsigned char* sig, -- int sig_stride, -- unsigned int motion_magnitude, -- int increase_denoising); --#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c -- --void vp8_dequant_idct_add_c(short* input, -- short* dq, -- unsigned char* dest, -- int stride); --#define vp8_dequant_idct_add vp8_dequant_idct_add_c -- --void vp8_dequant_idct_add_uv_block_c(short* q, -- short* dq, -- unsigned char* dst_u, -- unsigned char* dst_v, -- int stride, -- char* eobs); --#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c -- --void vp8_dequant_idct_add_y_block_c(short* q, -- short* dq, -- unsigned char* dst, -- int stride, -- char* eobs); --#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c -- --void vp8_dequantize_b_c(struct blockd*, short* DQC); --#define vp8_dequantize_b vp8_dequantize_b_c -- --int vp8_diamond_search_sad_c(struct macroblock* x, -- struct block* b, -- struct blockd* d, -- union int_mv* ref_mv, -- union int_mv* best_mv, -- int search_param, -- int sad_per_bit, -- int* num00, -- struct variance_vtable* fn_ptr, -- int* mvcost[2], -- union int_mv* center_mv); --#define vp8_diamond_search_sad vp8_diamond_search_sad_c -- --void vp8_fast_quantize_b_c(struct block*, struct blockd*); --#define vp8_fast_quantize_b vp8_fast_quantize_b_c -- --void vp8_filter_by_weight16x16_c(unsigned char* src, -- int src_stride, -- unsigned char* dst, -- int dst_stride, -- int src_weight); --#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c -- --void vp8_filter_by_weight4x4_c(unsigned char* src, -- int src_stride, -- unsigned char* dst, -- int dst_stride, -- int src_weight); --#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c -- --void vp8_filter_by_weight8x8_c(unsigned char* src, -- int src_stride, -- unsigned char* dst, -- int dst_stride, -- int src_weight); --#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c -- --void vp8_loop_filter_bh_c(unsigned char* y_ptr, -- unsigned char* u_ptr, -- unsigned char* v_ptr, -- int y_stride, -- int uv_stride, -- struct loop_filter_info* lfi); --#define vp8_loop_filter_bh vp8_loop_filter_bh_c -- --void vp8_loop_filter_bv_c(unsigned char* y_ptr, -- unsigned char* u_ptr, -- unsigned char* v_ptr, -- int y_stride, -- int uv_stride, -- struct loop_filter_info* lfi); --#define vp8_loop_filter_bv vp8_loop_filter_bv_c -- --void vp8_loop_filter_mbh_c(unsigned char* y_ptr, -- unsigned char* u_ptr, -- unsigned char* v_ptr, -- int y_stride, -- int uv_stride, -- struct loop_filter_info* lfi); --#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c -- --void vp8_loop_filter_mbv_c(unsigned char* y_ptr, -- unsigned char* u_ptr, -- unsigned char* v_ptr, -- int y_stride, -- int uv_stride, -- struct loop_filter_info* lfi); --#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c -- --void vp8_loop_filter_bhs_c(unsigned char* y_ptr, -- int y_stride, -- const unsigned char* blimit); --#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c -- --void vp8_loop_filter_bvs_c(unsigned char* y_ptr, -- int y_stride, -- const unsigned char* blimit); --#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c -- --void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr, -- int y_stride, -- const unsigned char* blimit); --#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c -- --void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr, -- int y_stride, -- const unsigned char* blimit); --#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c -- --int vp8_mbblock_error_c(struct macroblock* mb, int dc); --#define vp8_mbblock_error vp8_mbblock_error_c -- --int vp8_mbuverror_c(struct macroblock* mb); --#define vp8_mbuverror vp8_mbuverror_c -- --int vp8_refining_search_sad_c(struct macroblock* x, -- struct block* b, -- struct blockd* d, -- union int_mv* ref_mv, -- int error_per_bit, -- int search_range, -- struct variance_vtable* fn_ptr, -- int* mvcost[2], -- union int_mv* center_mv); --#define vp8_refining_search_sad vp8_refining_search_sad_c -- --void vp8_regular_quantize_b_c(struct block*, struct blockd*); --#define vp8_regular_quantize_b vp8_regular_quantize_b_c -- --void vp8_short_fdct4x4_c(short* input, short* output, int pitch); --#define vp8_short_fdct4x4 vp8_short_fdct4x4_c -- --void vp8_short_fdct8x4_c(short* input, short* output, int pitch); --#define vp8_short_fdct8x4 vp8_short_fdct8x4_c -- --void vp8_short_idct4x4llm_c(short* input, -- unsigned char* pred_ptr, -- int pred_stride, -- unsigned char* dst_ptr, -- int dst_stride); --#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c -- --void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff); --#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c -- --void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff); --#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c -- --void vp8_short_walsh4x4_c(short* input, short* output, int pitch); --#define vp8_short_walsh4x4 vp8_short_walsh4x4_c -- --void vp8_sixtap_predict16x16_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c -- --void vp8_sixtap_predict4x4_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c -- --void vp8_sixtap_predict8x4_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c -- --void vp8_sixtap_predict8x8_c(unsigned char* src_ptr, -- int src_pixels_per_line, -- int xoffset, -- int yoffset, -- unsigned char* dst_ptr, -- int dst_pitch); --#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c -- --void vp8_rtcd(void); -- --#include "vpx_config.h" -- --#ifdef RTCD_C --#include "vpx_ports/ppc.h" --static void setup_rtcd_internal(void) { -- int flags = ppc_simd_caps(); -- (void)flags; --} --#endif -- --#ifdef __cplusplus --} // extern "C" --#endif -- --#endif // VP8_RTCD_H_ -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h -+++ /dev/null -@@ -1,206 +0,0 @@ --/* -- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. -- * -- * Use of this source code is governed by a BSD-style license -- * that can be found in the LICENSE file in the root of the source -- * tree. An additional intellectual property rights grant can be found -- * in the file PATENTS. All contributing project authors may -- * be found in the AUTHORS file in the root of the source tree. -- */ -- --// This file is generated. Do not edit. --#ifndef VP9_RTCD_H_ --#define VP9_RTCD_H_ -- --#ifdef RTCD_C --#define RTCD_EXTERN --#else --#define RTCD_EXTERN extern --#endif -- --/* -- * VP9 -- */ -- --#include "vp9/common/vp9_common.h" --#include "vp9/common/vp9_enums.h" --#include "vp9/common/vp9_filter.h" --#include "vpx/vpx_integer.h" --#if !CONFIG_REALTIME_ONLY && CONFIG_VP9_ENCODER --#include "vp9/encoder/vp9_temporal_filter.h" --#endif -- --struct macroblockd; -- --/* Encoder forward decls */ --struct macroblock; --struct macroblock_plane; --struct vp9_sad_table; --struct ScanOrder; --struct search_site_config; --struct mv; --union int_mv; --struct yv12_buffer_config; -- --#ifdef __cplusplus --extern "C" { --#endif -- --int64_t vp9_block_error_c(const tran_low_t* coeff, -- const tran_low_t* dqcoeff, -- intptr_t block_size, -- int64_t* ssz); --#define vp9_block_error vp9_block_error_c -- --int64_t vp9_block_error_fp_c(const tran_low_t* coeff, -- const tran_low_t* dqcoeff, -- int block_size); --#define vp9_block_error_fp vp9_block_error_fp_c -- --int vp9_denoiser_filter_c(const uint8_t* sig, -- int sig_stride, -- const uint8_t* mc_avg, -- int mc_avg_stride, -- uint8_t* avg, -- int avg_stride, -- int increase_denoising, -- BLOCK_SIZE bs, -- int motion_magnitude); --#define vp9_denoiser_filter vp9_denoiser_filter_c -- --int vp9_diamond_search_sad_c(const struct macroblock* x, -- const struct search_site_config* cfg, -- struct mv* ref_mv, -- uint32_t start_mv_sad, -- struct mv* best_mv, -- int search_param, -- int sad_per_bit, -- int* num00, -- const struct vp9_sad_table* sad_fn_ptr, -- const struct mv* center_mv); --#define vp9_diamond_search_sad vp9_diamond_search_sad_c -- --void vp9_fht16x16_c(const int16_t* input, -- tran_low_t* output, -- int stride, -- int tx_type); --#define vp9_fht16x16 vp9_fht16x16_c -- --void vp9_fht4x4_c(const int16_t* input, -- tran_low_t* output, -- int stride, -- int tx_type); --#define vp9_fht4x4 vp9_fht4x4_c -- --void vp9_fht8x8_c(const int16_t* input, -- tran_low_t* output, -- int stride, -- int tx_type); --#define vp9_fht8x8 vp9_fht8x8_c -- --void vp9_filter_by_weight16x16_c(const uint8_t* src, -- int src_stride, -- uint8_t* dst, -- int dst_stride, -- int src_weight); --#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c -- --void vp9_filter_by_weight8x8_c(const uint8_t* src, -- int src_stride, -- uint8_t* dst, -- int dst_stride, -- int src_weight); --#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c -- --void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride); --#define vp9_fwht4x4 vp9_fwht4x4_c -- --void vp9_iht16x16_256_add_c(const tran_low_t* input, -- uint8_t* dest, -- int stride, -- int tx_type); --void vp9_iht16x16_256_add_vsx(const tran_low_t* input, -- uint8_t* dest, -- int stride, -- int tx_type); --#define vp9_iht16x16_256_add vp9_iht16x16_256_add_vsx -- --void vp9_iht4x4_16_add_c(const tran_low_t* input, -- uint8_t* dest, -- int stride, -- int tx_type); --void vp9_iht4x4_16_add_vsx(const tran_low_t* input, -- uint8_t* dest, -- int stride, -- int tx_type); --#define vp9_iht4x4_16_add vp9_iht4x4_16_add_vsx -- --void vp9_iht8x8_64_add_c(const tran_low_t* input, -- uint8_t* dest, -- int stride, -- int tx_type); --void vp9_iht8x8_64_add_vsx(const tran_low_t* input, -- uint8_t* dest, -- int stride, -- int tx_type); --#define vp9_iht8x8_64_add vp9_iht8x8_64_add_vsx -- --void vp9_quantize_fp_c(const tran_low_t* coeff_ptr, -- intptr_t n_coeffs, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --void vp9_quantize_fp_vsx(const tran_low_t* coeff_ptr, -- intptr_t n_coeffs, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --#define vp9_quantize_fp vp9_quantize_fp_vsx -- --void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr, -- intptr_t n_coeffs, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --void vp9_quantize_fp_32x32_vsx(const tran_low_t* coeff_ptr, -- intptr_t n_coeffs, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_vsx -- --void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src, -- struct yv12_buffer_config* dst, -- INTERP_FILTER filter_type, -- int phase_scaler); --#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c -- --void vp9_rtcd(void); -- --#include "vpx_config.h" -- --#ifdef RTCD_C --#include "vpx_ports/ppc.h" --static void setup_rtcd_internal(void) { -- int flags = ppc_simd_caps(); -- (void)flags; --} --#endif -- --#ifdef __cplusplus --} // extern "C" --#endif -- --#endif // VP9_RTCD_H_ -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm -+++ /dev/null -@@ -1,108 +0,0 @@ --@ This file was created from a .asm file --@ using the ads2gas.pl script. --.syntax unified --.equ VPX_ARCH_ARM , 0 --.equ ARCH_ARM , 0 --.equ VPX_ARCH_AARCH64 , 0 --.equ ARCH_AARCH64 , 0 --.equ VPX_ARCH_MIPS , 0 --.equ ARCH_MIPS , 0 --.equ VPX_ARCH_X86 , 0 --.equ ARCH_X86 , 0 --.equ VPX_ARCH_X86_64 , 0 --.equ ARCH_X86_64 , 0 --.equ VPX_ARCH_PPC , 1 --.equ ARCH_PPC , 1 --.equ VPX_ARCH_LOONGARCH , 0 --.equ ARCH_LOONGARCH , 0 --.equ HAVE_NEON_ASM , 0 --.equ HAVE_NEON , 0 --.equ HAVE_NEON_DOTPROD , 0 --.equ HAVE_NEON_I8MM , 0 --.equ HAVE_SVE , 0 --.equ HAVE_SVE2 , 0 --.equ HAVE_MIPS32 , 0 --.equ HAVE_DSPR2 , 0 --.equ HAVE_MSA , 0 --.equ HAVE_MIPS64 , 0 --.equ HAVE_MMX , 0 --.equ HAVE_SSE , 0 --.equ HAVE_SSE2 , 0 --.equ HAVE_SSE3 , 0 --.equ HAVE_SSSE3 , 0 --.equ HAVE_SSE4_1 , 0 --.equ HAVE_AVX , 0 --.equ HAVE_AVX2 , 0 --.equ HAVE_AVX512 , 0 --.equ HAVE_VSX , 0 --.equ HAVE_MMI , 0 --.equ HAVE_LSX , 0 --.equ HAVE_LASX , 0 --.equ HAVE_VPX_PORTS , 1 --.equ HAVE_PTHREAD_H , 1 --.equ HAVE_UNISTD_H , 0 --.equ CONFIG_DEPENDENCY_TRACKING , 1 --.equ CONFIG_EXTERNAL_BUILD , 1 --.equ CONFIG_INSTALL_DOCS , 0 --.equ CONFIG_INSTALL_BINS , 1 --.equ CONFIG_INSTALL_LIBS , 1 --.equ CONFIG_INSTALL_SRCS , 0 --.equ CONFIG_DEBUG , 0 --.equ CONFIG_GPROF , 0 --.equ CONFIG_GCOV , 0 --.equ CONFIG_RVCT , 0 --.equ CONFIG_GCC , 1 --.equ CONFIG_MSVS , 0 --.equ CONFIG_PIC , 0 --.equ CONFIG_BIG_ENDIAN , 0 --.equ CONFIG_CODEC_SRCS , 0 --.equ CONFIG_DEBUG_LIBS , 0 --.equ CONFIG_DEQUANT_TOKENS , 0 --.equ CONFIG_DC_RECON , 0 --.equ CONFIG_RUNTIME_CPU_DETECT , 0 --.equ CONFIG_POSTPROC , 1 --.equ CONFIG_VP9_POSTPROC , 1 --.equ CONFIG_MULTITHREAD , 1 --.equ CONFIG_INTERNAL_STATS , 0 --.equ CONFIG_VP8_ENCODER , 1 --.equ CONFIG_VP8_DECODER , 1 --.equ CONFIG_VP9_ENCODER , 1 --.equ CONFIG_VP9_DECODER , 1 --.equ CONFIG_VP8 , 1 --.equ CONFIG_VP9 , 1 --.equ CONFIG_ENCODERS , 1 --.equ CONFIG_DECODERS , 1 --.equ CONFIG_STATIC_MSVCRT , 0 --.equ CONFIG_SPATIAL_RESAMPLING , 1 --.equ CONFIG_REALTIME_ONLY , 1 --.equ CONFIG_ONTHEFLY_BITPACKING , 0 --.equ CONFIG_ERROR_CONCEALMENT , 0 --.equ CONFIG_SHARED , 0 --.equ CONFIG_STATIC , 1 --.equ CONFIG_SMALL , 0 --.equ CONFIG_POSTPROC_VISUALIZER , 0 --.equ CONFIG_OS_SUPPORT , 1 --.equ CONFIG_UNIT_TESTS , 1 --.equ CONFIG_WEBM_IO , 1 --.equ CONFIG_LIBYUV , 0 --.equ CONFIG_DECODE_PERF_TESTS , 0 --.equ CONFIG_ENCODE_PERF_TESTS , 0 --.equ CONFIG_MULTI_RES_ENCODING , 1 --.equ CONFIG_TEMPORAL_DENOISING , 1 --.equ CONFIG_VP9_TEMPORAL_DENOISING , 1 --.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0 --.equ CONFIG_VP9_HIGHBITDEPTH , 0 --.equ CONFIG_BETTER_HW_COMPATIBILITY , 0 --.equ CONFIG_EXPERIMENTAL , 0 --.equ CONFIG_SIZE_LIMIT , 1 --.equ CONFIG_ALWAYS_ADJUST_BPM , 0 --.equ CONFIG_BITSTREAM_DEBUG , 0 --.equ CONFIG_MISMATCH_DEBUG , 0 --.equ CONFIG_FP_MB_STATS , 0 --.equ CONFIG_EMULATE_HARDWARE , 0 --.equ CONFIG_NON_GREEDY_MV , 0 --.equ CONFIG_RATE_CTRL , 0 --.equ CONFIG_COLLECT_COMPONENT_TIMING , 0 --.equ DECODE_WIDTH_LIMIT , 16384 --.equ DECODE_HEIGHT_LIMIT , 16384 -- .section .note.GNU-stack,"",%progbits -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.c -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.c -+++ /dev/null -@@ -1,10 +0,0 @@ --/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ --/* */ --/* Use of this source code is governed by a BSD-style license */ --/* that can be found in the LICENSE file in the root of the source */ --/* tree. An additional intellectual property rights grant can be found */ --/* in the file PATENTS. All contributing project authors may */ --/* be found in the AUTHORS file in the root of the source tree. */ --#include "vpx/vpx_codec.h" --static const char* const cfg = "--target=ppc64le-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-unit-tests"; --const char *vpx_codec_build_config(void) {return cfg;} -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.h -+++ /dev/null -@@ -1,117 +0,0 @@ --/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ --/* */ --/* Use of this source code is governed by a BSD-style license */ --/* that can be found in the LICENSE file in the root of the source */ --/* tree. An additional intellectual property rights grant can be found */ --/* in the file PATENTS. All contributing project authors may */ --/* be found in the AUTHORS file in the root of the source tree. */ --/* This file automatically generated by configure. Do not edit! */ --#ifndef VPX_CONFIG_H --#define VPX_CONFIG_H --#define RESTRICT --#define INLINE inline --#define VPX_ARCH_ARM 0 --#define ARCH_ARM 0 --#define VPX_ARCH_AARCH64 0 --#define ARCH_AARCH64 0 --#define VPX_ARCH_MIPS 0 --#define ARCH_MIPS 0 --#define VPX_ARCH_X86 0 --#define ARCH_X86 0 --#define VPX_ARCH_X86_64 0 --#define ARCH_X86_64 0 --#define VPX_ARCH_PPC 1 --#define ARCH_PPC 1 --#define VPX_ARCH_LOONGARCH 0 --#define ARCH_LOONGARCH 0 --#define HAVE_NEON_ASM 0 --#define HAVE_NEON 0 --#define HAVE_NEON_DOTPROD 0 --#define HAVE_NEON_I8MM 0 --#define HAVE_SVE 0 --#define HAVE_SVE2 0 --#define HAVE_MIPS32 0 --#define HAVE_DSPR2 0 --#define HAVE_MSA 0 --#define HAVE_MIPS64 0 --#define HAVE_MMX 0 --#define HAVE_SSE 0 --#define HAVE_SSE2 0 --#define HAVE_SSE3 0 --#define HAVE_SSSE3 0 --#define HAVE_SSE4_1 0 --#define HAVE_AVX 0 --#define HAVE_AVX2 0 --#define HAVE_AVX512 0 --#define HAVE_VSX 0 --#define HAVE_MMI 0 --#define HAVE_LSX 0 --#define HAVE_LASX 0 --#define HAVE_VPX_PORTS 1 --#define HAVE_PTHREAD_H 1 --#define HAVE_UNISTD_H 0 --#define CONFIG_DEPENDENCY_TRACKING 1 --#define CONFIG_EXTERNAL_BUILD 1 --#define CONFIG_INSTALL_DOCS 0 --#define CONFIG_INSTALL_BINS 1 --#define CONFIG_INSTALL_LIBS 1 --#define CONFIG_INSTALL_SRCS 0 --#define CONFIG_DEBUG 0 --#define CONFIG_GPROF 0 --#define CONFIG_GCOV 0 --#define CONFIG_RVCT 0 --#define CONFIG_GCC 1 --#define CONFIG_MSVS 0 --#define CONFIG_PIC 0 --#define CONFIG_BIG_ENDIAN 0 --#define CONFIG_CODEC_SRCS 0 --#define CONFIG_DEBUG_LIBS 0 --#define CONFIG_DEQUANT_TOKENS 0 --#define CONFIG_DC_RECON 0 --#define CONFIG_RUNTIME_CPU_DETECT 0 --#define CONFIG_POSTPROC 1 --#define CONFIG_VP9_POSTPROC 1 --#define CONFIG_MULTITHREAD 1 --#define CONFIG_INTERNAL_STATS 0 --#define CONFIG_VP8_ENCODER 1 --#define CONFIG_VP8_DECODER 1 --#define CONFIG_VP9_ENCODER 1 --#define CONFIG_VP9_DECODER 1 --#define CONFIG_VP8 1 --#define CONFIG_VP9 1 --#define CONFIG_ENCODERS 1 --#define CONFIG_DECODERS 1 --#define CONFIG_STATIC_MSVCRT 0 --#define CONFIG_SPATIAL_RESAMPLING 1 --#define CONFIG_REALTIME_ONLY 1 --#define CONFIG_ONTHEFLY_BITPACKING 0 --#define CONFIG_ERROR_CONCEALMENT 0 --#define CONFIG_SHARED 0 --#define CONFIG_STATIC 1 --#define CONFIG_SMALL 0 --#define CONFIG_POSTPROC_VISUALIZER 0 --#define CONFIG_OS_SUPPORT 1 --#define CONFIG_UNIT_TESTS 1 --#define CONFIG_WEBM_IO 1 --#define CONFIG_LIBYUV 0 --#define CONFIG_DECODE_PERF_TESTS 0 --#define CONFIG_ENCODE_PERF_TESTS 0 --#define CONFIG_MULTI_RES_ENCODING 1 --#define CONFIG_TEMPORAL_DENOISING 1 --#define CONFIG_VP9_TEMPORAL_DENOISING 1 --#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 --#define CONFIG_VP9_HIGHBITDEPTH 0 --#define CONFIG_BETTER_HW_COMPATIBILITY 0 --#define CONFIG_EXPERIMENTAL 0 --#define CONFIG_SIZE_LIMIT 1 --#define CONFIG_ALWAYS_ADJUST_BPM 0 --#define CONFIG_BITSTREAM_DEBUG 0 --#define CONFIG_MISMATCH_DEBUG 0 --#define CONFIG_FP_MB_STATS 0 --#define CONFIG_EMULATE_HARDWARE 0 --#define CONFIG_NON_GREEDY_MV 0 --#define CONFIG_RATE_CTRL 0 --#define CONFIG_COLLECT_COMPONENT_TIMING 0 --#define DECODE_WIDTH_LIMIT 16384 --#define DECODE_HEIGHT_LIMIT 16384 --#endif /* VPX_CONFIG_H */ -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h -+++ /dev/null -@@ -1,2138 +0,0 @@ --/* -- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. -- * -- * Use of this source code is governed by a BSD-style license -- * that can be found in the LICENSE file in the root of the source -- * tree. An additional intellectual property rights grant can be found -- * in the file PATENTS. All contributing project authors may -- * be found in the AUTHORS file in the root of the source tree. -- */ -- --// This file is generated. Do not edit. --#ifndef VPX_DSP_RTCD_H_ --#define VPX_DSP_RTCD_H_ -- --#ifdef RTCD_C --#define RTCD_EXTERN --#else --#define RTCD_EXTERN extern --#endif -- --/* -- * DSP -- */ -- --#include "vpx/vpx_integer.h" --#include "vpx_dsp/vpx_dsp_common.h" --#include "vpx_dsp/vpx_filter.h" --#if CONFIG_VP9_ENCODER --struct macroblock_plane; --struct ScanOrder; --#endif -- --#ifdef __cplusplus --extern "C" { --#endif -- --unsigned int vpx_avg_4x4_c(const uint8_t*, int p); --#define vpx_avg_4x4 vpx_avg_4x4_c -- --unsigned int vpx_avg_8x8_c(const uint8_t*, int p); --#define vpx_avg_8x8 vpx_avg_8x8_c -- --void vpx_comp_avg_pred_c(uint8_t* comp_pred, -- const uint8_t* pred, -- int width, -- int height, -- const uint8_t* ref, -- int ref_stride); --void vpx_comp_avg_pred_vsx(uint8_t* comp_pred, -- const uint8_t* pred, -- int width, -- int height, -- const uint8_t* ref, -- int ref_stride); --#define vpx_comp_avg_pred vpx_comp_avg_pred_vsx -- --void vpx_convolve8_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve8_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve8 vpx_convolve8_vsx -- --void vpx_convolve8_avg_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve8_avg_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve8_avg vpx_convolve8_avg_vsx -- --void vpx_convolve8_avg_horiz_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve8_avg_horiz_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve8_avg_horiz vpx_convolve8_avg_horiz_vsx -- --void vpx_convolve8_avg_vert_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve8_avg_vert_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve8_avg_vert vpx_convolve8_avg_vert_vsx -- --void vpx_convolve8_horiz_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve8_horiz_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve8_horiz vpx_convolve8_horiz_vsx -- --void vpx_convolve8_vert_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve8_vert_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve8_vert vpx_convolve8_vert_vsx -- --void vpx_convolve_avg_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve_avg_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve_avg vpx_convolve_avg_vsx -- --void vpx_convolve_copy_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --void vpx_convolve_copy_vsx(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_convolve_copy vpx_convolve_copy_vsx -- --void vpx_d117_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c -- --void vpx_d117_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c -- --void vpx_d117_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c -- --void vpx_d117_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c -- --void vpx_d135_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c -- --void vpx_d135_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c -- --void vpx_d135_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c -- --void vpx_d135_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c -- --void vpx_d153_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c -- --void vpx_d153_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c -- --void vpx_d153_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c -- --void vpx_d153_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c -- --void vpx_d207_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c -- --void vpx_d207_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c -- --void vpx_d207_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c -- --void vpx_d207_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c -- --void vpx_d45_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_d45_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d45_predictor_16x16 vpx_d45_predictor_16x16_vsx -- --void vpx_d45_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_d45_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_vsx -- --void vpx_d45_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_c -- --void vpx_d45_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_c -- --void vpx_d45e_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c -- --void vpx_d63_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_d63_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_vsx -- --void vpx_d63_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_d63_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_vsx -- --void vpx_d63_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c -- --void vpx_d63_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c -- --void vpx_d63e_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c -- --void vpx_dc_128_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_128_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_vsx -- --void vpx_dc_128_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_128_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_vsx -- --void vpx_dc_128_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_c -- --void vpx_dc_128_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_c -- --void vpx_dc_left_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_left_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_vsx -- --void vpx_dc_left_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_left_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_vsx -- --void vpx_dc_left_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_c -- --void vpx_dc_left_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_c -- --void vpx_dc_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_vsx -- --void vpx_dc_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_vsx -- --void vpx_dc_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_c -- --void vpx_dc_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_c -- --void vpx_dc_top_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_top_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_vsx -- --void vpx_dc_top_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_dc_top_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_vsx -- --void vpx_dc_top_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_c -- --void vpx_dc_top_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_c -- --void vpx_fdct16x16_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct16x16 vpx_fdct16x16_c -- --void vpx_fdct16x16_1_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct16x16_1 vpx_fdct16x16_1_c -- --void vpx_fdct32x32_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct32x32 vpx_fdct32x32_c -- --void vpx_fdct32x32_1_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct32x32_1 vpx_fdct32x32_1_c -- --void vpx_fdct32x32_rd_c(const int16_t* input, tran_low_t* output, int stride); --void vpx_fdct32x32_rd_vsx(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct32x32_rd vpx_fdct32x32_rd_vsx -- --void vpx_fdct4x4_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct4x4 vpx_fdct4x4_c -- --void vpx_fdct4x4_1_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct4x4_1 vpx_fdct4x4_1_c -- --void vpx_fdct8x8_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct8x8 vpx_fdct8x8_c -- --void vpx_fdct8x8_1_c(const int16_t* input, tran_low_t* output, int stride); --#define vpx_fdct8x8_1 vpx_fdct8x8_1_c -- --void vpx_get16x16var_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse, -- int* sum); --void vpx_get16x16var_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse, -- int* sum); --#define vpx_get16x16var vpx_get16x16var_vsx -- --unsigned int vpx_get4x4sse_cs_c(const unsigned char* src_ptr, -- int src_stride, -- const unsigned char* ref_ptr, -- int ref_stride); --unsigned int vpx_get4x4sse_cs_vsx(const unsigned char* src_ptr, -- int src_stride, -- const unsigned char* ref_ptr, -- int ref_stride); --#define vpx_get4x4sse_cs vpx_get4x4sse_cs_vsx -- --void vpx_get8x8var_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse, -- int* sum); --void vpx_get8x8var_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse, -- int* sum); --#define vpx_get8x8var vpx_get8x8var_vsx -- --unsigned int vpx_get_mb_ss_c(const int16_t*); --unsigned int vpx_get_mb_ss_vsx(const int16_t*); --#define vpx_get_mb_ss vpx_get_mb_ss_vsx -- --void vpx_h_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_h_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_vsx -- --void vpx_h_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_h_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_vsx -- --void vpx_h_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_c -- --void vpx_h_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_c -- --void vpx_hadamard_16x16_c(const int16_t* src_diff, -- ptrdiff_t src_stride, -- int16_t* coeff); --void vpx_hadamard_16x16_vsx(const int16_t* src_diff, -- ptrdiff_t src_stride, -- int16_t* coeff); --#define vpx_hadamard_16x16 vpx_hadamard_16x16_vsx -- --void vpx_hadamard_32x32_c(const int16_t* src_diff, -- ptrdiff_t src_stride, -- int16_t* coeff); --#define vpx_hadamard_32x32 vpx_hadamard_32x32_c -- --void vpx_hadamard_8x8_c(const int16_t* src_diff, -- ptrdiff_t src_stride, -- int16_t* coeff); --void vpx_hadamard_8x8_vsx(const int16_t* src_diff, -- ptrdiff_t src_stride, -- int16_t* coeff); --#define vpx_hadamard_8x8 vpx_hadamard_8x8_vsx -- --void vpx_he_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c -- --void vpx_idct16x16_10_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct16x16_10_add vpx_idct16x16_10_add_c -- --void vpx_idct16x16_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct16x16_1_add vpx_idct16x16_1_add_c -- --void vpx_idct16x16_256_add_c(const tran_low_t* input, -- uint8_t* dest, -- int stride); --void vpx_idct16x16_256_add_vsx(const tran_low_t* input, -- uint8_t* dest, -- int stride); --#define vpx_idct16x16_256_add vpx_idct16x16_256_add_vsx -- --void vpx_idct16x16_38_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct16x16_38_add vpx_idct16x16_38_add_c -- --void vpx_idct32x32_1024_add_c(const tran_low_t* input, -- uint8_t* dest, -- int stride); --void vpx_idct32x32_1024_add_vsx(const tran_low_t* input, -- uint8_t* dest, -- int stride); --#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_vsx -- --void vpx_idct32x32_135_add_c(const tran_low_t* input, -- uint8_t* dest, -- int stride); --#define vpx_idct32x32_135_add vpx_idct32x32_135_add_c -- --void vpx_idct32x32_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct32x32_1_add vpx_idct32x32_1_add_c -- --void vpx_idct32x32_34_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct32x32_34_add vpx_idct32x32_34_add_c -- --void vpx_idct4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); --void vpx_idct4x4_16_add_vsx(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct4x4_16_add vpx_idct4x4_16_add_vsx -- --void vpx_idct4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct4x4_1_add vpx_idct4x4_1_add_c -- --void vpx_idct8x8_12_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct8x8_12_add vpx_idct8x8_12_add_c -- --void vpx_idct8x8_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct8x8_1_add vpx_idct8x8_1_add_c -- --void vpx_idct8x8_64_add_c(const tran_low_t* input, uint8_t* dest, int stride); --void vpx_idct8x8_64_add_vsx(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_idct8x8_64_add vpx_idct8x8_64_add_vsx -- --int16_t vpx_int_pro_col_c(const uint8_t* ref, const int width); --#define vpx_int_pro_col vpx_int_pro_col_c -- --void vpx_int_pro_row_c(int16_t hbuf[16], -- const uint8_t* ref, -- const int ref_stride, -- const int height); --#define vpx_int_pro_row vpx_int_pro_row_c -- --void vpx_iwht4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); --void vpx_iwht4x4_16_add_vsx(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_vsx -- --void vpx_iwht4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); --#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c -- --void vpx_lpf_horizontal_16_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_horizontal_16 vpx_lpf_horizontal_16_c -- --void vpx_lpf_horizontal_16_dual_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_horizontal_16_dual vpx_lpf_horizontal_16_dual_c -- --void vpx_lpf_horizontal_4_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_c -- --void vpx_lpf_horizontal_4_dual_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit0, -- const uint8_t* limit0, -- const uint8_t* thresh0, -- const uint8_t* blimit1, -- const uint8_t* limit1, -- const uint8_t* thresh1); --#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_c -- --void vpx_lpf_horizontal_8_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_c -- --void vpx_lpf_horizontal_8_dual_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit0, -- const uint8_t* limit0, -- const uint8_t* thresh0, -- const uint8_t* blimit1, -- const uint8_t* limit1, -- const uint8_t* thresh1); --#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_c -- --void vpx_lpf_vertical_16_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_c -- --void vpx_lpf_vertical_16_dual_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_c -- --void vpx_lpf_vertical_4_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_c -- --void vpx_lpf_vertical_4_dual_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit0, -- const uint8_t* limit0, -- const uint8_t* thresh0, -- const uint8_t* blimit1, -- const uint8_t* limit1, -- const uint8_t* thresh1); --#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_c -- --void vpx_lpf_vertical_8_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit, -- const uint8_t* limit, -- const uint8_t* thresh); --#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_c -- --void vpx_lpf_vertical_8_dual_c(uint8_t* s, -- int pitch, -- const uint8_t* blimit0, -- const uint8_t* limit0, -- const uint8_t* thresh0, -- const uint8_t* blimit1, -- const uint8_t* limit1, -- const uint8_t* thresh1); --#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_c -- --void vpx_mbpost_proc_across_ip_c(unsigned char* src, -- int pitch, -- int rows, -- int cols, -- int flimit); --void vpx_mbpost_proc_across_ip_vsx(unsigned char* src, -- int pitch, -- int rows, -- int cols, -- int flimit); --#define vpx_mbpost_proc_across_ip vpx_mbpost_proc_across_ip_vsx -- --void vpx_mbpost_proc_down_c(unsigned char* dst, -- int pitch, -- int rows, -- int cols, -- int flimit); --void vpx_mbpost_proc_down_vsx(unsigned char* dst, -- int pitch, -- int rows, -- int cols, -- int flimit); --#define vpx_mbpost_proc_down vpx_mbpost_proc_down_vsx -- --void vpx_minmax_8x8_c(const uint8_t* s, -- int p, -- const uint8_t* d, -- int dp, -- int* min, -- int* max); --#define vpx_minmax_8x8 vpx_minmax_8x8_c -- --unsigned int vpx_mse16x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_mse16x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_mse16x16 vpx_mse16x16_vsx -- --unsigned int vpx_mse16x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_mse16x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_mse16x8 vpx_mse16x8_vsx -- --unsigned int vpx_mse8x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_mse8x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_mse8x16 vpx_mse8x16_vsx -- --unsigned int vpx_mse8x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_mse8x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_mse8x8 vpx_mse8x8_vsx -- --void vpx_plane_add_noise_c(uint8_t* start, -- const int8_t* noise, -- int blackclamp, -- int whiteclamp, -- int width, -- int height, -- int pitch); --#define vpx_plane_add_noise vpx_plane_add_noise_c -- --void vpx_post_proc_down_and_across_mb_row_c(unsigned char* src, -- unsigned char* dst, -- int src_pitch, -- int dst_pitch, -- int cols, -- unsigned char* flimits, -- int size); --void vpx_post_proc_down_and_across_mb_row_vsx(unsigned char* src, -- unsigned char* dst, -- int src_pitch, -- int dst_pitch, -- int cols, -- unsigned char* flimits, -- int size); --#define vpx_post_proc_down_and_across_mb_row \ -- vpx_post_proc_down_and_across_mb_row_vsx -- --void vpx_quantize_b_c(const tran_low_t* coeff_ptr, -- intptr_t n_coeffs, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --void vpx_quantize_b_vsx(const tran_low_t* coeff_ptr, -- intptr_t n_coeffs, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --#define vpx_quantize_b vpx_quantize_b_vsx -- --void vpx_quantize_b_32x32_c(const tran_low_t* coeff_ptr, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --void vpx_quantize_b_32x32_vsx(const tran_low_t* coeff_ptr, -- const struct macroblock_plane* const mb_plane, -- tran_low_t* qcoeff_ptr, -- tran_low_t* dqcoeff_ptr, -- const int16_t* dequant_ptr, -- uint16_t* eob_ptr, -- const struct ScanOrder* const scan_order); --#define vpx_quantize_b_32x32 vpx_quantize_b_32x32_vsx -- --unsigned int vpx_sad16x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad16x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad16x16 vpx_sad16x16_vsx -- --unsigned int vpx_sad16x16_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad16x16_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad16x16_avg vpx_sad16x16_avg_vsx -- --void vpx_sad16x16x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad16x16x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad16x16x4d vpx_sad16x16x4d_vsx -- --unsigned int vpx_sad16x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad16x32_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad16x32 vpx_sad16x32_vsx -- --unsigned int vpx_sad16x32_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad16x32_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad16x32_avg vpx_sad16x32_avg_vsx -- --void vpx_sad16x32x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad16x32x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad16x32x4d vpx_sad16x32x4d_vsx -- --unsigned int vpx_sad16x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad16x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad16x8 vpx_sad16x8_vsx -- --unsigned int vpx_sad16x8_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad16x8_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad16x8_avg vpx_sad16x8_avg_vsx -- --void vpx_sad16x8x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad16x8x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad16x8x4d vpx_sad16x8x4d_vsx -- --unsigned int vpx_sad32x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad32x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad32x16 vpx_sad32x16_vsx -- --unsigned int vpx_sad32x16_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad32x16_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad32x16_avg vpx_sad32x16_avg_vsx -- --void vpx_sad32x16x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad32x16x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad32x16x4d vpx_sad32x16x4d_vsx -- --unsigned int vpx_sad32x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad32x32_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad32x32 vpx_sad32x32_vsx -- --unsigned int vpx_sad32x32_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad32x32_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad32x32_avg vpx_sad32x32_avg_vsx -- --void vpx_sad32x32x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad32x32x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad32x32x4d vpx_sad32x32x4d_vsx -- --unsigned int vpx_sad32x64_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad32x64_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad32x64 vpx_sad32x64_vsx -- --unsigned int vpx_sad32x64_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad32x64_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad32x64_avg vpx_sad32x64_avg_vsx -- --void vpx_sad32x64x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad32x64x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad32x64x4d vpx_sad32x64x4d_vsx -- --unsigned int vpx_sad4x4_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad4x4 vpx_sad4x4_c -- --unsigned int vpx_sad4x4_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad4x4_avg vpx_sad4x4_avg_c -- --void vpx_sad4x4x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad4x4x4d vpx_sad4x4x4d_c -- --unsigned int vpx_sad4x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad4x8 vpx_sad4x8_c -- --unsigned int vpx_sad4x8_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad4x8_avg vpx_sad4x8_avg_c -- --void vpx_sad4x8x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad4x8x4d vpx_sad4x8x4d_c -- --unsigned int vpx_sad64x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad64x32_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad64x32 vpx_sad64x32_vsx -- --unsigned int vpx_sad64x32_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad64x32_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad64x32_avg vpx_sad64x32_avg_vsx -- --void vpx_sad64x32x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad64x32x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad64x32x4d vpx_sad64x32x4d_vsx -- --unsigned int vpx_sad64x64_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad64x64_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad64x64 vpx_sad64x64_vsx -- --unsigned int vpx_sad64x64_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --unsigned int vpx_sad64x64_avg_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad64x64_avg vpx_sad64x64_avg_vsx -- --void vpx_sad64x64x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --void vpx_sad64x64x4d_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad64x64x4d vpx_sad64x64x4d_vsx -- --unsigned int vpx_sad8x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad8x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad8x16 vpx_sad8x16_vsx -- --unsigned int vpx_sad8x16_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad8x16_avg vpx_sad8x16_avg_c -- --void vpx_sad8x16x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad8x16x4d vpx_sad8x16x4d_c -- --unsigned int vpx_sad8x4_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad8x4_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad8x4 vpx_sad8x4_vsx -- --unsigned int vpx_sad8x4_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad8x4_avg vpx_sad8x4_avg_c -- --void vpx_sad8x4x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad8x4x4d vpx_sad8x4x4d_c -- --unsigned int vpx_sad8x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --unsigned int vpx_sad8x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad8x8 vpx_sad8x8_vsx -- --unsigned int vpx_sad8x8_avg_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- const uint8_t* second_pred); --#define vpx_sad8x8_avg vpx_sad8x8_avg_c -- --void vpx_sad8x8x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad8x8x4d vpx_sad8x8x4d_c -- --unsigned int vpx_sad_skip_16x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_16x16 vpx_sad_skip_16x16_c -- --void vpx_sad_skip_16x16x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_16x16x4d vpx_sad_skip_16x16x4d_c -- --unsigned int vpx_sad_skip_16x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_16x32 vpx_sad_skip_16x32_c -- --void vpx_sad_skip_16x32x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_16x32x4d vpx_sad_skip_16x32x4d_c -- --unsigned int vpx_sad_skip_16x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_16x8 vpx_sad_skip_16x8_c -- --void vpx_sad_skip_16x8x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_16x8x4d vpx_sad_skip_16x8x4d_c -- --unsigned int vpx_sad_skip_32x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_32x16 vpx_sad_skip_32x16_c -- --void vpx_sad_skip_32x16x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_32x16x4d vpx_sad_skip_32x16x4d_c -- --unsigned int vpx_sad_skip_32x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_32x32 vpx_sad_skip_32x32_c -- --void vpx_sad_skip_32x32x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_32x32x4d vpx_sad_skip_32x32x4d_c -- --unsigned int vpx_sad_skip_32x64_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_32x64 vpx_sad_skip_32x64_c -- --void vpx_sad_skip_32x64x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_32x64x4d vpx_sad_skip_32x64x4d_c -- --unsigned int vpx_sad_skip_4x4_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_4x4 vpx_sad_skip_4x4_c -- --void vpx_sad_skip_4x4x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_4x4x4d vpx_sad_skip_4x4x4d_c -- --unsigned int vpx_sad_skip_4x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_4x8 vpx_sad_skip_4x8_c -- --void vpx_sad_skip_4x8x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_4x8x4d vpx_sad_skip_4x8x4d_c -- --unsigned int vpx_sad_skip_64x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_64x32 vpx_sad_skip_64x32_c -- --void vpx_sad_skip_64x32x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_64x32x4d vpx_sad_skip_64x32x4d_c -- --unsigned int vpx_sad_skip_64x64_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_64x64 vpx_sad_skip_64x64_c -- --void vpx_sad_skip_64x64x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_64x64x4d vpx_sad_skip_64x64x4d_c -- --unsigned int vpx_sad_skip_8x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_8x16 vpx_sad_skip_8x16_c -- --void vpx_sad_skip_8x16x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_8x16x4d vpx_sad_skip_8x16x4d_c -- --unsigned int vpx_sad_skip_8x4_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_8x4 vpx_sad_skip_8x4_c -- --void vpx_sad_skip_8x4x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_8x4x4d vpx_sad_skip_8x4x4d_c -- --unsigned int vpx_sad_skip_8x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride); --#define vpx_sad_skip_8x8 vpx_sad_skip_8x8_c -- --void vpx_sad_skip_8x8x4d_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* const ref_array[4], -- int ref_stride, -- uint32_t sad_array[4]); --#define vpx_sad_skip_8x8x4d vpx_sad_skip_8x8x4d_c -- --int vpx_satd_c(const int16_t* coeff, int length); --#define vpx_satd vpx_satd_c -- --void vpx_scaled_2d_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_scaled_2d vpx_scaled_2d_c -- --void vpx_scaled_avg_2d_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c -- --void vpx_scaled_avg_horiz_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c -- --void vpx_scaled_avg_vert_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c -- --void vpx_scaled_horiz_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_scaled_horiz vpx_scaled_horiz_c -- --void vpx_scaled_vert_c(const uint8_t* src, -- ptrdiff_t src_stride, -- uint8_t* dst, -- ptrdiff_t dst_stride, -- const InterpKernel* filter, -- int x0_q4, -- int x_step_q4, -- int y0_q4, -- int y_step_q4, -- int w, -- int h); --#define vpx_scaled_vert vpx_scaled_vert_c -- --int64_t vpx_sse_c(const uint8_t* src, -- int src_stride, -- const uint8_t* ref, -- int ref_stride, -- int width, -- int height); --#define vpx_sse vpx_sse_c -- --uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance16x16 vpx_sub_pixel_avg_variance16x16_c -- --uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance16x32 vpx_sub_pixel_avg_variance16x32_c -- --uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance16x8 vpx_sub_pixel_avg_variance16x8_c -- --uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance32x16 vpx_sub_pixel_avg_variance32x16_c -- --uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance32x32 vpx_sub_pixel_avg_variance32x32_c -- --uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance32x64 vpx_sub_pixel_avg_variance32x64_c -- --uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance4x4 vpx_sub_pixel_avg_variance4x4_c -- --uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance4x8 vpx_sub_pixel_avg_variance4x8_c -- --uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance64x32 vpx_sub_pixel_avg_variance64x32_c -- --uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance64x64 vpx_sub_pixel_avg_variance64x64_c -- --uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance8x16 vpx_sub_pixel_avg_variance8x16_c -- --uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance8x4 vpx_sub_pixel_avg_variance8x4_c -- --uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse, -- const uint8_t* second_pred); --#define vpx_sub_pixel_avg_variance8x8 vpx_sub_pixel_avg_variance8x8_c -- --uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance16x16 vpx_sub_pixel_variance16x16_c -- --uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance16x32 vpx_sub_pixel_variance16x32_c -- --uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance16x8 vpx_sub_pixel_variance16x8_c -- --uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance32x16 vpx_sub_pixel_variance32x16_c -- --uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance32x32 vpx_sub_pixel_variance32x32_c -- --uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance32x64 vpx_sub_pixel_variance32x64_c -- --uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance4x4 vpx_sub_pixel_variance4x4_c -- --uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance4x8 vpx_sub_pixel_variance4x8_c -- --uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance64x32 vpx_sub_pixel_variance64x32_c -- --uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance64x64 vpx_sub_pixel_variance64x64_c -- --uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance8x16 vpx_sub_pixel_variance8x16_c -- --uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance8x4 vpx_sub_pixel_variance8x4_c -- --uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t* src_ptr, -- int src_stride, -- int x_offset, -- int y_offset, -- const uint8_t* ref_ptr, -- int ref_stride, -- uint32_t* sse); --#define vpx_sub_pixel_variance8x8 vpx_sub_pixel_variance8x8_c -- --void vpx_subtract_block_c(int rows, -- int cols, -- int16_t* diff_ptr, -- ptrdiff_t diff_stride, -- const uint8_t* src_ptr, -- ptrdiff_t src_stride, -- const uint8_t* pred_ptr, -- ptrdiff_t pred_stride); --void vpx_subtract_block_vsx(int rows, -- int cols, -- int16_t* diff_ptr, -- ptrdiff_t diff_stride, -- const uint8_t* src_ptr, -- ptrdiff_t src_stride, -- const uint8_t* pred_ptr, -- ptrdiff_t pred_stride); --#define vpx_subtract_block vpx_subtract_block_vsx -- --uint64_t vpx_sum_squares_2d_i16_c(const int16_t* src, int stride, int size); --#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_c -- --void vpx_tm_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_tm_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_vsx -- --void vpx_tm_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_tm_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_vsx -- --void vpx_tm_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_c -- --void vpx_tm_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_c -- --void vpx_v_predictor_16x16_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_v_predictor_16x16_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_vsx -- --void vpx_v_predictor_32x32_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --void vpx_v_predictor_32x32_vsx(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_vsx -- --void vpx_v_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_c -- --void vpx_v_predictor_8x8_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_c -- --unsigned int vpx_variance16x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance16x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance16x16 vpx_variance16x16_vsx -- --unsigned int vpx_variance16x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance16x32_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance16x32 vpx_variance16x32_vsx -- --unsigned int vpx_variance16x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance16x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance16x8 vpx_variance16x8_vsx -- --unsigned int vpx_variance32x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance32x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance32x16 vpx_variance32x16_vsx -- --unsigned int vpx_variance32x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance32x32_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance32x32 vpx_variance32x32_vsx -- --unsigned int vpx_variance32x64_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance32x64_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance32x64 vpx_variance32x64_vsx -- --unsigned int vpx_variance4x4_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance4x4_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance4x4 vpx_variance4x4_vsx -- --unsigned int vpx_variance4x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance4x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance4x8 vpx_variance4x8_vsx -- --unsigned int vpx_variance64x32_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance64x32_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance64x32 vpx_variance64x32_vsx -- --unsigned int vpx_variance64x64_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance64x64_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance64x64 vpx_variance64x64_vsx -- --unsigned int vpx_variance8x16_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance8x16_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance8x16 vpx_variance8x16_vsx -- --unsigned int vpx_variance8x4_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance8x4_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance8x4 vpx_variance8x4_vsx -- --unsigned int vpx_variance8x8_c(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --unsigned int vpx_variance8x8_vsx(const uint8_t* src_ptr, -- int src_stride, -- const uint8_t* ref_ptr, -- int ref_stride, -- unsigned int* sse); --#define vpx_variance8x8 vpx_variance8x8_vsx -- --void vpx_ve_predictor_4x4_c(uint8_t* dst, -- ptrdiff_t stride, -- const uint8_t* above, -- const uint8_t* left); --#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c -- --int vpx_vector_var_c(const int16_t* ref, const int16_t* src, const int bwl); --#define vpx_vector_var vpx_vector_var_c -- --void vpx_dsp_rtcd(void); -- --#include "vpx_config.h" -- --#ifdef RTCD_C --#include "vpx_ports/ppc.h" --static void setup_rtcd_internal(void) { -- int flags = ppc_simd_caps(); -- (void)flags; --} --#endif -- --#ifdef __cplusplus --} // extern "C" --#endif -- --#endif // VPX_DSP_RTCD_H_ -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h -+++ /dev/null -@@ -1,110 +0,0 @@ --/* -- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. -- * -- * Use of this source code is governed by a BSD-style license -- * that can be found in the LICENSE file in the root of the source -- * tree. An additional intellectual property rights grant can be found -- * in the file PATENTS. All contributing project authors may -- * be found in the AUTHORS file in the root of the source tree. -- */ -- --// This file is generated. Do not edit. --#ifndef VPX_SCALE_RTCD_H_ --#define VPX_SCALE_RTCD_H_ -- --#ifdef RTCD_C --#define RTCD_EXTERN --#else --#define RTCD_EXTERN extern --#endif -- --struct yv12_buffer_config; -- --#ifdef __cplusplus --extern "C" { --#endif -- --void vp8_horizontal_line_2_1_scale_c(const unsigned char* source, -- unsigned int source_width, -- unsigned char* dest, -- unsigned int dest_width); --#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c -- --void vp8_horizontal_line_5_3_scale_c(const unsigned char* source, -- unsigned int source_width, -- unsigned char* dest, -- unsigned int dest_width); --#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c -- --void vp8_horizontal_line_5_4_scale_c(const unsigned char* source, -- unsigned int source_width, -- unsigned char* dest, -- unsigned int dest_width); --#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c -- --void vp8_vertical_band_2_1_scale_c(unsigned char* source, -- unsigned int src_pitch, -- unsigned char* dest, -- unsigned int dest_pitch, -- unsigned int dest_width); --#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c -- --void vp8_vertical_band_2_1_scale_i_c(unsigned char* source, -- unsigned int src_pitch, -- unsigned char* dest, -- unsigned int dest_pitch, -- unsigned int dest_width); --#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c -- --void vp8_vertical_band_5_3_scale_c(unsigned char* source, -- unsigned int src_pitch, -- unsigned char* dest, -- unsigned int dest_pitch, -- unsigned int dest_width); --#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c -- --void vp8_vertical_band_5_4_scale_c(unsigned char* source, -- unsigned int src_pitch, -- unsigned char* dest, -- unsigned int dest_pitch, -- unsigned int dest_width); --#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c -- --void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, -- struct yv12_buffer_config* dst_ybc); --#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c -- --void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf); --#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c -- --void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf); --#define vpx_extend_frame_borders vpx_extend_frame_borders_c -- --void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf); --#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c -- --void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, -- struct yv12_buffer_config* dst_ybc); --#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c -- --void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, -- struct yv12_buffer_config* dst_ybc); --#define vpx_yv12_copy_y vpx_yv12_copy_y_c -- --void vpx_scale_rtcd(void); -- --#include "vpx_config.h" -- --#ifdef RTCD_C --#include "vpx_ports/ppc.h" --static void setup_rtcd_internal(void) { -- int flags = ppc_simd_caps(); -- (void)flags; --} --#endif -- --#ifdef __cplusplus --} // extern "C" --#endif -- --#endif // VPX_SCALE_RTCD_H_ -Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S -@@ -0,0 +1,3673 @@ -+// This file is generated from a similarly-named Perl script in the BoringSSL -+// source tree. Do not edit by hand. -+ -+#if defined(__has_feature) -+#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -+#define OPENSSL_NO_ASM -+#endif -+#endif -+ -+#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) -+.machine "any" -+ -+.abiversion 2 -+.text -+ -+.align 7 -+.Lrcon: -+.byte 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01 -+.byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b -+.byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d -+.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -+.Lconsts: -+ mflr 0 -+ bcl 20,31,$+4 -+ mflr 6 -+ addi 6,6,-0x48 -+ mtlr 0 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,0,0 -+.byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -+.align 2 -+ -+.globl aes_hw_set_encrypt_key -+.type aes_hw_set_encrypt_key,@function -+.align 5 -+aes_hw_set_encrypt_key: -+.localentry aes_hw_set_encrypt_key,0 -+ -+.Lset_encrypt_key: -+ mflr 11 -+ std 11,16(1) -+ -+ li 6,-1 -+ cmpldi 3,0 -+ beq- .Lenc_key_abort -+ cmpldi 5,0 -+ beq- .Lenc_key_abort -+ li 6,-2 -+ cmpwi 4,128 -+ blt- .Lenc_key_abort -+ cmpwi 4,256 -+ bgt- .Lenc_key_abort -+ andi. 0,4,0x3f -+ bne- .Lenc_key_abort -+ -+ lis 0,0xfff0 -+ li 12,-1 -+ or 0,0,0 -+ -+ bl .Lconsts -+ mtlr 11 -+ -+ neg 9,3 -+ lvx 1,0,3 -+ addi 3,3,15 -+ lvsr 3,0,9 -+ li 8,0x20 -+ cmpwi 4,192 -+ lvx 2,0,3 -+ vspltisb 5,0x0f -+ lvx 4,0,6 -+ vxor 3,3,5 -+ lvx 5,8,6 -+ addi 6,6,0x10 -+ vperm 1,1,2,3 -+ li 7,8 -+ vxor 0,0,0 -+ mtctr 7 -+ -+ lvsl 8,0,5 -+ vspltisb 9,-1 -+ lvx 10,0,5 -+ vperm 9,9,0,8 -+ -+ blt .Loop128 -+ addi 3,3,8 -+ beq .L192 -+ addi 3,3,8 -+ b .L256 -+ -+.align 4 -+.Loop128: -+ vperm 3,1,1,5 -+ vsldoi 6,0,1,12 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ .long 0x10632509 -+ stvx 7,0,5 -+ addi 5,5,16 -+ -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vadduwm 4,4,4 -+ vxor 1,1,3 -+ bdnz .Loop128 -+ -+ lvx 4,0,6 -+ -+ vperm 3,1,1,5 -+ vsldoi 6,0,1,12 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ .long 0x10632509 -+ stvx 7,0,5 -+ addi 5,5,16 -+ -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vadduwm 4,4,4 -+ vxor 1,1,3 -+ -+ vperm 3,1,1,5 -+ vsldoi 6,0,1,12 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ .long 0x10632509 -+ stvx 7,0,5 -+ addi 5,5,16 -+ -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vxor 1,1,3 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ stvx 7,0,5 -+ -+ addi 3,5,15 -+ addi 5,5,0x50 -+ -+ li 8,10 -+ b .Ldone -+ -+.align 4 -+.L192: -+ lvx 6,0,3 -+ li 7,4 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ stvx 7,0,5 -+ addi 5,5,16 -+ vperm 2,2,6,3 -+ vspltisb 3,8 -+ mtctr 7 -+ vsububm 5,5,3 -+ -+.Loop192: -+ vperm 3,2,2,5 -+ vsldoi 6,0,1,12 -+ .long 0x10632509 -+ -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ -+ vsldoi 7,0,2,8 -+ vspltw 6,1,3 -+ vxor 6,6,2 -+ vsldoi 2,0,2,12 -+ vadduwm 4,4,4 -+ vxor 2,2,6 -+ vxor 1,1,3 -+ vxor 2,2,3 -+ vsldoi 7,7,1,8 -+ -+ vperm 3,2,2,5 -+ vsldoi 6,0,1,12 -+ vperm 11,7,7,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ .long 0x10632509 -+ stvx 7,0,5 -+ addi 5,5,16 -+ -+ vsldoi 7,1,2,8 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vperm 11,7,7,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ stvx 7,0,5 -+ addi 5,5,16 -+ -+ vspltw 6,1,3 -+ vxor 6,6,2 -+ vsldoi 2,0,2,12 -+ vadduwm 4,4,4 -+ vxor 2,2,6 -+ vxor 1,1,3 -+ vxor 2,2,3 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ stvx 7,0,5 -+ addi 3,5,15 -+ addi 5,5,16 -+ bdnz .Loop192 -+ -+ li 8,12 -+ addi 5,5,0x20 -+ b .Ldone -+ -+.align 4 -+.L256: -+ lvx 6,0,3 -+ li 7,7 -+ li 8,14 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ stvx 7,0,5 -+ addi 5,5,16 -+ vperm 2,2,6,3 -+ mtctr 7 -+ -+.Loop256: -+ vperm 3,2,2,5 -+ vsldoi 6,0,1,12 -+ vperm 11,2,2,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ .long 0x10632509 -+ stvx 7,0,5 -+ addi 5,5,16 -+ -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vsldoi 6,0,6,12 -+ vxor 1,1,6 -+ vadduwm 4,4,4 -+ vxor 1,1,3 -+ vperm 11,1,1,8 -+ vsel 7,10,11,9 -+ vor 10,11,11 -+ stvx 7,0,5 -+ addi 3,5,15 -+ addi 5,5,16 -+ bdz .Ldone -+ -+ vspltw 3,1,3 -+ vsldoi 6,0,2,12 -+ .long 0x106305C8 -+ -+ vxor 2,2,6 -+ vsldoi 6,0,6,12 -+ vxor 2,2,6 -+ vsldoi 6,0,6,12 -+ vxor 2,2,6 -+ -+ vxor 2,2,3 -+ b .Loop256 -+ -+.align 4 -+.Ldone: -+ lvx 2,0,3 -+ vsel 2,10,2,9 -+ stvx 2,0,3 -+ li 6,0 -+ or 12,12,12 -+ stw 8,0(5) -+ -+.Lenc_key_abort: -+ mr 3,6 -+ blr -+.long 0 -+.byte 0,12,0x14,1,0,0,3,0 -+.long 0 -+.size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key -+ -+.globl aes_hw_set_decrypt_key -+.type aes_hw_set_decrypt_key,@function -+.align 5 -+aes_hw_set_decrypt_key: -+.localentry aes_hw_set_decrypt_key,0 -+ -+ stdu 1,-64(1) -+ mflr 10 -+ std 10,80(1) -+ bl .Lset_encrypt_key -+ mtlr 10 -+ -+ cmpwi 3,0 -+ bne- .Ldec_key_abort -+ -+ slwi 7,8,4 -+ subi 3,5,240 -+ srwi 8,8,1 -+ add 5,3,7 -+ mtctr 8 -+ -+.Ldeckey: -+ lwz 0, 0(3) -+ lwz 6, 4(3) -+ lwz 7, 8(3) -+ lwz 8, 12(3) -+ addi 3,3,16 -+ lwz 9, 0(5) -+ lwz 10,4(5) -+ lwz 11,8(5) -+ lwz 12,12(5) -+ stw 0, 0(5) -+ stw 6, 4(5) -+ stw 7, 8(5) -+ stw 8, 12(5) -+ subi 5,5,16 -+ stw 9, -16(3) -+ stw 10,-12(3) -+ stw 11,-8(3) -+ stw 12,-4(3) -+ bdnz .Ldeckey -+ -+ xor 3,3,3 -+.Ldec_key_abort: -+ addi 1,1,64 -+ blr -+.long 0 -+.byte 0,12,4,1,0x80,0,3,0 -+.long 0 -+.size aes_hw_set_decrypt_key,.-aes_hw_set_decrypt_key -+.globl aes_hw_encrypt -+.type aes_hw_encrypt,@function -+.align 5 -+aes_hw_encrypt: -+.localentry aes_hw_encrypt,0 -+ -+ lwz 6,240(5) -+ lis 0,0xfc00 -+ li 12,-1 -+ li 7,15 -+ or 0,0,0 -+ -+ lvx 0,0,3 -+ neg 11,4 -+ lvx 1,7,3 -+ lvsl 2,0,3 -+ vspltisb 4,0x0f -+ lvsr 3,0,11 -+ vxor 2,2,4 -+ li 7,16 -+ vperm 0,0,1,2 -+ lvx 1,0,5 -+ lvsr 5,0,5 -+ srwi 6,6,1 -+ lvx 2,7,5 -+ addi 7,7,16 -+ subi 6,6,1 -+ vperm 1,2,1,5 -+ -+ vxor 0,0,1 -+ lvx 1,7,5 -+ addi 7,7,16 -+ mtctr 6 -+ -+.Loop_enc: -+ vperm 2,1,2,5 -+ .long 0x10001508 -+ lvx 2,7,5 -+ addi 7,7,16 -+ vperm 1,2,1,5 -+ .long 0x10000D08 -+ lvx 1,7,5 -+ addi 7,7,16 -+ bdnz .Loop_enc -+ -+ vperm 2,1,2,5 -+ .long 0x10001508 -+ lvx 2,7,5 -+ vperm 1,2,1,5 -+ .long 0x10000D09 -+ -+ vspltisb 2,-1 -+ vxor 1,1,1 -+ li 7,15 -+ vperm 2,2,1,3 -+ vxor 3,3,4 -+ lvx 1,0,4 -+ vperm 0,0,0,3 -+ vsel 1,1,0,2 -+ lvx 4,7,4 -+ stvx 1,0,4 -+ vsel 0,0,4,2 -+ stvx 0,7,4 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,3,0 -+.long 0 -+.size aes_hw_encrypt,.-aes_hw_encrypt -+.globl aes_hw_decrypt -+.type aes_hw_decrypt,@function -+.align 5 -+aes_hw_decrypt: -+.localentry aes_hw_decrypt,0 -+ -+ lwz 6,240(5) -+ lis 0,0xfc00 -+ li 12,-1 -+ li 7,15 -+ or 0,0,0 -+ -+ lvx 0,0,3 -+ neg 11,4 -+ lvx 1,7,3 -+ lvsl 2,0,3 -+ vspltisb 4,0x0f -+ lvsr 3,0,11 -+ vxor 2,2,4 -+ li 7,16 -+ vperm 0,0,1,2 -+ lvx 1,0,5 -+ lvsr 5,0,5 -+ srwi 6,6,1 -+ lvx 2,7,5 -+ addi 7,7,16 -+ subi 6,6,1 -+ vperm 1,2,1,5 -+ -+ vxor 0,0,1 -+ lvx 1,7,5 -+ addi 7,7,16 -+ mtctr 6 -+ -+.Loop_dec: -+ vperm 2,1,2,5 -+ .long 0x10001548 -+ lvx 2,7,5 -+ addi 7,7,16 -+ vperm 1,2,1,5 -+ .long 0x10000D48 -+ lvx 1,7,5 -+ addi 7,7,16 -+ bdnz .Loop_dec -+ -+ vperm 2,1,2,5 -+ .long 0x10001548 -+ lvx 2,7,5 -+ vperm 1,2,1,5 -+ .long 0x10000D49 -+ -+ vspltisb 2,-1 -+ vxor 1,1,1 -+ li 7,15 -+ vperm 2,2,1,3 -+ vxor 3,3,4 -+ lvx 1,0,4 -+ vperm 0,0,0,3 -+ vsel 1,1,0,2 -+ lvx 4,7,4 -+ stvx 1,0,4 -+ vsel 0,0,4,2 -+ stvx 0,7,4 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,3,0 -+.long 0 -+.size aes_hw_decrypt,.-aes_hw_decrypt -+.globl aes_hw_cbc_encrypt -+.type aes_hw_cbc_encrypt,@function -+.align 5 -+aes_hw_cbc_encrypt: -+.localentry aes_hw_cbc_encrypt,0 -+ -+ cmpldi 5,16 -+ .long 0x4dc00020 -+ -+ cmpwi 8,0 -+ lis 0,0xffe0 -+ li 12,-1 -+ or 0,0,0 -+ -+ li 10,15 -+ vxor 0,0,0 -+ vspltisb 3,0x0f -+ -+ lvx 4,0,7 -+ lvsl 6,0,7 -+ lvx 5,10,7 -+ vxor 6,6,3 -+ vperm 4,4,5,6 -+ -+ neg 11,3 -+ lvsr 10,0,6 -+ lwz 9,240(6) -+ -+ lvsr 6,0,11 -+ lvx 5,0,3 -+ addi 3,3,15 -+ vxor 6,6,3 -+ -+ lvsl 8,0,4 -+ vspltisb 9,-1 -+ lvx 7,0,4 -+ vperm 9,9,0,8 -+ vxor 8,8,3 -+ -+ srwi 9,9,1 -+ li 10,16 -+ subi 9,9,1 -+ beq .Lcbc_dec -+ -+.Lcbc_enc: -+ vor 2,5,5 -+ lvx 5,0,3 -+ addi 3,3,16 -+ mtctr 9 -+ subi 5,5,16 -+ -+ lvx 0,0,6 -+ vperm 2,2,5,6 -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 0,1,0,10 -+ vxor 2,2,0 -+ lvx 0,10,6 -+ addi 10,10,16 -+ vxor 2,2,4 -+ -+.Loop_cbc_enc: -+ vperm 1,0,1,10 -+ .long 0x10420D08 -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 0,1,0,10 -+ .long 0x10420508 -+ lvx 0,10,6 -+ addi 10,10,16 -+ bdnz .Loop_cbc_enc -+ -+ vperm 1,0,1,10 -+ .long 0x10420D08 -+ lvx 1,10,6 -+ li 10,16 -+ vperm 0,1,0,10 -+ .long 0x10820509 -+ cmpldi 5,16 -+ -+ vperm 3,4,4,8 -+ vsel 2,7,3,9 -+ vor 7,3,3 -+ stvx 2,0,4 -+ addi 4,4,16 -+ bge .Lcbc_enc -+ -+ b .Lcbc_done -+ -+.align 4 -+.Lcbc_dec: -+ cmpldi 5,128 -+ bge _aesp8_cbc_decrypt8x -+ vor 3,5,5 -+ lvx 5,0,3 -+ addi 3,3,16 -+ mtctr 9 -+ subi 5,5,16 -+ -+ lvx 0,0,6 -+ vperm 3,3,5,6 -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 0,1,0,10 -+ vxor 2,3,0 -+ lvx 0,10,6 -+ addi 10,10,16 -+ -+.Loop_cbc_dec: -+ vperm 1,0,1,10 -+ .long 0x10420D48 -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 0,1,0,10 -+ .long 0x10420548 -+ lvx 0,10,6 -+ addi 10,10,16 -+ bdnz .Loop_cbc_dec -+ -+ vperm 1,0,1,10 -+ .long 0x10420D48 -+ lvx 1,10,6 -+ li 10,16 -+ vperm 0,1,0,10 -+ .long 0x10420549 -+ cmpldi 5,16 -+ -+ vxor 2,2,4 -+ vor 4,3,3 -+ vperm 3,2,2,8 -+ vsel 2,7,3,9 -+ vor 7,3,3 -+ stvx 2,0,4 -+ addi 4,4,16 -+ bge .Lcbc_dec -+ -+.Lcbc_done: -+ addi 4,4,-1 -+ lvx 2,0,4 -+ vsel 2,7,2,9 -+ stvx 2,0,4 -+ -+ neg 8,7 -+ li 10,15 -+ vxor 0,0,0 -+ vspltisb 9,-1 -+ vspltisb 3,0x0f -+ lvsr 8,0,8 -+ vperm 9,9,0,8 -+ vxor 8,8,3 -+ lvx 7,0,7 -+ vperm 4,4,4,8 -+ vsel 2,7,4,9 -+ lvx 5,10,7 -+ stvx 2,0,7 -+ vsel 2,4,5,9 -+ stvx 2,10,7 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,6,0 -+.long 0 -+.align 5 -+_aesp8_cbc_decrypt8x: -+ stdu 1,-448(1) -+ li 10,207 -+ li 11,223 -+ stvx 20,10,1 -+ addi 10,10,32 -+ stvx 21,11,1 -+ addi 11,11,32 -+ stvx 22,10,1 -+ addi 10,10,32 -+ stvx 23,11,1 -+ addi 11,11,32 -+ stvx 24,10,1 -+ addi 10,10,32 -+ stvx 25,11,1 -+ addi 11,11,32 -+ stvx 26,10,1 -+ addi 10,10,32 -+ stvx 27,11,1 -+ addi 11,11,32 -+ stvx 28,10,1 -+ addi 10,10,32 -+ stvx 29,11,1 -+ addi 11,11,32 -+ stvx 30,10,1 -+ stvx 31,11,1 -+ li 0,-1 -+ stw 12,396(1) -+ li 8,0x10 -+ std 26,400(1) -+ li 26,0x20 -+ std 27,408(1) -+ li 27,0x30 -+ std 28,416(1) -+ li 28,0x40 -+ std 29,424(1) -+ li 29,0x50 -+ std 30,432(1) -+ li 30,0x60 -+ std 31,440(1) -+ li 31,0x70 -+ or 0,0,0 -+ -+ subi 9,9,3 -+ subi 5,5,128 -+ -+ lvx 23,0,6 -+ lvx 30,8,6 -+ addi 6,6,0x20 -+ lvx 31,0,6 -+ vperm 23,30,23,10 -+ addi 11,1,79 -+ mtctr 9 -+ -+.Load_cbc_dec_key: -+ vperm 24,31,30,10 -+ lvx 30,8,6 -+ addi 6,6,0x20 -+ stvx 24,0,11 -+ vperm 25,30,31,10 -+ lvx 31,0,6 -+ stvx 25,8,11 -+ addi 11,11,0x20 -+ bdnz .Load_cbc_dec_key -+ -+ lvx 26,8,6 -+ vperm 24,31,30,10 -+ lvx 27,26,6 -+ stvx 24,0,11 -+ vperm 25,26,31,10 -+ lvx 28,27,6 -+ stvx 25,8,11 -+ addi 11,1,79 -+ vperm 26,27,26,10 -+ lvx 29,28,6 -+ vperm 27,28,27,10 -+ lvx 30,29,6 -+ vperm 28,29,28,10 -+ lvx 31,30,6 -+ vperm 29,30,29,10 -+ lvx 14,31,6 -+ vperm 30,31,30,10 -+ lvx 24,0,11 -+ vperm 31,14,31,10 -+ lvx 25,8,11 -+ -+ -+ -+ subi 3,3,15 -+ -+ li 10,8 -+ .long 0x7C001E99 -+ lvsl 6,0,10 -+ vspltisb 3,0x0f -+ .long 0x7C281E99 -+ vxor 6,6,3 -+ .long 0x7C5A1E99 -+ vperm 0,0,0,6 -+ .long 0x7C7B1E99 -+ vperm 1,1,1,6 -+ .long 0x7D5C1E99 -+ vperm 2,2,2,6 -+ vxor 14,0,23 -+ .long 0x7D7D1E99 -+ vperm 3,3,3,6 -+ vxor 15,1,23 -+ .long 0x7D9E1E99 -+ vperm 10,10,10,6 -+ vxor 16,2,23 -+ .long 0x7DBF1E99 -+ addi 3,3,0x80 -+ vperm 11,11,11,6 -+ vxor 17,3,23 -+ vperm 12,12,12,6 -+ vxor 18,10,23 -+ vperm 13,13,13,6 -+ vxor 19,11,23 -+ vxor 20,12,23 -+ vxor 21,13,23 -+ -+ mtctr 9 -+ b .Loop_cbc_dec8x -+.align 5 -+.Loop_cbc_dec8x: -+ .long 0x11CEC548 -+ .long 0x11EFC548 -+ .long 0x1210C548 -+ .long 0x1231C548 -+ .long 0x1252C548 -+ .long 0x1273C548 -+ .long 0x1294C548 -+ .long 0x12B5C548 -+ lvx 24,26,11 -+ addi 11,11,0x20 -+ -+ .long 0x11CECD48 -+ .long 0x11EFCD48 -+ .long 0x1210CD48 -+ .long 0x1231CD48 -+ .long 0x1252CD48 -+ .long 0x1273CD48 -+ .long 0x1294CD48 -+ .long 0x12B5CD48 -+ lvx 25,8,11 -+ bdnz .Loop_cbc_dec8x -+ -+ subic 5,5,128 -+ .long 0x11CEC548 -+ .long 0x11EFC548 -+ .long 0x1210C548 -+ .long 0x1231C548 -+ .long 0x1252C548 -+ .long 0x1273C548 -+ .long 0x1294C548 -+ .long 0x12B5C548 -+ -+ subfe. 0,0,0 -+ .long 0x11CECD48 -+ .long 0x11EFCD48 -+ .long 0x1210CD48 -+ .long 0x1231CD48 -+ .long 0x1252CD48 -+ .long 0x1273CD48 -+ .long 0x1294CD48 -+ .long 0x12B5CD48 -+ -+ and 0,0,5 -+ .long 0x11CED548 -+ .long 0x11EFD548 -+ .long 0x1210D548 -+ .long 0x1231D548 -+ .long 0x1252D548 -+ .long 0x1273D548 -+ .long 0x1294D548 -+ .long 0x12B5D548 -+ -+ add 3,3,0 -+ -+ -+ -+ .long 0x11CEDD48 -+ .long 0x11EFDD48 -+ .long 0x1210DD48 -+ .long 0x1231DD48 -+ .long 0x1252DD48 -+ .long 0x1273DD48 -+ .long 0x1294DD48 -+ .long 0x12B5DD48 -+ -+ addi 11,1,79 -+ .long 0x11CEE548 -+ .long 0x11EFE548 -+ .long 0x1210E548 -+ .long 0x1231E548 -+ .long 0x1252E548 -+ .long 0x1273E548 -+ .long 0x1294E548 -+ .long 0x12B5E548 -+ lvx 24,0,11 -+ -+ .long 0x11CEED48 -+ .long 0x11EFED48 -+ .long 0x1210ED48 -+ .long 0x1231ED48 -+ .long 0x1252ED48 -+ .long 0x1273ED48 -+ .long 0x1294ED48 -+ .long 0x12B5ED48 -+ lvx 25,8,11 -+ -+ .long 0x11CEF548 -+ vxor 4,4,31 -+ .long 0x11EFF548 -+ vxor 0,0,31 -+ .long 0x1210F548 -+ vxor 1,1,31 -+ .long 0x1231F548 -+ vxor 2,2,31 -+ .long 0x1252F548 -+ vxor 3,3,31 -+ .long 0x1273F548 -+ vxor 10,10,31 -+ .long 0x1294F548 -+ vxor 11,11,31 -+ .long 0x12B5F548 -+ vxor 12,12,31 -+ -+ .long 0x11CE2549 -+ .long 0x11EF0549 -+ .long 0x7C001E99 -+ .long 0x12100D49 -+ .long 0x7C281E99 -+ .long 0x12311549 -+ vperm 0,0,0,6 -+ .long 0x7C5A1E99 -+ .long 0x12521D49 -+ vperm 1,1,1,6 -+ .long 0x7C7B1E99 -+ .long 0x12735549 -+ vperm 2,2,2,6 -+ .long 0x7D5C1E99 -+ .long 0x12945D49 -+ vperm 3,3,3,6 -+ .long 0x7D7D1E99 -+ .long 0x12B56549 -+ vperm 10,10,10,6 -+ .long 0x7D9E1E99 -+ vor 4,13,13 -+ vperm 11,11,11,6 -+ .long 0x7DBF1E99 -+ addi 3,3,0x80 -+ -+ vperm 14,14,14,6 -+ vperm 15,15,15,6 -+ .long 0x7DC02799 -+ vperm 12,12,12,6 -+ vxor 14,0,23 -+ vperm 16,16,16,6 -+ .long 0x7DE82799 -+ vperm 13,13,13,6 -+ vxor 15,1,23 -+ vperm 17,17,17,6 -+ .long 0x7E1A2799 -+ vxor 16,2,23 -+ vperm 18,18,18,6 -+ .long 0x7E3B2799 -+ vxor 17,3,23 -+ vperm 19,19,19,6 -+ .long 0x7E5C2799 -+ vxor 18,10,23 -+ vperm 20,20,20,6 -+ .long 0x7E7D2799 -+ vxor 19,11,23 -+ vperm 21,21,21,6 -+ .long 0x7E9E2799 -+ vxor 20,12,23 -+ .long 0x7EBF2799 -+ addi 4,4,0x80 -+ vxor 21,13,23 -+ -+ mtctr 9 -+ beq .Loop_cbc_dec8x -+ -+ addic. 5,5,128 -+ beq .Lcbc_dec8x_done -+ nop -+ nop -+ -+.Loop_cbc_dec8x_tail: -+ .long 0x11EFC548 -+ .long 0x1210C548 -+ .long 0x1231C548 -+ .long 0x1252C548 -+ .long 0x1273C548 -+ .long 0x1294C548 -+ .long 0x12B5C548 -+ lvx 24,26,11 -+ addi 11,11,0x20 -+ -+ .long 0x11EFCD48 -+ .long 0x1210CD48 -+ .long 0x1231CD48 -+ .long 0x1252CD48 -+ .long 0x1273CD48 -+ .long 0x1294CD48 -+ .long 0x12B5CD48 -+ lvx 25,8,11 -+ bdnz .Loop_cbc_dec8x_tail -+ -+ .long 0x11EFC548 -+ .long 0x1210C548 -+ .long 0x1231C548 -+ .long 0x1252C548 -+ .long 0x1273C548 -+ .long 0x1294C548 -+ .long 0x12B5C548 -+ -+ .long 0x11EFCD48 -+ .long 0x1210CD48 -+ .long 0x1231CD48 -+ .long 0x1252CD48 -+ .long 0x1273CD48 -+ .long 0x1294CD48 -+ .long 0x12B5CD48 -+ -+ .long 0x11EFD548 -+ .long 0x1210D548 -+ .long 0x1231D548 -+ .long 0x1252D548 -+ .long 0x1273D548 -+ .long 0x1294D548 -+ .long 0x12B5D548 -+ -+ .long 0x11EFDD48 -+ .long 0x1210DD48 -+ .long 0x1231DD48 -+ .long 0x1252DD48 -+ .long 0x1273DD48 -+ .long 0x1294DD48 -+ .long 0x12B5DD48 -+ -+ .long 0x11EFE548 -+ .long 0x1210E548 -+ .long 0x1231E548 -+ .long 0x1252E548 -+ .long 0x1273E548 -+ .long 0x1294E548 -+ .long 0x12B5E548 -+ -+ .long 0x11EFED48 -+ .long 0x1210ED48 -+ .long 0x1231ED48 -+ .long 0x1252ED48 -+ .long 0x1273ED48 -+ .long 0x1294ED48 -+ .long 0x12B5ED48 -+ -+ .long 0x11EFF548 -+ vxor 4,4,31 -+ .long 0x1210F548 -+ vxor 1,1,31 -+ .long 0x1231F548 -+ vxor 2,2,31 -+ .long 0x1252F548 -+ vxor 3,3,31 -+ .long 0x1273F548 -+ vxor 10,10,31 -+ .long 0x1294F548 -+ vxor 11,11,31 -+ .long 0x12B5F548 -+ vxor 12,12,31 -+ -+ cmplwi 5,32 -+ blt .Lcbc_dec8x_one -+ nop -+ beq .Lcbc_dec8x_two -+ cmplwi 5,64 -+ blt .Lcbc_dec8x_three -+ nop -+ beq .Lcbc_dec8x_four -+ cmplwi 5,96 -+ blt .Lcbc_dec8x_five -+ nop -+ beq .Lcbc_dec8x_six -+ -+.Lcbc_dec8x_seven: -+ .long 0x11EF2549 -+ .long 0x12100D49 -+ .long 0x12311549 -+ .long 0x12521D49 -+ .long 0x12735549 -+ .long 0x12945D49 -+ .long 0x12B56549 -+ vor 4,13,13 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ vperm 18,18,18,6 -+ .long 0x7E3A2799 -+ vperm 19,19,19,6 -+ .long 0x7E5B2799 -+ vperm 20,20,20,6 -+ .long 0x7E7C2799 -+ vperm 21,21,21,6 -+ .long 0x7E9D2799 -+ .long 0x7EBE2799 -+ addi 4,4,0x70 -+ b .Lcbc_dec8x_done -+ -+.align 5 -+.Lcbc_dec8x_six: -+ .long 0x12102549 -+ .long 0x12311549 -+ .long 0x12521D49 -+ .long 0x12735549 -+ .long 0x12945D49 -+ .long 0x12B56549 -+ vor 4,13,13 -+ -+ vperm 16,16,16,6 -+ vperm 17,17,17,6 -+ .long 0x7E002799 -+ vperm 18,18,18,6 -+ .long 0x7E282799 -+ vperm 19,19,19,6 -+ .long 0x7E5A2799 -+ vperm 20,20,20,6 -+ .long 0x7E7B2799 -+ vperm 21,21,21,6 -+ .long 0x7E9C2799 -+ .long 0x7EBD2799 -+ addi 4,4,0x60 -+ b .Lcbc_dec8x_done -+ -+.align 5 -+.Lcbc_dec8x_five: -+ .long 0x12312549 -+ .long 0x12521D49 -+ .long 0x12735549 -+ .long 0x12945D49 -+ .long 0x12B56549 -+ vor 4,13,13 -+ -+ vperm 17,17,17,6 -+ vperm 18,18,18,6 -+ .long 0x7E202799 -+ vperm 19,19,19,6 -+ .long 0x7E482799 -+ vperm 20,20,20,6 -+ .long 0x7E7A2799 -+ vperm 21,21,21,6 -+ .long 0x7E9B2799 -+ .long 0x7EBC2799 -+ addi 4,4,0x50 -+ b .Lcbc_dec8x_done -+ -+.align 5 -+.Lcbc_dec8x_four: -+ .long 0x12522549 -+ .long 0x12735549 -+ .long 0x12945D49 -+ .long 0x12B56549 -+ vor 4,13,13 -+ -+ vperm 18,18,18,6 -+ vperm 19,19,19,6 -+ .long 0x7E402799 -+ vperm 20,20,20,6 -+ .long 0x7E682799 -+ vperm 21,21,21,6 -+ .long 0x7E9A2799 -+ .long 0x7EBB2799 -+ addi 4,4,0x40 -+ b .Lcbc_dec8x_done -+ -+.align 5 -+.Lcbc_dec8x_three: -+ .long 0x12732549 -+ .long 0x12945D49 -+ .long 0x12B56549 -+ vor 4,13,13 -+ -+ vperm 19,19,19,6 -+ vperm 20,20,20,6 -+ .long 0x7E602799 -+ vperm 21,21,21,6 -+ .long 0x7E882799 -+ .long 0x7EBA2799 -+ addi 4,4,0x30 -+ b .Lcbc_dec8x_done -+ -+.align 5 -+.Lcbc_dec8x_two: -+ .long 0x12942549 -+ .long 0x12B56549 -+ vor 4,13,13 -+ -+ vperm 20,20,20,6 -+ vperm 21,21,21,6 -+ .long 0x7E802799 -+ .long 0x7EA82799 -+ addi 4,4,0x20 -+ b .Lcbc_dec8x_done -+ -+.align 5 -+.Lcbc_dec8x_one: -+ .long 0x12B52549 -+ vor 4,13,13 -+ -+ vperm 21,21,21,6 -+ .long 0x7EA02799 -+ addi 4,4,0x10 -+ -+.Lcbc_dec8x_done: -+ vperm 4,4,4,6 -+ .long 0x7C803F99 -+ -+ li 10,79 -+ li 11,95 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ -+ or 12,12,12 -+ lvx 20,10,1 -+ addi 10,10,32 -+ lvx 21,11,1 -+ addi 11,11,32 -+ lvx 22,10,1 -+ addi 10,10,32 -+ lvx 23,11,1 -+ addi 11,11,32 -+ lvx 24,10,1 -+ addi 10,10,32 -+ lvx 25,11,1 -+ addi 11,11,32 -+ lvx 26,10,1 -+ addi 10,10,32 -+ lvx 27,11,1 -+ addi 11,11,32 -+ lvx 28,10,1 -+ addi 10,10,32 -+ lvx 29,11,1 -+ addi 11,11,32 -+ lvx 30,10,1 -+ lvx 31,11,1 -+ ld 26,400(1) -+ ld 27,408(1) -+ ld 28,416(1) -+ ld 29,424(1) -+ ld 30,432(1) -+ ld 31,440(1) -+ addi 1,1,448 -+ blr -+.long 0 -+.byte 0,12,0x04,0,0x80,6,6,0 -+.long 0 -+.size aes_hw_cbc_encrypt,.-aes_hw_cbc_encrypt -+.globl aes_hw_ctr32_encrypt_blocks -+.type aes_hw_ctr32_encrypt_blocks,@function -+.align 5 -+aes_hw_ctr32_encrypt_blocks: -+.localentry aes_hw_ctr32_encrypt_blocks,0 -+ -+ cmpldi 5,1 -+ .long 0x4dc00020 -+ -+ lis 0,0xfff0 -+ li 12,-1 -+ or 0,0,0 -+ -+ li 10,15 -+ vxor 0,0,0 -+ vspltisb 3,0x0f -+ -+ lvx 4,0,7 -+ lvsl 6,0,7 -+ lvx 5,10,7 -+ vspltisb 11,1 -+ vxor 6,6,3 -+ vperm 4,4,5,6 -+ vsldoi 11,0,11,1 -+ -+ neg 11,3 -+ lvsr 10,0,6 -+ lwz 9,240(6) -+ -+ lvsr 6,0,11 -+ lvx 5,0,3 -+ addi 3,3,15 -+ vxor 6,6,3 -+ -+ srwi 9,9,1 -+ li 10,16 -+ subi 9,9,1 -+ -+ cmpldi 5,8 -+ bge _aesp8_ctr32_encrypt8x -+ -+ lvsl 8,0,4 -+ vspltisb 9,-1 -+ lvx 7,0,4 -+ vperm 9,9,0,8 -+ vxor 8,8,3 -+ -+ lvx 0,0,6 -+ mtctr 9 -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 0,1,0,10 -+ vxor 2,4,0 -+ lvx 0,10,6 -+ addi 10,10,16 -+ b .Loop_ctr32_enc -+ -+.align 5 -+.Loop_ctr32_enc: -+ vperm 1,0,1,10 -+ .long 0x10420D08 -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 0,1,0,10 -+ .long 0x10420508 -+ lvx 0,10,6 -+ addi 10,10,16 -+ bdnz .Loop_ctr32_enc -+ -+ vadduwm 4,4,11 -+ vor 3,5,5 -+ lvx 5,0,3 -+ addi 3,3,16 -+ subic. 5,5,1 -+ -+ vperm 1,0,1,10 -+ .long 0x10420D08 -+ lvx 1,10,6 -+ vperm 3,3,5,6 -+ li 10,16 -+ vperm 1,1,0,10 -+ lvx 0,0,6 -+ vxor 3,3,1 -+ .long 0x10421D09 -+ -+ lvx 1,10,6 -+ addi 10,10,16 -+ vperm 2,2,2,8 -+ vsel 3,7,2,9 -+ mtctr 9 -+ vperm 0,1,0,10 -+ vor 7,2,2 -+ vxor 2,4,0 -+ lvx 0,10,6 -+ addi 10,10,16 -+ stvx 3,0,4 -+ addi 4,4,16 -+ bne .Loop_ctr32_enc -+ -+ addi 4,4,-1 -+ lvx 2,0,4 -+ vsel 2,7,2,9 -+ stvx 2,0,4 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,6,0 -+.long 0 -+.align 5 -+_aesp8_ctr32_encrypt8x: -+ stdu 1,-448(1) -+ li 10,207 -+ li 11,223 -+ stvx 20,10,1 -+ addi 10,10,32 -+ stvx 21,11,1 -+ addi 11,11,32 -+ stvx 22,10,1 -+ addi 10,10,32 -+ stvx 23,11,1 -+ addi 11,11,32 -+ stvx 24,10,1 -+ addi 10,10,32 -+ stvx 25,11,1 -+ addi 11,11,32 -+ stvx 26,10,1 -+ addi 10,10,32 -+ stvx 27,11,1 -+ addi 11,11,32 -+ stvx 28,10,1 -+ addi 10,10,32 -+ stvx 29,11,1 -+ addi 11,11,32 -+ stvx 30,10,1 -+ stvx 31,11,1 -+ li 0,-1 -+ stw 12,396(1) -+ li 8,0x10 -+ std 26,400(1) -+ li 26,0x20 -+ std 27,408(1) -+ li 27,0x30 -+ std 28,416(1) -+ li 28,0x40 -+ std 29,424(1) -+ li 29,0x50 -+ std 30,432(1) -+ li 30,0x60 -+ std 31,440(1) -+ li 31,0x70 -+ or 0,0,0 -+ -+ subi 9,9,3 -+ -+ lvx 23,0,6 -+ lvx 30,8,6 -+ addi 6,6,0x20 -+ lvx 31,0,6 -+ vperm 23,30,23,10 -+ addi 11,1,79 -+ mtctr 9 -+ -+.Load_ctr32_enc_key: -+ vperm 24,31,30,10 -+ lvx 30,8,6 -+ addi 6,6,0x20 -+ stvx 24,0,11 -+ vperm 25,30,31,10 -+ lvx 31,0,6 -+ stvx 25,8,11 -+ addi 11,11,0x20 -+ bdnz .Load_ctr32_enc_key -+ -+ lvx 26,8,6 -+ vperm 24,31,30,10 -+ lvx 27,26,6 -+ stvx 24,0,11 -+ vperm 25,26,31,10 -+ lvx 28,27,6 -+ stvx 25,8,11 -+ addi 11,1,79 -+ vperm 26,27,26,10 -+ lvx 29,28,6 -+ vperm 27,28,27,10 -+ lvx 30,29,6 -+ vperm 28,29,28,10 -+ lvx 31,30,6 -+ vperm 29,30,29,10 -+ lvx 15,31,6 -+ vperm 30,31,30,10 -+ lvx 24,0,11 -+ vperm 31,15,31,10 -+ lvx 25,8,11 -+ -+ vadduwm 7,11,11 -+ subi 3,3,15 -+ sldi 5,5,4 -+ -+ vadduwm 16,4,11 -+ vadduwm 17,4,7 -+ vxor 15,4,23 -+ li 10,8 -+ vadduwm 18,16,7 -+ vxor 16,16,23 -+ lvsl 6,0,10 -+ vadduwm 19,17,7 -+ vxor 17,17,23 -+ vspltisb 3,0x0f -+ vadduwm 20,18,7 -+ vxor 18,18,23 -+ vxor 6,6,3 -+ vadduwm 21,19,7 -+ vxor 19,19,23 -+ vadduwm 22,20,7 -+ vxor 20,20,23 -+ vadduwm 4,21,7 -+ vxor 21,21,23 -+ vxor 22,22,23 -+ -+ mtctr 9 -+ b .Loop_ctr32_enc8x -+.align 5 -+.Loop_ctr32_enc8x: -+ .long 0x11EFC508 -+ .long 0x1210C508 -+ .long 0x1231C508 -+ .long 0x1252C508 -+ .long 0x1273C508 -+ .long 0x1294C508 -+ .long 0x12B5C508 -+ .long 0x12D6C508 -+.Loop_ctr32_enc8x_middle: -+ lvx 24,26,11 -+ addi 11,11,0x20 -+ -+ .long 0x11EFCD08 -+ .long 0x1210CD08 -+ .long 0x1231CD08 -+ .long 0x1252CD08 -+ .long 0x1273CD08 -+ .long 0x1294CD08 -+ .long 0x12B5CD08 -+ .long 0x12D6CD08 -+ lvx 25,8,11 -+ bdnz .Loop_ctr32_enc8x -+ -+ subic 11,5,256 -+ .long 0x11EFC508 -+ .long 0x1210C508 -+ .long 0x1231C508 -+ .long 0x1252C508 -+ .long 0x1273C508 -+ .long 0x1294C508 -+ .long 0x12B5C508 -+ .long 0x12D6C508 -+ -+ subfe 0,0,0 -+ .long 0x11EFCD08 -+ .long 0x1210CD08 -+ .long 0x1231CD08 -+ .long 0x1252CD08 -+ .long 0x1273CD08 -+ .long 0x1294CD08 -+ .long 0x12B5CD08 -+ .long 0x12D6CD08 -+ -+ and 0,0,11 -+ addi 11,1,79 -+ .long 0x11EFD508 -+ .long 0x1210D508 -+ .long 0x1231D508 -+ .long 0x1252D508 -+ .long 0x1273D508 -+ .long 0x1294D508 -+ .long 0x12B5D508 -+ .long 0x12D6D508 -+ lvx 24,0,11 -+ -+ subic 5,5,129 -+ .long 0x11EFDD08 -+ addi 5,5,1 -+ .long 0x1210DD08 -+ .long 0x1231DD08 -+ .long 0x1252DD08 -+ .long 0x1273DD08 -+ .long 0x1294DD08 -+ .long 0x12B5DD08 -+ .long 0x12D6DD08 -+ lvx 25,8,11 -+ -+ .long 0x11EFE508 -+ .long 0x7C001E99 -+ .long 0x1210E508 -+ .long 0x7C281E99 -+ .long 0x1231E508 -+ .long 0x7C5A1E99 -+ .long 0x1252E508 -+ .long 0x7C7B1E99 -+ .long 0x1273E508 -+ .long 0x7D5C1E99 -+ .long 0x1294E508 -+ .long 0x7D9D1E99 -+ .long 0x12B5E508 -+ .long 0x7DBE1E99 -+ .long 0x12D6E508 -+ .long 0x7DDF1E99 -+ addi 3,3,0x80 -+ -+ .long 0x11EFED08 -+ vperm 0,0,0,6 -+ .long 0x1210ED08 -+ vperm 1,1,1,6 -+ .long 0x1231ED08 -+ vperm 2,2,2,6 -+ .long 0x1252ED08 -+ vperm 3,3,3,6 -+ .long 0x1273ED08 -+ vperm 10,10,10,6 -+ .long 0x1294ED08 -+ vperm 12,12,12,6 -+ .long 0x12B5ED08 -+ vperm 13,13,13,6 -+ .long 0x12D6ED08 -+ vperm 14,14,14,6 -+ -+ add 3,3,0 -+ -+ -+ -+ subfe. 0,0,0 -+ .long 0x11EFF508 -+ vxor 0,0,31 -+ .long 0x1210F508 -+ vxor 1,1,31 -+ .long 0x1231F508 -+ vxor 2,2,31 -+ .long 0x1252F508 -+ vxor 3,3,31 -+ .long 0x1273F508 -+ vxor 10,10,31 -+ .long 0x1294F508 -+ vxor 12,12,31 -+ .long 0x12B5F508 -+ vxor 13,13,31 -+ .long 0x12D6F508 -+ vxor 14,14,31 -+ -+ bne .Lctr32_enc8x_break -+ -+ .long 0x100F0509 -+ .long 0x10300D09 -+ vadduwm 16,4,11 -+ .long 0x10511509 -+ vadduwm 17,4,7 -+ vxor 15,4,23 -+ .long 0x10721D09 -+ vadduwm 18,16,7 -+ vxor 16,16,23 -+ .long 0x11535509 -+ vadduwm 19,17,7 -+ vxor 17,17,23 -+ .long 0x11946509 -+ vadduwm 20,18,7 -+ vxor 18,18,23 -+ .long 0x11B56D09 -+ vadduwm 21,19,7 -+ vxor 19,19,23 -+ .long 0x11D67509 -+ vadduwm 22,20,7 -+ vxor 20,20,23 -+ vperm 0,0,0,6 -+ vadduwm 4,21,7 -+ vxor 21,21,23 -+ vperm 1,1,1,6 -+ vxor 22,22,23 -+ mtctr 9 -+ -+ .long 0x11EFC508 -+ .long 0x7C002799 -+ vperm 2,2,2,6 -+ .long 0x1210C508 -+ .long 0x7C282799 -+ vperm 3,3,3,6 -+ .long 0x1231C508 -+ .long 0x7C5A2799 -+ vperm 10,10,10,6 -+ .long 0x1252C508 -+ .long 0x7C7B2799 -+ vperm 12,12,12,6 -+ .long 0x1273C508 -+ .long 0x7D5C2799 -+ vperm 13,13,13,6 -+ .long 0x1294C508 -+ .long 0x7D9D2799 -+ vperm 14,14,14,6 -+ .long 0x12B5C508 -+ .long 0x7DBE2799 -+ .long 0x12D6C508 -+ .long 0x7DDF2799 -+ addi 4,4,0x80 -+ -+ b .Loop_ctr32_enc8x_middle -+ -+.align 5 -+.Lctr32_enc8x_break: -+ cmpwi 5,-0x60 -+ blt .Lctr32_enc8x_one -+ nop -+ beq .Lctr32_enc8x_two -+ cmpwi 5,-0x40 -+ blt .Lctr32_enc8x_three -+ nop -+ beq .Lctr32_enc8x_four -+ cmpwi 5,-0x20 -+ blt .Lctr32_enc8x_five -+ nop -+ beq .Lctr32_enc8x_six -+ cmpwi 5,0x00 -+ blt .Lctr32_enc8x_seven -+ -+.Lctr32_enc8x_eight: -+ .long 0x11EF0509 -+ .long 0x12100D09 -+ .long 0x12311509 -+ .long 0x12521D09 -+ .long 0x12735509 -+ .long 0x12946509 -+ .long 0x12B56D09 -+ .long 0x12D67509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ vperm 18,18,18,6 -+ .long 0x7E3A2799 -+ vperm 19,19,19,6 -+ .long 0x7E5B2799 -+ vperm 20,20,20,6 -+ .long 0x7E7C2799 -+ vperm 21,21,21,6 -+ .long 0x7E9D2799 -+ vperm 22,22,22,6 -+ .long 0x7EBE2799 -+ .long 0x7EDF2799 -+ addi 4,4,0x80 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_seven: -+ .long 0x11EF0D09 -+ .long 0x12101509 -+ .long 0x12311D09 -+ .long 0x12525509 -+ .long 0x12736509 -+ .long 0x12946D09 -+ .long 0x12B57509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ vperm 18,18,18,6 -+ .long 0x7E3A2799 -+ vperm 19,19,19,6 -+ .long 0x7E5B2799 -+ vperm 20,20,20,6 -+ .long 0x7E7C2799 -+ vperm 21,21,21,6 -+ .long 0x7E9D2799 -+ .long 0x7EBE2799 -+ addi 4,4,0x70 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_six: -+ .long 0x11EF1509 -+ .long 0x12101D09 -+ .long 0x12315509 -+ .long 0x12526509 -+ .long 0x12736D09 -+ .long 0x12947509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ vperm 18,18,18,6 -+ .long 0x7E3A2799 -+ vperm 19,19,19,6 -+ .long 0x7E5B2799 -+ vperm 20,20,20,6 -+ .long 0x7E7C2799 -+ .long 0x7E9D2799 -+ addi 4,4,0x60 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_five: -+ .long 0x11EF1D09 -+ .long 0x12105509 -+ .long 0x12316509 -+ .long 0x12526D09 -+ .long 0x12737509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ vperm 18,18,18,6 -+ .long 0x7E3A2799 -+ vperm 19,19,19,6 -+ .long 0x7E5B2799 -+ .long 0x7E7C2799 -+ addi 4,4,0x50 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_four: -+ .long 0x11EF5509 -+ .long 0x12106509 -+ .long 0x12316D09 -+ .long 0x12527509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ vperm 18,18,18,6 -+ .long 0x7E3A2799 -+ .long 0x7E5B2799 -+ addi 4,4,0x40 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_three: -+ .long 0x11EF6509 -+ .long 0x12106D09 -+ .long 0x12317509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ vperm 17,17,17,6 -+ .long 0x7E082799 -+ .long 0x7E3A2799 -+ addi 4,4,0x30 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_two: -+ .long 0x11EF6D09 -+ .long 0x12107509 -+ -+ vperm 15,15,15,6 -+ vperm 16,16,16,6 -+ .long 0x7DE02799 -+ .long 0x7E082799 -+ addi 4,4,0x20 -+ b .Lctr32_enc8x_done -+ -+.align 5 -+.Lctr32_enc8x_one: -+ .long 0x11EF7509 -+ -+ vperm 15,15,15,6 -+ .long 0x7DE02799 -+ addi 4,4,0x10 -+ -+.Lctr32_enc8x_done: -+ li 10,79 -+ li 11,95 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ stvx 6,10,1 -+ addi 10,10,32 -+ stvx 6,11,1 -+ addi 11,11,32 -+ -+ or 12,12,12 -+ lvx 20,10,1 -+ addi 10,10,32 -+ lvx 21,11,1 -+ addi 11,11,32 -+ lvx 22,10,1 -+ addi 10,10,32 -+ lvx 23,11,1 -+ addi 11,11,32 -+ lvx 24,10,1 -+ addi 10,10,32 -+ lvx 25,11,1 -+ addi 11,11,32 -+ lvx 26,10,1 -+ addi 10,10,32 -+ lvx 27,11,1 -+ addi 11,11,32 -+ lvx 28,10,1 -+ addi 10,10,32 -+ lvx 29,11,1 -+ addi 11,11,32 -+ lvx 30,10,1 -+ lvx 31,11,1 -+ ld 26,400(1) -+ ld 27,408(1) -+ ld 28,416(1) -+ ld 29,424(1) -+ ld 30,432(1) -+ ld 31,440(1) -+ addi 1,1,448 -+ blr -+.long 0 -+.byte 0,12,0x04,0,0x80,6,6,0 -+.long 0 -+.size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks -+.globl aes_hw_xts_encrypt -+.type aes_hw_xts_encrypt,@function -+.align 5 -+aes_hw_xts_encrypt: -+.localentry aes_hw_xts_encrypt,0 -+ -+ mr 10,3 -+ li 3,-1 -+ cmpldi 5,16 -+ .long 0x4dc00020 -+ -+ lis 0,0xfff0 -+ li 12,-1 -+ li 11,0 -+ or 0,0,0 -+ -+ vspltisb 9,0x07 -+ lvsl 6,11,11 -+ vspltisb 11,0x0f -+ vxor 6,6,9 -+ -+ li 3,15 -+ lvx 8,0,8 -+ lvsl 5,0,8 -+ lvx 4,3,8 -+ vxor 5,5,11 -+ vperm 8,8,4,5 -+ -+ neg 11,10 -+ lvsr 5,0,11 -+ lvx 2,0,10 -+ addi 10,10,15 -+ vxor 5,5,11 -+ -+ cmpldi 7,0 -+ beq .Lxts_enc_no_key2 -+ -+ lvsr 7,0,7 -+ lwz 9,240(7) -+ srwi 9,9,1 -+ subi 9,9,1 -+ li 3,16 -+ -+ lvx 0,0,7 -+ lvx 1,3,7 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ vxor 8,8,0 -+ lvx 0,3,7 -+ addi 3,3,16 -+ mtctr 9 -+ -+.Ltweak_xts_enc: -+ vperm 1,0,1,7 -+ .long 0x11080D08 -+ lvx 1,3,7 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ .long 0x11080508 -+ lvx 0,3,7 -+ addi 3,3,16 -+ bdnz .Ltweak_xts_enc -+ -+ vperm 1,0,1,7 -+ .long 0x11080D08 -+ lvx 1,3,7 -+ vperm 0,1,0,7 -+ .long 0x11080509 -+ -+ li 8,0 -+ b .Lxts_enc -+ -+.Lxts_enc_no_key2: -+ li 3,-16 -+ and 5,5,3 -+ -+ -+.Lxts_enc: -+ lvx 4,0,10 -+ addi 10,10,16 -+ -+ lvsr 7,0,6 -+ lwz 9,240(6) -+ srwi 9,9,1 -+ subi 9,9,1 -+ li 3,16 -+ -+ vslb 10,9,9 -+ vor 10,10,9 -+ vspltisb 11,1 -+ vsldoi 10,10,11,15 -+ -+ cmpldi 5,96 -+ bge _aesp8_xts_encrypt6x -+ -+ andi. 7,5,15 -+ subic 0,5,32 -+ subi 7,7,16 -+ subfe 0,0,0 -+ and 0,0,7 -+ add 10,10,0 -+ -+ lvx 0,0,6 -+ lvx 1,3,6 -+ addi 3,3,16 -+ vperm 2,2,4,5 -+ vperm 0,1,0,7 -+ vxor 2,2,8 -+ vxor 2,2,0 -+ lvx 0,3,6 -+ addi 3,3,16 -+ mtctr 9 -+ b .Loop_xts_enc -+ -+.align 5 -+.Loop_xts_enc: -+ vperm 1,0,1,7 -+ .long 0x10420D08 -+ lvx 1,3,6 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ .long 0x10420508 -+ lvx 0,3,6 -+ addi 3,3,16 -+ bdnz .Loop_xts_enc -+ -+ vperm 1,0,1,7 -+ .long 0x10420D08 -+ lvx 1,3,6 -+ li 3,16 -+ vperm 0,1,0,7 -+ vxor 0,0,8 -+ .long 0x10620509 -+ -+ vperm 11,3,3,6 -+ -+ .long 0x7D602799 -+ -+ addi 4,4,16 -+ -+ subic. 5,5,16 -+ beq .Lxts_enc_done -+ -+ vor 2,4,4 -+ lvx 4,0,10 -+ addi 10,10,16 -+ lvx 0,0,6 -+ lvx 1,3,6 -+ addi 3,3,16 -+ -+ subic 0,5,32 -+ subfe 0,0,0 -+ and 0,0,7 -+ add 10,10,0 -+ -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 8,8,11 -+ -+ vperm 2,2,4,5 -+ vperm 0,1,0,7 -+ vxor 2,2,8 -+ vxor 3,3,0 -+ vxor 2,2,0 -+ lvx 0,3,6 -+ addi 3,3,16 -+ -+ mtctr 9 -+ cmpldi 5,16 -+ bge .Loop_xts_enc -+ -+ vxor 3,3,8 -+ lvsr 5,0,5 -+ vxor 4,4,4 -+ vspltisb 11,-1 -+ vperm 4,4,11,5 -+ vsel 2,2,3,4 -+ -+ subi 11,4,17 -+ subi 4,4,16 -+ mtctr 5 -+ li 5,16 -+.Loop_xts_enc_steal: -+ lbzu 0,1(11) -+ stb 0,16(11) -+ bdnz .Loop_xts_enc_steal -+ -+ mtctr 9 -+ b .Loop_xts_enc -+ -+.Lxts_enc_done: -+ cmpldi 8,0 -+ beq .Lxts_enc_ret -+ -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 8,8,11 -+ -+ vperm 8,8,8,6 -+ .long 0x7D004799 -+ -+.Lxts_enc_ret: -+ or 12,12,12 -+ li 3,0 -+ blr -+.long 0 -+.byte 0,12,0x04,0,0x80,6,6,0 -+.long 0 -+.size aes_hw_xts_encrypt,.-aes_hw_xts_encrypt -+ -+.globl aes_hw_xts_decrypt -+.type aes_hw_xts_decrypt,@function -+.align 5 -+aes_hw_xts_decrypt: -+.localentry aes_hw_xts_decrypt,0 -+ -+ mr 10,3 -+ li 3,-1 -+ cmpldi 5,16 -+ .long 0x4dc00020 -+ -+ lis 0,0xfff8 -+ li 12,-1 -+ li 11,0 -+ or 0,0,0 -+ -+ andi. 0,5,15 -+ neg 0,0 -+ andi. 0,0,16 -+ sub 5,5,0 -+ -+ vspltisb 9,0x07 -+ lvsl 6,11,11 -+ vspltisb 11,0x0f -+ vxor 6,6,9 -+ -+ li 3,15 -+ lvx 8,0,8 -+ lvsl 5,0,8 -+ lvx 4,3,8 -+ vxor 5,5,11 -+ vperm 8,8,4,5 -+ -+ neg 11,10 -+ lvsr 5,0,11 -+ lvx 2,0,10 -+ addi 10,10,15 -+ vxor 5,5,11 -+ -+ cmpldi 7,0 -+ beq .Lxts_dec_no_key2 -+ -+ lvsr 7,0,7 -+ lwz 9,240(7) -+ srwi 9,9,1 -+ subi 9,9,1 -+ li 3,16 -+ -+ lvx 0,0,7 -+ lvx 1,3,7 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ vxor 8,8,0 -+ lvx 0,3,7 -+ addi 3,3,16 -+ mtctr 9 -+ -+.Ltweak_xts_dec: -+ vperm 1,0,1,7 -+ .long 0x11080D08 -+ lvx 1,3,7 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ .long 0x11080508 -+ lvx 0,3,7 -+ addi 3,3,16 -+ bdnz .Ltweak_xts_dec -+ -+ vperm 1,0,1,7 -+ .long 0x11080D08 -+ lvx 1,3,7 -+ vperm 0,1,0,7 -+ .long 0x11080509 -+ -+ li 8,0 -+ b .Lxts_dec -+ -+.Lxts_dec_no_key2: -+ neg 3,5 -+ andi. 3,3,15 -+ add 5,5,3 -+ -+ -+.Lxts_dec: -+ lvx 4,0,10 -+ addi 10,10,16 -+ -+ lvsr 7,0,6 -+ lwz 9,240(6) -+ srwi 9,9,1 -+ subi 9,9,1 -+ li 3,16 -+ -+ vslb 10,9,9 -+ vor 10,10,9 -+ vspltisb 11,1 -+ vsldoi 10,10,11,15 -+ -+ cmpldi 5,96 -+ bge _aesp8_xts_decrypt6x -+ -+ lvx 0,0,6 -+ lvx 1,3,6 -+ addi 3,3,16 -+ vperm 2,2,4,5 -+ vperm 0,1,0,7 -+ vxor 2,2,8 -+ vxor 2,2,0 -+ lvx 0,3,6 -+ addi 3,3,16 -+ mtctr 9 -+ -+ cmpldi 5,16 -+ blt .Ltail_xts_dec -+ -+ -+.align 5 -+.Loop_xts_dec: -+ vperm 1,0,1,7 -+ .long 0x10420D48 -+ lvx 1,3,6 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ .long 0x10420548 -+ lvx 0,3,6 -+ addi 3,3,16 -+ bdnz .Loop_xts_dec -+ -+ vperm 1,0,1,7 -+ .long 0x10420D48 -+ lvx 1,3,6 -+ li 3,16 -+ vperm 0,1,0,7 -+ vxor 0,0,8 -+ .long 0x10620549 -+ -+ vperm 11,3,3,6 -+ -+ .long 0x7D602799 -+ -+ addi 4,4,16 -+ -+ subic. 5,5,16 -+ beq .Lxts_dec_done -+ -+ vor 2,4,4 -+ lvx 4,0,10 -+ addi 10,10,16 -+ lvx 0,0,6 -+ lvx 1,3,6 -+ addi 3,3,16 -+ -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 8,8,11 -+ -+ vperm 2,2,4,5 -+ vperm 0,1,0,7 -+ vxor 2,2,8 -+ vxor 2,2,0 -+ lvx 0,3,6 -+ addi 3,3,16 -+ -+ mtctr 9 -+ cmpldi 5,16 -+ bge .Loop_xts_dec -+ -+.Ltail_xts_dec: -+ vsrab 11,8,9 -+ vaddubm 12,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 12,12,11 -+ -+ subi 10,10,16 -+ add 10,10,5 -+ -+ vxor 2,2,8 -+ vxor 2,2,12 -+ -+.Loop_xts_dec_short: -+ vperm 1,0,1,7 -+ .long 0x10420D48 -+ lvx 1,3,6 -+ addi 3,3,16 -+ vperm 0,1,0,7 -+ .long 0x10420548 -+ lvx 0,3,6 -+ addi 3,3,16 -+ bdnz .Loop_xts_dec_short -+ -+ vperm 1,0,1,7 -+ .long 0x10420D48 -+ lvx 1,3,6 -+ li 3,16 -+ vperm 0,1,0,7 -+ vxor 0,0,12 -+ .long 0x10620549 -+ -+ vperm 11,3,3,6 -+ -+ .long 0x7D602799 -+ -+ -+ vor 2,4,4 -+ lvx 4,0,10 -+ -+ lvx 0,0,6 -+ lvx 1,3,6 -+ addi 3,3,16 -+ vperm 2,2,4,5 -+ vperm 0,1,0,7 -+ -+ lvsr 5,0,5 -+ vxor 4,4,4 -+ vspltisb 11,-1 -+ vperm 4,4,11,5 -+ vsel 2,2,3,4 -+ -+ vxor 0,0,8 -+ vxor 2,2,0 -+ lvx 0,3,6 -+ addi 3,3,16 -+ -+ subi 11,4,1 -+ mtctr 5 -+ li 5,16 -+.Loop_xts_dec_steal: -+ lbzu 0,1(11) -+ stb 0,16(11) -+ bdnz .Loop_xts_dec_steal -+ -+ mtctr 9 -+ b .Loop_xts_dec -+ -+.Lxts_dec_done: -+ cmpldi 8,0 -+ beq .Lxts_dec_ret -+ -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 8,8,11 -+ -+ vperm 8,8,8,6 -+ .long 0x7D004799 -+ -+.Lxts_dec_ret: -+ or 12,12,12 -+ li 3,0 -+ blr -+.long 0 -+.byte 0,12,0x04,0,0x80,6,6,0 -+.long 0 -+.size aes_hw_xts_decrypt,.-aes_hw_xts_decrypt -+.align 5 -+_aesp8_xts_encrypt6x: -+ stdu 1,-448(1) -+ mflr 11 -+ li 7,207 -+ li 3,223 -+ std 11,464(1) -+ stvx 20,7,1 -+ addi 7,7,32 -+ stvx 21,3,1 -+ addi 3,3,32 -+ stvx 22,7,1 -+ addi 7,7,32 -+ stvx 23,3,1 -+ addi 3,3,32 -+ stvx 24,7,1 -+ addi 7,7,32 -+ stvx 25,3,1 -+ addi 3,3,32 -+ stvx 26,7,1 -+ addi 7,7,32 -+ stvx 27,3,1 -+ addi 3,3,32 -+ stvx 28,7,1 -+ addi 7,7,32 -+ stvx 29,3,1 -+ addi 3,3,32 -+ stvx 30,7,1 -+ stvx 31,3,1 -+ li 0,-1 -+ stw 12,396(1) -+ li 3,0x10 -+ std 26,400(1) -+ li 26,0x20 -+ std 27,408(1) -+ li 27,0x30 -+ std 28,416(1) -+ li 28,0x40 -+ std 29,424(1) -+ li 29,0x50 -+ std 30,432(1) -+ li 30,0x60 -+ std 31,440(1) -+ li 31,0x70 -+ or 0,0,0 -+ -+ subi 9,9,3 -+ -+ lvx 23,0,6 -+ lvx 30,3,6 -+ addi 6,6,0x20 -+ lvx 31,0,6 -+ vperm 23,30,23,7 -+ addi 7,1,79 -+ mtctr 9 -+ -+.Load_xts_enc_key: -+ vperm 24,31,30,7 -+ lvx 30,3,6 -+ addi 6,6,0x20 -+ stvx 24,0,7 -+ vperm 25,30,31,7 -+ lvx 31,0,6 -+ stvx 25,3,7 -+ addi 7,7,0x20 -+ bdnz .Load_xts_enc_key -+ -+ lvx 26,3,6 -+ vperm 24,31,30,7 -+ lvx 27,26,6 -+ stvx 24,0,7 -+ vperm 25,26,31,7 -+ lvx 28,27,6 -+ stvx 25,3,7 -+ addi 7,1,79 -+ vperm 26,27,26,7 -+ lvx 29,28,6 -+ vperm 27,28,27,7 -+ lvx 30,29,6 -+ vperm 28,29,28,7 -+ lvx 31,30,6 -+ vperm 29,30,29,7 -+ lvx 22,31,6 -+ vperm 30,31,30,7 -+ lvx 24,0,7 -+ vperm 31,22,31,7 -+ lvx 25,3,7 -+ -+ vperm 0,2,4,5 -+ subi 10,10,31 -+ vxor 17,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 7,0,17 -+ vxor 8,8,11 -+ -+ .long 0x7C235699 -+ vxor 18,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 1,1,1,6 -+ vand 11,11,10 -+ vxor 12,1,18 -+ vxor 8,8,11 -+ -+ .long 0x7C5A5699 -+ andi. 31,5,15 -+ vxor 19,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 2,2,2,6 -+ vand 11,11,10 -+ vxor 13,2,19 -+ vxor 8,8,11 -+ -+ .long 0x7C7B5699 -+ sub 5,5,31 -+ vxor 20,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 3,3,3,6 -+ vand 11,11,10 -+ vxor 14,3,20 -+ vxor 8,8,11 -+ -+ .long 0x7C9C5699 -+ subi 5,5,0x60 -+ vxor 21,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 4,4,4,6 -+ vand 11,11,10 -+ vxor 15,4,21 -+ vxor 8,8,11 -+ -+ .long 0x7CBD5699 -+ addi 10,10,0x60 -+ vxor 22,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 5,5,5,6 -+ vand 11,11,10 -+ vxor 16,5,22 -+ vxor 8,8,11 -+ -+ vxor 31,31,23 -+ mtctr 9 -+ b .Loop_xts_enc6x -+ -+.align 5 -+.Loop_xts_enc6x: -+ .long 0x10E7C508 -+ .long 0x118CC508 -+ .long 0x11ADC508 -+ .long 0x11CEC508 -+ .long 0x11EFC508 -+ .long 0x1210C508 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD08 -+ .long 0x118CCD08 -+ .long 0x11ADCD08 -+ .long 0x11CECD08 -+ .long 0x11EFCD08 -+ .long 0x1210CD08 -+ lvx 25,3,7 -+ bdnz .Loop_xts_enc6x -+ -+ subic 5,5,96 -+ vxor 0,17,31 -+ .long 0x10E7C508 -+ .long 0x118CC508 -+ vsrab 11,8,9 -+ vxor 17,8,23 -+ vaddubm 8,8,8 -+ .long 0x11ADC508 -+ .long 0x11CEC508 -+ vsldoi 11,11,11,15 -+ .long 0x11EFC508 -+ .long 0x1210C508 -+ -+ subfe. 0,0,0 -+ vand 11,11,10 -+ .long 0x10E7CD08 -+ .long 0x118CCD08 -+ vxor 8,8,11 -+ .long 0x11ADCD08 -+ .long 0x11CECD08 -+ vxor 1,18,31 -+ vsrab 11,8,9 -+ vxor 18,8,23 -+ .long 0x11EFCD08 -+ .long 0x1210CD08 -+ -+ and 0,0,5 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ .long 0x10E7D508 -+ .long 0x118CD508 -+ vand 11,11,10 -+ .long 0x11ADD508 -+ .long 0x11CED508 -+ vxor 8,8,11 -+ .long 0x11EFD508 -+ .long 0x1210D508 -+ -+ add 10,10,0 -+ -+ -+ -+ vxor 2,19,31 -+ vsrab 11,8,9 -+ vxor 19,8,23 -+ vaddubm 8,8,8 -+ .long 0x10E7DD08 -+ .long 0x118CDD08 -+ vsldoi 11,11,11,15 -+ .long 0x11ADDD08 -+ .long 0x11CEDD08 -+ vand 11,11,10 -+ .long 0x11EFDD08 -+ .long 0x1210DD08 -+ -+ addi 7,1,79 -+ vxor 8,8,11 -+ .long 0x10E7E508 -+ .long 0x118CE508 -+ vxor 3,20,31 -+ vsrab 11,8,9 -+ vxor 20,8,23 -+ .long 0x11ADE508 -+ .long 0x11CEE508 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ .long 0x11EFE508 -+ .long 0x1210E508 -+ lvx 24,0,7 -+ vand 11,11,10 -+ -+ .long 0x10E7ED08 -+ .long 0x118CED08 -+ vxor 8,8,11 -+ .long 0x11ADED08 -+ .long 0x11CEED08 -+ vxor 4,21,31 -+ vsrab 11,8,9 -+ vxor 21,8,23 -+ .long 0x11EFED08 -+ .long 0x1210ED08 -+ lvx 25,3,7 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ -+ .long 0x10E7F508 -+ .long 0x118CF508 -+ vand 11,11,10 -+ .long 0x11ADF508 -+ .long 0x11CEF508 -+ vxor 8,8,11 -+ .long 0x11EFF508 -+ .long 0x1210F508 -+ vxor 5,22,31 -+ vsrab 11,8,9 -+ vxor 22,8,23 -+ -+ .long 0x10E70509 -+ .long 0x7C005699 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ .long 0x118C0D09 -+ .long 0x7C235699 -+ .long 0x11AD1509 -+ vperm 0,0,0,6 -+ .long 0x7C5A5699 -+ vand 11,11,10 -+ .long 0x11CE1D09 -+ vperm 1,1,1,6 -+ .long 0x7C7B5699 -+ .long 0x11EF2509 -+ vperm 2,2,2,6 -+ .long 0x7C9C5699 -+ vxor 8,8,11 -+ .long 0x11702D09 -+ -+ vperm 3,3,3,6 -+ .long 0x7CBD5699 -+ addi 10,10,0x60 -+ vperm 4,4,4,6 -+ vperm 5,5,5,6 -+ -+ vperm 7,7,7,6 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 7,0,17 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ vxor 12,1,18 -+ vperm 14,14,14,6 -+ .long 0x7DBA2799 -+ vxor 13,2,19 -+ vperm 15,15,15,6 -+ .long 0x7DDB2799 -+ vxor 14,3,20 -+ vperm 16,11,11,6 -+ .long 0x7DFC2799 -+ vxor 15,4,21 -+ .long 0x7E1D2799 -+ -+ vxor 16,5,22 -+ addi 4,4,0x60 -+ -+ mtctr 9 -+ beq .Loop_xts_enc6x -+ -+ addic. 5,5,0x60 -+ beq .Lxts_enc6x_zero -+ cmpwi 5,0x20 -+ blt .Lxts_enc6x_one -+ nop -+ beq .Lxts_enc6x_two -+ cmpwi 5,0x40 -+ blt .Lxts_enc6x_three -+ nop -+ beq .Lxts_enc6x_four -+ -+.Lxts_enc6x_five: -+ vxor 7,1,17 -+ vxor 12,2,18 -+ vxor 13,3,19 -+ vxor 14,4,20 -+ vxor 15,5,21 -+ -+ bl _aesp8_xts_enc5x -+ -+ vperm 7,7,7,6 -+ vor 17,22,22 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ vperm 14,14,14,6 -+ .long 0x7DBA2799 -+ vxor 11,15,22 -+ vperm 15,15,15,6 -+ .long 0x7DDB2799 -+ .long 0x7DFC2799 -+ addi 4,4,0x50 -+ bne .Lxts_enc6x_steal -+ b .Lxts_enc6x_done -+ -+.align 4 -+.Lxts_enc6x_four: -+ vxor 7,2,17 -+ vxor 12,3,18 -+ vxor 13,4,19 -+ vxor 14,5,20 -+ vxor 15,15,15 -+ -+ bl _aesp8_xts_enc5x -+ -+ vperm 7,7,7,6 -+ vor 17,21,21 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ vxor 11,14,21 -+ vperm 14,14,14,6 -+ .long 0x7DBA2799 -+ .long 0x7DDB2799 -+ addi 4,4,0x40 -+ bne .Lxts_enc6x_steal -+ b .Lxts_enc6x_done -+ -+.align 4 -+.Lxts_enc6x_three: -+ vxor 7,3,17 -+ vxor 12,4,18 -+ vxor 13,5,19 -+ vxor 14,14,14 -+ vxor 15,15,15 -+ -+ bl _aesp8_xts_enc5x -+ -+ vperm 7,7,7,6 -+ vor 17,20,20 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 11,13,20 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ .long 0x7DBA2799 -+ addi 4,4,0x30 -+ bne .Lxts_enc6x_steal -+ b .Lxts_enc6x_done -+ -+.align 4 -+.Lxts_enc6x_two: -+ vxor 7,4,17 -+ vxor 12,5,18 -+ vxor 13,13,13 -+ vxor 14,14,14 -+ vxor 15,15,15 -+ -+ bl _aesp8_xts_enc5x -+ -+ vperm 7,7,7,6 -+ vor 17,19,19 -+ vxor 11,12,19 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ .long 0x7D832799 -+ addi 4,4,0x20 -+ bne .Lxts_enc6x_steal -+ b .Lxts_enc6x_done -+ -+.align 4 -+.Lxts_enc6x_one: -+ vxor 7,5,17 -+ nop -+.Loop_xts_enc1x: -+ .long 0x10E7C508 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD08 -+ lvx 25,3,7 -+ bdnz .Loop_xts_enc1x -+ -+ add 10,10,31 -+ cmpwi 31,0 -+ .long 0x10E7C508 -+ -+ subi 10,10,16 -+ .long 0x10E7CD08 -+ -+ lvsr 5,0,31 -+ .long 0x10E7D508 -+ -+ .long 0x7C005699 -+ .long 0x10E7DD08 -+ -+ addi 7,1,79 -+ .long 0x10E7E508 -+ lvx 24,0,7 -+ -+ .long 0x10E7ED08 -+ lvx 25,3,7 -+ vxor 17,17,31 -+ -+ vperm 0,0,0,6 -+ .long 0x10E7F508 -+ -+ vperm 0,0,0,5 -+ .long 0x10E78D09 -+ -+ vor 17,18,18 -+ vxor 11,7,18 -+ vperm 7,7,7,6 -+ .long 0x7CE02799 -+ addi 4,4,0x10 -+ bne .Lxts_enc6x_steal -+ b .Lxts_enc6x_done -+ -+.align 4 -+.Lxts_enc6x_zero: -+ cmpwi 31,0 -+ beq .Lxts_enc6x_done -+ -+ add 10,10,31 -+ subi 10,10,16 -+ .long 0x7C005699 -+ lvsr 5,0,31 -+ vperm 0,0,0,6 -+ vperm 0,0,0,5 -+ vxor 11,11,17 -+.Lxts_enc6x_steal: -+ vxor 0,0,17 -+ vxor 7,7,7 -+ vspltisb 12,-1 -+ vperm 7,7,12,5 -+ vsel 7,0,11,7 -+ -+ subi 30,4,17 -+ subi 4,4,16 -+ mtctr 31 -+.Loop_xts_enc6x_steal: -+ lbzu 0,1(30) -+ stb 0,16(30) -+ bdnz .Loop_xts_enc6x_steal -+ -+ li 31,0 -+ mtctr 9 -+ b .Loop_xts_enc1x -+ -+.align 4 -+.Lxts_enc6x_done: -+ cmpldi 8,0 -+ beq .Lxts_enc6x_ret -+ -+ vxor 8,17,23 -+ vperm 8,8,8,6 -+ .long 0x7D004799 -+ -+.Lxts_enc6x_ret: -+ mtlr 11 -+ li 10,79 -+ li 11,95 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ -+ or 12,12,12 -+ lvx 20,10,1 -+ addi 10,10,32 -+ lvx 21,11,1 -+ addi 11,11,32 -+ lvx 22,10,1 -+ addi 10,10,32 -+ lvx 23,11,1 -+ addi 11,11,32 -+ lvx 24,10,1 -+ addi 10,10,32 -+ lvx 25,11,1 -+ addi 11,11,32 -+ lvx 26,10,1 -+ addi 10,10,32 -+ lvx 27,11,1 -+ addi 11,11,32 -+ lvx 28,10,1 -+ addi 10,10,32 -+ lvx 29,11,1 -+ addi 11,11,32 -+ lvx 30,10,1 -+ lvx 31,11,1 -+ ld 26,400(1) -+ ld 27,408(1) -+ ld 28,416(1) -+ ld 29,424(1) -+ ld 30,432(1) -+ ld 31,440(1) -+ addi 1,1,448 -+ blr -+.long 0 -+.byte 0,12,0x04,1,0x80,6,6,0 -+.long 0 -+ -+.align 5 -+_aesp8_xts_enc5x: -+ .long 0x10E7C508 -+ .long 0x118CC508 -+ .long 0x11ADC508 -+ .long 0x11CEC508 -+ .long 0x11EFC508 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD08 -+ .long 0x118CCD08 -+ .long 0x11ADCD08 -+ .long 0x11CECD08 -+ .long 0x11EFCD08 -+ lvx 25,3,7 -+ bdnz _aesp8_xts_enc5x -+ -+ add 10,10,31 -+ cmpwi 31,0 -+ .long 0x10E7C508 -+ .long 0x118CC508 -+ .long 0x11ADC508 -+ .long 0x11CEC508 -+ .long 0x11EFC508 -+ -+ subi 10,10,16 -+ .long 0x10E7CD08 -+ .long 0x118CCD08 -+ .long 0x11ADCD08 -+ .long 0x11CECD08 -+ .long 0x11EFCD08 -+ vxor 17,17,31 -+ -+ .long 0x10E7D508 -+ lvsr 5,0,31 -+ .long 0x118CD508 -+ .long 0x11ADD508 -+ .long 0x11CED508 -+ .long 0x11EFD508 -+ vxor 1,18,31 -+ -+ .long 0x10E7DD08 -+ .long 0x7C005699 -+ .long 0x118CDD08 -+ .long 0x11ADDD08 -+ .long 0x11CEDD08 -+ .long 0x11EFDD08 -+ vxor 2,19,31 -+ -+ addi 7,1,79 -+ .long 0x10E7E508 -+ .long 0x118CE508 -+ .long 0x11ADE508 -+ .long 0x11CEE508 -+ .long 0x11EFE508 -+ lvx 24,0,7 -+ vxor 3,20,31 -+ -+ .long 0x10E7ED08 -+ vperm 0,0,0,6 -+ .long 0x118CED08 -+ .long 0x11ADED08 -+ .long 0x11CEED08 -+ .long 0x11EFED08 -+ lvx 25,3,7 -+ vxor 4,21,31 -+ -+ .long 0x10E7F508 -+ vperm 0,0,0,5 -+ .long 0x118CF508 -+ .long 0x11ADF508 -+ .long 0x11CEF508 -+ .long 0x11EFF508 -+ -+ .long 0x10E78D09 -+ .long 0x118C0D09 -+ .long 0x11AD1509 -+ .long 0x11CE1D09 -+ .long 0x11EF2509 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,0,0 -+ -+.align 5 -+_aesp8_xts_decrypt6x: -+ stdu 1,-448(1) -+ mflr 11 -+ li 7,207 -+ li 3,223 -+ std 11,464(1) -+ stvx 20,7,1 -+ addi 7,7,32 -+ stvx 21,3,1 -+ addi 3,3,32 -+ stvx 22,7,1 -+ addi 7,7,32 -+ stvx 23,3,1 -+ addi 3,3,32 -+ stvx 24,7,1 -+ addi 7,7,32 -+ stvx 25,3,1 -+ addi 3,3,32 -+ stvx 26,7,1 -+ addi 7,7,32 -+ stvx 27,3,1 -+ addi 3,3,32 -+ stvx 28,7,1 -+ addi 7,7,32 -+ stvx 29,3,1 -+ addi 3,3,32 -+ stvx 30,7,1 -+ stvx 31,3,1 -+ li 0,-1 -+ stw 12,396(1) -+ li 3,0x10 -+ std 26,400(1) -+ li 26,0x20 -+ std 27,408(1) -+ li 27,0x30 -+ std 28,416(1) -+ li 28,0x40 -+ std 29,424(1) -+ li 29,0x50 -+ std 30,432(1) -+ li 30,0x60 -+ std 31,440(1) -+ li 31,0x70 -+ or 0,0,0 -+ -+ subi 9,9,3 -+ -+ lvx 23,0,6 -+ lvx 30,3,6 -+ addi 6,6,0x20 -+ lvx 31,0,6 -+ vperm 23,30,23,7 -+ addi 7,1,79 -+ mtctr 9 -+ -+.Load_xts_dec_key: -+ vperm 24,31,30,7 -+ lvx 30,3,6 -+ addi 6,6,0x20 -+ stvx 24,0,7 -+ vperm 25,30,31,7 -+ lvx 31,0,6 -+ stvx 25,3,7 -+ addi 7,7,0x20 -+ bdnz .Load_xts_dec_key -+ -+ lvx 26,3,6 -+ vperm 24,31,30,7 -+ lvx 27,26,6 -+ stvx 24,0,7 -+ vperm 25,26,31,7 -+ lvx 28,27,6 -+ stvx 25,3,7 -+ addi 7,1,79 -+ vperm 26,27,26,7 -+ lvx 29,28,6 -+ vperm 27,28,27,7 -+ lvx 30,29,6 -+ vperm 28,29,28,7 -+ lvx 31,30,6 -+ vperm 29,30,29,7 -+ lvx 22,31,6 -+ vperm 30,31,30,7 -+ lvx 24,0,7 -+ vperm 31,22,31,7 -+ lvx 25,3,7 -+ -+ vperm 0,2,4,5 -+ subi 10,10,31 -+ vxor 17,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vand 11,11,10 -+ vxor 7,0,17 -+ vxor 8,8,11 -+ -+ .long 0x7C235699 -+ vxor 18,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 1,1,1,6 -+ vand 11,11,10 -+ vxor 12,1,18 -+ vxor 8,8,11 -+ -+ .long 0x7C5A5699 -+ andi. 31,5,15 -+ vxor 19,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 2,2,2,6 -+ vand 11,11,10 -+ vxor 13,2,19 -+ vxor 8,8,11 -+ -+ .long 0x7C7B5699 -+ sub 5,5,31 -+ vxor 20,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 3,3,3,6 -+ vand 11,11,10 -+ vxor 14,3,20 -+ vxor 8,8,11 -+ -+ .long 0x7C9C5699 -+ subi 5,5,0x60 -+ vxor 21,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 4,4,4,6 -+ vand 11,11,10 -+ vxor 15,4,21 -+ vxor 8,8,11 -+ -+ .long 0x7CBD5699 -+ addi 10,10,0x60 -+ vxor 22,8,23 -+ vsrab 11,8,9 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ vperm 5,5,5,6 -+ vand 11,11,10 -+ vxor 16,5,22 -+ vxor 8,8,11 -+ -+ vxor 31,31,23 -+ mtctr 9 -+ b .Loop_xts_dec6x -+ -+.align 5 -+.Loop_xts_dec6x: -+ .long 0x10E7C548 -+ .long 0x118CC548 -+ .long 0x11ADC548 -+ .long 0x11CEC548 -+ .long 0x11EFC548 -+ .long 0x1210C548 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD48 -+ .long 0x118CCD48 -+ .long 0x11ADCD48 -+ .long 0x11CECD48 -+ .long 0x11EFCD48 -+ .long 0x1210CD48 -+ lvx 25,3,7 -+ bdnz .Loop_xts_dec6x -+ -+ subic 5,5,96 -+ vxor 0,17,31 -+ .long 0x10E7C548 -+ .long 0x118CC548 -+ vsrab 11,8,9 -+ vxor 17,8,23 -+ vaddubm 8,8,8 -+ .long 0x11ADC548 -+ .long 0x11CEC548 -+ vsldoi 11,11,11,15 -+ .long 0x11EFC548 -+ .long 0x1210C548 -+ -+ subfe. 0,0,0 -+ vand 11,11,10 -+ .long 0x10E7CD48 -+ .long 0x118CCD48 -+ vxor 8,8,11 -+ .long 0x11ADCD48 -+ .long 0x11CECD48 -+ vxor 1,18,31 -+ vsrab 11,8,9 -+ vxor 18,8,23 -+ .long 0x11EFCD48 -+ .long 0x1210CD48 -+ -+ and 0,0,5 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ .long 0x10E7D548 -+ .long 0x118CD548 -+ vand 11,11,10 -+ .long 0x11ADD548 -+ .long 0x11CED548 -+ vxor 8,8,11 -+ .long 0x11EFD548 -+ .long 0x1210D548 -+ -+ add 10,10,0 -+ -+ -+ -+ vxor 2,19,31 -+ vsrab 11,8,9 -+ vxor 19,8,23 -+ vaddubm 8,8,8 -+ .long 0x10E7DD48 -+ .long 0x118CDD48 -+ vsldoi 11,11,11,15 -+ .long 0x11ADDD48 -+ .long 0x11CEDD48 -+ vand 11,11,10 -+ .long 0x11EFDD48 -+ .long 0x1210DD48 -+ -+ addi 7,1,79 -+ vxor 8,8,11 -+ .long 0x10E7E548 -+ .long 0x118CE548 -+ vxor 3,20,31 -+ vsrab 11,8,9 -+ vxor 20,8,23 -+ .long 0x11ADE548 -+ .long 0x11CEE548 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ .long 0x11EFE548 -+ .long 0x1210E548 -+ lvx 24,0,7 -+ vand 11,11,10 -+ -+ .long 0x10E7ED48 -+ .long 0x118CED48 -+ vxor 8,8,11 -+ .long 0x11ADED48 -+ .long 0x11CEED48 -+ vxor 4,21,31 -+ vsrab 11,8,9 -+ vxor 21,8,23 -+ .long 0x11EFED48 -+ .long 0x1210ED48 -+ lvx 25,3,7 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ -+ .long 0x10E7F548 -+ .long 0x118CF548 -+ vand 11,11,10 -+ .long 0x11ADF548 -+ .long 0x11CEF548 -+ vxor 8,8,11 -+ .long 0x11EFF548 -+ .long 0x1210F548 -+ vxor 5,22,31 -+ vsrab 11,8,9 -+ vxor 22,8,23 -+ -+ .long 0x10E70549 -+ .long 0x7C005699 -+ vaddubm 8,8,8 -+ vsldoi 11,11,11,15 -+ .long 0x118C0D49 -+ .long 0x7C235699 -+ .long 0x11AD1549 -+ vperm 0,0,0,6 -+ .long 0x7C5A5699 -+ vand 11,11,10 -+ .long 0x11CE1D49 -+ vperm 1,1,1,6 -+ .long 0x7C7B5699 -+ .long 0x11EF2549 -+ vperm 2,2,2,6 -+ .long 0x7C9C5699 -+ vxor 8,8,11 -+ .long 0x12102D49 -+ vperm 3,3,3,6 -+ .long 0x7CBD5699 -+ addi 10,10,0x60 -+ vperm 4,4,4,6 -+ vperm 5,5,5,6 -+ -+ vperm 7,7,7,6 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 7,0,17 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ vxor 12,1,18 -+ vperm 14,14,14,6 -+ .long 0x7DBA2799 -+ vxor 13,2,19 -+ vperm 15,15,15,6 -+ .long 0x7DDB2799 -+ vxor 14,3,20 -+ vperm 16,16,16,6 -+ .long 0x7DFC2799 -+ vxor 15,4,21 -+ .long 0x7E1D2799 -+ vxor 16,5,22 -+ addi 4,4,0x60 -+ -+ mtctr 9 -+ beq .Loop_xts_dec6x -+ -+ addic. 5,5,0x60 -+ beq .Lxts_dec6x_zero -+ cmpwi 5,0x20 -+ blt .Lxts_dec6x_one -+ nop -+ beq .Lxts_dec6x_two -+ cmpwi 5,0x40 -+ blt .Lxts_dec6x_three -+ nop -+ beq .Lxts_dec6x_four -+ -+.Lxts_dec6x_five: -+ vxor 7,1,17 -+ vxor 12,2,18 -+ vxor 13,3,19 -+ vxor 14,4,20 -+ vxor 15,5,21 -+ -+ bl _aesp8_xts_dec5x -+ -+ vperm 7,7,7,6 -+ vor 17,22,22 -+ vxor 18,8,23 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 7,0,18 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ vperm 14,14,14,6 -+ .long 0x7DBA2799 -+ vperm 15,15,15,6 -+ .long 0x7DDB2799 -+ .long 0x7DFC2799 -+ addi 4,4,0x50 -+ bne .Lxts_dec6x_steal -+ b .Lxts_dec6x_done -+ -+.align 4 -+.Lxts_dec6x_four: -+ vxor 7,2,17 -+ vxor 12,3,18 -+ vxor 13,4,19 -+ vxor 14,5,20 -+ vxor 15,15,15 -+ -+ bl _aesp8_xts_dec5x -+ -+ vperm 7,7,7,6 -+ vor 17,21,21 -+ vor 18,22,22 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 7,0,22 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ vperm 14,14,14,6 -+ .long 0x7DBA2799 -+ .long 0x7DDB2799 -+ addi 4,4,0x40 -+ bne .Lxts_dec6x_steal -+ b .Lxts_dec6x_done -+ -+.align 4 -+.Lxts_dec6x_three: -+ vxor 7,3,17 -+ vxor 12,4,18 -+ vxor 13,5,19 -+ vxor 14,14,14 -+ vxor 15,15,15 -+ -+ bl _aesp8_xts_dec5x -+ -+ vperm 7,7,7,6 -+ vor 17,20,20 -+ vor 18,21,21 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 7,0,21 -+ vperm 13,13,13,6 -+ .long 0x7D832799 -+ .long 0x7DBA2799 -+ addi 4,4,0x30 -+ bne .Lxts_dec6x_steal -+ b .Lxts_dec6x_done -+ -+.align 4 -+.Lxts_dec6x_two: -+ vxor 7,4,17 -+ vxor 12,5,18 -+ vxor 13,13,13 -+ vxor 14,14,14 -+ vxor 15,15,15 -+ -+ bl _aesp8_xts_dec5x -+ -+ vperm 7,7,7,6 -+ vor 17,19,19 -+ vor 18,20,20 -+ vperm 12,12,12,6 -+ .long 0x7CE02799 -+ vxor 7,0,20 -+ .long 0x7D832799 -+ addi 4,4,0x20 -+ bne .Lxts_dec6x_steal -+ b .Lxts_dec6x_done -+ -+.align 4 -+.Lxts_dec6x_one: -+ vxor 7,5,17 -+ nop -+.Loop_xts_dec1x: -+ .long 0x10E7C548 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD48 -+ lvx 25,3,7 -+ bdnz .Loop_xts_dec1x -+ -+ subi 0,31,1 -+ .long 0x10E7C548 -+ -+ andi. 0,0,16 -+ cmpwi 31,0 -+ .long 0x10E7CD48 -+ -+ sub 10,10,0 -+ .long 0x10E7D548 -+ -+ .long 0x7C005699 -+ .long 0x10E7DD48 -+ -+ addi 7,1,79 -+ .long 0x10E7E548 -+ lvx 24,0,7 -+ -+ .long 0x10E7ED48 -+ lvx 25,3,7 -+ vxor 17,17,31 -+ -+ vperm 0,0,0,6 -+ .long 0x10E7F548 -+ -+ mtctr 9 -+ .long 0x10E78D49 -+ -+ vor 17,18,18 -+ vor 18,19,19 -+ vperm 7,7,7,6 -+ .long 0x7CE02799 -+ addi 4,4,0x10 -+ vxor 7,0,19 -+ bne .Lxts_dec6x_steal -+ b .Lxts_dec6x_done -+ -+.align 4 -+.Lxts_dec6x_zero: -+ cmpwi 31,0 -+ beq .Lxts_dec6x_done -+ -+ .long 0x7C005699 -+ vperm 0,0,0,6 -+ vxor 7,0,18 -+.Lxts_dec6x_steal: -+ .long 0x10E7C548 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD48 -+ lvx 25,3,7 -+ bdnz .Lxts_dec6x_steal -+ -+ add 10,10,31 -+ .long 0x10E7C548 -+ -+ cmpwi 31,0 -+ .long 0x10E7CD48 -+ -+ .long 0x7C005699 -+ .long 0x10E7D548 -+ -+ lvsr 5,0,31 -+ .long 0x10E7DD48 -+ -+ addi 7,1,79 -+ .long 0x10E7E548 -+ lvx 24,0,7 -+ -+ .long 0x10E7ED48 -+ lvx 25,3,7 -+ vxor 18,18,31 -+ -+ vperm 0,0,0,6 -+ .long 0x10E7F548 -+ -+ vperm 0,0,0,5 -+ .long 0x11679549 -+ -+ vperm 7,11,11,6 -+ .long 0x7CE02799 -+ -+ -+ vxor 7,7,7 -+ vspltisb 12,-1 -+ vperm 7,7,12,5 -+ vsel 7,0,11,7 -+ vxor 7,7,17 -+ -+ subi 30,4,1 -+ mtctr 31 -+.Loop_xts_dec6x_steal: -+ lbzu 0,1(30) -+ stb 0,16(30) -+ bdnz .Loop_xts_dec6x_steal -+ -+ li 31,0 -+ mtctr 9 -+ b .Loop_xts_dec1x -+ -+.align 4 -+.Lxts_dec6x_done: -+ cmpldi 8,0 -+ beq .Lxts_dec6x_ret -+ -+ vxor 8,17,23 -+ vperm 8,8,8,6 -+ .long 0x7D004799 -+ -+.Lxts_dec6x_ret: -+ mtlr 11 -+ li 10,79 -+ li 11,95 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ stvx 9,10,1 -+ addi 10,10,32 -+ stvx 9,11,1 -+ addi 11,11,32 -+ -+ or 12,12,12 -+ lvx 20,10,1 -+ addi 10,10,32 -+ lvx 21,11,1 -+ addi 11,11,32 -+ lvx 22,10,1 -+ addi 10,10,32 -+ lvx 23,11,1 -+ addi 11,11,32 -+ lvx 24,10,1 -+ addi 10,10,32 -+ lvx 25,11,1 -+ addi 11,11,32 -+ lvx 26,10,1 -+ addi 10,10,32 -+ lvx 27,11,1 -+ addi 11,11,32 -+ lvx 28,10,1 -+ addi 10,10,32 -+ lvx 29,11,1 -+ addi 11,11,32 -+ lvx 30,10,1 -+ lvx 31,11,1 -+ ld 26,400(1) -+ ld 27,408(1) -+ ld 28,416(1) -+ ld 29,424(1) -+ ld 30,432(1) -+ ld 31,440(1) -+ addi 1,1,448 -+ blr -+.long 0 -+.byte 0,12,0x04,1,0x80,6,6,0 -+.long 0 -+ -+.align 5 -+_aesp8_xts_dec5x: -+ .long 0x10E7C548 -+ .long 0x118CC548 -+ .long 0x11ADC548 -+ .long 0x11CEC548 -+ .long 0x11EFC548 -+ lvx 24,26,7 -+ addi 7,7,0x20 -+ -+ .long 0x10E7CD48 -+ .long 0x118CCD48 -+ .long 0x11ADCD48 -+ .long 0x11CECD48 -+ .long 0x11EFCD48 -+ lvx 25,3,7 -+ bdnz _aesp8_xts_dec5x -+ -+ subi 0,31,1 -+ .long 0x10E7C548 -+ .long 0x118CC548 -+ .long 0x11ADC548 -+ .long 0x11CEC548 -+ .long 0x11EFC548 -+ -+ andi. 0,0,16 -+ cmpwi 31,0 -+ .long 0x10E7CD48 -+ .long 0x118CCD48 -+ .long 0x11ADCD48 -+ .long 0x11CECD48 -+ .long 0x11EFCD48 -+ vxor 17,17,31 -+ -+ sub 10,10,0 -+ .long 0x10E7D548 -+ .long 0x118CD548 -+ .long 0x11ADD548 -+ .long 0x11CED548 -+ .long 0x11EFD548 -+ vxor 1,18,31 -+ -+ .long 0x10E7DD48 -+ .long 0x7C005699 -+ .long 0x118CDD48 -+ .long 0x11ADDD48 -+ .long 0x11CEDD48 -+ .long 0x11EFDD48 -+ vxor 2,19,31 -+ -+ addi 7,1,79 -+ .long 0x10E7E548 -+ .long 0x118CE548 -+ .long 0x11ADE548 -+ .long 0x11CEE548 -+ .long 0x11EFE548 -+ lvx 24,0,7 -+ vxor 3,20,31 -+ -+ .long 0x10E7ED48 -+ vperm 0,0,0,6 -+ .long 0x118CED48 -+ .long 0x11ADED48 -+ .long 0x11CEED48 -+ .long 0x11EFED48 -+ lvx 25,3,7 -+ vxor 4,21,31 -+ -+ .long 0x10E7F548 -+ .long 0x118CF548 -+ .long 0x11ADF548 -+ .long 0x11CEF548 -+ .long 0x11EFF548 -+ -+ .long 0x10E78D49 -+ .long 0x118C0D49 -+ .long 0x11AD1549 -+ .long 0x11CE1D49 -+ .long 0x11EF2549 -+ mtctr 9 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,0,0 -+#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ -+#if defined(__ELF__) -+// See https://www.airs.ccom/blog/archives/518. -+.section .note.GNU-stack,"",%progbits -+#endif -Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S -@@ -0,0 +1,590 @@ -+// This file is generated from a similarly-named Perl script in the BoringSSL -+// source tree. Do not edit by hand. -+ -+#if defined(__has_feature) -+#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -+#define OPENSSL_NO_ASM -+#endif -+#endif -+ -+#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) -+.machine "any" -+ -+.abiversion 2 -+.text -+ -+.globl gcm_init_p8 -+.type gcm_init_p8,@function -+.align 5 -+gcm_init_p8: -+.localentry gcm_init_p8,0 -+ -+ li 0,-4096 -+ li 8,0x10 -+ li 12,-1 -+ li 9,0x20 -+ or 0,0,0 -+ li 10,0x30 -+ .long 0x7D202699 -+ -+ vspltisb 8,-16 -+ vspltisb 5,1 -+ vaddubm 8,8,8 -+ vxor 4,4,4 -+ vor 8,8,5 -+ vsldoi 8,8,4,15 -+ vsldoi 6,4,5,1 -+ vaddubm 8,8,8 -+ vspltisb 7,7 -+ vor 8,8,6 -+ vspltb 6,9,0 -+ vsl 9,9,5 -+ vsrab 6,6,7 -+ vand 6,6,8 -+ vxor 3,9,6 -+ -+ vsldoi 9,3,3,8 -+ vsldoi 8,4,8,8 -+ vsldoi 11,4,9,8 -+ vsldoi 10,9,4,8 -+ -+ .long 0x7D001F99 -+ .long 0x7D681F99 -+ li 8,0x40 -+ .long 0x7D291F99 -+ li 9,0x50 -+ .long 0x7D4A1F99 -+ li 10,0x60 -+ -+ .long 0x10035CC8 -+ .long 0x10234CC8 -+ .long 0x104354C8 -+ -+ .long 0x10E044C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ -+ vsldoi 0,0,0,8 -+ vxor 0,0,7 -+ -+ vsldoi 6,0,0,8 -+ .long 0x100044C8 -+ vxor 6,6,2 -+ vxor 16,0,6 -+ -+ vsldoi 17,16,16,8 -+ vsldoi 19,4,17,8 -+ vsldoi 18,17,4,8 -+ -+ .long 0x7E681F99 -+ li 8,0x70 -+ .long 0x7E291F99 -+ li 9,0x80 -+ .long 0x7E4A1F99 -+ li 10,0x90 -+ .long 0x10039CC8 -+ .long 0x11B09CC8 -+ .long 0x10238CC8 -+ .long 0x11D08CC8 -+ .long 0x104394C8 -+ .long 0x11F094C8 -+ -+ .long 0x10E044C8 -+ .long 0x114D44C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vsldoi 11,14,4,8 -+ vsldoi 9,4,14,8 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ vxor 13,13,11 -+ vxor 15,15,9 -+ -+ vsldoi 0,0,0,8 -+ vsldoi 13,13,13,8 -+ vxor 0,0,7 -+ vxor 13,13,10 -+ -+ vsldoi 6,0,0,8 -+ vsldoi 9,13,13,8 -+ .long 0x100044C8 -+ .long 0x11AD44C8 -+ vxor 6,6,2 -+ vxor 9,9,15 -+ vxor 0,0,6 -+ vxor 13,13,9 -+ -+ vsldoi 9,0,0,8 -+ vsldoi 17,13,13,8 -+ vsldoi 11,4,9,8 -+ vsldoi 10,9,4,8 -+ vsldoi 19,4,17,8 -+ vsldoi 18,17,4,8 -+ -+ .long 0x7D681F99 -+ li 8,0xa0 -+ .long 0x7D291F99 -+ li 9,0xb0 -+ .long 0x7D4A1F99 -+ li 10,0xc0 -+ .long 0x7E681F99 -+ .long 0x7E291F99 -+ .long 0x7E4A1F99 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,2,0 -+.long 0 -+.size gcm_init_p8,.-gcm_init_p8 -+.globl gcm_gmult_p8 -+.type gcm_gmult_p8,@function -+.align 5 -+gcm_gmult_p8: -+.localentry gcm_gmult_p8,0 -+ -+ lis 0,0xfff8 -+ li 8,0x10 -+ li 12,-1 -+ li 9,0x20 -+ or 0,0,0 -+ li 10,0x30 -+ .long 0x7C601E99 -+ -+ .long 0x7D682699 -+ lvsl 12,0,0 -+ .long 0x7D292699 -+ vspltisb 5,0x07 -+ .long 0x7D4A2699 -+ vxor 12,12,5 -+ .long 0x7D002699 -+ vperm 3,3,3,12 -+ vxor 4,4,4 -+ -+ .long 0x10035CC8 -+ .long 0x10234CC8 -+ .long 0x104354C8 -+ -+ .long 0x10E044C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ -+ vsldoi 0,0,0,8 -+ vxor 0,0,7 -+ -+ vsldoi 6,0,0,8 -+ .long 0x100044C8 -+ vxor 6,6,2 -+ vxor 0,0,6 -+ -+ vperm 0,0,0,12 -+ .long 0x7C001F99 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,2,0 -+.long 0 -+.size gcm_gmult_p8,.-gcm_gmult_p8 -+ -+.globl gcm_ghash_p8 -+.type gcm_ghash_p8,@function -+.align 5 -+gcm_ghash_p8: -+.localentry gcm_ghash_p8,0 -+ -+ li 0,-4096 -+ li 8,0x10 -+ li 12,-1 -+ li 9,0x20 -+ or 0,0,0 -+ li 10,0x30 -+ .long 0x7C001E99 -+ -+ .long 0x7D682699 -+ li 8,0x40 -+ lvsl 12,0,0 -+ .long 0x7D292699 -+ li 9,0x50 -+ vspltisb 5,0x07 -+ .long 0x7D4A2699 -+ li 10,0x60 -+ vxor 12,12,5 -+ .long 0x7D002699 -+ vperm 0,0,0,12 -+ vxor 4,4,4 -+ -+ cmpldi 6,64 -+ bge .Lgcm_ghash_p8_4x -+ -+ .long 0x7C602E99 -+ addi 5,5,16 -+ subic. 6,6,16 -+ vperm 3,3,3,12 -+ vxor 3,3,0 -+ beq .Lshort -+ -+ .long 0x7E682699 -+ li 8,16 -+ .long 0x7E292699 -+ add 9,5,6 -+ .long 0x7E4A2699 -+ -+ -+.align 5 -+.Loop_2x: -+ .long 0x7E002E99 -+ vperm 16,16,16,12 -+ -+ subic 6,6,32 -+ .long 0x10039CC8 -+ .long 0x11B05CC8 -+ subfe 0,0,0 -+ .long 0x10238CC8 -+ .long 0x11D04CC8 -+ and 0,0,6 -+ .long 0x104394C8 -+ .long 0x11F054C8 -+ add 5,5,0 -+ -+ vxor 0,0,13 -+ vxor 1,1,14 -+ -+ .long 0x10E044C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vxor 2,2,15 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ -+ vsldoi 0,0,0,8 -+ vxor 0,0,7 -+ .long 0x7C682E99 -+ addi 5,5,32 -+ -+ vsldoi 6,0,0,8 -+ .long 0x100044C8 -+ vperm 3,3,3,12 -+ vxor 6,6,2 -+ vxor 3,3,6 -+ vxor 3,3,0 -+ cmpld 9,5 -+ bgt .Loop_2x -+ -+ cmplwi 6,0 -+ bne .Leven -+ -+.Lshort: -+ .long 0x10035CC8 -+ .long 0x10234CC8 -+ .long 0x104354C8 -+ -+ .long 0x10E044C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ -+ vsldoi 0,0,0,8 -+ vxor 0,0,7 -+ -+ vsldoi 6,0,0,8 -+ .long 0x100044C8 -+ vxor 6,6,2 -+ -+.Leven: -+ vxor 0,0,6 -+ vperm 0,0,0,12 -+ .long 0x7C001F99 -+ -+ or 12,12,12 -+ blr -+.long 0 -+.byte 0,12,0x14,0,0,0,4,0 -+.long 0 -+.align 5 -+.gcm_ghash_p8_4x: -+.Lgcm_ghash_p8_4x: -+ stdu 1,-256(1) -+ li 10,63 -+ li 11,79 -+ stvx 20,10,1 -+ addi 10,10,32 -+ stvx 21,11,1 -+ addi 11,11,32 -+ stvx 22,10,1 -+ addi 10,10,32 -+ stvx 23,11,1 -+ addi 11,11,32 -+ stvx 24,10,1 -+ addi 10,10,32 -+ stvx 25,11,1 -+ addi 11,11,32 -+ stvx 26,10,1 -+ addi 10,10,32 -+ stvx 27,11,1 -+ addi 11,11,32 -+ stvx 28,10,1 -+ addi 10,10,32 -+ stvx 29,11,1 -+ addi 11,11,32 -+ stvx 30,10,1 -+ li 10,0x60 -+ stvx 31,11,1 -+ li 0,-1 -+ stw 12,252(1) -+ or 0,0,0 -+ -+ lvsl 5,0,8 -+ -+ li 8,0x70 -+ .long 0x7E292699 -+ li 9,0x80 -+ vspltisb 6,8 -+ -+ li 10,0x90 -+ .long 0x7EE82699 -+ li 8,0xa0 -+ .long 0x7F092699 -+ li 9,0xb0 -+ .long 0x7F2A2699 -+ li 10,0xc0 -+ .long 0x7FA82699 -+ li 8,0x10 -+ .long 0x7FC92699 -+ li 9,0x20 -+ .long 0x7FEA2699 -+ li 10,0x30 -+ -+ vsldoi 7,4,6,8 -+ vaddubm 18,5,7 -+ vaddubm 19,6,18 -+ -+ srdi 6,6,4 -+ -+ .long 0x7C602E99 -+ .long 0x7E082E99 -+ subic. 6,6,8 -+ .long 0x7EC92E99 -+ .long 0x7F8A2E99 -+ addi 5,5,0x40 -+ vperm 3,3,3,12 -+ vperm 16,16,16,12 -+ vperm 22,22,22,12 -+ vperm 28,28,28,12 -+ -+ vxor 2,3,0 -+ -+ .long 0x11B0BCC8 -+ .long 0x11D0C4C8 -+ .long 0x11F0CCC8 -+ -+ vperm 11,17,9,18 -+ vperm 5,22,28,19 -+ vperm 10,17,9,19 -+ vperm 6,22,28,18 -+ .long 0x12B68CC8 -+ .long 0x12855CC8 -+ .long 0x137C4CC8 -+ .long 0x134654C8 -+ -+ vxor 21,21,14 -+ vxor 20,20,13 -+ vxor 27,27,21 -+ vxor 26,26,15 -+ -+ blt .Ltail_4x -+ -+.Loop_4x: -+ .long 0x7C602E99 -+ .long 0x7E082E99 -+ subic. 6,6,4 -+ .long 0x7EC92E99 -+ .long 0x7F8A2E99 -+ addi 5,5,0x40 -+ vperm 16,16,16,12 -+ vperm 22,22,22,12 -+ vperm 28,28,28,12 -+ vperm 3,3,3,12 -+ -+ .long 0x1002ECC8 -+ .long 0x1022F4C8 -+ .long 0x1042FCC8 -+ .long 0x11B0BCC8 -+ .long 0x11D0C4C8 -+ .long 0x11F0CCC8 -+ -+ vxor 0,0,20 -+ vxor 1,1,27 -+ vxor 2,2,26 -+ vperm 5,22,28,19 -+ vperm 6,22,28,18 -+ -+ .long 0x10E044C8 -+ .long 0x12855CC8 -+ .long 0x134654C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ -+ vsldoi 0,0,0,8 -+ vxor 0,0,7 -+ -+ vsldoi 6,0,0,8 -+ .long 0x12B68CC8 -+ .long 0x137C4CC8 -+ .long 0x100044C8 -+ -+ vxor 20,20,13 -+ vxor 26,26,15 -+ vxor 2,2,3 -+ vxor 21,21,14 -+ vxor 2,2,6 -+ vxor 27,27,21 -+ vxor 2,2,0 -+ bge .Loop_4x -+ -+.Ltail_4x: -+ .long 0x1002ECC8 -+ .long 0x1022F4C8 -+ .long 0x1042FCC8 -+ -+ vxor 0,0,20 -+ vxor 1,1,27 -+ -+ .long 0x10E044C8 -+ -+ vsldoi 5,1,4,8 -+ vsldoi 6,4,1,8 -+ vxor 2,2,26 -+ vxor 0,0,5 -+ vxor 2,2,6 -+ -+ vsldoi 0,0,0,8 -+ vxor 0,0,7 -+ -+ vsldoi 6,0,0,8 -+ .long 0x100044C8 -+ vxor 6,6,2 -+ vxor 0,0,6 -+ -+ addic. 6,6,4 -+ beq .Ldone_4x -+ -+ .long 0x7C602E99 -+ cmpldi 6,2 -+ li 6,-4 -+ blt .Lone -+ .long 0x7E082E99 -+ beq .Ltwo -+ -+.Lthree: -+ .long 0x7EC92E99 -+ vperm 3,3,3,12 -+ vperm 16,16,16,12 -+ vperm 22,22,22,12 -+ -+ vxor 2,3,0 -+ vor 29,23,23 -+ vor 30, 24, 24 -+ vor 31,25,25 -+ -+ vperm 5,16,22,19 -+ vperm 6,16,22,18 -+ .long 0x12B08CC8 -+ .long 0x13764CC8 -+ .long 0x12855CC8 -+ .long 0x134654C8 -+ -+ vxor 27,27,21 -+ b .Ltail_4x -+ -+.align 4 -+.Ltwo: -+ vperm 3,3,3,12 -+ vperm 16,16,16,12 -+ -+ vxor 2,3,0 -+ vperm 5,4,16,19 -+ vperm 6,4,16,18 -+ -+ vsldoi 29,4,17,8 -+ vor 30, 17, 17 -+ vsldoi 31,17,4,8 -+ -+ .long 0x12855CC8 -+ .long 0x13704CC8 -+ .long 0x134654C8 -+ -+ b .Ltail_4x -+ -+.align 4 -+.Lone: -+ vperm 3,3,3,12 -+ -+ vsldoi 29,4,9,8 -+ vor 30, 9, 9 -+ vsldoi 31,9,4,8 -+ -+ vxor 2,3,0 -+ vxor 20,20,20 -+ vxor 27,27,27 -+ vxor 26,26,26 -+ -+ b .Ltail_4x -+ -+.Ldone_4x: -+ vperm 0,0,0,12 -+ .long 0x7C001F99 -+ -+ li 10,63 -+ li 11,79 -+ or 12,12,12 -+ lvx 20,10,1 -+ addi 10,10,32 -+ lvx 21,11,1 -+ addi 11,11,32 -+ lvx 22,10,1 -+ addi 10,10,32 -+ lvx 23,11,1 -+ addi 11,11,32 -+ lvx 24,10,1 -+ addi 10,10,32 -+ lvx 25,11,1 -+ addi 11,11,32 -+ lvx 26,10,1 -+ addi 10,10,32 -+ lvx 27,11,1 -+ addi 11,11,32 -+ lvx 28,10,1 -+ addi 10,10,32 -+ lvx 29,11,1 -+ addi 11,11,32 -+ lvx 30,10,1 -+ lvx 31,11,1 -+ addi 1,1,256 -+ blr -+.long 0 -+.byte 0,12,0x04,0,0x80,0,4,0 -+.long 0 -+.size gcm_ghash_p8,.-gcm_ghash_p8 -+ -+.byte 71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -+.align 2 -+.align 2 -+#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ -+#if defined(__ELF__) -+// See https://www.airs.ccom/blog/archives/518. -+.section .note.GNU-stack,"",%progbits -+#endif -Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.cmake -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/gen/sources.cmake -+++ chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.cmake -@@ -118,6 +118,7 @@ set( - gen/bcm/aesni-x86-linux.S - gen/bcm/aesni-x86_64-apple.S - gen/bcm/aesni-x86_64-linux.S -+ gen/bcm/aesp8-ppc-linux.S - gen/bcm/aesv8-armv7-linux.S - gen/bcm/aesv8-armv8-apple.S - gen/bcm/aesv8-armv8-linux.S -@@ -149,6 +150,7 @@ set( - gen/bcm/ghash-x86-linux.S - gen/bcm/ghash-x86_64-apple.S - gen/bcm/ghash-x86_64-linux.S -+ gen/bcm/ghashp8-ppc-linux.S - gen/bcm/ghashv8-armv7-linux.S - gen/bcm/ghashv8-armv8-apple.S - gen/bcm/ghashv8-armv8-linux.S -@@ -342,6 +344,7 @@ set( - crypto/cpu_arm_freebsd.cc - crypto/cpu_arm_linux.cc - crypto/cpu_intel.cc -+ crypto/cpu_ppc64le.cc - crypto/crypto.cc - crypto/curve25519/curve25519.cc - crypto/curve25519/curve25519_64_adx.cc -@@ -2832,6 +2835,7 @@ set( - gen/test_support/trampoline-armv8-apple.S - gen/test_support/trampoline-armv8-linux.S - gen/test_support/trampoline-armv8-win.S -+ gen/test_support/trampoline-ppc-linux.S - gen/test_support/trampoline-x86-apple.S - gen/test_support/trampoline-x86-linux.S - gen/test_support/trampoline-x86_64-apple.S -Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.json -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/boringssl/src/gen/sources.json -+++ chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.json -@@ -96,6 +96,7 @@ - "gen/bcm/aesni-x86-linux.S", - "gen/bcm/aesni-x86_64-apple.S", - "gen/bcm/aesni-x86_64-linux.S", -+ "gen/bcm/aesp8-ppc-linux.S", - "gen/bcm/aesv8-armv7-linux.S", - "gen/bcm/aesv8-armv8-apple.S", - "gen/bcm/aesv8-armv8-linux.S", -@@ -127,6 +128,7 @@ - "gen/bcm/ghash-x86-linux.S", - "gen/bcm/ghash-x86_64-apple.S", - "gen/bcm/ghash-x86_64-linux.S", -+ "gen/bcm/ghashp8-ppc-linux.S", - "gen/bcm/ghashv8-armv7-linux.S", - "gen/bcm/ghashv8-armv8-apple.S", - "gen/bcm/ghashv8-armv8-linux.S", -@@ -312,6 +314,7 @@ - "crypto/cpu_arm_freebsd.cc", - "crypto/cpu_arm_linux.cc", - "crypto/cpu_intel.cc", -+ "crypto/cpu_ppc64le.cc", - "crypto/crypto.cc", - "crypto/curve25519/curve25519.cc", - "crypto/curve25519/curve25519_64_adx.cc", -@@ -2752,6 +2755,7 @@ - "gen/test_support/trampoline-armv8-apple.S", - "gen/test_support/trampoline-armv8-linux.S", - "gen/test_support/trampoline-armv8-win.S", -+ "gen/test_support/trampoline-ppc-linux.S", - "gen/test_support/trampoline-x86-apple.S", - "gen/test_support/trampoline-x86-linux.S", - "gen/test_support/trampoline-x86_64-apple.S", -Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S -@@ -0,0 +1,1413 @@ -+// This file is generated from a similarly-named Perl script in the BoringSSL -+// source tree. Do not edit by hand. -+ -+#if defined(__has_feature) -+#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) -+#define OPENSSL_NO_ASM -+#endif -+#endif -+ -+#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) -+.machine "any" -+.abiversion 2 -+.text -+ -+ -+ -+ -+ -+ -+ -+.globl abi_test_trampoline -+.type abi_test_trampoline,@function -+.align 5 -+abi_test_trampoline: -+.localentry abi_test_trampoline,0 -+ -+ -+ mflr 0 -+ std 0, 16(1) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ stdu 1, -528(1) -+ -+ mfcr 0 -+ std 0, 8(1) -+ std 2, 24(1) -+ std 4, 32(1) -+ li 11, 48 -+ stvx 20, 11, 1 -+ li 11, 64 -+ stvx 21, 11, 1 -+ li 11, 80 -+ stvx 22, 11, 1 -+ li 11, 96 -+ stvx 23, 11, 1 -+ li 11, 112 -+ stvx 24, 11, 1 -+ li 11, 128 -+ stvx 25, 11, 1 -+ li 11, 144 -+ stvx 26, 11, 1 -+ li 11, 160 -+ stvx 27, 11, 1 -+ li 11, 176 -+ stvx 28, 11, 1 -+ li 11, 192 -+ stvx 29, 11, 1 -+ li 11, 208 -+ stvx 30, 11, 1 -+ li 11, 224 -+ stvx 31, 11, 1 -+ std 14, 240(1) -+ std 15, 248(1) -+ std 16, 256(1) -+ std 17, 264(1) -+ std 18, 272(1) -+ std 19, 280(1) -+ std 20, 288(1) -+ std 21, 296(1) -+ std 22, 304(1) -+ std 23, 312(1) -+ std 24, 320(1) -+ std 25, 328(1) -+ std 26, 336(1) -+ std 27, 344(1) -+ std 28, 352(1) -+ std 29, 360(1) -+ std 30, 368(1) -+ std 31, 376(1) -+ stfd 14, 384(1) -+ stfd 15, 392(1) -+ stfd 16, 400(1) -+ stfd 17, 408(1) -+ stfd 18, 416(1) -+ stfd 19, 424(1) -+ stfd 20, 432(1) -+ stfd 21, 440(1) -+ stfd 22, 448(1) -+ stfd 23, 456(1) -+ stfd 24, 464(1) -+ stfd 25, 472(1) -+ stfd 26, 480(1) -+ stfd 27, 488(1) -+ stfd 28, 496(1) -+ stfd 29, 504(1) -+ stfd 30, 512(1) -+ stfd 31, 520(1) -+ li 11, 0 -+ lvx 20, 11, 4 -+ li 11, 16 -+ lvx 21, 11, 4 -+ li 11, 32 -+ lvx 22, 11, 4 -+ li 11, 48 -+ lvx 23, 11, 4 -+ li 11, 64 -+ lvx 24, 11, 4 -+ li 11, 80 -+ lvx 25, 11, 4 -+ li 11, 96 -+ lvx 26, 11, 4 -+ li 11, 112 -+ lvx 27, 11, 4 -+ li 11, 128 -+ lvx 28, 11, 4 -+ li 11, 144 -+ lvx 29, 11, 4 -+ li 11, 160 -+ lvx 30, 11, 4 -+ li 11, 176 -+ lvx 31, 11, 4 -+ ld 14, 192(4) -+ ld 15, 200(4) -+ ld 16, 208(4) -+ ld 17, 216(4) -+ ld 18, 224(4) -+ ld 19, 232(4) -+ ld 20, 240(4) -+ ld 21, 248(4) -+ ld 22, 256(4) -+ ld 23, 264(4) -+ ld 24, 272(4) -+ ld 25, 280(4) -+ ld 26, 288(4) -+ ld 27, 296(4) -+ ld 28, 304(4) -+ ld 29, 312(4) -+ ld 30, 320(4) -+ ld 31, 328(4) -+ lfd 14, 336(4) -+ lfd 15, 344(4) -+ lfd 16, 352(4) -+ lfd 17, 360(4) -+ lfd 18, 368(4) -+ lfd 19, 376(4) -+ lfd 20, 384(4) -+ lfd 21, 392(4) -+ lfd 22, 400(4) -+ lfd 23, 408(4) -+ lfd 24, 416(4) -+ lfd 25, 424(4) -+ lfd 26, 432(4) -+ lfd 27, 440(4) -+ lfd 28, 448(4) -+ lfd 29, 456(4) -+ lfd 30, 464(4) -+ lfd 31, 472(4) -+ -+ ld 0, 480(4) -+ mtcr 0 -+ -+ -+ addi 11, 5, -8 -+ mr 12, 3 -+ -+ -+ cmpdi 6, 0 -+ beq .Largs_done -+ mtctr 6 -+ ldu 3, 8(11) -+ bdz .Largs_done -+ ldu 4, 8(11) -+ bdz .Largs_done -+ ldu 5, 8(11) -+ bdz .Largs_done -+ ldu 6, 8(11) -+ bdz .Largs_done -+ ldu 7, 8(11) -+ bdz .Largs_done -+ ldu 8, 8(11) -+ bdz .Largs_done -+ ldu 9, 8(11) -+ bdz .Largs_done -+ ldu 10, 8(11) -+ -+.Largs_done: -+ li 2, 0 -+ mtctr 12 -+ bctrl -+ ld 2, 24(1) -+ -+ ld 4, 32(1) -+ li 11, 0 -+ stvx 20, 11, 4 -+ li 11, 16 -+ stvx 21, 11, 4 -+ li 11, 32 -+ stvx 22, 11, 4 -+ li 11, 48 -+ stvx 23, 11, 4 -+ li 11, 64 -+ stvx 24, 11, 4 -+ li 11, 80 -+ stvx 25, 11, 4 -+ li 11, 96 -+ stvx 26, 11, 4 -+ li 11, 112 -+ stvx 27, 11, 4 -+ li 11, 128 -+ stvx 28, 11, 4 -+ li 11, 144 -+ stvx 29, 11, 4 -+ li 11, 160 -+ stvx 30, 11, 4 -+ li 11, 176 -+ stvx 31, 11, 4 -+ std 14, 192(4) -+ std 15, 200(4) -+ std 16, 208(4) -+ std 17, 216(4) -+ std 18, 224(4) -+ std 19, 232(4) -+ std 20, 240(4) -+ std 21, 248(4) -+ std 22, 256(4) -+ std 23, 264(4) -+ std 24, 272(4) -+ std 25, 280(4) -+ std 26, 288(4) -+ std 27, 296(4) -+ std 28, 304(4) -+ std 29, 312(4) -+ std 30, 320(4) -+ std 31, 328(4) -+ stfd 14, 336(4) -+ stfd 15, 344(4) -+ stfd 16, 352(4) -+ stfd 17, 360(4) -+ stfd 18, 368(4) -+ stfd 19, 376(4) -+ stfd 20, 384(4) -+ stfd 21, 392(4) -+ stfd 22, 400(4) -+ stfd 23, 408(4) -+ stfd 24, 416(4) -+ stfd 25, 424(4) -+ stfd 26, 432(4) -+ stfd 27, 440(4) -+ stfd 28, 448(4) -+ stfd 29, 456(4) -+ stfd 30, 464(4) -+ stfd 31, 472(4) -+ li 11, 48 -+ lvx 20, 11, 1 -+ li 11, 64 -+ lvx 21, 11, 1 -+ li 11, 80 -+ lvx 22, 11, 1 -+ li 11, 96 -+ lvx 23, 11, 1 -+ li 11, 112 -+ lvx 24, 11, 1 -+ li 11, 128 -+ lvx 25, 11, 1 -+ li 11, 144 -+ lvx 26, 11, 1 -+ li 11, 160 -+ lvx 27, 11, 1 -+ li 11, 176 -+ lvx 28, 11, 1 -+ li 11, 192 -+ lvx 29, 11, 1 -+ li 11, 208 -+ lvx 30, 11, 1 -+ li 11, 224 -+ lvx 31, 11, 1 -+ ld 14, 240(1) -+ ld 15, 248(1) -+ ld 16, 256(1) -+ ld 17, 264(1) -+ ld 18, 272(1) -+ ld 19, 280(1) -+ ld 20, 288(1) -+ ld 21, 296(1) -+ ld 22, 304(1) -+ ld 23, 312(1) -+ ld 24, 320(1) -+ ld 25, 328(1) -+ ld 26, 336(1) -+ ld 27, 344(1) -+ ld 28, 352(1) -+ ld 29, 360(1) -+ ld 30, 368(1) -+ ld 31, 376(1) -+ lfd 14, 384(1) -+ lfd 15, 392(1) -+ lfd 16, 400(1) -+ lfd 17, 408(1) -+ lfd 18, 416(1) -+ lfd 19, 424(1) -+ lfd 20, 432(1) -+ lfd 21, 440(1) -+ lfd 22, 448(1) -+ lfd 23, 456(1) -+ lfd 24, 464(1) -+ lfd 25, 472(1) -+ lfd 26, 480(1) -+ lfd 27, 488(1) -+ lfd 28, 496(1) -+ lfd 29, 504(1) -+ lfd 30, 512(1) -+ lfd 31, 520(1) -+ mfcr 0 -+ std 0, 480(4) -+ ld 0, 8(1) -+ mtcrf 0b00111000, 0 -+ addi 1, 1, 528 -+ ld 0, 16(1) -+ mtlr 0 -+ blr -+.size abi_test_trampoline,.-abi_test_trampoline -+.globl abi_test_clobber_r0 -+.type abi_test_clobber_r0,@function -+.align 5 -+abi_test_clobber_r0: -+.localentry abi_test_clobber_r0,0 -+ -+ li 0, 0 -+ blr -+.size abi_test_clobber_r0,.-abi_test_clobber_r0 -+.globl abi_test_clobber_r2 -+.type abi_test_clobber_r2,@function -+.align 5 -+abi_test_clobber_r2: -+.localentry abi_test_clobber_r2,0 -+ -+ li 2, 0 -+ blr -+.size abi_test_clobber_r2,.-abi_test_clobber_r2 -+.globl abi_test_clobber_r3 -+.type abi_test_clobber_r3,@function -+.align 5 -+abi_test_clobber_r3: -+.localentry abi_test_clobber_r3,0 -+ -+ li 3, 0 -+ blr -+.size abi_test_clobber_r3,.-abi_test_clobber_r3 -+.globl abi_test_clobber_r4 -+.type abi_test_clobber_r4,@function -+.align 5 -+abi_test_clobber_r4: -+.localentry abi_test_clobber_r4,0 -+ -+ li 4, 0 -+ blr -+.size abi_test_clobber_r4,.-abi_test_clobber_r4 -+.globl abi_test_clobber_r5 -+.type abi_test_clobber_r5,@function -+.align 5 -+abi_test_clobber_r5: -+.localentry abi_test_clobber_r5,0 -+ -+ li 5, 0 -+ blr -+.size abi_test_clobber_r5,.-abi_test_clobber_r5 -+.globl abi_test_clobber_r6 -+.type abi_test_clobber_r6,@function -+.align 5 -+abi_test_clobber_r6: -+.localentry abi_test_clobber_r6,0 -+ -+ li 6, 0 -+ blr -+.size abi_test_clobber_r6,.-abi_test_clobber_r6 -+.globl abi_test_clobber_r7 -+.type abi_test_clobber_r7,@function -+.align 5 -+abi_test_clobber_r7: -+.localentry abi_test_clobber_r7,0 -+ -+ li 7, 0 -+ blr -+.size abi_test_clobber_r7,.-abi_test_clobber_r7 -+.globl abi_test_clobber_r8 -+.type abi_test_clobber_r8,@function -+.align 5 -+abi_test_clobber_r8: -+.localentry abi_test_clobber_r8,0 -+ -+ li 8, 0 -+ blr -+.size abi_test_clobber_r8,.-abi_test_clobber_r8 -+.globl abi_test_clobber_r9 -+.type abi_test_clobber_r9,@function -+.align 5 -+abi_test_clobber_r9: -+.localentry abi_test_clobber_r9,0 -+ -+ li 9, 0 -+ blr -+.size abi_test_clobber_r9,.-abi_test_clobber_r9 -+.globl abi_test_clobber_r10 -+.type abi_test_clobber_r10,@function -+.align 5 -+abi_test_clobber_r10: -+.localentry abi_test_clobber_r10,0 -+ -+ li 10, 0 -+ blr -+.size abi_test_clobber_r10,.-abi_test_clobber_r10 -+.globl abi_test_clobber_r11 -+.type abi_test_clobber_r11,@function -+.align 5 -+abi_test_clobber_r11: -+.localentry abi_test_clobber_r11,0 -+ -+ li 11, 0 -+ blr -+.size abi_test_clobber_r11,.-abi_test_clobber_r11 -+.globl abi_test_clobber_r12 -+.type abi_test_clobber_r12,@function -+.align 5 -+abi_test_clobber_r12: -+.localentry abi_test_clobber_r12,0 -+ -+ li 12, 0 -+ blr -+.size abi_test_clobber_r12,.-abi_test_clobber_r12 -+.globl abi_test_clobber_r14 -+.type abi_test_clobber_r14,@function -+.align 5 -+abi_test_clobber_r14: -+.localentry abi_test_clobber_r14,0 -+ -+ li 14, 0 -+ blr -+.size abi_test_clobber_r14,.-abi_test_clobber_r14 -+.globl abi_test_clobber_r15 -+.type abi_test_clobber_r15,@function -+.align 5 -+abi_test_clobber_r15: -+.localentry abi_test_clobber_r15,0 -+ -+ li 15, 0 -+ blr -+.size abi_test_clobber_r15,.-abi_test_clobber_r15 -+.globl abi_test_clobber_r16 -+.type abi_test_clobber_r16,@function -+.align 5 -+abi_test_clobber_r16: -+.localentry abi_test_clobber_r16,0 -+ -+ li 16, 0 -+ blr -+.size abi_test_clobber_r16,.-abi_test_clobber_r16 -+.globl abi_test_clobber_r17 -+.type abi_test_clobber_r17,@function -+.align 5 -+abi_test_clobber_r17: -+.localentry abi_test_clobber_r17,0 -+ -+ li 17, 0 -+ blr -+.size abi_test_clobber_r17,.-abi_test_clobber_r17 -+.globl abi_test_clobber_r18 -+.type abi_test_clobber_r18,@function -+.align 5 -+abi_test_clobber_r18: -+.localentry abi_test_clobber_r18,0 -+ -+ li 18, 0 -+ blr -+.size abi_test_clobber_r18,.-abi_test_clobber_r18 -+.globl abi_test_clobber_r19 -+.type abi_test_clobber_r19,@function -+.align 5 -+abi_test_clobber_r19: -+.localentry abi_test_clobber_r19,0 -+ -+ li 19, 0 -+ blr -+.size abi_test_clobber_r19,.-abi_test_clobber_r19 -+.globl abi_test_clobber_r20 -+.type abi_test_clobber_r20,@function -+.align 5 -+abi_test_clobber_r20: -+.localentry abi_test_clobber_r20,0 -+ -+ li 20, 0 -+ blr -+.size abi_test_clobber_r20,.-abi_test_clobber_r20 -+.globl abi_test_clobber_r21 -+.type abi_test_clobber_r21,@function -+.align 5 -+abi_test_clobber_r21: -+.localentry abi_test_clobber_r21,0 -+ -+ li 21, 0 -+ blr -+.size abi_test_clobber_r21,.-abi_test_clobber_r21 -+.globl abi_test_clobber_r22 -+.type abi_test_clobber_r22,@function -+.align 5 -+abi_test_clobber_r22: -+.localentry abi_test_clobber_r22,0 -+ -+ li 22, 0 -+ blr -+.size abi_test_clobber_r22,.-abi_test_clobber_r22 -+.globl abi_test_clobber_r23 -+.type abi_test_clobber_r23,@function -+.align 5 -+abi_test_clobber_r23: -+.localentry abi_test_clobber_r23,0 -+ -+ li 23, 0 -+ blr -+.size abi_test_clobber_r23,.-abi_test_clobber_r23 -+.globl abi_test_clobber_r24 -+.type abi_test_clobber_r24,@function -+.align 5 -+abi_test_clobber_r24: -+.localentry abi_test_clobber_r24,0 -+ -+ li 24, 0 -+ blr -+.size abi_test_clobber_r24,.-abi_test_clobber_r24 -+.globl abi_test_clobber_r25 -+.type abi_test_clobber_r25,@function -+.align 5 -+abi_test_clobber_r25: -+.localentry abi_test_clobber_r25,0 -+ -+ li 25, 0 -+ blr -+.size abi_test_clobber_r25,.-abi_test_clobber_r25 -+.globl abi_test_clobber_r26 -+.type abi_test_clobber_r26,@function -+.align 5 -+abi_test_clobber_r26: -+.localentry abi_test_clobber_r26,0 -+ -+ li 26, 0 -+ blr -+.size abi_test_clobber_r26,.-abi_test_clobber_r26 -+.globl abi_test_clobber_r27 -+.type abi_test_clobber_r27,@function -+.align 5 -+abi_test_clobber_r27: -+.localentry abi_test_clobber_r27,0 -+ -+ li 27, 0 -+ blr -+.size abi_test_clobber_r27,.-abi_test_clobber_r27 -+.globl abi_test_clobber_r28 -+.type abi_test_clobber_r28,@function -+.align 5 -+abi_test_clobber_r28: -+.localentry abi_test_clobber_r28,0 -+ -+ li 28, 0 -+ blr -+.size abi_test_clobber_r28,.-abi_test_clobber_r28 -+.globl abi_test_clobber_r29 -+.type abi_test_clobber_r29,@function -+.align 5 -+abi_test_clobber_r29: -+.localentry abi_test_clobber_r29,0 -+ -+ li 29, 0 -+ blr -+.size abi_test_clobber_r29,.-abi_test_clobber_r29 -+.globl abi_test_clobber_r30 -+.type abi_test_clobber_r30,@function -+.align 5 -+abi_test_clobber_r30: -+.localentry abi_test_clobber_r30,0 -+ -+ li 30, 0 -+ blr -+.size abi_test_clobber_r30,.-abi_test_clobber_r30 -+.globl abi_test_clobber_r31 -+.type abi_test_clobber_r31,@function -+.align 5 -+abi_test_clobber_r31: -+.localentry abi_test_clobber_r31,0 -+ -+ li 31, 0 -+ blr -+.size abi_test_clobber_r31,.-abi_test_clobber_r31 -+.globl abi_test_clobber_f0 -+.type abi_test_clobber_f0,@function -+.align 4 -+abi_test_clobber_f0: -+.localentry abi_test_clobber_f0,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 0, -8(1) -+ blr -+.size abi_test_clobber_f0,.-abi_test_clobber_f0 -+.globl abi_test_clobber_f1 -+.type abi_test_clobber_f1,@function -+.align 4 -+abi_test_clobber_f1: -+.localentry abi_test_clobber_f1,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 1, -8(1) -+ blr -+.size abi_test_clobber_f1,.-abi_test_clobber_f1 -+.globl abi_test_clobber_f2 -+.type abi_test_clobber_f2,@function -+.align 4 -+abi_test_clobber_f2: -+.localentry abi_test_clobber_f2,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 2, -8(1) -+ blr -+.size abi_test_clobber_f2,.-abi_test_clobber_f2 -+.globl abi_test_clobber_f3 -+.type abi_test_clobber_f3,@function -+.align 4 -+abi_test_clobber_f3: -+.localentry abi_test_clobber_f3,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 3, -8(1) -+ blr -+.size abi_test_clobber_f3,.-abi_test_clobber_f3 -+.globl abi_test_clobber_f4 -+.type abi_test_clobber_f4,@function -+.align 4 -+abi_test_clobber_f4: -+.localentry abi_test_clobber_f4,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 4, -8(1) -+ blr -+.size abi_test_clobber_f4,.-abi_test_clobber_f4 -+.globl abi_test_clobber_f5 -+.type abi_test_clobber_f5,@function -+.align 4 -+abi_test_clobber_f5: -+.localentry abi_test_clobber_f5,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 5, -8(1) -+ blr -+.size abi_test_clobber_f5,.-abi_test_clobber_f5 -+.globl abi_test_clobber_f6 -+.type abi_test_clobber_f6,@function -+.align 4 -+abi_test_clobber_f6: -+.localentry abi_test_clobber_f6,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 6, -8(1) -+ blr -+.size abi_test_clobber_f6,.-abi_test_clobber_f6 -+.globl abi_test_clobber_f7 -+.type abi_test_clobber_f7,@function -+.align 4 -+abi_test_clobber_f7: -+.localentry abi_test_clobber_f7,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 7, -8(1) -+ blr -+.size abi_test_clobber_f7,.-abi_test_clobber_f7 -+.globl abi_test_clobber_f8 -+.type abi_test_clobber_f8,@function -+.align 4 -+abi_test_clobber_f8: -+.localentry abi_test_clobber_f8,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 8, -8(1) -+ blr -+.size abi_test_clobber_f8,.-abi_test_clobber_f8 -+.globl abi_test_clobber_f9 -+.type abi_test_clobber_f9,@function -+.align 4 -+abi_test_clobber_f9: -+.localentry abi_test_clobber_f9,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 9, -8(1) -+ blr -+.size abi_test_clobber_f9,.-abi_test_clobber_f9 -+.globl abi_test_clobber_f10 -+.type abi_test_clobber_f10,@function -+.align 4 -+abi_test_clobber_f10: -+.localentry abi_test_clobber_f10,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 10, -8(1) -+ blr -+.size abi_test_clobber_f10,.-abi_test_clobber_f10 -+.globl abi_test_clobber_f11 -+.type abi_test_clobber_f11,@function -+.align 4 -+abi_test_clobber_f11: -+.localentry abi_test_clobber_f11,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 11, -8(1) -+ blr -+.size abi_test_clobber_f11,.-abi_test_clobber_f11 -+.globl abi_test_clobber_f12 -+.type abi_test_clobber_f12,@function -+.align 4 -+abi_test_clobber_f12: -+.localentry abi_test_clobber_f12,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 12, -8(1) -+ blr -+.size abi_test_clobber_f12,.-abi_test_clobber_f12 -+.globl abi_test_clobber_f13 -+.type abi_test_clobber_f13,@function -+.align 4 -+abi_test_clobber_f13: -+.localentry abi_test_clobber_f13,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 13, -8(1) -+ blr -+.size abi_test_clobber_f13,.-abi_test_clobber_f13 -+.globl abi_test_clobber_f14 -+.type abi_test_clobber_f14,@function -+.align 4 -+abi_test_clobber_f14: -+.localentry abi_test_clobber_f14,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 14, -8(1) -+ blr -+.size abi_test_clobber_f14,.-abi_test_clobber_f14 -+.globl abi_test_clobber_f15 -+.type abi_test_clobber_f15,@function -+.align 4 -+abi_test_clobber_f15: -+.localentry abi_test_clobber_f15,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 15, -8(1) -+ blr -+.size abi_test_clobber_f15,.-abi_test_clobber_f15 -+.globl abi_test_clobber_f16 -+.type abi_test_clobber_f16,@function -+.align 4 -+abi_test_clobber_f16: -+.localentry abi_test_clobber_f16,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 16, -8(1) -+ blr -+.size abi_test_clobber_f16,.-abi_test_clobber_f16 -+.globl abi_test_clobber_f17 -+.type abi_test_clobber_f17,@function -+.align 4 -+abi_test_clobber_f17: -+.localentry abi_test_clobber_f17,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 17, -8(1) -+ blr -+.size abi_test_clobber_f17,.-abi_test_clobber_f17 -+.globl abi_test_clobber_f18 -+.type abi_test_clobber_f18,@function -+.align 4 -+abi_test_clobber_f18: -+.localentry abi_test_clobber_f18,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 18, -8(1) -+ blr -+.size abi_test_clobber_f18,.-abi_test_clobber_f18 -+.globl abi_test_clobber_f19 -+.type abi_test_clobber_f19,@function -+.align 4 -+abi_test_clobber_f19: -+.localentry abi_test_clobber_f19,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 19, -8(1) -+ blr -+.size abi_test_clobber_f19,.-abi_test_clobber_f19 -+.globl abi_test_clobber_f20 -+.type abi_test_clobber_f20,@function -+.align 4 -+abi_test_clobber_f20: -+.localentry abi_test_clobber_f20,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 20, -8(1) -+ blr -+.size abi_test_clobber_f20,.-abi_test_clobber_f20 -+.globl abi_test_clobber_f21 -+.type abi_test_clobber_f21,@function -+.align 4 -+abi_test_clobber_f21: -+.localentry abi_test_clobber_f21,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 21, -8(1) -+ blr -+.size abi_test_clobber_f21,.-abi_test_clobber_f21 -+.globl abi_test_clobber_f22 -+.type abi_test_clobber_f22,@function -+.align 4 -+abi_test_clobber_f22: -+.localentry abi_test_clobber_f22,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 22, -8(1) -+ blr -+.size abi_test_clobber_f22,.-abi_test_clobber_f22 -+.globl abi_test_clobber_f23 -+.type abi_test_clobber_f23,@function -+.align 4 -+abi_test_clobber_f23: -+.localentry abi_test_clobber_f23,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 23, -8(1) -+ blr -+.size abi_test_clobber_f23,.-abi_test_clobber_f23 -+.globl abi_test_clobber_f24 -+.type abi_test_clobber_f24,@function -+.align 4 -+abi_test_clobber_f24: -+.localentry abi_test_clobber_f24,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 24, -8(1) -+ blr -+.size abi_test_clobber_f24,.-abi_test_clobber_f24 -+.globl abi_test_clobber_f25 -+.type abi_test_clobber_f25,@function -+.align 4 -+abi_test_clobber_f25: -+.localentry abi_test_clobber_f25,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 25, -8(1) -+ blr -+.size abi_test_clobber_f25,.-abi_test_clobber_f25 -+.globl abi_test_clobber_f26 -+.type abi_test_clobber_f26,@function -+.align 4 -+abi_test_clobber_f26: -+.localentry abi_test_clobber_f26,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 26, -8(1) -+ blr -+.size abi_test_clobber_f26,.-abi_test_clobber_f26 -+.globl abi_test_clobber_f27 -+.type abi_test_clobber_f27,@function -+.align 4 -+abi_test_clobber_f27: -+.localentry abi_test_clobber_f27,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 27, -8(1) -+ blr -+.size abi_test_clobber_f27,.-abi_test_clobber_f27 -+.globl abi_test_clobber_f28 -+.type abi_test_clobber_f28,@function -+.align 4 -+abi_test_clobber_f28: -+.localentry abi_test_clobber_f28,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 28, -8(1) -+ blr -+.size abi_test_clobber_f28,.-abi_test_clobber_f28 -+.globl abi_test_clobber_f29 -+.type abi_test_clobber_f29,@function -+.align 4 -+abi_test_clobber_f29: -+.localentry abi_test_clobber_f29,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 29, -8(1) -+ blr -+.size abi_test_clobber_f29,.-abi_test_clobber_f29 -+.globl abi_test_clobber_f30 -+.type abi_test_clobber_f30,@function -+.align 4 -+abi_test_clobber_f30: -+.localentry abi_test_clobber_f30,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 30, -8(1) -+ blr -+.size abi_test_clobber_f30,.-abi_test_clobber_f30 -+.globl abi_test_clobber_f31 -+.type abi_test_clobber_f31,@function -+.align 4 -+abi_test_clobber_f31: -+.localentry abi_test_clobber_f31,0 -+ -+ li 0, 0 -+ -+ std 0, -8(1) -+ lfd 31, -8(1) -+ blr -+.size abi_test_clobber_f31,.-abi_test_clobber_f31 -+.globl abi_test_clobber_v0 -+.type abi_test_clobber_v0,@function -+.align 4 -+abi_test_clobber_v0: -+.localentry abi_test_clobber_v0,0 -+ -+ vxor 0, 0, 0 -+ blr -+.size abi_test_clobber_v0,.-abi_test_clobber_v0 -+.globl abi_test_clobber_v1 -+.type abi_test_clobber_v1,@function -+.align 4 -+abi_test_clobber_v1: -+.localentry abi_test_clobber_v1,0 -+ -+ vxor 1, 1, 1 -+ blr -+.size abi_test_clobber_v1,.-abi_test_clobber_v1 -+.globl abi_test_clobber_v2 -+.type abi_test_clobber_v2,@function -+.align 4 -+abi_test_clobber_v2: -+.localentry abi_test_clobber_v2,0 -+ -+ vxor 2, 2, 2 -+ blr -+.size abi_test_clobber_v2,.-abi_test_clobber_v2 -+.globl abi_test_clobber_v3 -+.type abi_test_clobber_v3,@function -+.align 4 -+abi_test_clobber_v3: -+.localentry abi_test_clobber_v3,0 -+ -+ vxor 3, 3, 3 -+ blr -+.size abi_test_clobber_v3,.-abi_test_clobber_v3 -+.globl abi_test_clobber_v4 -+.type abi_test_clobber_v4,@function -+.align 4 -+abi_test_clobber_v4: -+.localentry abi_test_clobber_v4,0 -+ -+ vxor 4, 4, 4 -+ blr -+.size abi_test_clobber_v4,.-abi_test_clobber_v4 -+.globl abi_test_clobber_v5 -+.type abi_test_clobber_v5,@function -+.align 4 -+abi_test_clobber_v5: -+.localentry abi_test_clobber_v5,0 -+ -+ vxor 5, 5, 5 -+ blr -+.size abi_test_clobber_v5,.-abi_test_clobber_v5 -+.globl abi_test_clobber_v6 -+.type abi_test_clobber_v6,@function -+.align 4 -+abi_test_clobber_v6: -+.localentry abi_test_clobber_v6,0 -+ -+ vxor 6, 6, 6 -+ blr -+.size abi_test_clobber_v6,.-abi_test_clobber_v6 -+.globl abi_test_clobber_v7 -+.type abi_test_clobber_v7,@function -+.align 4 -+abi_test_clobber_v7: -+.localentry abi_test_clobber_v7,0 -+ -+ vxor 7, 7, 7 -+ blr -+.size abi_test_clobber_v7,.-abi_test_clobber_v7 -+.globl abi_test_clobber_v8 -+.type abi_test_clobber_v8,@function -+.align 4 -+abi_test_clobber_v8: -+.localentry abi_test_clobber_v8,0 -+ -+ vxor 8, 8, 8 -+ blr -+.size abi_test_clobber_v8,.-abi_test_clobber_v8 -+.globl abi_test_clobber_v9 -+.type abi_test_clobber_v9,@function -+.align 4 -+abi_test_clobber_v9: -+.localentry abi_test_clobber_v9,0 -+ -+ vxor 9, 9, 9 -+ blr -+.size abi_test_clobber_v9,.-abi_test_clobber_v9 -+.globl abi_test_clobber_v10 -+.type abi_test_clobber_v10,@function -+.align 4 -+abi_test_clobber_v10: -+.localentry abi_test_clobber_v10,0 -+ -+ vxor 10, 10, 10 -+ blr -+.size abi_test_clobber_v10,.-abi_test_clobber_v10 -+.globl abi_test_clobber_v11 -+.type abi_test_clobber_v11,@function -+.align 4 -+abi_test_clobber_v11: -+.localentry abi_test_clobber_v11,0 -+ -+ vxor 11, 11, 11 -+ blr -+.size abi_test_clobber_v11,.-abi_test_clobber_v11 -+.globl abi_test_clobber_v12 -+.type abi_test_clobber_v12,@function -+.align 4 -+abi_test_clobber_v12: -+.localentry abi_test_clobber_v12,0 -+ -+ vxor 12, 12, 12 -+ blr -+.size abi_test_clobber_v12,.-abi_test_clobber_v12 -+.globl abi_test_clobber_v13 -+.type abi_test_clobber_v13,@function -+.align 4 -+abi_test_clobber_v13: -+.localentry abi_test_clobber_v13,0 -+ -+ vxor 13, 13, 13 -+ blr -+.size abi_test_clobber_v13,.-abi_test_clobber_v13 -+.globl abi_test_clobber_v14 -+.type abi_test_clobber_v14,@function -+.align 4 -+abi_test_clobber_v14: -+.localentry abi_test_clobber_v14,0 -+ -+ vxor 14, 14, 14 -+ blr -+.size abi_test_clobber_v14,.-abi_test_clobber_v14 -+.globl abi_test_clobber_v15 -+.type abi_test_clobber_v15,@function -+.align 4 -+abi_test_clobber_v15: -+.localentry abi_test_clobber_v15,0 -+ -+ vxor 15, 15, 15 -+ blr -+.size abi_test_clobber_v15,.-abi_test_clobber_v15 -+.globl abi_test_clobber_v16 -+.type abi_test_clobber_v16,@function -+.align 4 -+abi_test_clobber_v16: -+.localentry abi_test_clobber_v16,0 -+ -+ vxor 16, 16, 16 -+ blr -+.size abi_test_clobber_v16,.-abi_test_clobber_v16 -+.globl abi_test_clobber_v17 -+.type abi_test_clobber_v17,@function -+.align 4 -+abi_test_clobber_v17: -+.localentry abi_test_clobber_v17,0 -+ -+ vxor 17, 17, 17 -+ blr -+.size abi_test_clobber_v17,.-abi_test_clobber_v17 -+.globl abi_test_clobber_v18 -+.type abi_test_clobber_v18,@function -+.align 4 -+abi_test_clobber_v18: -+.localentry abi_test_clobber_v18,0 -+ -+ vxor 18, 18, 18 -+ blr -+.size abi_test_clobber_v18,.-abi_test_clobber_v18 -+.globl abi_test_clobber_v19 -+.type abi_test_clobber_v19,@function -+.align 4 -+abi_test_clobber_v19: -+.localentry abi_test_clobber_v19,0 -+ -+ vxor 19, 19, 19 -+ blr -+.size abi_test_clobber_v19,.-abi_test_clobber_v19 -+.globl abi_test_clobber_v20 -+.type abi_test_clobber_v20,@function -+.align 4 -+abi_test_clobber_v20: -+.localentry abi_test_clobber_v20,0 -+ -+ vxor 20, 20, 20 -+ blr -+.size abi_test_clobber_v20,.-abi_test_clobber_v20 -+.globl abi_test_clobber_v21 -+.type abi_test_clobber_v21,@function -+.align 4 -+abi_test_clobber_v21: -+.localentry abi_test_clobber_v21,0 -+ -+ vxor 21, 21, 21 -+ blr -+.size abi_test_clobber_v21,.-abi_test_clobber_v21 -+.globl abi_test_clobber_v22 -+.type abi_test_clobber_v22,@function -+.align 4 -+abi_test_clobber_v22: -+.localentry abi_test_clobber_v22,0 -+ -+ vxor 22, 22, 22 -+ blr -+.size abi_test_clobber_v22,.-abi_test_clobber_v22 -+.globl abi_test_clobber_v23 -+.type abi_test_clobber_v23,@function -+.align 4 -+abi_test_clobber_v23: -+.localentry abi_test_clobber_v23,0 -+ -+ vxor 23, 23, 23 -+ blr -+.size abi_test_clobber_v23,.-abi_test_clobber_v23 -+.globl abi_test_clobber_v24 -+.type abi_test_clobber_v24,@function -+.align 4 -+abi_test_clobber_v24: -+.localentry abi_test_clobber_v24,0 -+ -+ vxor 24, 24, 24 -+ blr -+.size abi_test_clobber_v24,.-abi_test_clobber_v24 -+.globl abi_test_clobber_v25 -+.type abi_test_clobber_v25,@function -+.align 4 -+abi_test_clobber_v25: -+.localentry abi_test_clobber_v25,0 -+ -+ vxor 25, 25, 25 -+ blr -+.size abi_test_clobber_v25,.-abi_test_clobber_v25 -+.globl abi_test_clobber_v26 -+.type abi_test_clobber_v26,@function -+.align 4 -+abi_test_clobber_v26: -+.localentry abi_test_clobber_v26,0 -+ -+ vxor 26, 26, 26 -+ blr -+.size abi_test_clobber_v26,.-abi_test_clobber_v26 -+.globl abi_test_clobber_v27 -+.type abi_test_clobber_v27,@function -+.align 4 -+abi_test_clobber_v27: -+.localentry abi_test_clobber_v27,0 -+ -+ vxor 27, 27, 27 -+ blr -+.size abi_test_clobber_v27,.-abi_test_clobber_v27 -+.globl abi_test_clobber_v28 -+.type abi_test_clobber_v28,@function -+.align 4 -+abi_test_clobber_v28: -+.localentry abi_test_clobber_v28,0 -+ -+ vxor 28, 28, 28 -+ blr -+.size abi_test_clobber_v28,.-abi_test_clobber_v28 -+.globl abi_test_clobber_v29 -+.type abi_test_clobber_v29,@function -+.align 4 -+abi_test_clobber_v29: -+.localentry abi_test_clobber_v29,0 -+ -+ vxor 29, 29, 29 -+ blr -+.size abi_test_clobber_v29,.-abi_test_clobber_v29 -+.globl abi_test_clobber_v30 -+.type abi_test_clobber_v30,@function -+.align 4 -+abi_test_clobber_v30: -+.localentry abi_test_clobber_v30,0 -+ -+ vxor 30, 30, 30 -+ blr -+.size abi_test_clobber_v30,.-abi_test_clobber_v30 -+.globl abi_test_clobber_v31 -+.type abi_test_clobber_v31,@function -+.align 4 -+abi_test_clobber_v31: -+.localentry abi_test_clobber_v31,0 -+ -+ vxor 31, 31, 31 -+ blr -+.size abi_test_clobber_v31,.-abi_test_clobber_v31 -+.globl abi_test_clobber_cr0 -+.type abi_test_clobber_cr0,@function -+.align 4 -+abi_test_clobber_cr0: -+.localentry abi_test_clobber_cr0,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 128, 0 -+ blr -+.size abi_test_clobber_cr0,.-abi_test_clobber_cr0 -+.globl abi_test_clobber_cr1 -+.type abi_test_clobber_cr1,@function -+.align 4 -+abi_test_clobber_cr1: -+.localentry abi_test_clobber_cr1,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 64, 0 -+ blr -+.size abi_test_clobber_cr1,.-abi_test_clobber_cr1 -+.globl abi_test_clobber_cr2 -+.type abi_test_clobber_cr2,@function -+.align 4 -+abi_test_clobber_cr2: -+.localentry abi_test_clobber_cr2,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 32, 0 -+ blr -+.size abi_test_clobber_cr2,.-abi_test_clobber_cr2 -+.globl abi_test_clobber_cr3 -+.type abi_test_clobber_cr3,@function -+.align 4 -+abi_test_clobber_cr3: -+.localentry abi_test_clobber_cr3,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 16, 0 -+ blr -+.size abi_test_clobber_cr3,.-abi_test_clobber_cr3 -+.globl abi_test_clobber_cr4 -+.type abi_test_clobber_cr4,@function -+.align 4 -+abi_test_clobber_cr4: -+.localentry abi_test_clobber_cr4,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 8, 0 -+ blr -+.size abi_test_clobber_cr4,.-abi_test_clobber_cr4 -+.globl abi_test_clobber_cr5 -+.type abi_test_clobber_cr5,@function -+.align 4 -+abi_test_clobber_cr5: -+.localentry abi_test_clobber_cr5,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 4, 0 -+ blr -+.size abi_test_clobber_cr5,.-abi_test_clobber_cr5 -+.globl abi_test_clobber_cr6 -+.type abi_test_clobber_cr6,@function -+.align 4 -+abi_test_clobber_cr6: -+.localentry abi_test_clobber_cr6,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 2, 0 -+ blr -+.size abi_test_clobber_cr6,.-abi_test_clobber_cr6 -+.globl abi_test_clobber_cr7 -+.type abi_test_clobber_cr7,@function -+.align 4 -+abi_test_clobber_cr7: -+.localentry abi_test_clobber_cr7,0 -+ -+ -+ -+ mfcr 0 -+ not 0, 0 -+ mtcrf 1, 0 -+ blr -+.size abi_test_clobber_cr7,.-abi_test_clobber_cr7 -+.globl abi_test_clobber_ctr -+.type abi_test_clobber_ctr,@function -+.align 4 -+abi_test_clobber_ctr: -+.localentry abi_test_clobber_ctr,0 -+ -+ li 0, 0 -+ mtctr 0 -+ blr -+.size abi_test_clobber_ctr,.-abi_test_clobber_ctr -+ -+.globl abi_test_clobber_lr -+.type abi_test_clobber_lr,@function -+.align 4 -+abi_test_clobber_lr: -+.localentry abi_test_clobber_lr,0 -+ -+ mflr 0 -+ mtctr 0 -+ li 0, 0 -+ mtlr 0 -+ bctr -+.size abi_test_clobber_lr,.-abi_test_clobber_lr -+ -+#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ -+#if defined(__ELF__) -+// See https://www.airs.ccom/blog/archives/518. -+.section .note.GNU-stack,"",%progbits -+#endif -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h -@@ -0,0 +1,316 @@ -+// This file is generated. Do not edit. -+#ifndef VP8_RTCD_H_ -+#define VP8_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+/* -+ * VP8 -+ */ -+ -+struct blockd; -+struct macroblockd; -+struct loop_filter_info; -+ -+/* Encoder forward decls */ -+struct block; -+struct macroblock; -+struct variance_vtable; -+union int_mv; -+struct yv12_buffer_config; -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+void vp8_bilinear_predict16x16_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c -+ -+void vp8_bilinear_predict4x4_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c -+ -+void vp8_bilinear_predict8x4_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c -+ -+void vp8_bilinear_predict8x8_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c -+ -+int vp8_block_error_c(short* coeff, short* dqcoeff); -+#define vp8_block_error vp8_block_error_c -+ -+void vp8_copy32xn_c(const unsigned char* src_ptr, -+ int src_stride, -+ unsigned char* dst_ptr, -+ int dst_stride, -+ int height); -+#define vp8_copy32xn vp8_copy32xn_c -+ -+void vp8_copy_mem16x16_c(unsigned char* src, -+ int src_stride, -+ unsigned char* dst, -+ int dst_stride); -+#define vp8_copy_mem16x16 vp8_copy_mem16x16_c -+ -+void vp8_copy_mem8x4_c(unsigned char* src, -+ int src_stride, -+ unsigned char* dst, -+ int dst_stride); -+#define vp8_copy_mem8x4 vp8_copy_mem8x4_c -+ -+void vp8_copy_mem8x8_c(unsigned char* src, -+ int src_stride, -+ unsigned char* dst, -+ int dst_stride); -+#define vp8_copy_mem8x8 vp8_copy_mem8x8_c -+ -+void vp8_dc_only_idct_add_c(short input_dc, -+ unsigned char* pred_ptr, -+ int pred_stride, -+ unsigned char* dst_ptr, -+ int dst_stride); -+#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c -+ -+int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y, -+ int mc_avg_y_stride, -+ unsigned char* running_avg_y, -+ int avg_y_stride, -+ unsigned char* sig, -+ int sig_stride, -+ unsigned int motion_magnitude, -+ int increase_denoising); -+#define vp8_denoiser_filter vp8_denoiser_filter_c -+ -+int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg, -+ int mc_avg_stride, -+ unsigned char* running_avg, -+ int avg_stride, -+ unsigned char* sig, -+ int sig_stride, -+ unsigned int motion_magnitude, -+ int increase_denoising); -+#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c -+ -+void vp8_dequant_idct_add_c(short* input, -+ short* dq, -+ unsigned char* dest, -+ int stride); -+#define vp8_dequant_idct_add vp8_dequant_idct_add_c -+ -+void vp8_dequant_idct_add_uv_block_c(short* q, -+ short* dq, -+ unsigned char* dst_u, -+ unsigned char* dst_v, -+ int stride, -+ char* eobs); -+#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c -+ -+void vp8_dequant_idct_add_y_block_c(short* q, -+ short* dq, -+ unsigned char* dst, -+ int stride, -+ char* eobs); -+#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c -+ -+void vp8_dequantize_b_c(struct blockd*, short* DQC); -+#define vp8_dequantize_b vp8_dequantize_b_c -+ -+int vp8_diamond_search_sad_c(struct macroblock* x, -+ struct block* b, -+ struct blockd* d, -+ union int_mv* ref_mv, -+ union int_mv* best_mv, -+ int search_param, -+ int sad_per_bit, -+ int* num00, -+ struct variance_vtable* fn_ptr, -+ int* mvcost[2], -+ union int_mv* center_mv); -+#define vp8_diamond_search_sad vp8_diamond_search_sad_c -+ -+void vp8_fast_quantize_b_c(struct block*, struct blockd*); -+#define vp8_fast_quantize_b vp8_fast_quantize_b_c -+ -+void vp8_filter_by_weight16x16_c(unsigned char* src, -+ int src_stride, -+ unsigned char* dst, -+ int dst_stride, -+ int src_weight); -+#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c -+ -+void vp8_filter_by_weight4x4_c(unsigned char* src, -+ int src_stride, -+ unsigned char* dst, -+ int dst_stride, -+ int src_weight); -+#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c -+ -+void vp8_filter_by_weight8x8_c(unsigned char* src, -+ int src_stride, -+ unsigned char* dst, -+ int dst_stride, -+ int src_weight); -+#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c -+ -+void vp8_loop_filter_bh_c(unsigned char* y_ptr, -+ unsigned char* u_ptr, -+ unsigned char* v_ptr, -+ int y_stride, -+ int uv_stride, -+ struct loop_filter_info* lfi); -+#define vp8_loop_filter_bh vp8_loop_filter_bh_c -+ -+void vp8_loop_filter_bv_c(unsigned char* y_ptr, -+ unsigned char* u_ptr, -+ unsigned char* v_ptr, -+ int y_stride, -+ int uv_stride, -+ struct loop_filter_info* lfi); -+#define vp8_loop_filter_bv vp8_loop_filter_bv_c -+ -+void vp8_loop_filter_mbh_c(unsigned char* y_ptr, -+ unsigned char* u_ptr, -+ unsigned char* v_ptr, -+ int y_stride, -+ int uv_stride, -+ struct loop_filter_info* lfi); -+#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c -+ -+void vp8_loop_filter_mbv_c(unsigned char* y_ptr, -+ unsigned char* u_ptr, -+ unsigned char* v_ptr, -+ int y_stride, -+ int uv_stride, -+ struct loop_filter_info* lfi); -+#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c -+ -+void vp8_loop_filter_bhs_c(unsigned char* y_ptr, -+ int y_stride, -+ const unsigned char* blimit); -+#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c -+ -+void vp8_loop_filter_bvs_c(unsigned char* y_ptr, -+ int y_stride, -+ const unsigned char* blimit); -+#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c -+ -+void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr, -+ int y_stride, -+ const unsigned char* blimit); -+#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c -+ -+void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr, -+ int y_stride, -+ const unsigned char* blimit); -+#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c -+ -+int vp8_mbblock_error_c(struct macroblock* mb, int dc); -+#define vp8_mbblock_error vp8_mbblock_error_c -+ -+int vp8_mbuverror_c(struct macroblock* mb); -+#define vp8_mbuverror vp8_mbuverror_c -+ -+int vp8_refining_search_sad_c(struct macroblock* x, -+ struct block* b, -+ struct blockd* d, -+ union int_mv* ref_mv, -+ int error_per_bit, -+ int search_range, -+ struct variance_vtable* fn_ptr, -+ int* mvcost[2], -+ union int_mv* center_mv); -+#define vp8_refining_search_sad vp8_refining_search_sad_c -+ -+void vp8_regular_quantize_b_c(struct block*, struct blockd*); -+#define vp8_regular_quantize_b vp8_regular_quantize_b_c -+ -+void vp8_short_fdct4x4_c(short* input, short* output, int pitch); -+#define vp8_short_fdct4x4 vp8_short_fdct4x4_c -+ -+void vp8_short_fdct8x4_c(short* input, short* output, int pitch); -+#define vp8_short_fdct8x4 vp8_short_fdct8x4_c -+ -+void vp8_short_idct4x4llm_c(short* input, -+ unsigned char* pred_ptr, -+ int pred_stride, -+ unsigned char* dst_ptr, -+ int dst_stride); -+#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c -+ -+void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff); -+#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c -+ -+void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff); -+#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c -+ -+void vp8_short_walsh4x4_c(short* input, short* output, int pitch); -+#define vp8_short_walsh4x4 vp8_short_walsh4x4_c -+ -+void vp8_sixtap_predict16x16_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c -+ -+void vp8_sixtap_predict4x4_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c -+ -+void vp8_sixtap_predict8x4_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c -+ -+void vp8_sixtap_predict8x8_c(unsigned char* src_ptr, -+ int src_pixels_per_line, -+ int xoffset, -+ int yoffset, -+ unsigned char* dst_ptr, -+ int dst_pitch); -+#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c -+ -+void vp8_rtcd(void); -+ -+#include "vpx_config.h" -+ -+#ifdef RTCD_C -+static void setup_rtcd_internal(void) {} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h -@@ -0,0 +1,267 @@ -+// This file is generated. Do not edit. -+#ifndef VP9_RTCD_H_ -+#define VP9_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+/* -+ * VP9 -+ */ -+ -+#include "vp9/common/vp9_common.h" -+#include "vp9/common/vp9_enums.h" -+#include "vp9/common/vp9_filter.h" -+#include "vpx/vpx_integer.h" -+ -+struct macroblockd; -+ -+/* Encoder forward decls */ -+struct macroblock; -+struct macroblock_plane; -+struct vp9_sad_table; -+struct ScanOrder; -+struct search_site_config; -+struct mv; -+union int_mv; -+struct yv12_buffer_config; -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+int64_t vp9_block_error_c(const tran_low_t* coeff, -+ const tran_low_t* dqcoeff, -+ intptr_t block_size, -+ int64_t* ssz); -+#define vp9_block_error vp9_block_error_c -+ -+int64_t vp9_block_error_fp_c(const tran_low_t* coeff, -+ const tran_low_t* dqcoeff, -+ int block_size); -+#define vp9_block_error_fp vp9_block_error_fp_c -+ -+int vp9_denoiser_filter_c(const uint8_t* sig, -+ int sig_stride, -+ const uint8_t* mc_avg, -+ int mc_avg_stride, -+ uint8_t* avg, -+ int avg_stride, -+ int increase_denoising, -+ BLOCK_SIZE bs, -+ int motion_magnitude); -+#define vp9_denoiser_filter vp9_denoiser_filter_c -+ -+int vp9_diamond_search_sad_c(const struct macroblock* x, -+ const struct search_site_config* cfg, -+ struct mv* ref_mv, -+ uint32_t start_mv_sad, -+ struct mv* best_mv, -+ int search_param, -+ int sad_per_bit, -+ int* num00, -+ const struct vp9_sad_table* sad_fn_ptr, -+ const struct mv* center_mv); -+#define vp9_diamond_search_sad vp9_diamond_search_sad_c -+ -+void vp9_fht16x16_c(const int16_t* input, -+ tran_low_t* output, -+ int stride, -+ int tx_type); -+#define vp9_fht16x16 vp9_fht16x16_c -+ -+void vp9_fht4x4_c(const int16_t* input, -+ tran_low_t* output, -+ int stride, -+ int tx_type); -+#define vp9_fht4x4 vp9_fht4x4_c -+ -+void vp9_fht8x8_c(const int16_t* input, -+ tran_low_t* output, -+ int stride, -+ int tx_type); -+#define vp9_fht8x8 vp9_fht8x8_c -+ -+void vp9_filter_by_weight16x16_c(const uint8_t* src, -+ int src_stride, -+ uint8_t* dst, -+ int dst_stride, -+ int src_weight); -+#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c -+ -+void vp9_filter_by_weight8x8_c(const uint8_t* src, -+ int src_stride, -+ uint8_t* dst, -+ int dst_stride, -+ int src_weight); -+#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c -+ -+void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride); -+#define vp9_fwht4x4 vp9_fwht4x4_c -+ -+int64_t vp9_highbd_block_error_c(const tran_low_t* coeff, -+ const tran_low_t* dqcoeff, -+ intptr_t block_size, -+ int64_t* ssz, -+ int bd); -+#define vp9_highbd_block_error vp9_highbd_block_error_c -+ -+void vp9_highbd_fht16x16_c(const int16_t* input, -+ tran_low_t* output, -+ int stride, -+ int tx_type); -+#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c -+ -+void vp9_highbd_fht4x4_c(const int16_t* input, -+ tran_low_t* output, -+ int stride, -+ int tx_type); -+#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c -+ -+void vp9_highbd_fht8x8_c(const int16_t* input, -+ tran_low_t* output, -+ int stride, -+ int tx_type); -+#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c -+ -+void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride); -+#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c -+ -+void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int tx_type, -+ int bd); -+#define vp9_highbd_iht16x16_256_add vp9_highbd_iht16x16_256_add_c -+ -+void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int tx_type, -+ int bd); -+#define vp9_highbd_iht4x4_16_add vp9_highbd_iht4x4_16_add_c -+ -+void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int tx_type, -+ int bd); -+#define vp9_highbd_iht8x8_64_add vp9_highbd_iht8x8_64_add_c -+ -+void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src, -+ int pitch, -+ int rows, -+ int cols, -+ int flimit); -+#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c -+ -+void vp9_highbd_mbpost_proc_down_c(uint16_t* dst, -+ int pitch, -+ int rows, -+ int cols, -+ int flimit); -+#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c -+ -+void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr, -+ uint16_t* dst_ptr, -+ int src_pixels_per_line, -+ int dst_pixels_per_line, -+ int rows, -+ int cols, -+ int flimit); -+#define vp9_highbd_post_proc_down_and_across \ -+ vp9_highbd_post_proc_down_and_across_c -+ -+void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr, -+ intptr_t n_coeffs, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c -+ -+void vp9_highbd_quantize_fp_32x32_c( -+ const tran_low_t* coeff_ptr, -+ intptr_t n_coeffs, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c -+ -+void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1, -+ unsigned int stride, -+ const uint8_t* frame2, -+ unsigned int block_width, -+ unsigned int block_height, -+ int strength, -+ int* blk_fw, -+ int use_32x32, -+ uint32_t* accumulator, -+ uint16_t* count); -+#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c -+ -+void vp9_iht16x16_256_add_c(const tran_low_t* input, -+ uint8_t* dest, -+ int stride, -+ int tx_type); -+#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c -+ -+void vp9_iht4x4_16_add_c(const tran_low_t* input, -+ uint8_t* dest, -+ int stride, -+ int tx_type); -+#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c -+ -+void vp9_iht8x8_64_add_c(const tran_low_t* input, -+ uint8_t* dest, -+ int stride, -+ int tx_type); -+#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c -+ -+void vp9_quantize_fp_c(const tran_low_t* coeff_ptr, -+ intptr_t n_coeffs, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vp9_quantize_fp vp9_quantize_fp_c -+ -+void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr, -+ intptr_t n_coeffs, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_c -+ -+void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src, -+ struct yv12_buffer_config* dst, -+ INTERP_FILTER filter_type, -+ int phase_scaler); -+#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c -+ -+void vp9_rtcd(void); -+ -+#include "vpx_config.h" -+ -+#ifdef RTCD_C -+static void setup_rtcd_internal(void) {} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm -@@ -0,0 +1,107 @@ -+@ This file was created from a .asm file -+@ using the ads2gas.pl script. -+.syntax unified -+.equ VPX_ARCH_ARM , 0 -+.equ ARCH_ARM , 0 -+.equ VPX_ARCH_AARCH64 , 0 -+.equ ARCH_AARCH64 , 0 -+.equ VPX_ARCH_MIPS , 0 -+.equ ARCH_MIPS , 0 -+.equ VPX_ARCH_X86 , 0 -+.equ ARCH_X86 , 0 -+.equ VPX_ARCH_X86_64 , 0 -+.equ ARCH_X86_64 , 0 -+.equ VPX_ARCH_PPC , 0 -+.equ ARCH_PPC , 0 -+.equ VPX_ARCH_LOONGARCH , 0 -+.equ ARCH_LOONGARCH , 0 -+.equ HAVE_NEON_ASM , 0 -+.equ HAVE_NEON , 0 -+.equ HAVE_NEON_DOTPROD , 0 -+.equ HAVE_NEON_I8MM , 0 -+.equ HAVE_SVE , 0 -+.equ HAVE_MIPS32 , 0 -+.equ HAVE_DSPR2 , 0 -+.equ HAVE_MSA , 0 -+.equ HAVE_MIPS64 , 0 -+.equ HAVE_MMX , 0 -+.equ HAVE_SSE , 0 -+.equ HAVE_SSE2 , 0 -+.equ HAVE_SSE3 , 0 -+.equ HAVE_SSSE3 , 0 -+.equ HAVE_SSE4_1 , 0 -+.equ HAVE_AVX , 0 -+.equ HAVE_AVX2 , 0 -+.equ HAVE_AVX512 , 0 -+.equ HAVE_VSX , 0 -+.equ HAVE_MMI , 0 -+.equ HAVE_LSX , 0 -+.equ HAVE_LASX , 0 -+.equ HAVE_VPX_PORTS , 1 -+.equ HAVE_PTHREAD_H , 1 -+.equ HAVE_UNISTD_H , 0 -+.equ CONFIG_DEPENDENCY_TRACKING , 1 -+.equ CONFIG_EXTERNAL_BUILD , 1 -+.equ CONFIG_INSTALL_DOCS , 0 -+.equ CONFIG_INSTALL_BINS , 1 -+.equ CONFIG_INSTALL_LIBS , 1 -+.equ CONFIG_INSTALL_SRCS , 0 -+.equ CONFIG_DEBUG , 0 -+.equ CONFIG_GPROF , 0 -+.equ CONFIG_GCOV , 0 -+.equ CONFIG_RVCT , 0 -+.equ CONFIG_GCC , 1 -+.equ CONFIG_MSVS , 0 -+.equ CONFIG_PIC , 0 -+.equ CONFIG_BIG_ENDIAN , 0 -+.equ CONFIG_CODEC_SRCS , 0 -+.equ CONFIG_DEBUG_LIBS , 0 -+.equ CONFIG_DEQUANT_TOKENS , 0 -+.equ CONFIG_DC_RECON , 0 -+.equ CONFIG_RUNTIME_CPU_DETECT , 0 -+.equ CONFIG_POSTPROC , 1 -+.equ CONFIG_VP9_POSTPROC , 1 -+.equ CONFIG_MULTITHREAD , 1 -+.equ CONFIG_INTERNAL_STATS , 0 -+.equ CONFIG_VP8_ENCODER , 1 -+.equ CONFIG_VP8_DECODER , 1 -+.equ CONFIG_VP9_ENCODER , 1 -+.equ CONFIG_VP9_DECODER , 1 -+.equ CONFIG_VP8 , 1 -+.equ CONFIG_VP9 , 1 -+.equ CONFIG_ENCODERS , 1 -+.equ CONFIG_DECODERS , 1 -+.equ CONFIG_STATIC_MSVCRT , 0 -+.equ CONFIG_SPATIAL_RESAMPLING , 1 -+.equ CONFIG_REALTIME_ONLY , 1 -+.equ CONFIG_ONTHEFLY_BITPACKING , 0 -+.equ CONFIG_ERROR_CONCEALMENT , 0 -+.equ CONFIG_SHARED , 0 -+.equ CONFIG_STATIC , 1 -+.equ CONFIG_SMALL , 0 -+.equ CONFIG_POSTPROC_VISUALIZER , 0 -+.equ CONFIG_OS_SUPPORT , 1 -+.equ CONFIG_UNIT_TESTS , 1 -+.equ CONFIG_WEBM_IO , 1 -+.equ CONFIG_LIBYUV , 0 -+.equ CONFIG_DECODE_PERF_TESTS , 0 -+.equ CONFIG_ENCODE_PERF_TESTS , 0 -+.equ CONFIG_MULTI_RES_ENCODING , 1 -+.equ CONFIG_TEMPORAL_DENOISING , 1 -+.equ CONFIG_VP9_TEMPORAL_DENOISING , 1 -+.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0 -+.equ CONFIG_VP9_HIGHBITDEPTH , 1 -+.equ CONFIG_BETTER_HW_COMPATIBILITY , 0 -+.equ CONFIG_EXPERIMENTAL , 0 -+.equ CONFIG_SIZE_LIMIT , 1 -+.equ CONFIG_ALWAYS_ADJUST_BPM , 0 -+.equ CONFIG_BITSTREAM_DEBUG , 0 -+.equ CONFIG_MISMATCH_DEBUG , 0 -+.equ CONFIG_FP_MB_STATS , 0 -+.equ CONFIG_EMULATE_HARDWARE , 0 -+.equ CONFIG_NON_GREEDY_MV , 0 -+.equ CONFIG_RATE_CTRL , 0 -+.equ CONFIG_COLLECT_COMPONENT_TIMING , 0 -+.equ DECODE_WIDTH_LIMIT , 16384 -+.equ DECODE_HEIGHT_LIMIT , 16384 -+ .section .note.GNU-stack,"",%progbits -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.c -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.c -@@ -0,0 +1,10 @@ -+/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ -+/* */ -+/* Use of this source code is governed by a BSD-style license */ -+/* that can be found in the LICENSE file in the root of the source */ -+/* tree. An additional intellectual property rights grant can be found */ -+/* in the file PATENTS. All contributing project authors may */ -+/* be found in the AUTHORS file in the root of the source tree. */ -+#include "vpx/vpx_codec.h" -+static const char* const cfg = "--target=generic-gnu --enable-vp9-highbitdepth --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv"; -+const char *vpx_codec_build_config(void) {return cfg;} -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.h -@@ -0,0 +1,116 @@ -+/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ -+/* */ -+/* Use of this source code is governed by a BSD-style license */ -+/* that can be found in the LICENSE file in the root of the source */ -+/* tree. An additional intellectual property rights grant can be found */ -+/* in the file PATENTS. All contributing project authors may */ -+/* be found in the AUTHORS file in the root of the source tree. */ -+/* This file automatically generated by configure. Do not edit! */ -+#ifndef VPX_CONFIG_H -+#define VPX_CONFIG_H -+#define RESTRICT -+#define INLINE inline -+#define VPX_ARCH_ARM 0 -+#define ARCH_ARM 0 -+#define VPX_ARCH_AARCH64 0 -+#define ARCH_AARCH64 0 -+#define VPX_ARCH_MIPS 0 -+#define ARCH_MIPS 0 -+#define VPX_ARCH_X86 0 -+#define ARCH_X86 0 -+#define VPX_ARCH_X86_64 0 -+#define ARCH_X86_64 0 -+#define VPX_ARCH_PPC 0 -+#define ARCH_PPC 0 -+#define VPX_ARCH_LOONGARCH 0 -+#define ARCH_LOONGARCH 0 -+#define HAVE_NEON_ASM 0 -+#define HAVE_NEON 0 -+#define HAVE_NEON_DOTPROD 0 -+#define HAVE_NEON_I8MM 0 -+#define HAVE_SVE 0 -+#define HAVE_MIPS32 0 -+#define HAVE_DSPR2 0 -+#define HAVE_MSA 0 -+#define HAVE_MIPS64 0 -+#define HAVE_MMX 0 -+#define HAVE_SSE 0 -+#define HAVE_SSE2 0 -+#define HAVE_SSE3 0 -+#define HAVE_SSSE3 0 -+#define HAVE_SSE4_1 0 -+#define HAVE_AVX 0 -+#define HAVE_AVX2 0 -+#define HAVE_AVX512 0 -+#define HAVE_VSX 0 -+#define HAVE_MMI 0 -+#define HAVE_LSX 0 -+#define HAVE_LASX 0 -+#define HAVE_VPX_PORTS 1 -+#define HAVE_PTHREAD_H 1 -+#define HAVE_UNISTD_H 0 -+#define CONFIG_DEPENDENCY_TRACKING 1 -+#define CONFIG_EXTERNAL_BUILD 1 -+#define CONFIG_INSTALL_DOCS 0 -+#define CONFIG_INSTALL_BINS 1 -+#define CONFIG_INSTALL_LIBS 1 -+#define CONFIG_INSTALL_SRCS 0 -+#define CONFIG_DEBUG 0 -+#define CONFIG_GPROF 0 -+#define CONFIG_GCOV 0 -+#define CONFIG_RVCT 0 -+#define CONFIG_GCC 1 -+#define CONFIG_MSVS 0 -+#define CONFIG_PIC 0 -+#define CONFIG_BIG_ENDIAN 0 -+#define CONFIG_CODEC_SRCS 0 -+#define CONFIG_DEBUG_LIBS 0 -+#define CONFIG_DEQUANT_TOKENS 0 -+#define CONFIG_DC_RECON 0 -+#define CONFIG_RUNTIME_CPU_DETECT 0 -+#define CONFIG_POSTPROC 1 -+#define CONFIG_VP9_POSTPROC 1 -+#define CONFIG_MULTITHREAD 1 -+#define CONFIG_INTERNAL_STATS 0 -+#define CONFIG_VP8_ENCODER 1 -+#define CONFIG_VP8_DECODER 1 -+#define CONFIG_VP9_ENCODER 1 -+#define CONFIG_VP9_DECODER 1 -+#define CONFIG_VP8 1 -+#define CONFIG_VP9 1 -+#define CONFIG_ENCODERS 1 -+#define CONFIG_DECODERS 1 -+#define CONFIG_STATIC_MSVCRT 0 -+#define CONFIG_SPATIAL_RESAMPLING 1 -+#define CONFIG_REALTIME_ONLY 1 -+#define CONFIG_ONTHEFLY_BITPACKING 0 -+#define CONFIG_ERROR_CONCEALMENT 0 -+#define CONFIG_SHARED 0 -+#define CONFIG_STATIC 1 -+#define CONFIG_SMALL 0 -+#define CONFIG_POSTPROC_VISUALIZER 0 -+#define CONFIG_OS_SUPPORT 1 -+#define CONFIG_UNIT_TESTS 1 -+#define CONFIG_WEBM_IO 1 -+#define CONFIG_LIBYUV 0 -+#define CONFIG_DECODE_PERF_TESTS 0 -+#define CONFIG_ENCODE_PERF_TESTS 0 -+#define CONFIG_MULTI_RES_ENCODING 1 -+#define CONFIG_TEMPORAL_DENOISING 1 -+#define CONFIG_VP9_TEMPORAL_DENOISING 1 -+#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 -+#define CONFIG_VP9_HIGHBITDEPTH 1 -+#define CONFIG_BETTER_HW_COMPATIBILITY 0 -+#define CONFIG_EXPERIMENTAL 0 -+#define CONFIG_SIZE_LIMIT 1 -+#define CONFIG_ALWAYS_ADJUST_BPM 0 -+#define CONFIG_BITSTREAM_DEBUG 0 -+#define CONFIG_MISMATCH_DEBUG 0 -+#define CONFIG_FP_MB_STATS 0 -+#define CONFIG_EMULATE_HARDWARE 0 -+#define CONFIG_NON_GREEDY_MV 0 -+#define CONFIG_RATE_CTRL 0 -+#define CONFIG_COLLECT_COMPONENT_TIMING 0 -+#define DECODE_WIDTH_LIMIT 16384 -+#define DECODE_HEIGHT_LIMIT 16384 -+#endif /* VPX_CONFIG_H */ -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h -@@ -0,0 +1,4128 @@ -+// This file is generated. Do not edit. -+#ifndef VPX_DSP_RTCD_H_ -+#define VPX_DSP_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+/* -+ * DSP -+ */ -+ -+#include "vpx/vpx_integer.h" -+#include "vpx_dsp/vpx_dsp_common.h" -+#include "vpx_dsp/vpx_filter.h" -+#if CONFIG_VP9_ENCODER -+struct macroblock_plane; -+struct ScanOrder; -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+unsigned int vpx_avg_4x4_c(const uint8_t*, int p); -+#define vpx_avg_4x4 vpx_avg_4x4_c -+ -+unsigned int vpx_avg_8x8_c(const uint8_t*, int p); -+#define vpx_avg_8x8 vpx_avg_8x8_c -+ -+void vpx_comp_avg_pred_c(uint8_t* comp_pred, -+ const uint8_t* pred, -+ int width, -+ int height, -+ const uint8_t* ref, -+ int ref_stride); -+#define vpx_comp_avg_pred vpx_comp_avg_pred_c -+ -+void vpx_convolve8_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve8 vpx_convolve8_c -+ -+void vpx_convolve8_avg_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve8_avg vpx_convolve8_avg_c -+ -+void vpx_convolve8_avg_horiz_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve8_avg_horiz vpx_convolve8_avg_horiz_c -+ -+void vpx_convolve8_avg_vert_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve8_avg_vert vpx_convolve8_avg_vert_c -+ -+void vpx_convolve8_horiz_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve8_horiz vpx_convolve8_horiz_c -+ -+void vpx_convolve8_vert_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve8_vert vpx_convolve8_vert_c -+ -+void vpx_convolve_avg_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve_avg vpx_convolve_avg_c -+ -+void vpx_convolve_copy_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_convolve_copy vpx_convolve_copy_c -+ -+void vpx_d117_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c -+ -+void vpx_d117_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c -+ -+void vpx_d117_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c -+ -+void vpx_d117_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c -+ -+void vpx_d135_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c -+ -+void vpx_d135_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c -+ -+void vpx_d135_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c -+ -+void vpx_d135_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c -+ -+void vpx_d153_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c -+ -+void vpx_d153_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c -+ -+void vpx_d153_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c -+ -+void vpx_d153_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c -+ -+void vpx_d207_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c -+ -+void vpx_d207_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c -+ -+void vpx_d207_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c -+ -+void vpx_d207_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c -+ -+void vpx_d45_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d45_predictor_16x16 vpx_d45_predictor_16x16_c -+ -+void vpx_d45_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_c -+ -+void vpx_d45_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_c -+ -+void vpx_d45_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_c -+ -+void vpx_d45e_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c -+ -+void vpx_d63_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_c -+ -+void vpx_d63_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_c -+ -+void vpx_d63_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c -+ -+void vpx_d63_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c -+ -+void vpx_d63e_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c -+ -+void vpx_dc_128_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_c -+ -+void vpx_dc_128_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_c -+ -+void vpx_dc_128_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_c -+ -+void vpx_dc_128_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_c -+ -+void vpx_dc_left_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_c -+ -+void vpx_dc_left_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_c -+ -+void vpx_dc_left_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_c -+ -+void vpx_dc_left_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_c -+ -+void vpx_dc_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_c -+ -+void vpx_dc_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_c -+ -+void vpx_dc_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_c -+ -+void vpx_dc_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_c -+ -+void vpx_dc_top_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_c -+ -+void vpx_dc_top_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_c -+ -+void vpx_dc_top_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_c -+ -+void vpx_dc_top_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_c -+ -+void vpx_fdct16x16_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct16x16 vpx_fdct16x16_c -+ -+void vpx_fdct16x16_1_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct16x16_1 vpx_fdct16x16_1_c -+ -+void vpx_fdct32x32_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct32x32 vpx_fdct32x32_c -+ -+void vpx_fdct32x32_1_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct32x32_1 vpx_fdct32x32_1_c -+ -+void vpx_fdct32x32_rd_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct32x32_rd vpx_fdct32x32_rd_c -+ -+void vpx_fdct4x4_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct4x4 vpx_fdct4x4_c -+ -+void vpx_fdct4x4_1_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct4x4_1 vpx_fdct4x4_1_c -+ -+void vpx_fdct8x8_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct8x8 vpx_fdct8x8_c -+ -+void vpx_fdct8x8_1_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_fdct8x8_1 vpx_fdct8x8_1_c -+ -+void vpx_get16x16var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_get16x16var vpx_get16x16var_c -+ -+unsigned int vpx_get4x4sse_cs_c(const unsigned char* src_ptr, -+ int src_stride, -+ const unsigned char* ref_ptr, -+ int ref_stride); -+#define vpx_get4x4sse_cs vpx_get4x4sse_cs_c -+ -+void vpx_get8x8var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_get8x8var vpx_get8x8var_c -+ -+unsigned int vpx_get_mb_ss_c(const int16_t*); -+#define vpx_get_mb_ss vpx_get_mb_ss_c -+ -+void vpx_h_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_c -+ -+void vpx_h_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_c -+ -+void vpx_h_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_c -+ -+void vpx_h_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_c -+ -+void vpx_hadamard_16x16_c(const int16_t* src_diff, -+ ptrdiff_t src_stride, -+ tran_low_t* coeff); -+#define vpx_hadamard_16x16 vpx_hadamard_16x16_c -+ -+void vpx_hadamard_32x32_c(const int16_t* src_diff, -+ ptrdiff_t src_stride, -+ tran_low_t* coeff); -+#define vpx_hadamard_32x32 vpx_hadamard_32x32_c -+ -+void vpx_hadamard_8x8_c(const int16_t* src_diff, -+ ptrdiff_t src_stride, -+ tran_low_t* coeff); -+#define vpx_hadamard_8x8 vpx_hadamard_8x8_c -+ -+void vpx_he_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c -+ -+void vpx_highbd_10_get16x16var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c -+ -+void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c -+ -+unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_mse16x16 vpx_highbd_10_mse16x16_c -+ -+unsigned int vpx_highbd_10_mse16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_mse16x8 vpx_highbd_10_mse16x8_c -+ -+unsigned int vpx_highbd_10_mse8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_mse8x16 vpx_highbd_10_mse8x16_c -+ -+unsigned int vpx_highbd_10_mse8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_mse8x8 vpx_highbd_10_mse8x8_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance16x16_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance16x16 \ -+ vpx_highbd_10_sub_pixel_avg_variance16x16_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance16x32_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance16x32 \ -+ vpx_highbd_10_sub_pixel_avg_variance16x32_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance16x8 \ -+ vpx_highbd_10_sub_pixel_avg_variance16x8_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance32x16_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance32x16 \ -+ vpx_highbd_10_sub_pixel_avg_variance32x16_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance32x32_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance32x32 \ -+ vpx_highbd_10_sub_pixel_avg_variance32x32_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance32x64_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance32x64 \ -+ vpx_highbd_10_sub_pixel_avg_variance32x64_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance4x4 \ -+ vpx_highbd_10_sub_pixel_avg_variance4x4_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance4x8 \ -+ vpx_highbd_10_sub_pixel_avg_variance4x8_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance64x32_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance64x32 \ -+ vpx_highbd_10_sub_pixel_avg_variance64x32_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance64x64_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance64x64 \ -+ vpx_highbd_10_sub_pixel_avg_variance64x64_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance8x16 \ -+ vpx_highbd_10_sub_pixel_avg_variance8x16_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance8x4 \ -+ vpx_highbd_10_sub_pixel_avg_variance8x4_c -+ -+uint32_t vpx_highbd_10_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_10_sub_pixel_avg_variance8x8 \ -+ vpx_highbd_10_sub_pixel_avg_variance8x8_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance16x16 \ -+ vpx_highbd_10_sub_pixel_variance16x16_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance16x32 \ -+ vpx_highbd_10_sub_pixel_variance16x32_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance16x8 \ -+ vpx_highbd_10_sub_pixel_variance16x8_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance32x16 \ -+ vpx_highbd_10_sub_pixel_variance32x16_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance32x32 \ -+ vpx_highbd_10_sub_pixel_variance32x32_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance32x64 \ -+ vpx_highbd_10_sub_pixel_variance32x64_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance4x4 \ -+ vpx_highbd_10_sub_pixel_variance4x4_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance4x8 \ -+ vpx_highbd_10_sub_pixel_variance4x8_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance64x32 \ -+ vpx_highbd_10_sub_pixel_variance64x32_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance64x64 \ -+ vpx_highbd_10_sub_pixel_variance64x64_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance8x16 \ -+ vpx_highbd_10_sub_pixel_variance8x16_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance8x4 \ -+ vpx_highbd_10_sub_pixel_variance8x4_c -+ -+uint32_t vpx_highbd_10_sub_pixel_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_10_sub_pixel_variance8x8 \ -+ vpx_highbd_10_sub_pixel_variance8x8_c -+ -+unsigned int vpx_highbd_10_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance16x16 vpx_highbd_10_variance16x16_c -+ -+unsigned int vpx_highbd_10_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance16x32 vpx_highbd_10_variance16x32_c -+ -+unsigned int vpx_highbd_10_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance16x8 vpx_highbd_10_variance16x8_c -+ -+unsigned int vpx_highbd_10_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance32x16 vpx_highbd_10_variance32x16_c -+ -+unsigned int vpx_highbd_10_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance32x32 vpx_highbd_10_variance32x32_c -+ -+unsigned int vpx_highbd_10_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance32x64 vpx_highbd_10_variance32x64_c -+ -+unsigned int vpx_highbd_10_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance4x4 vpx_highbd_10_variance4x4_c -+ -+unsigned int vpx_highbd_10_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance4x8 vpx_highbd_10_variance4x8_c -+ -+unsigned int vpx_highbd_10_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance64x32 vpx_highbd_10_variance64x32_c -+ -+unsigned int vpx_highbd_10_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance64x64 vpx_highbd_10_variance64x64_c -+ -+unsigned int vpx_highbd_10_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance8x16 vpx_highbd_10_variance8x16_c -+ -+unsigned int vpx_highbd_10_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance8x4 vpx_highbd_10_variance8x4_c -+ -+unsigned int vpx_highbd_10_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_10_variance8x8 vpx_highbd_10_variance8x8_c -+ -+void vpx_highbd_12_get16x16var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c -+ -+void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c -+ -+unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_mse16x16 vpx_highbd_12_mse16x16_c -+ -+unsigned int vpx_highbd_12_mse16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_mse16x8 vpx_highbd_12_mse16x8_c -+ -+unsigned int vpx_highbd_12_mse8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_mse8x16 vpx_highbd_12_mse8x16_c -+ -+unsigned int vpx_highbd_12_mse8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_mse8x8 vpx_highbd_12_mse8x8_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance16x16_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance16x16 \ -+ vpx_highbd_12_sub_pixel_avg_variance16x16_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance16x32_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance16x32 \ -+ vpx_highbd_12_sub_pixel_avg_variance16x32_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance16x8 \ -+ vpx_highbd_12_sub_pixel_avg_variance16x8_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance32x16_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance32x16 \ -+ vpx_highbd_12_sub_pixel_avg_variance32x16_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance32x32_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance32x32 \ -+ vpx_highbd_12_sub_pixel_avg_variance32x32_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance32x64_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance32x64 \ -+ vpx_highbd_12_sub_pixel_avg_variance32x64_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance4x4 \ -+ vpx_highbd_12_sub_pixel_avg_variance4x4_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance4x8 \ -+ vpx_highbd_12_sub_pixel_avg_variance4x8_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance64x32_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance64x32 \ -+ vpx_highbd_12_sub_pixel_avg_variance64x32_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance64x64_c( -+ const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance64x64 \ -+ vpx_highbd_12_sub_pixel_avg_variance64x64_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance8x16 \ -+ vpx_highbd_12_sub_pixel_avg_variance8x16_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance8x4 \ -+ vpx_highbd_12_sub_pixel_avg_variance8x4_c -+ -+uint32_t vpx_highbd_12_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_12_sub_pixel_avg_variance8x8 \ -+ vpx_highbd_12_sub_pixel_avg_variance8x8_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance16x16 \ -+ vpx_highbd_12_sub_pixel_variance16x16_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance16x32 \ -+ vpx_highbd_12_sub_pixel_variance16x32_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance16x8 \ -+ vpx_highbd_12_sub_pixel_variance16x8_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance32x16 \ -+ vpx_highbd_12_sub_pixel_variance32x16_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance32x32 \ -+ vpx_highbd_12_sub_pixel_variance32x32_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance32x64 \ -+ vpx_highbd_12_sub_pixel_variance32x64_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance4x4 \ -+ vpx_highbd_12_sub_pixel_variance4x4_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance4x8 \ -+ vpx_highbd_12_sub_pixel_variance4x8_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance64x32 \ -+ vpx_highbd_12_sub_pixel_variance64x32_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance64x64 \ -+ vpx_highbd_12_sub_pixel_variance64x64_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance8x16 \ -+ vpx_highbd_12_sub_pixel_variance8x16_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance8x4 \ -+ vpx_highbd_12_sub_pixel_variance8x4_c -+ -+uint32_t vpx_highbd_12_sub_pixel_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_12_sub_pixel_variance8x8 \ -+ vpx_highbd_12_sub_pixel_variance8x8_c -+ -+unsigned int vpx_highbd_12_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance16x16 vpx_highbd_12_variance16x16_c -+ -+unsigned int vpx_highbd_12_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance16x32 vpx_highbd_12_variance16x32_c -+ -+unsigned int vpx_highbd_12_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance16x8 vpx_highbd_12_variance16x8_c -+ -+unsigned int vpx_highbd_12_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance32x16 vpx_highbd_12_variance32x16_c -+ -+unsigned int vpx_highbd_12_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance32x32 vpx_highbd_12_variance32x32_c -+ -+unsigned int vpx_highbd_12_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance32x64 vpx_highbd_12_variance32x64_c -+ -+unsigned int vpx_highbd_12_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance4x4 vpx_highbd_12_variance4x4_c -+ -+unsigned int vpx_highbd_12_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance4x8 vpx_highbd_12_variance4x8_c -+ -+unsigned int vpx_highbd_12_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance64x32 vpx_highbd_12_variance64x32_c -+ -+unsigned int vpx_highbd_12_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance64x64 vpx_highbd_12_variance64x64_c -+ -+unsigned int vpx_highbd_12_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance8x16 vpx_highbd_12_variance8x16_c -+ -+unsigned int vpx_highbd_12_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance8x4 vpx_highbd_12_variance8x4_c -+ -+unsigned int vpx_highbd_12_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_12_variance8x8 vpx_highbd_12_variance8x8_c -+ -+void vpx_highbd_8_get16x16var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c -+ -+void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse, -+ int* sum); -+#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c -+ -+unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_mse16x16 vpx_highbd_8_mse16x16_c -+ -+unsigned int vpx_highbd_8_mse16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_mse16x8 vpx_highbd_8_mse16x8_c -+ -+unsigned int vpx_highbd_8_mse8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_mse8x16 vpx_highbd_8_mse8x16_c -+ -+unsigned int vpx_highbd_8_mse8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_mse8x8 vpx_highbd_8_mse8x8_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance16x16 \ -+ vpx_highbd_8_sub_pixel_avg_variance16x16_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance16x32 \ -+ vpx_highbd_8_sub_pixel_avg_variance16x32_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance16x8 \ -+ vpx_highbd_8_sub_pixel_avg_variance16x8_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance32x16 \ -+ vpx_highbd_8_sub_pixel_avg_variance32x16_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance32x32 \ -+ vpx_highbd_8_sub_pixel_avg_variance32x32_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance32x64 \ -+ vpx_highbd_8_sub_pixel_avg_variance32x64_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance4x4 \ -+ vpx_highbd_8_sub_pixel_avg_variance4x4_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance4x8 \ -+ vpx_highbd_8_sub_pixel_avg_variance4x8_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance64x32 \ -+ vpx_highbd_8_sub_pixel_avg_variance64x32_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance64x64 \ -+ vpx_highbd_8_sub_pixel_avg_variance64x64_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance8x16 \ -+ vpx_highbd_8_sub_pixel_avg_variance8x16_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance8x4 \ -+ vpx_highbd_8_sub_pixel_avg_variance8x4_c -+ -+uint32_t vpx_highbd_8_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_highbd_8_sub_pixel_avg_variance8x8 \ -+ vpx_highbd_8_sub_pixel_avg_variance8x8_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance16x16 \ -+ vpx_highbd_8_sub_pixel_variance16x16_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance16x32 \ -+ vpx_highbd_8_sub_pixel_variance16x32_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance16x8 \ -+ vpx_highbd_8_sub_pixel_variance16x8_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance32x16 \ -+ vpx_highbd_8_sub_pixel_variance32x16_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance32x32 \ -+ vpx_highbd_8_sub_pixel_variance32x32_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance32x64 \ -+ vpx_highbd_8_sub_pixel_variance32x64_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance4x4 vpx_highbd_8_sub_pixel_variance4x4_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance4x8 vpx_highbd_8_sub_pixel_variance4x8_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance64x32 \ -+ vpx_highbd_8_sub_pixel_variance64x32_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance64x64 \ -+ vpx_highbd_8_sub_pixel_variance64x64_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance8x16 \ -+ vpx_highbd_8_sub_pixel_variance8x16_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance8x4 vpx_highbd_8_sub_pixel_variance8x4_c -+ -+uint32_t vpx_highbd_8_sub_pixel_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_highbd_8_sub_pixel_variance8x8 vpx_highbd_8_sub_pixel_variance8x8_c -+ -+unsigned int vpx_highbd_8_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance16x16 vpx_highbd_8_variance16x16_c -+ -+unsigned int vpx_highbd_8_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance16x32 vpx_highbd_8_variance16x32_c -+ -+unsigned int vpx_highbd_8_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance16x8 vpx_highbd_8_variance16x8_c -+ -+unsigned int vpx_highbd_8_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance32x16 vpx_highbd_8_variance32x16_c -+ -+unsigned int vpx_highbd_8_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance32x32 vpx_highbd_8_variance32x32_c -+ -+unsigned int vpx_highbd_8_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance32x64 vpx_highbd_8_variance32x64_c -+ -+unsigned int vpx_highbd_8_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance4x4 vpx_highbd_8_variance4x4_c -+ -+unsigned int vpx_highbd_8_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance4x8 vpx_highbd_8_variance4x8_c -+ -+unsigned int vpx_highbd_8_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance64x32 vpx_highbd_8_variance64x32_c -+ -+unsigned int vpx_highbd_8_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance64x64 vpx_highbd_8_variance64x64_c -+ -+unsigned int vpx_highbd_8_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance8x16 vpx_highbd_8_variance8x16_c -+ -+unsigned int vpx_highbd_8_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance8x4 vpx_highbd_8_variance8x4_c -+ -+unsigned int vpx_highbd_8_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_highbd_8_variance8x8 vpx_highbd_8_variance8x8_c -+ -+unsigned int vpx_highbd_avg_4x4_c(const uint8_t* s8, int p); -+#define vpx_highbd_avg_4x4 vpx_highbd_avg_4x4_c -+ -+unsigned int vpx_highbd_avg_8x8_c(const uint8_t* s8, int p); -+#define vpx_highbd_avg_8x8 vpx_highbd_avg_8x8_c -+ -+void vpx_highbd_comp_avg_pred_c(uint16_t* comp_pred, -+ const uint16_t* pred, -+ int width, -+ int height, -+ const uint16_t* ref, -+ int ref_stride); -+#define vpx_highbd_comp_avg_pred vpx_highbd_comp_avg_pred_c -+ -+void vpx_highbd_convolve8_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve8 vpx_highbd_convolve8_c -+ -+void vpx_highbd_convolve8_avg_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve8_avg vpx_highbd_convolve8_avg_c -+ -+void vpx_highbd_convolve8_avg_horiz_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve8_avg_horiz vpx_highbd_convolve8_avg_horiz_c -+ -+void vpx_highbd_convolve8_avg_vert_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve8_avg_vert vpx_highbd_convolve8_avg_vert_c -+ -+void vpx_highbd_convolve8_horiz_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve8_horiz vpx_highbd_convolve8_horiz_c -+ -+void vpx_highbd_convolve8_vert_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve8_vert vpx_highbd_convolve8_vert_c -+ -+void vpx_highbd_convolve_avg_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve_avg vpx_highbd_convolve_avg_c -+ -+void vpx_highbd_convolve_copy_c(const uint16_t* src, -+ ptrdiff_t src_stride, -+ uint16_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h, -+ int bd); -+#define vpx_highbd_convolve_copy vpx_highbd_convolve_copy_c -+ -+void vpx_highbd_d117_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d117_predictor_16x16 vpx_highbd_d117_predictor_16x16_c -+ -+void vpx_highbd_d117_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d117_predictor_32x32 vpx_highbd_d117_predictor_32x32_c -+ -+void vpx_highbd_d117_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d117_predictor_4x4 vpx_highbd_d117_predictor_4x4_c -+ -+void vpx_highbd_d117_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d117_predictor_8x8 vpx_highbd_d117_predictor_8x8_c -+ -+void vpx_highbd_d135_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d135_predictor_16x16 vpx_highbd_d135_predictor_16x16_c -+ -+void vpx_highbd_d135_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d135_predictor_32x32 vpx_highbd_d135_predictor_32x32_c -+ -+void vpx_highbd_d135_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d135_predictor_4x4 vpx_highbd_d135_predictor_4x4_c -+ -+void vpx_highbd_d135_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d135_predictor_8x8 vpx_highbd_d135_predictor_8x8_c -+ -+void vpx_highbd_d153_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d153_predictor_16x16 vpx_highbd_d153_predictor_16x16_c -+ -+void vpx_highbd_d153_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d153_predictor_32x32 vpx_highbd_d153_predictor_32x32_c -+ -+void vpx_highbd_d153_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d153_predictor_4x4 vpx_highbd_d153_predictor_4x4_c -+ -+void vpx_highbd_d153_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d153_predictor_8x8 vpx_highbd_d153_predictor_8x8_c -+ -+void vpx_highbd_d207_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d207_predictor_16x16 vpx_highbd_d207_predictor_16x16_c -+ -+void vpx_highbd_d207_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d207_predictor_32x32 vpx_highbd_d207_predictor_32x32_c -+ -+void vpx_highbd_d207_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d207_predictor_4x4 vpx_highbd_d207_predictor_4x4_c -+ -+void vpx_highbd_d207_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d207_predictor_8x8 vpx_highbd_d207_predictor_8x8_c -+ -+void vpx_highbd_d45_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d45_predictor_16x16 vpx_highbd_d45_predictor_16x16_c -+ -+void vpx_highbd_d45_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d45_predictor_32x32 vpx_highbd_d45_predictor_32x32_c -+ -+void vpx_highbd_d45_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d45_predictor_4x4 vpx_highbd_d45_predictor_4x4_c -+ -+void vpx_highbd_d45_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d45_predictor_8x8 vpx_highbd_d45_predictor_8x8_c -+ -+void vpx_highbd_d63_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d63_predictor_16x16 vpx_highbd_d63_predictor_16x16_c -+ -+void vpx_highbd_d63_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d63_predictor_32x32 vpx_highbd_d63_predictor_32x32_c -+ -+void vpx_highbd_d63_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d63_predictor_4x4 vpx_highbd_d63_predictor_4x4_c -+ -+void vpx_highbd_d63_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_d63_predictor_8x8 vpx_highbd_d63_predictor_8x8_c -+ -+void vpx_highbd_dc_128_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_128_predictor_16x16 vpx_highbd_dc_128_predictor_16x16_c -+ -+void vpx_highbd_dc_128_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_128_predictor_32x32 vpx_highbd_dc_128_predictor_32x32_c -+ -+void vpx_highbd_dc_128_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_128_predictor_4x4 vpx_highbd_dc_128_predictor_4x4_c -+ -+void vpx_highbd_dc_128_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_128_predictor_8x8 vpx_highbd_dc_128_predictor_8x8_c -+ -+void vpx_highbd_dc_left_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_left_predictor_16x16 vpx_highbd_dc_left_predictor_16x16_c -+ -+void vpx_highbd_dc_left_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_left_predictor_32x32 vpx_highbd_dc_left_predictor_32x32_c -+ -+void vpx_highbd_dc_left_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_left_predictor_4x4 vpx_highbd_dc_left_predictor_4x4_c -+ -+void vpx_highbd_dc_left_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_left_predictor_8x8 vpx_highbd_dc_left_predictor_8x8_c -+ -+void vpx_highbd_dc_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_predictor_16x16 vpx_highbd_dc_predictor_16x16_c -+ -+void vpx_highbd_dc_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_predictor_32x32 vpx_highbd_dc_predictor_32x32_c -+ -+void vpx_highbd_dc_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_predictor_4x4 vpx_highbd_dc_predictor_4x4_c -+ -+void vpx_highbd_dc_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_predictor_8x8 vpx_highbd_dc_predictor_8x8_c -+ -+void vpx_highbd_dc_top_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_top_predictor_16x16 vpx_highbd_dc_top_predictor_16x16_c -+ -+void vpx_highbd_dc_top_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_top_predictor_32x32 vpx_highbd_dc_top_predictor_32x32_c -+ -+void vpx_highbd_dc_top_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_top_predictor_4x4 vpx_highbd_dc_top_predictor_4x4_c -+ -+void vpx_highbd_dc_top_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_dc_top_predictor_8x8 vpx_highbd_dc_top_predictor_8x8_c -+ -+void vpx_highbd_fdct16x16_c(const int16_t* input, -+ tran_low_t* output, -+ int stride); -+#define vpx_highbd_fdct16x16 vpx_highbd_fdct16x16_c -+ -+void vpx_highbd_fdct16x16_1_c(const int16_t* input, -+ tran_low_t* output, -+ int stride); -+#define vpx_highbd_fdct16x16_1 vpx_highbd_fdct16x16_1_c -+ -+void vpx_highbd_fdct32x32_c(const int16_t* input, -+ tran_low_t* output, -+ int stride); -+#define vpx_highbd_fdct32x32 vpx_highbd_fdct32x32_c -+ -+void vpx_highbd_fdct32x32_1_c(const int16_t* input, -+ tran_low_t* output, -+ int stride); -+#define vpx_highbd_fdct32x32_1 vpx_highbd_fdct32x32_1_c -+ -+void vpx_highbd_fdct32x32_rd_c(const int16_t* input, -+ tran_low_t* output, -+ int stride); -+#define vpx_highbd_fdct32x32_rd vpx_highbd_fdct32x32_rd_c -+ -+void vpx_highbd_fdct4x4_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_highbd_fdct4x4 vpx_highbd_fdct4x4_c -+ -+void vpx_highbd_fdct8x8_c(const int16_t* input, tran_low_t* output, int stride); -+#define vpx_highbd_fdct8x8 vpx_highbd_fdct8x8_c -+ -+void vpx_highbd_fdct8x8_1_c(const int16_t* input, -+ tran_low_t* output, -+ int stride); -+#define vpx_highbd_fdct8x8_1 vpx_highbd_fdct8x8_1_c -+ -+void vpx_highbd_h_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_h_predictor_16x16 vpx_highbd_h_predictor_16x16_c -+ -+void vpx_highbd_h_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_h_predictor_32x32 vpx_highbd_h_predictor_32x32_c -+ -+void vpx_highbd_h_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_h_predictor_4x4 vpx_highbd_h_predictor_4x4_c -+ -+void vpx_highbd_h_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_h_predictor_8x8 vpx_highbd_h_predictor_8x8_c -+ -+void vpx_highbd_hadamard_16x16_c(const int16_t* src_diff, -+ ptrdiff_t src_stride, -+ tran_low_t* coeff); -+#define vpx_highbd_hadamard_16x16 vpx_highbd_hadamard_16x16_c -+ -+void vpx_highbd_hadamard_32x32_c(const int16_t* src_diff, -+ ptrdiff_t src_stride, -+ tran_low_t* coeff); -+#define vpx_highbd_hadamard_32x32 vpx_highbd_hadamard_32x32_c -+ -+void vpx_highbd_hadamard_8x8_c(const int16_t* src_diff, -+ ptrdiff_t src_stride, -+ tran_low_t* coeff); -+#define vpx_highbd_hadamard_8x8 vpx_highbd_hadamard_8x8_c -+ -+void vpx_highbd_idct16x16_10_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct16x16_10_add vpx_highbd_idct16x16_10_add_c -+ -+void vpx_highbd_idct16x16_1_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct16x16_1_add vpx_highbd_idct16x16_1_add_c -+ -+void vpx_highbd_idct16x16_256_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct16x16_256_add vpx_highbd_idct16x16_256_add_c -+ -+void vpx_highbd_idct16x16_38_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct16x16_38_add vpx_highbd_idct16x16_38_add_c -+ -+void vpx_highbd_idct32x32_1024_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct32x32_1024_add vpx_highbd_idct32x32_1024_add_c -+ -+void vpx_highbd_idct32x32_135_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct32x32_135_add vpx_highbd_idct32x32_135_add_c -+ -+void vpx_highbd_idct32x32_1_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct32x32_1_add vpx_highbd_idct32x32_1_add_c -+ -+void vpx_highbd_idct32x32_34_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct32x32_34_add vpx_highbd_idct32x32_34_add_c -+ -+void vpx_highbd_idct4x4_16_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct4x4_16_add vpx_highbd_idct4x4_16_add_c -+ -+void vpx_highbd_idct4x4_1_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct4x4_1_add vpx_highbd_idct4x4_1_add_c -+ -+void vpx_highbd_idct8x8_12_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct8x8_12_add vpx_highbd_idct8x8_12_add_c -+ -+void vpx_highbd_idct8x8_1_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct8x8_1_add vpx_highbd_idct8x8_1_add_c -+ -+void vpx_highbd_idct8x8_64_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_idct8x8_64_add vpx_highbd_idct8x8_64_add_c -+ -+void vpx_highbd_iwht4x4_16_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_iwht4x4_16_add vpx_highbd_iwht4x4_16_add_c -+ -+void vpx_highbd_iwht4x4_1_add_c(const tran_low_t* input, -+ uint16_t* dest, -+ int stride, -+ int bd); -+#define vpx_highbd_iwht4x4_1_add vpx_highbd_iwht4x4_1_add_c -+ -+void vpx_highbd_lpf_horizontal_16_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_horizontal_16 vpx_highbd_lpf_horizontal_16_c -+ -+void vpx_highbd_lpf_horizontal_16_dual_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_horizontal_16_dual vpx_highbd_lpf_horizontal_16_dual_c -+ -+void vpx_highbd_lpf_horizontal_4_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_horizontal_4 vpx_highbd_lpf_horizontal_4_c -+ -+void vpx_highbd_lpf_horizontal_4_dual_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1, -+ int bd); -+#define vpx_highbd_lpf_horizontal_4_dual vpx_highbd_lpf_horizontal_4_dual_c -+ -+void vpx_highbd_lpf_horizontal_8_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_horizontal_8 vpx_highbd_lpf_horizontal_8_c -+ -+void vpx_highbd_lpf_horizontal_8_dual_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1, -+ int bd); -+#define vpx_highbd_lpf_horizontal_8_dual vpx_highbd_lpf_horizontal_8_dual_c -+ -+void vpx_highbd_lpf_vertical_16_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_vertical_16 vpx_highbd_lpf_vertical_16_c -+ -+void vpx_highbd_lpf_vertical_16_dual_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_vertical_16_dual vpx_highbd_lpf_vertical_16_dual_c -+ -+void vpx_highbd_lpf_vertical_4_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_vertical_4 vpx_highbd_lpf_vertical_4_c -+ -+void vpx_highbd_lpf_vertical_4_dual_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1, -+ int bd); -+#define vpx_highbd_lpf_vertical_4_dual vpx_highbd_lpf_vertical_4_dual_c -+ -+void vpx_highbd_lpf_vertical_8_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh, -+ int bd); -+#define vpx_highbd_lpf_vertical_8 vpx_highbd_lpf_vertical_8_c -+ -+void vpx_highbd_lpf_vertical_8_dual_c(uint16_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1, -+ int bd); -+#define vpx_highbd_lpf_vertical_8_dual vpx_highbd_lpf_vertical_8_dual_c -+ -+void vpx_highbd_minmax_8x8_c(const uint8_t* s8, -+ int p, -+ const uint8_t* d8, -+ int dp, -+ int* min, -+ int* max); -+#define vpx_highbd_minmax_8x8 vpx_highbd_minmax_8x8_c -+ -+void vpx_highbd_quantize_b_c(const tran_low_t* coeff_ptr, -+ intptr_t n_coeffs, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vpx_highbd_quantize_b vpx_highbd_quantize_b_c -+ -+void vpx_highbd_quantize_b_32x32_c( -+ const tran_low_t* coeff_ptr, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vpx_highbd_quantize_b_32x32 vpx_highbd_quantize_b_32x32_c -+ -+unsigned int vpx_highbd_sad16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad16x16 vpx_highbd_sad16x16_c -+ -+unsigned int vpx_highbd_sad16x16_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad16x16_avg vpx_highbd_sad16x16_avg_c -+ -+void vpx_highbd_sad16x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad16x16x4d vpx_highbd_sad16x16x4d_c -+ -+unsigned int vpx_highbd_sad16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad16x32 vpx_highbd_sad16x32_c -+ -+unsigned int vpx_highbd_sad16x32_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad16x32_avg vpx_highbd_sad16x32_avg_c -+ -+void vpx_highbd_sad16x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad16x32x4d vpx_highbd_sad16x32x4d_c -+ -+unsigned int vpx_highbd_sad16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad16x8 vpx_highbd_sad16x8_c -+ -+unsigned int vpx_highbd_sad16x8_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad16x8_avg vpx_highbd_sad16x8_avg_c -+ -+void vpx_highbd_sad16x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad16x8x4d vpx_highbd_sad16x8x4d_c -+ -+unsigned int vpx_highbd_sad32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad32x16 vpx_highbd_sad32x16_c -+ -+unsigned int vpx_highbd_sad32x16_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad32x16_avg vpx_highbd_sad32x16_avg_c -+ -+void vpx_highbd_sad32x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad32x16x4d vpx_highbd_sad32x16x4d_c -+ -+unsigned int vpx_highbd_sad32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad32x32 vpx_highbd_sad32x32_c -+ -+unsigned int vpx_highbd_sad32x32_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad32x32_avg vpx_highbd_sad32x32_avg_c -+ -+void vpx_highbd_sad32x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad32x32x4d vpx_highbd_sad32x32x4d_c -+ -+unsigned int vpx_highbd_sad32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad32x64 vpx_highbd_sad32x64_c -+ -+unsigned int vpx_highbd_sad32x64_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad32x64_avg vpx_highbd_sad32x64_avg_c -+ -+void vpx_highbd_sad32x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad32x64x4d vpx_highbd_sad32x64x4d_c -+ -+unsigned int vpx_highbd_sad4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad4x4 vpx_highbd_sad4x4_c -+ -+unsigned int vpx_highbd_sad4x4_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad4x4_avg vpx_highbd_sad4x4_avg_c -+ -+void vpx_highbd_sad4x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad4x4x4d vpx_highbd_sad4x4x4d_c -+ -+unsigned int vpx_highbd_sad4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad4x8 vpx_highbd_sad4x8_c -+ -+unsigned int vpx_highbd_sad4x8_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad4x8_avg vpx_highbd_sad4x8_avg_c -+ -+void vpx_highbd_sad4x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad4x8x4d vpx_highbd_sad4x8x4d_c -+ -+unsigned int vpx_highbd_sad64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad64x32 vpx_highbd_sad64x32_c -+ -+unsigned int vpx_highbd_sad64x32_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad64x32_avg vpx_highbd_sad64x32_avg_c -+ -+void vpx_highbd_sad64x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad64x32x4d vpx_highbd_sad64x32x4d_c -+ -+unsigned int vpx_highbd_sad64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad64x64 vpx_highbd_sad64x64_c -+ -+unsigned int vpx_highbd_sad64x64_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad64x64_avg vpx_highbd_sad64x64_avg_c -+ -+void vpx_highbd_sad64x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad64x64x4d vpx_highbd_sad64x64x4d_c -+ -+unsigned int vpx_highbd_sad8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad8x16 vpx_highbd_sad8x16_c -+ -+unsigned int vpx_highbd_sad8x16_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad8x16_avg vpx_highbd_sad8x16_avg_c -+ -+void vpx_highbd_sad8x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad8x16x4d vpx_highbd_sad8x16x4d_c -+ -+unsigned int vpx_highbd_sad8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad8x4 vpx_highbd_sad8x4_c -+ -+unsigned int vpx_highbd_sad8x4_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad8x4_avg vpx_highbd_sad8x4_avg_c -+ -+void vpx_highbd_sad8x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad8x4x4d vpx_highbd_sad8x4x4d_c -+ -+unsigned int vpx_highbd_sad8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad8x8 vpx_highbd_sad8x8_c -+ -+unsigned int vpx_highbd_sad8x8_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_highbd_sad8x8_avg vpx_highbd_sad8x8_avg_c -+ -+void vpx_highbd_sad8x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad8x8x4d vpx_highbd_sad8x8x4d_c -+ -+unsigned int vpx_highbd_sad_skip_16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_16x16 vpx_highbd_sad_skip_16x16_c -+ -+void vpx_highbd_sad_skip_16x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_16x16x4d vpx_highbd_sad_skip_16x16x4d_c -+ -+unsigned int vpx_highbd_sad_skip_16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_16x32 vpx_highbd_sad_skip_16x32_c -+ -+void vpx_highbd_sad_skip_16x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_16x32x4d vpx_highbd_sad_skip_16x32x4d_c -+ -+unsigned int vpx_highbd_sad_skip_16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_16x8 vpx_highbd_sad_skip_16x8_c -+ -+void vpx_highbd_sad_skip_16x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_16x8x4d vpx_highbd_sad_skip_16x8x4d_c -+ -+unsigned int vpx_highbd_sad_skip_32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_32x16 vpx_highbd_sad_skip_32x16_c -+ -+void vpx_highbd_sad_skip_32x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_32x16x4d vpx_highbd_sad_skip_32x16x4d_c -+ -+unsigned int vpx_highbd_sad_skip_32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_32x32 vpx_highbd_sad_skip_32x32_c -+ -+void vpx_highbd_sad_skip_32x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_32x32x4d vpx_highbd_sad_skip_32x32x4d_c -+ -+unsigned int vpx_highbd_sad_skip_32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_32x64 vpx_highbd_sad_skip_32x64_c -+ -+void vpx_highbd_sad_skip_32x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_32x64x4d vpx_highbd_sad_skip_32x64x4d_c -+ -+unsigned int vpx_highbd_sad_skip_4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_4x4 vpx_highbd_sad_skip_4x4_c -+ -+void vpx_highbd_sad_skip_4x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_4x4x4d vpx_highbd_sad_skip_4x4x4d_c -+ -+unsigned int vpx_highbd_sad_skip_4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_4x8 vpx_highbd_sad_skip_4x8_c -+ -+void vpx_highbd_sad_skip_4x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_4x8x4d vpx_highbd_sad_skip_4x8x4d_c -+ -+unsigned int vpx_highbd_sad_skip_64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_64x32 vpx_highbd_sad_skip_64x32_c -+ -+void vpx_highbd_sad_skip_64x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_64x32x4d vpx_highbd_sad_skip_64x32x4d_c -+ -+unsigned int vpx_highbd_sad_skip_64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_64x64 vpx_highbd_sad_skip_64x64_c -+ -+void vpx_highbd_sad_skip_64x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_64x64x4d vpx_highbd_sad_skip_64x64x4d_c -+ -+unsigned int vpx_highbd_sad_skip_8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_8x16 vpx_highbd_sad_skip_8x16_c -+ -+void vpx_highbd_sad_skip_8x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_8x16x4d vpx_highbd_sad_skip_8x16x4d_c -+ -+unsigned int vpx_highbd_sad_skip_8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_8x4 vpx_highbd_sad_skip_8x4_c -+ -+void vpx_highbd_sad_skip_8x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_8x4x4d vpx_highbd_sad_skip_8x4x4d_c -+ -+unsigned int vpx_highbd_sad_skip_8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_highbd_sad_skip_8x8 vpx_highbd_sad_skip_8x8_c -+ -+void vpx_highbd_sad_skip_8x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_highbd_sad_skip_8x8x4d vpx_highbd_sad_skip_8x8x4d_c -+ -+int vpx_highbd_satd_c(const tran_low_t* coeff, int length); -+#define vpx_highbd_satd vpx_highbd_satd_c -+ -+int64_t vpx_highbd_sse_c(const uint8_t* a8, -+ int a_stride, -+ const uint8_t* b8, -+ int b_stride, -+ int width, -+ int height); -+#define vpx_highbd_sse vpx_highbd_sse_c -+ -+void vpx_highbd_subtract_block_c(int rows, -+ int cols, -+ int16_t* diff_ptr, -+ ptrdiff_t diff_stride, -+ const uint8_t* src8_ptr, -+ ptrdiff_t src_stride, -+ const uint8_t* pred8_ptr, -+ ptrdiff_t pred_stride, -+ int bd); -+#define vpx_highbd_subtract_block vpx_highbd_subtract_block_c -+ -+void vpx_highbd_tm_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_tm_predictor_16x16 vpx_highbd_tm_predictor_16x16_c -+ -+void vpx_highbd_tm_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_tm_predictor_32x32 vpx_highbd_tm_predictor_32x32_c -+ -+void vpx_highbd_tm_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_tm_predictor_4x4 vpx_highbd_tm_predictor_4x4_c -+ -+void vpx_highbd_tm_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_tm_predictor_8x8 vpx_highbd_tm_predictor_8x8_c -+ -+void vpx_highbd_v_predictor_16x16_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_v_predictor_16x16 vpx_highbd_v_predictor_16x16_c -+ -+void vpx_highbd_v_predictor_32x32_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_v_predictor_32x32 vpx_highbd_v_predictor_32x32_c -+ -+void vpx_highbd_v_predictor_4x4_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_v_predictor_4x4 vpx_highbd_v_predictor_4x4_c -+ -+void vpx_highbd_v_predictor_8x8_c(uint16_t* dst, -+ ptrdiff_t stride, -+ const uint16_t* above, -+ const uint16_t* left, -+ int bd); -+#define vpx_highbd_v_predictor_8x8 vpx_highbd_v_predictor_8x8_c -+ -+void vpx_idct16x16_10_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct16x16_10_add vpx_idct16x16_10_add_c -+ -+void vpx_idct16x16_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct16x16_1_add vpx_idct16x16_1_add_c -+ -+void vpx_idct16x16_256_add_c(const tran_low_t* input, -+ uint8_t* dest, -+ int stride); -+#define vpx_idct16x16_256_add vpx_idct16x16_256_add_c -+ -+void vpx_idct16x16_38_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct16x16_38_add vpx_idct16x16_38_add_c -+ -+void vpx_idct32x32_1024_add_c(const tran_low_t* input, -+ uint8_t* dest, -+ int stride); -+#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_c -+ -+void vpx_idct32x32_135_add_c(const tran_low_t* input, -+ uint8_t* dest, -+ int stride); -+#define vpx_idct32x32_135_add vpx_idct32x32_135_add_c -+ -+void vpx_idct32x32_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct32x32_1_add vpx_idct32x32_1_add_c -+ -+void vpx_idct32x32_34_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct32x32_34_add vpx_idct32x32_34_add_c -+ -+void vpx_idct4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct4x4_16_add vpx_idct4x4_16_add_c -+ -+void vpx_idct4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct4x4_1_add vpx_idct4x4_1_add_c -+ -+void vpx_idct8x8_12_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct8x8_12_add vpx_idct8x8_12_add_c -+ -+void vpx_idct8x8_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct8x8_1_add vpx_idct8x8_1_add_c -+ -+void vpx_idct8x8_64_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_idct8x8_64_add vpx_idct8x8_64_add_c -+ -+int16_t vpx_int_pro_col_c(const uint8_t* ref, const int width); -+#define vpx_int_pro_col vpx_int_pro_col_c -+ -+void vpx_int_pro_row_c(int16_t hbuf[16], -+ const uint8_t* ref, -+ const int ref_stride, -+ const int height); -+#define vpx_int_pro_row vpx_int_pro_row_c -+ -+void vpx_iwht4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_c -+ -+void vpx_iwht4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); -+#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c -+ -+void vpx_lpf_horizontal_16_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_horizontal_16 vpx_lpf_horizontal_16_c -+ -+void vpx_lpf_horizontal_16_dual_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_horizontal_16_dual vpx_lpf_horizontal_16_dual_c -+ -+void vpx_lpf_horizontal_4_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_c -+ -+void vpx_lpf_horizontal_4_dual_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1); -+#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_c -+ -+void vpx_lpf_horizontal_8_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_c -+ -+void vpx_lpf_horizontal_8_dual_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1); -+#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_c -+ -+void vpx_lpf_vertical_16_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_c -+ -+void vpx_lpf_vertical_16_dual_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_c -+ -+void vpx_lpf_vertical_4_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_c -+ -+void vpx_lpf_vertical_4_dual_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1); -+#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_c -+ -+void vpx_lpf_vertical_8_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit, -+ const uint8_t* limit, -+ const uint8_t* thresh); -+#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_c -+ -+void vpx_lpf_vertical_8_dual_c(uint8_t* s, -+ int pitch, -+ const uint8_t* blimit0, -+ const uint8_t* limit0, -+ const uint8_t* thresh0, -+ const uint8_t* blimit1, -+ const uint8_t* limit1, -+ const uint8_t* thresh1); -+#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_c -+ -+void vpx_mbpost_proc_across_ip_c(unsigned char* src, -+ int pitch, -+ int rows, -+ int cols, -+ int flimit); -+#define vpx_mbpost_proc_across_ip vpx_mbpost_proc_across_ip_c -+ -+void vpx_mbpost_proc_down_c(unsigned char* dst, -+ int pitch, -+ int rows, -+ int cols, -+ int flimit); -+#define vpx_mbpost_proc_down vpx_mbpost_proc_down_c -+ -+void vpx_minmax_8x8_c(const uint8_t* s, -+ int p, -+ const uint8_t* d, -+ int dp, -+ int* min, -+ int* max); -+#define vpx_minmax_8x8 vpx_minmax_8x8_c -+ -+unsigned int vpx_mse16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_mse16x16 vpx_mse16x16_c -+ -+unsigned int vpx_mse16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_mse16x8 vpx_mse16x8_c -+ -+unsigned int vpx_mse8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_mse8x16 vpx_mse8x16_c -+ -+unsigned int vpx_mse8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_mse8x8 vpx_mse8x8_c -+ -+void vpx_plane_add_noise_c(uint8_t* start, -+ const int8_t* noise, -+ int blackclamp, -+ int whiteclamp, -+ int width, -+ int height, -+ int pitch); -+#define vpx_plane_add_noise vpx_plane_add_noise_c -+ -+void vpx_post_proc_down_and_across_mb_row_c(unsigned char* src, -+ unsigned char* dst, -+ int src_pitch, -+ int dst_pitch, -+ int cols, -+ unsigned char* flimits, -+ int size); -+#define vpx_post_proc_down_and_across_mb_row \ -+ vpx_post_proc_down_and_across_mb_row_c -+ -+void vpx_quantize_b_c(const tran_low_t* coeff_ptr, -+ intptr_t n_coeffs, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vpx_quantize_b vpx_quantize_b_c -+ -+void vpx_quantize_b_32x32_c(const tran_low_t* coeff_ptr, -+ const struct macroblock_plane* const mb_plane, -+ tran_low_t* qcoeff_ptr, -+ tran_low_t* dqcoeff_ptr, -+ const int16_t* dequant_ptr, -+ uint16_t* eob_ptr, -+ const struct ScanOrder* const scan_order); -+#define vpx_quantize_b_32x32 vpx_quantize_b_32x32_c -+ -+unsigned int vpx_sad16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad16x16 vpx_sad16x16_c -+ -+unsigned int vpx_sad16x16_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad16x16_avg vpx_sad16x16_avg_c -+ -+void vpx_sad16x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad16x16x4d vpx_sad16x16x4d_c -+ -+unsigned int vpx_sad16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad16x32 vpx_sad16x32_c -+ -+unsigned int vpx_sad16x32_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad16x32_avg vpx_sad16x32_avg_c -+ -+void vpx_sad16x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad16x32x4d vpx_sad16x32x4d_c -+ -+unsigned int vpx_sad16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad16x8 vpx_sad16x8_c -+ -+unsigned int vpx_sad16x8_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad16x8_avg vpx_sad16x8_avg_c -+ -+void vpx_sad16x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad16x8x4d vpx_sad16x8x4d_c -+ -+unsigned int vpx_sad32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad32x16 vpx_sad32x16_c -+ -+unsigned int vpx_sad32x16_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad32x16_avg vpx_sad32x16_avg_c -+ -+void vpx_sad32x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad32x16x4d vpx_sad32x16x4d_c -+ -+unsigned int vpx_sad32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad32x32 vpx_sad32x32_c -+ -+unsigned int vpx_sad32x32_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad32x32_avg vpx_sad32x32_avg_c -+ -+void vpx_sad32x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad32x32x4d vpx_sad32x32x4d_c -+ -+unsigned int vpx_sad32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad32x64 vpx_sad32x64_c -+ -+unsigned int vpx_sad32x64_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad32x64_avg vpx_sad32x64_avg_c -+ -+void vpx_sad32x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad32x64x4d vpx_sad32x64x4d_c -+ -+unsigned int vpx_sad4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad4x4 vpx_sad4x4_c -+ -+unsigned int vpx_sad4x4_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad4x4_avg vpx_sad4x4_avg_c -+ -+void vpx_sad4x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad4x4x4d vpx_sad4x4x4d_c -+ -+unsigned int vpx_sad4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad4x8 vpx_sad4x8_c -+ -+unsigned int vpx_sad4x8_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad4x8_avg vpx_sad4x8_avg_c -+ -+void vpx_sad4x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad4x8x4d vpx_sad4x8x4d_c -+ -+unsigned int vpx_sad64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad64x32 vpx_sad64x32_c -+ -+unsigned int vpx_sad64x32_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad64x32_avg vpx_sad64x32_avg_c -+ -+void vpx_sad64x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad64x32x4d vpx_sad64x32x4d_c -+ -+unsigned int vpx_sad64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad64x64 vpx_sad64x64_c -+ -+unsigned int vpx_sad64x64_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad64x64_avg vpx_sad64x64_avg_c -+ -+void vpx_sad64x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad64x64x4d vpx_sad64x64x4d_c -+ -+unsigned int vpx_sad8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad8x16 vpx_sad8x16_c -+ -+unsigned int vpx_sad8x16_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad8x16_avg vpx_sad8x16_avg_c -+ -+void vpx_sad8x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad8x16x4d vpx_sad8x16x4d_c -+ -+unsigned int vpx_sad8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad8x4 vpx_sad8x4_c -+ -+unsigned int vpx_sad8x4_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad8x4_avg vpx_sad8x4_avg_c -+ -+void vpx_sad8x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad8x4x4d vpx_sad8x4x4d_c -+ -+unsigned int vpx_sad8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad8x8 vpx_sad8x8_c -+ -+unsigned int vpx_sad8x8_avg_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ const uint8_t* second_pred); -+#define vpx_sad8x8_avg vpx_sad8x8_avg_c -+ -+void vpx_sad8x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad8x8x4d vpx_sad8x8x4d_c -+ -+unsigned int vpx_sad_skip_16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_16x16 vpx_sad_skip_16x16_c -+ -+void vpx_sad_skip_16x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_16x16x4d vpx_sad_skip_16x16x4d_c -+ -+unsigned int vpx_sad_skip_16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_16x32 vpx_sad_skip_16x32_c -+ -+void vpx_sad_skip_16x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_16x32x4d vpx_sad_skip_16x32x4d_c -+ -+unsigned int vpx_sad_skip_16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_16x8 vpx_sad_skip_16x8_c -+ -+void vpx_sad_skip_16x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_16x8x4d vpx_sad_skip_16x8x4d_c -+ -+unsigned int vpx_sad_skip_32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_32x16 vpx_sad_skip_32x16_c -+ -+void vpx_sad_skip_32x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_32x16x4d vpx_sad_skip_32x16x4d_c -+ -+unsigned int vpx_sad_skip_32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_32x32 vpx_sad_skip_32x32_c -+ -+void vpx_sad_skip_32x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_32x32x4d vpx_sad_skip_32x32x4d_c -+ -+unsigned int vpx_sad_skip_32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_32x64 vpx_sad_skip_32x64_c -+ -+void vpx_sad_skip_32x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_32x64x4d vpx_sad_skip_32x64x4d_c -+ -+unsigned int vpx_sad_skip_4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_4x4 vpx_sad_skip_4x4_c -+ -+void vpx_sad_skip_4x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_4x4x4d vpx_sad_skip_4x4x4d_c -+ -+unsigned int vpx_sad_skip_4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_4x8 vpx_sad_skip_4x8_c -+ -+void vpx_sad_skip_4x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_4x8x4d vpx_sad_skip_4x8x4d_c -+ -+unsigned int vpx_sad_skip_64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_64x32 vpx_sad_skip_64x32_c -+ -+void vpx_sad_skip_64x32x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_64x32x4d vpx_sad_skip_64x32x4d_c -+ -+unsigned int vpx_sad_skip_64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_64x64 vpx_sad_skip_64x64_c -+ -+void vpx_sad_skip_64x64x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_64x64x4d vpx_sad_skip_64x64x4d_c -+ -+unsigned int vpx_sad_skip_8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_8x16 vpx_sad_skip_8x16_c -+ -+void vpx_sad_skip_8x16x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_8x16x4d vpx_sad_skip_8x16x4d_c -+ -+unsigned int vpx_sad_skip_8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_8x4 vpx_sad_skip_8x4_c -+ -+void vpx_sad_skip_8x4x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_8x4x4d vpx_sad_skip_8x4x4d_c -+ -+unsigned int vpx_sad_skip_8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride); -+#define vpx_sad_skip_8x8 vpx_sad_skip_8x8_c -+ -+void vpx_sad_skip_8x8x4d_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* const ref_array[4], -+ int ref_stride, -+ uint32_t sad_array[4]); -+#define vpx_sad_skip_8x8x4d vpx_sad_skip_8x8x4d_c -+ -+int vpx_satd_c(const tran_low_t* coeff, int length); -+#define vpx_satd vpx_satd_c -+ -+void vpx_scaled_2d_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_scaled_2d vpx_scaled_2d_c -+ -+void vpx_scaled_avg_2d_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c -+ -+void vpx_scaled_avg_horiz_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c -+ -+void vpx_scaled_avg_vert_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c -+ -+void vpx_scaled_horiz_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_scaled_horiz vpx_scaled_horiz_c -+ -+void vpx_scaled_vert_c(const uint8_t* src, -+ ptrdiff_t src_stride, -+ uint8_t* dst, -+ ptrdiff_t dst_stride, -+ const InterpKernel* filter, -+ int x0_q4, -+ int x_step_q4, -+ int y0_q4, -+ int y_step_q4, -+ int w, -+ int h); -+#define vpx_scaled_vert vpx_scaled_vert_c -+ -+int64_t vpx_sse_c(const uint8_t* a, -+ int a_stride, -+ const uint8_t* b, -+ int b_stride, -+ int width, -+ int height); -+#define vpx_sse vpx_sse_c -+ -+uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance16x16 vpx_sub_pixel_avg_variance16x16_c -+ -+uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance16x32 vpx_sub_pixel_avg_variance16x32_c -+ -+uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance16x8 vpx_sub_pixel_avg_variance16x8_c -+ -+uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance32x16 vpx_sub_pixel_avg_variance32x16_c -+ -+uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance32x32 vpx_sub_pixel_avg_variance32x32_c -+ -+uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance32x64 vpx_sub_pixel_avg_variance32x64_c -+ -+uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance4x4 vpx_sub_pixel_avg_variance4x4_c -+ -+uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance4x8 vpx_sub_pixel_avg_variance4x8_c -+ -+uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance64x32 vpx_sub_pixel_avg_variance64x32_c -+ -+uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance64x64 vpx_sub_pixel_avg_variance64x64_c -+ -+uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance8x16 vpx_sub_pixel_avg_variance8x16_c -+ -+uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance8x4 vpx_sub_pixel_avg_variance8x4_c -+ -+uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse, -+ const uint8_t* second_pred); -+#define vpx_sub_pixel_avg_variance8x8 vpx_sub_pixel_avg_variance8x8_c -+ -+uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance16x16 vpx_sub_pixel_variance16x16_c -+ -+uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance16x32 vpx_sub_pixel_variance16x32_c -+ -+uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance16x8 vpx_sub_pixel_variance16x8_c -+ -+uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance32x16 vpx_sub_pixel_variance32x16_c -+ -+uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance32x32 vpx_sub_pixel_variance32x32_c -+ -+uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance32x64 vpx_sub_pixel_variance32x64_c -+ -+uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance4x4 vpx_sub_pixel_variance4x4_c -+ -+uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance4x8 vpx_sub_pixel_variance4x8_c -+ -+uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance64x32 vpx_sub_pixel_variance64x32_c -+ -+uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance64x64 vpx_sub_pixel_variance64x64_c -+ -+uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance8x16 vpx_sub_pixel_variance8x16_c -+ -+uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance8x4 vpx_sub_pixel_variance8x4_c -+ -+uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ int x_offset, -+ int y_offset, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ uint32_t* sse); -+#define vpx_sub_pixel_variance8x8 vpx_sub_pixel_variance8x8_c -+ -+void vpx_subtract_block_c(int rows, -+ int cols, -+ int16_t* diff_ptr, -+ ptrdiff_t diff_stride, -+ const uint8_t* src_ptr, -+ ptrdiff_t src_stride, -+ const uint8_t* pred_ptr, -+ ptrdiff_t pred_stride); -+#define vpx_subtract_block vpx_subtract_block_c -+ -+uint64_t vpx_sum_squares_2d_i16_c(const int16_t* src, int stride, int size); -+#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_c -+ -+void vpx_tm_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_c -+ -+void vpx_tm_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_c -+ -+void vpx_tm_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_c -+ -+void vpx_tm_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_c -+ -+void vpx_v_predictor_16x16_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_c -+ -+void vpx_v_predictor_32x32_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_c -+ -+void vpx_v_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_c -+ -+void vpx_v_predictor_8x8_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_c -+ -+unsigned int vpx_variance16x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance16x16 vpx_variance16x16_c -+ -+unsigned int vpx_variance16x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance16x32 vpx_variance16x32_c -+ -+unsigned int vpx_variance16x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance16x8 vpx_variance16x8_c -+ -+unsigned int vpx_variance32x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance32x16 vpx_variance32x16_c -+ -+unsigned int vpx_variance32x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance32x32 vpx_variance32x32_c -+ -+unsigned int vpx_variance32x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance32x64 vpx_variance32x64_c -+ -+unsigned int vpx_variance4x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance4x4 vpx_variance4x4_c -+ -+unsigned int vpx_variance4x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance4x8 vpx_variance4x8_c -+ -+unsigned int vpx_variance64x32_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance64x32 vpx_variance64x32_c -+ -+unsigned int vpx_variance64x64_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance64x64 vpx_variance64x64_c -+ -+unsigned int vpx_variance8x16_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance8x16 vpx_variance8x16_c -+ -+unsigned int vpx_variance8x4_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance8x4 vpx_variance8x4_c -+ -+unsigned int vpx_variance8x8_c(const uint8_t* src_ptr, -+ int src_stride, -+ const uint8_t* ref_ptr, -+ int ref_stride, -+ unsigned int* sse); -+#define vpx_variance8x8 vpx_variance8x8_c -+ -+void vpx_ve_predictor_4x4_c(uint8_t* dst, -+ ptrdiff_t stride, -+ const uint8_t* above, -+ const uint8_t* left); -+#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c -+ -+int vpx_vector_var_c(const int16_t* ref, const int16_t* src, const int bwl); -+#define vpx_vector_var vpx_vector_var_c -+ -+void vpx_dsp_rtcd(void); -+ -+#include "vpx_config.h" -+ -+#ifdef RTCD_C -+static void setup_rtcd_internal(void) {} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h -=================================================================== ---- /dev/null -+++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h -@@ -0,0 +1,96 @@ -+// This file is generated. Do not edit. -+#ifndef VPX_SCALE_RTCD_H_ -+#define VPX_SCALE_RTCD_H_ -+ -+#ifdef RTCD_C -+#define RTCD_EXTERN -+#else -+#define RTCD_EXTERN extern -+#endif -+ -+struct yv12_buffer_config; -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+void vp8_horizontal_line_2_1_scale_c(const unsigned char* source, -+ unsigned int source_width, -+ unsigned char* dest, -+ unsigned int dest_width); -+#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c -+ -+void vp8_horizontal_line_5_3_scale_c(const unsigned char* source, -+ unsigned int source_width, -+ unsigned char* dest, -+ unsigned int dest_width); -+#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c -+ -+void vp8_horizontal_line_5_4_scale_c(const unsigned char* source, -+ unsigned int source_width, -+ unsigned char* dest, -+ unsigned int dest_width); -+#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c -+ -+void vp8_vertical_band_2_1_scale_c(unsigned char* source, -+ unsigned int src_pitch, -+ unsigned char* dest, -+ unsigned int dest_pitch, -+ unsigned int dest_width); -+#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c -+ -+void vp8_vertical_band_2_1_scale_i_c(unsigned char* source, -+ unsigned int src_pitch, -+ unsigned char* dest, -+ unsigned int dest_pitch, -+ unsigned int dest_width); -+#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c -+ -+void vp8_vertical_band_5_3_scale_c(unsigned char* source, -+ unsigned int src_pitch, -+ unsigned char* dest, -+ unsigned int dest_pitch, -+ unsigned int dest_width); -+#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c -+ -+void vp8_vertical_band_5_4_scale_c(unsigned char* source, -+ unsigned int src_pitch, -+ unsigned char* dest, -+ unsigned int dest_pitch, -+ unsigned int dest_width); -+#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c -+ -+void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, -+ struct yv12_buffer_config* dst_ybc); -+#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c -+ -+void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf); -+#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c -+ -+void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf); -+#define vpx_extend_frame_borders vpx_extend_frame_borders_c -+ -+void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf); -+#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c -+ -+void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, -+ struct yv12_buffer_config* dst_ybc); -+#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c -+ -+void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, -+ struct yv12_buffer_config* dst_ybc); -+#define vpx_yv12_copy_y vpx_yv12_copy_y_c -+ -+void vpx_scale_rtcd(void); -+ -+#include "vpx_config.h" -+ -+#ifdef RTCD_C -+static void setup_rtcd_internal(void) {} -+#endif -+ -+#ifdef __cplusplus -+} // extern "C" -+#endif -+ -+#endif -From 8c24c695052d156fd1322d6dacfab117b92cb175 Mon Sep 17 00:00:00 2001 -From: Shawn Anastasio -Date: Thu, 30 Aug 2018 17:32:05 -0500 -Subject: [PATCH] Implement support for PPC64 on Linux - -This patch implements support for the PPC64 architecture on Linux hosts. ---- - CONTRIBUTORS | 1 + - minidump/minidump_context.h | 64 ++++++ - minidump/minidump_context_writer.cc | 50 +++++ - minidump/minidump_context_writer.h | 39 ++++ - minidump/minidump_context_writer_test.cc | 15 ++ - minidump/minidump_misc_info_writer.cc | 2 + - minidump/test/minidump_context_test_util.cc | 67 ++++++ - minidump/test/minidump_context_test_util.h | 3 + - snapshot/capture_memory.cc | 5 + - snapshot/cpu_architecture.h | 5 +- - snapshot/cpu_context.cc | 5 + - snapshot/cpu_context.h | 19 ++ - snapshot/linux/cpu_context_linux.h | 73 ++++++ - snapshot/linux/debug_rendezvous_test.cc | 4 +- - snapshot/linux/exception_snapshot_linux.cc | 63 ++++++ - snapshot/linux/exception_snapshot_linux.h | 2 + - .../linux/exception_snapshot_linux_test.cc | 21 ++ - snapshot/linux/process_reader_linux.cc | 2 + - snapshot/linux/signal_context.h | 83 +++++++ - snapshot/linux/system_snapshot_linux.cc | 11 + - snapshot/linux/thread_snapshot_linux.cc | 8 + - snapshot/linux/thread_snapshot_linux.h | 2 + - snapshot/test/test_cpu_context.cc | 33 +++ - snapshot/test/test_cpu_context.h | 1 + - test/linux/get_tls.cc | 2 + - test/multiprocess_posix.cc | 3 +- - util/linux/auxiliary_vector.cc | 5 + - util/linux/ptracer.cc | 61 +++++ - util/linux/thread_info.h | 55 +++++ - util/misc/capture_context.h | 1 + - util/misc/capture_context_linux.S | 212 +++++++++++++++++- - util/misc/capture_context_test.cc | 3 +- - util/misc/capture_context_test_util_linux.cc | 6 + - 36 files changed, 932 insertions(+), 12 deletions(-) - -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/CONTRIBUTORS -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/CONTRIBUTORS -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/CONTRIBUTORS -@@ -13,3 +13,5 @@ Mark Mentovai - Robert Sesek - Scott Graham - Joshua Peraza -+Shawn Anastasio -+Timothy Pearson -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context.h -@@ -686,6 +686,70 @@ struct MinidumpContextRISCV64 { - uint32_t fcsr; - }; - -+//! \brief ppc64-specific flags for MinidumpPPC64::context_flags -+//! Based on minidump_cpu_ppc64.h from breakpad -+enum MinidumpContextPPC64Flags : uint32_t { -+ //! \brief Identifies the context as PPC64. -+ kMinidumpContextPPC64 = 0x01000000, -+ -+ //! \brief Indicates the validity of general purpose registers. -+ //! -+ //! Registers `r0`-`r31`, `nip`, `msr`, `lr`, etc. are valid. -+ kMinidumpContextPPC64Base = kMinidumpContextPPC64 | 0x00000001, -+ -+ //! \brief Indicates the validity of floating point registers. -+ //! -+ //! Registers `fp0`-`fp31`, `fpscr` are valid. -+ kMinidumpContextPPC64Floating = kMinidumpContextPPC64 | 0x00000008, -+ -+ //! \brief Indicates the validity of Altivec/VMX registers. -+ //! -+ //! Registers `v0`-`v31`, `vscr`, `vrsave`. -+ kMinidumpContextPPC64Vector = kMinidumpContextPPC64 | 0x00000020, -+ -+ //! \brief Indicates the validity of all registers -+ kMinidumpContextPPC64All = kMinidumpContextPPC64Base | -+ kMinidumpContextPPC64Floating | -+ kMinidumpContextPPC64Vector -+}; -+ -+//! \brief A PPC64 CPU context carried in a minidump file. -+//! Based on minidump_cpu_ppc64.h from breakpad. -+struct MinidumpContextPPC64 { -+ uint64_t context_flags; -+ -+ //! \brief General purpose registers. -+ uint64_t nip; -+ uint64_t msr; -+ uint64_t regs[32]; -+ uint64_t ccr; -+ uint64_t xer; -+ uint64_t lnk; -+ uint64_t ctr; -+ -+ //! \brief Floating point registers. -+ double fpregs[32]; -+ -+ //! \brief FPU status register. -+ double fpscr; -+ -+ //! \brief Altivec/VMX vector registers. -+ struct { -+ //! \brief Vector registers are 128bits. -+ uint128_struct save_vr[32]; -+ uint128_struct save_vscr; -+ -+ //! \brief Padding included for breakpad compatibiltiy. -+ uint32_t save_pad5[4]; -+ -+ //! \brief VRSAVE register. -+ uint32_t save_vrsave; -+ -+ //! \brief Padding included for breakpad compatibiltiy. -+ uint32_t save_pad6[7]; -+ } vregs; -+}; -+ - } // namespace crashpad - - #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -@@ -110,6 +110,13 @@ MinidumpContextWriter::CreateFromSnapsho - break; - } - -+ case kCPUArchitecturePPC64: { -+ context = std::make_unique(); -+ reinterpret_cast(context.get()) -+ ->InitializeFromSnapshot(context_snapshot->ppc64); -+ break; -+ } -+ - default: { - LOG(ERROR) << "unknown context architecture " - << context_snapshot->architecture; -@@ -605,5 +612,48 @@ size_t MinidumpContextRISCV64Writer::Con - DCHECK_GE(state(), kStateFrozen); - return sizeof(context_); - } -+ -+MinidumpContextPPC64Writer::MinidumpContextPPC64Writer() -+ : MinidumpContextWriter(), context_() { -+ context_.context_flags = kMinidumpContextPPC64; -+} -+ -+MinidumpContextPPC64Writer::~MinidumpContextPPC64Writer() = default; -+ -+void MinidumpContextPPC64Writer::InitializeFromSnapshot( -+ const CPUContextPPC64* context_snapshot) { -+ DCHECK_EQ(state(), kStateMutable); -+ DCHECK_EQ(context_.context_flags, kMinidumpContextPPC64); -+ -+ context_.context_flags = kMinidumpContextPPC64All; -+ -+ memcpy(context_.regs, context_snapshot->regs, sizeof(context_.regs)); -+ context_.nip = context_snapshot->nip; -+ context_.msr = context_snapshot->msr; -+ context_.ccr = context_snapshot->ccr; -+ context_.xer = context_snapshot->xer; -+ context_.lnk = context_snapshot->lnk; -+ context_.ctr = context_snapshot->ctr; -+ -+ memcpy(context_.fpregs, context_snapshot->fpregs, sizeof(context_.fpregs)); -+ context_.fpscr = context_snapshot->fpscr; -+ -+ memcpy(context_.vregs.save_vr, context_snapshot->vregs.save_vr, -+ sizeof(context_.vregs.save_vr)); -+ memcpy(&context_.vregs.save_vscr, &context_snapshot->vregs.save_vscr, -+ sizeof(context_.vregs.save_vscr)); -+ context_.vregs.save_vrsave = context_snapshot->vregs.save_vrsave; -+} -+ -+bool MinidumpContextPPC64Writer::WriteObject( -+ FileWriterInterface* file_writer) { -+ DCHECK_EQ(state(), kStateWritable); -+ return file_writer->Write(&context_, sizeof(context_)); -+} -+ -+size_t MinidumpContextPPC64Writer::ContextSize() const { -+ DCHECK_GE(state(), kStateFrozen); -+ return sizeof(context_); -+} - - } // namespace crashpad -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -@@ -413,6 +413,49 @@ class MinidumpContextRISCV64Writer final - MinidumpContextRISCV64 context_; - }; - -+//! \brief The writer for a MinidumpContextPPC64 structure in a minidump file. -+class MinidumpContextPPC64Writer final : public MinidumpContextWriter { -+ public: -+ MinidumpContextPPC64Writer(); -+ -+ MinidumpContextPPC64Writer(const MinidumpContextPPC64Writer&) = delete; -+ MinidumpContextPPC64Writer& operator=(const MinidumpContextPPC64Writer&) = -+ delete; -+ -+ ~MinidumpContextPPC64Writer() override; -+ -+ //! \brief Initializes the MinidumpContextPPC based on \a context_snapshot. -+ //! -+ //! \param[in] context_snapshot The context snapshot to use as source data. -+ //! -+ //! \note Valid in #kStateMutable. No mutation of context() may be done before -+ //! calling this method, and it is not normally necessary to alter -+ //! context() after calling this method. -+ void InitializeFromSnapshot(const CPUContextPPC64* context_snapshot); -+ -+ //! \brief Returns a pointer to the context structure that this object will -+ //! write. -+ //! -+ //! \attention This returns a non-`const` pointer to this object’s private -+ //! data so that a caller can populate the context structure directly. -+ //! This is done because providing setter interfaces to each field in the -+ //! context structure would be unwieldy and cumbersome. Care must be taken -+ //! to populate the context structure correctly. The context structure -+ //! must only be modified while this object is in the #kStateMutable -+ //! state. -+ MinidumpContextPPC64* context() { return &context_; } -+ -+ protected: -+ // MinidumpWritable: -+ bool WriteObject(FileWriterInterface* file_writer) override; -+ -+ // MinidumpContextWriter: -+ size_t ContextSize() const override; -+ -+ private: -+ MinidumpContextPPC64 context_; -+}; -+ - } // namespace crashpad - - #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -@@ -322,6 +322,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 - TypeParam>(context, ExpectMinidumpContextRISCV64, kSeed); - } - -+TEST(MinidumpContextWriter, PPC64_Zeros) { -+ EmptyContextTest( -+ ExpectMinidumpContextPPC64); -+} -+ -+TEST(MinidumpContextWriter, PPC64_FromSnapshot) { -+ constexpr uint32_t kSeed = 64; -+ CPUContextPPC64 context_ppc64; -+ CPUContext context; -+ context.ppc64 = &context_ppc64; -+ InitializeCPUContextPPC64(&context, kSeed); -+ FromSnapshotTest( -+ context, ExpectMinidumpContextPPC64, kSeed); -+} -+ - } // namespace - } // namespace test - } // namespace crashpad -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -@@ -177,6 +177,8 @@ std::string MinidumpMiscInfoDebugBuildSt - static constexpr char kCPU[] = "mips64"; - #elif defined(ARCH_CPU_RISCV64) - static constexpr char kCPU[] = "riscv64"; -+#elif defined(ARCH_CPU_PPC64) -+ static constexpr char kCPU[] = "ppc64"; - #else - #error define kCPU for this CPU - #endif -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/capture_memory.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/capture_memory.cc -@@ -123,6 +123,11 @@ void CaptureMemory::PointedToByContext(c - for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) { - MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]); - } -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ MaybeCaptureMemoryAround(delegate, context.ppc64->nip); -+ for (size_t i = 0; i < std::size(context.ppc64->regs); ++i) { -+ MaybeCaptureMemoryAround(delegate, context.ppc64->regs[i]); -+ } - #else - #error Port. - #endif -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -@@ -47,6 +47,9 @@ enum CPUArchitecture { - - //! \brief 64-bit RISC-V. - kCPUArchitectureRISCV64, -+ -+ //! \brief 64-bit PPC64. -+ kCPUArchitecturePPC64 - }; - - } // namespace crashpad -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.cc -@@ -173,6 +173,8 @@ uint64_t CPUContext::InstructionPointer( - return arm64->pc; - case kCPUArchitectureRISCV64: - return riscv64->pc; -+ case kCPUArchitecturePPC64: -+ return ppc64->nip; - default: - NOTREACHED(); - } -@@ -190,6 +192,8 @@ uint64_t CPUContext::StackPointer() cons - return arm64->sp; - case kCPUArchitectureRISCV64: - return riscv64->regs[1]; -+ case kCPUArchitecturePPC64: -+ return ppc64->regs[1]; - default: - NOTREACHED(); - } -@@ -226,6 +230,7 @@ bool CPUContext::Is64Bit() const { - case kCPUArchitectureX86_64: - case kCPUArchitectureARM64: - case kCPUArchitectureMIPS64EL: -+ case kCPUArchitecturePPC64: - case kCPUArchitectureRISCV64: - return true; - case kCPUArchitectureX86: -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.h -@@ -371,6 +371,24 @@ struct CPUContextRISCV64 { - uint32_t fcsr; - }; - -+//! \brief A context structure carrying PPC64 CPU state. -+struct CPUContextPPC64 { -+ uint64_t nip; -+ uint64_t msr; -+ uint64_t regs[32]; -+ uint64_t ccr; -+ uint64_t xer; -+ uint64_t lnk; -+ uint64_t ctr; -+ double fpregs[32]; -+ double fpscr; -+ struct { -+ uint128_struct save_vr[32]; -+ uint128_struct save_vscr; -+ uint32_t save_vrsave; -+ } vregs; -+}; -+ - //! \brief A context structure capable of carrying the context of any supported - //! CPU architecture. - struct CPUContext { -@@ -412,6 +430,7 @@ struct CPUContext { - CPUContextMIPS* mipsel; - CPUContextMIPS64* mips64; - CPUContextRISCV64* riscv64; -+ CPUContextPPC64* ppc64; - }; - }; - -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -@@ -15,6 +15,7 @@ - #ifndef CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ - #define CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ - -+#include - #include "build/build_config.h" - #include "snapshot/cpu_context.h" - #include "snapshot/linux/signal_context.h" -@@ -188,6 +189,78 @@ void InitializeCPUContextRISCV64(const T - - #endif // ARCH_CPU_RISCV64 || DOXYGEN - -+#if defined(ARCH_CPU_PPC64_FAMILY) || DOXYGEN -+ -+//! \brief Initializes a CPUContextPPC64 structure from native context -+//! structures on Linux. -+//! -+//! \param[in] thread_context The native thread context. -+//! \param[in] float_context The native float context. -+//! \param[in] vector_context The native vector context. -+//! \param[out] context The CPUContextPPC64 structure to initialize. -+template -+void InitializeCPUContextPPC64( -+ const ThreadContext::t64_t& thread_context, -+ const FloatContext::f64_t& float_context, -+ const VectorContext::v64_t& vector_context, -+ typename Traits::CPUContext* context) { -+ -+ memcpy(context->regs, thread_context.gpr, sizeof(context->regs)); -+ context->nip = thread_context.nip; -+ context->msr = thread_context.msr; -+ context->ccr = thread_context.ccr; -+ context->xer = thread_context.xer; -+ context->lnk = thread_context.lnk; -+ context->ctr = thread_context.ctr; -+ -+ memcpy(context->fpregs, float_context.fpregs, sizeof(context->fpregs)); -+ context->fpscr = float_context.fpscr; -+ -+ for (uint8_t i = 0; i < 32; i++) { -+ context->vregs.save_vr[i] = { -+ (((uint64_t)vector_context.vrregs[i][0]) << 32) | -+ vector_context.vrregs[i][1], -+ (((uint64_t)vector_context.vrregs[i][2]) << 32) | -+ vector_context.vrregs[i][3] -+ }; -+ } -+ context->vregs.save_vrsave = vector_context.vrsave; -+ context->vregs.save_vscr = {0, (uint64_t)vector_context.vscr.vscr_word}; -+} -+ -+template -+void InitializeCPUContextPPC64( -+ const SignalThreadContext64 &thread_context, -+ const SignalFloatContext64 &float_context, -+ const SignalVectorContext64 &vector_context, -+ typename Traits::CPUContext* context) { -+ -+ memcpy(context->regs, thread_context.regs, sizeof(context->regs)); -+ context->nip = thread_context.nip; -+ context->msr = thread_context.msr; -+ context->ccr = thread_context.ccr; -+ context->xer = thread_context.xer; -+ context->lnk = thread_context.lnk; -+ context->ctr = thread_context.ctr; -+ -+ memcpy(context->fpregs, float_context.regs, sizeof(context->fpregs)); -+ context->fpscr = float_context.fpscr; -+ -+ for (uint8_t i = 0; i < 32; i++) { -+ context->vregs.save_vr[i] = { -+ (((uint64_t)vector_context.vrregs[i][0]) << 32) | -+ vector_context.vrregs[i][1], -+ (((uint64_t)vector_context.vrregs[i][2]) << 32) | -+ vector_context.vrregs[i][3] -+ }; -+ } -+ context->vregs.save_vrsave = vector_context.vrsave; -+ context->vregs.save_vscr = {0, (uint64_t)vector_context.vscr.vscr_word}; -+} -+ -+ -+#endif -+ - } // namespace internal - } // namespace crashpad - -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -@@ -194,12 +194,15 @@ void TestAgainstTarget(PtraceConnection* - device == 0 && inode == 0 && mapping_name == "[vdso]"; - #if defined(ARCH_CPU_X86) - static constexpr char kPrefix[] = "linux-gate.so."; -+ static constexpr char kPrefix64[] = "linux-gate.so."; - #else - static constexpr char kPrefix[] = "linux-vdso.so."; -+ static constexpr char kPrefix64[] = "linux-vdso64.so."; - #endif - return is_vdso_mapping == - (module_name.empty() || -- module_name.compare(0, strlen(kPrefix), kPrefix) == 0); -+ module_name.compare(0, strlen(kPrefix), kPrefix) == 0) || -+ module_name.compare(0, strlen(kPrefix64), kPrefix64) == 0); - }, - module_mapping->name, - module_mapping->device, -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -@@ -367,6 +367,69 @@ bool ExceptionSnapshotLinux::ReadContext - return internal::ReadContext(reader, context_address, context_.riscv64); - } - -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ -+template -+static bool ReadContext(ProcessReaderLinux* reader, -+ LinuxVMAddress context_address, -+ typename Traits::CPUContext* dest_context) { -+ const ProcessMemory* memory = reader->Memory(); -+ -+ LinuxVMAddress gp_regs_address = context_address + -+ offsetof(UContext, mcontext) + -+ offsetof(typename Traits::MContext, gp_regs); -+ -+ typename Traits::SignalThreadContext thread_context; -+ if (!memory->Read(gp_regs_address, sizeof(thread_context), &thread_context)) { -+ LOG(ERROR) << "Couldn't read gp_regs!"; -+ return false; -+ } -+ -+ LinuxVMAddress fp_regs_address = context_address + -+ offsetof(UContext, mcontext) + -+ offsetof(typename Traits::MContext, fp_regs); -+ -+ typename Traits::SignalFloatContext fp_context; -+ if (!memory->Read(fp_regs_address, sizeof(fp_context), &fp_context)) { -+ LOG(ERROR) << "Couldn't read fp_regs!"; -+ return false; -+ } -+ -+ LinuxVMAddress v_regs_ptr_address = context_address + -+ offsetof(UContext, mcontext) + -+ offsetof(typename Traits::MContext, vmx_reserve) + 8; -+ -+ typename Traits::SignalVectorContext v_context; -+ if (!memory->Read(v_regs_ptr_address, sizeof(v_context), &v_context)) { -+ LOG(ERROR) << "Couldn't read v_regs!"; -+ return false; -+ } -+ -+ InitializeCPUContextPPC64(thread_context, fp_context, -+ v_context, dest_context); -+ -+ return true; -+} -+ -+template<> -+bool ExceptionSnapshotLinux::ReadContext( -+ ProcessReaderLinux* reader, -+ LinuxVMAddress context_address) { -+ context_.architecture = kCPUArchitecturePPC64; -+ context_.ppc64 = &context_union_.ppc64; -+ -+ return internal::ReadContext( -+ reader, context_address, context_.ppc64); -+} -+ -+template<> -+bool ExceptionSnapshotLinux::ReadContext( -+ ProcessReaderLinux* reader, -+ LinuxVMAddress context_address) { -+ // PPC64 is 64-bit -+ return false; -+} -+ - #endif // ARCH_CPU_X86_FAMILY - - bool ExceptionSnapshotLinux::Initialize( -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -@@ -94,6 +94,8 @@ class ExceptionSnapshotLinux final : pub - CPUContextMIPS64 mips64; - #elif defined(ARCH_CPU_RISCV64) - CPUContextRISCV64 riscv64; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ CPUContextPPC64 ppc64; - #endif - } context_union_; - CPUContext context_; -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -@@ -325,7 +325,28 @@ void ExpectContext(const CPUContext& act - sizeof(actual.riscv64->fpregs)), - 0); - } -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+using NativeCPUContext = ucontext_t; - -+void InitializeContext(NativeCPUContext* context) { -+ for (size_t reg = 0; reg < 32; ++reg) { -+ context->uc_mcontext.gp_regs[reg] = reg; -+ } -+ -+ memset(&context->uc_mcontext.fp_regs, 44, -+ sizeof(context->uc_mcontext.fp_regs)); -+} -+ -+void ExpectContext(const CPUContext& actual, const NativeCPUContext& expected) { -+ EXPECT_EQ(actual.architecture, kCPUArchitecturePPC64); -+ -+ for (size_t reg = 0; reg < 32; ++reg) { -+ EXPECT_EQ(actual.ppc64->regs[reg], expected.uc_mcontext.gp_regs[reg]); -+ } -+ -+ EXPECT_EQ(memcmp(actual.ppc64->fpregs, expected.uc_mcontext.fp_regs, -+ sizeof(actual.ppc64->fpregs)), 0); -+} - #else - #error Port. - #endif -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -@@ -129,6 +129,8 @@ void ProcessReaderLinux::Thread::Initial - : thread_info.thread_context.t32.regs[29]; - #elif defined(ARCH_CPU_RISCV64) - stack_pointer = thread_info.thread_context.t64.regs[1]; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ stack_pointer = thread_info.thread_context.t64.gpr[1]; - #else - #error Port. - #endif -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -@@ -456,6 +456,89 @@ static_assert(offsetof(UContext stack; -+ Sigset sigmask; -+ MContext64 mcontext; -+}; -+#pragma pack(push, 1) -+ -+static_assert(sizeof(UContext) == sizeof(ucontext_t), -+ "ucontext_t size mismatch"); -+static_assert(sizeof(MContext64) == sizeof(mcontext_t), -+ "mcontext_t size mismatch"); -+static_assert(sizeof(SignalThreadContext64) == sizeof(gregset_t), -+ "gregset_t size mismatch"); -+static_assert(sizeof(SignalFloatContext64) == sizeof(fpregset_t), -+ "fpregset_t size mismatch"); -+static_assert(sizeof(SignalVectorContext64) == sizeof(_libc_vrstate), -+ "vrstate size mismatch"); -+static_assert(offsetof(UContext, mcontext) == -+ offsetof(ucontext_t, uc_mcontext), "mcontext offset mismatch"); -+static_assert(offsetof(MContext64, gp_regs) == -+ offsetof(mcontext_t, gp_regs), "gp_regs offset mismatch"); - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc -@@ -208,6 +208,8 @@ CPUArchitecture SystemSnapshotLinux::Get - : kCPUArchitectureMIPSEL; - #elif defined(ARCH_CPU_RISCV64) - return kCPUArchitectureRISCV64; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ return kCPUArchitecturePPC64; - #else - #error port to your architecture - #endif -@@ -226,6 +228,9 @@ uint32_t SystemSnapshotLinux::CPURevisio - #elif defined(ARCH_CPU_RISCV64) - // Not implemented - return 0; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // Not yet implemented on PPC64 -+ return 0; - #else - #error port to your architecture - #endif -@@ -249,6 +254,9 @@ std::string SystemSnapshotLinux::CPUVend - #elif defined(ARCH_CPU_RISCV64) - // Not implemented - return std::string(); -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // Not yet implemented on PPC64 -+ return std::string(); - #else - #error port to your architecture - #endif -@@ -380,6 +388,9 @@ bool SystemSnapshotLinux::NXEnabled() co - #elif defined(ARCH_CPU_RISCV64) - // Not implemented - return false; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // Not yet implemented on PPC64 -+ return false; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc -@@ -196,6 +196,14 @@ bool ThreadSnapshotLinux::Initialize( - InitializeCPUContextRISCV64(thread.thread_info.thread_context.t64, - thread.thread_info.float_context.f64, - context_.riscv64); -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ context_.architecture = kCPUArchitecturePPC64; -+ context_.ppc64 = &context_union_.ppc64; -+ InitializeCPUContextPPC64( -+ thread.thread_info.thread_context.t64, -+ thread.thread_info.float_context.f64, -+ thread.thread_info.vector_context.v64, -+ context_.ppc64); - #else - #error Port. - #endif -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h -@@ -79,6 +79,8 @@ class ThreadSnapshotLinux final : public - CPUContextMIPS64 mips64; - #elif defined(ARCH_CPU_RISCV64) - CPUContextRISCV64 riscv64; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ CPUContextPPC64 ppc64; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc -@@ -56,6 +56,11 @@ bool AuxiliaryVector::Read(PtraceConnect - if (type == AT_IGNORE) { - continue; - } -+#if defined(ARCH_CPU_PPC64_FAMILY) -+ if (type == AT_IGNOREPPC) { -+ continue; -+ } -+#endif - if (!MapInsertOrReplace(&values_, type, value, nullptr)) { - LOG(ERROR) << "duplicate auxv entry"; - return false; -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/ptracer.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/linux/ptracer.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/ptracer.cc -@@ -430,6 +430,64 @@ bool GetThreadArea64(pid_t tid, - return true; - } - -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+// PPC64 has had HAVE_ARCH_TRACEHOOK set since 2.6.27 (even before x86 had it). -+// That means we can simply use PTRACE_GETREGESET. -+ -+template -+bool GetRegisterSet(pid_t tid, int set, Destination* dest, bool can_log) { -+ iovec iov; -+ iov.iov_base = reinterpret_cast(dest); -+ iov.iov_len = sizeof(*dest); -+ if (ptrace(PTRACE_GETREGSET, tid, reinterpret_cast(set), &iov) != 0) { -+ PLOG_IF(ERROR, can_log) << "ptrace"; -+ return false; -+ } -+ if (iov.iov_len != sizeof(*dest)) { -+ LOG_IF(ERROR, can_log) << "Unexpected registers size"; -+ return false; -+ } -+ return true; -+} -+ -+bool GetVectorRegisters64(pid_t tid, -+ VectorContext* context, -+ bool can_log) { -+ return GetRegisterSet(tid, NT_PPC_VMX, &context->v64, can_log); -+} -+ -+bool GetFloatingPointRegisters64(pid_t tid, -+ FloatContext* context, -+ bool can_log) { -+ return GetRegisterSet(tid, NT_PRFPREG, &context->f64, can_log); -+} -+ -+bool GetThreadArea64(pid_t tid, -+ const ThreadContext& context, -+ LinuxVMAddress* address, -+ bool can_log) { -+ // PPC64 doesn't have PTRACE_GET_THREAD_AREA since the thread pointer -+ // is stored in GPR 13. -+ ThreadContext::t64_t tc; -+ if (!GetRegisterSet(tid, NT_PRSTATUS, &tc, can_log)) { -+ LOG_IF(ERROR, can_log) << "Unable to get thread pointer!"; -+ return false; -+ } -+ -+ *address = tc.gpr[13]; -+ -+ return true; -+} -+ -+// Stubs for 32-bit functions not applicable on PPC64 -+bool GetFloatingPointRegisters32(pid_t tid, -+ FloatContext* context, -+ bool can_log) { return false; } -+bool GetThreadArea32(pid_t tid, -+ const ThreadContext &context, -+ LinuxVMAddress *address, -+ bool can_log) { return false; } -+ - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -528,6 +586,9 @@ bool Ptracer::GetThreadInfo(pid_t tid, T - if (is_64_bit_) { - return GetGeneralPurposeRegisters64(tid, &info->thread_context, can_log_) && - GetFloatingPointRegisters64(tid, &info->float_context, can_log_) && -+#if defined(ARCH_CPU_PPC64_FAMILY) -+ GetVectorRegisters64(tid, &info->vector_context, can_log_) && -+#endif - GetThreadArea64(tid, - info->thread_context, - &info->thread_specific_data_address, -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/thread_info.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/linux/thread_info.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/thread_info.h -@@ -34,6 +34,10 @@ - #include - #endif - -+#if defined(ARCH_CPU_PPC64_FAMILY) -+#include -+#endif -+ - namespace crashpad { - - //! \brief The set of general purpose registers for an architecture family. -@@ -87,6 +91,8 @@ union ThreadContext { - uint32_t padding1_; - #elif defined(ARCH_CPU_RISCV64) - // 32 bit RISC-V not supported -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // PPC64 is 64-bit - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -144,6 +150,21 @@ union ThreadContext { - // Reflects user_regs_struct in asm/ptrace.h. - uint64_t pc; - uint64_t regs[31]; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // Reflects struct pt_regs in asm/ptrace.h. -+ uint64_t gpr[32]; -+ uint64_t nip; -+ uint64_t msr; -+ uint64_t orig_gpr3; -+ uint64_t ctr; -+ uint64_t lnk; -+ uint64_t xer; -+ uint64_t ccr; -+ uint64_t softe; -+ uint64_t trap; -+ uint64_t dar; -+ uint64_t dsisr; -+ uint64_t result; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -156,6 +177,8 @@ union ThreadContext { - using NativeThreadContext = user_regs; - #elif defined(ARCH_CPU_MIPS_FAMILY) - // No appropriate NativeThreadsContext type available for MIPS -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ using NativeThreadContext = struct pt_regs; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY || ARCH_CPU_ARM64 || ARCH_CPU_RISCV64 -@@ -233,6 +256,9 @@ union FloatContext { - uint32_t fpu_id; - #elif defined(ARCH_CPU_RISCV64) - // 32 bit RISC-V not supported -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // Crashpad's PPC support is 64-bit only, so this -+ // 32bit-only struct is declared as empty. - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -271,6 +297,10 @@ union FloatContext { - // Reflects __riscv_d_ext_state in asm/ptrace.h - uint64_t fpregs[32]; - uint64_t fcsr; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ // Reflects fpregset_t in sys/ucontext.h -+ double fpregs[32]; -+ double fpscr; - #else - #error Port. - #endif // ARCH_CPU_X86_FAMILY -@@ -302,6 +332,8 @@ union FloatContext { - // No appropriate floating point context native type for available MIPS. - #elif defined(ARCH_CPU_RISCV64) - static_assert(sizeof(f64) == sizeof(__riscv_d_ext_state), "Size mismatch"); -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ static_assert(sizeof(f64) == sizeof(fpregset_t), "Size mismatch"); - #else - #error Port. - #endif // ARCH_CPU_X86 -@@ -309,6 +341,26 @@ union FloatContext { - static_assert(std::is_standard_layout::value, - "Not standard layout"); - -+//! \brief The vector registers used for an architecture family -+union VectorContext { -+ struct v32_t {} v32; -+#if defined(ARCH_CPU_PPC64_FAMILY) -+ __attribute__((__aligned__(16))) // Vector context must be doubleword aligned. -+#endif -+ struct v64_t { -+#if defined(ARCH_CPU_PPC64_FAMILY) -+ // Reflects vrregset_t in sys/ucontext.h -+ uint32_t vrregs[32][4]; -+ struct { -+ uint32_t __pad[3]; -+ uint32_t vscr_word; -+ } vscr; -+ uint32_t vrsave; -+ uint32_t __pad[3]; -+#endif -+ } v64; -+}; -+ - //! \brief A collection of `ptrace`-able information about a thread. - struct ThreadInfo { - ThreadInfo(); -@@ -320,6 +372,9 @@ struct ThreadInfo { - //! \brief The floating point registers for the thread. - FloatContext float_context; - -+ //! \brief (Optional) The vector registers used for the thread. -+ VectorContext vector_context; -+ - //! \brief The thread-local storage address for the thread. - LinuxVMAddress thread_specific_data_address; - }; -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context.h -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context.h -@@ -70,6 +70,7 @@ using NativeCPUContext = ucontext_t; - //! Linux | ARM/ARM64 | `r0`/`x0` - //! Linux | MIPS/MIPS64 | `$a0` - //! Linux | RISCV64 | `a0` -+//! Linux | PPC64 | `r3` - //! - //! Additionally, the value `LR` on ARM/ARM64 will be the return address of - //! this function. -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -@@ -30,7 +30,7 @@ - .globl CAPTURECONTEXT_SYMBOL2 - #if defined(__i386__) || defined(__x86_64__) - .balign 16, 0x90 --#elif defined(__arm__) || defined(__aarch64__) -+#elif defined(__arm__) || defined(__aarch64__) || defined(__powerpc64__) - .balign 4, 0x0 - .type CAPTURECONTEXT_SYMBOL, %function - .type CAPTURECONTEXT_SYMBOL2, %function -@@ -430,6 +430,216 @@ CAPTURECONTEXT_SYMBOL2: - - .set at - -+#elif defined(__powerpc64__) -+ // Store r0-r31 -+ std 0, 0xe8(3) // context->uc_mcontext.gp_regs[0] -+ std 1, 0xf0(3) // context->uc_mcontext.gp_regs[1] -+ std 2, 0xf8(3) // context->uc_mcontext.gp_regs[2] -+ // note that r3's original value was lost -+ std 3, 0x100(3) // context->uc_mcontext.gp_regs[3] -+ std 4, 0x108(3) // context->uc_mcontext.gp_regs[4] -+ std 5, 0x110(3) // context->uc_mcontext.gp_regs[5] -+ std 6, 0x118(3) // context->uc_mcontext.gp_regs[6] -+ std 7, 0x120(3) // context->uc_mcontext.gp_regs[7] -+ std 8, 0x128(3) // context->uc_mcontext.gp_regs[8] -+ std 9, 0x130(3) // context->uc_mcontext.gp_regs[9] -+ std 10, 0x138(3) // context->uc_mcontext.gp_regs[10] -+ std 11, 0x140(3) // context->uc_mcontext.gp_regs[11] -+ std 12, 0x148(3) // context->uc_mcontext.gp_regs[12] -+ std 13, 0x150(3) // context->uc_mcontext.gp_regs[13] -+ std 14, 0x158(3) // context->uc_mcontext.gp_regs[14] -+ std 15, 0x160(3) // context->uc_mcontext.gp_regs[15] -+ std 16, 0x168(3) // context->uc_mcontext.gp_regs[16] -+ std 17, 0x170(3) // context->uc_mcontext.gp_regs[17] -+ std 18, 0x178(3) // context->uc_mcontext.gp_regs[18] -+ std 19, 0x180(3) // context->uc_mcontext.gp_regs[19] -+ std 20, 0x188(3) // context->uc_mcontext.gp_regs[20] -+ std 21, 0x190(3) // context->uc_mcontext.gp_regs[21] -+ std 22, 0x198(3) // context->uc_mcontext.gp_regs[22] -+ std 23, 0x1a0(3) // context->uc_mcontext.gp_regs[23] -+ std 24, 0x1a8(3) // context->uc_mcontext.gp_regs[24] -+ std 25, 0x1b0(3) // context->uc_mcontext.gp_regs[25] -+ std 26, 0x1b8(3) // context->uc_mcontext.gp_regs[26] -+ std 27, 0x1c0(3) // context->uc_mcontext.gp_regs[27] -+ std 28, 0x1c8(3) // context->uc_mcontext.gp_regs[28] -+ std 29, 0x1d0(3) // context->uc_mcontext.gp_regs[29] -+ std 30, 0x1d8(3) // context->uc_mcontext.gp_regs[30] -+ std 31, 0x1e0(3) // context->uc_mcontext.gp_regs[31] -+ -+ // For NIP, we can use the value in the link register -+ mflr 0 -+ std 0, 0x1e8(3) // context->uc_mcontext.gp_regs[PT_NIP] -+ -+ // CTR -+ mfctr 0 -+ std 0, 0x200(3) // context->uc_mcontext.gp_regs[PT_CTR] -+ -+ // For LNK, we'll use the caller's LR save area (2 stack frames up). -+ // r4 can be used as a scratch register since it has already been saved. -+ ld 4, 0(1) -+ ld 4, 16(4) -+ std 4, 0x208(3) // context->uc_mcontext.gp_regs[PT_LNK] -+ -+ // XER -+ mfxer 0 -+ std 0, 0x210(3) // context->uc_mcontext.gp_regs[PT_XER] -+ -+ // CCR -+ mfcr 0 -+ std 0, 0x218(3) // context->uc_mcontext.gp_regs[PT_CCR] -+ -+ // MSR, orig_r3, MQ, TRAP, DAR, DSISR, RESULT, DSCR, -+ // not used or not relevant, zero them out. -+ li 4, 0 -+ std 4, 0x1f0(3) // context->uc_mcontext.gp_regs[PT_MSR] -+ std 4, 0x1f8(3) // context->uc_mcontext.gp_regs[PT_ORIG_R3] -+ std 4, 0x220(3) // context->uc_mcontext.gp_regs[PT_MQ] -+ std 4, 0x228(3) // context->uc_mcontext.gp_regs[PT_TRAP] -+ std 4, 0x230(3) // context->uc_mcontext.gp_regs[PT_DAR] -+ std 4, 0x238(3) // context->uc_mcontext.gp_regs[PT_DSISR] -+ std 4, 0x240(3) // context->uc_mcontext.gp_regs[PT_RESULT] -+ std 4, 0x248(3) // context->uc_mcontext.gp_regs[PT_DSCR] -+ -+ // Update context->uc_mcontext.regs to point to gp_regs -+ addi 0, 3, 0xe8 -+ std 0, 0xe0(3) -+ -+ // Save floating point registers 0-31 -+ stfd 0, 0x268(3) // context->uc_mcontext.fp_regs[0] -+ stfd 1, 0x270(3) // context->uc_mcontext.fp_regs[1] -+ stfd 2, 0x278(3) // context->uc_mcontext.fp_regs[2] -+ stfd 3, 0x280(3) // context->uc_mcontext.fp_regs[3] -+ stfd 4, 0x288(3) // context->uc_mcontext.fp_regs[4] -+ stfd 5, 0x290(3) // context->uc_mcontext.fp_regs[5] -+ stfd 6, 0x298(3) // context->uc_mcontext.fp_regs[6] -+ stfd 7, 0x2a0(3) // context->uc_mcontext.fp_regs[7] -+ stfd 8, 0x2a8(3) // context->uc_mcontext.fp_regs[8] -+ stfd 9, 0x2b0(3) // context->uc_mcontext.fp_regs[9] -+ stfd 10, 0x2b8(3) // context->uc_mcontext.fp_regs[10] -+ stfd 11, 0x2c0(3) // context->uc_mcontext.fp_regs[11] -+ stfd 12, 0x2c8(3) // context->uc_mcontext.fp_regs[12] -+ stfd 13, 0x2d0(3) // context->uc_mcontext.fp_regs[13] -+ stfd 14, 0x2d8(3) // context->uc_mcontext.fp_regs[14] -+ stfd 15, 0x2e0(3) // context->uc_mcontext.fp_regs[15] -+ stfd 16, 0x2e8(3) // context->uc_mcontext.fp_regs[16] -+ stfd 17, 0x2f0(3) // context->uc_mcontext.fp_regs[17] -+ stfd 18, 0x2f8(3) // context->uc_mcontext.fp_regs[18] -+ stfd 19, 0x300(3) // context->uc_mcontext.fp_regs[19] -+ stfd 20, 0x308(3) // context->uc_mcontext.fp_regs[20] -+ stfd 21, 0x310(3) // context->uc_mcontext.fp_regs[21] -+ stfd 22, 0x318(3) // context->uc_mcontext.fp_regs[22] -+ stfd 23, 0x320(3) // context->uc_mcontext.fp_regs[23] -+ stfd 24, 0x328(3) // context->uc_mcontext.fp_regs[24] -+ stfd 25, 0x330(3) // context->uc_mcontext.fp_regs[25] -+ stfd 26, 0x338(3) // context->uc_mcontext.fp_regs[26] -+ stfd 27, 0x340(3) // context->uc_mcontext.fp_regs[27] -+ stfd 28, 0x348(3) // context->uc_mcontext.fp_regs[28] -+ stfd 29, 0x350(3) // context->uc_mcontext.fp_regs[29] -+ stfd 30, 0x358(3) // context->uc_mcontext.fp_regs[30] -+ stfd 31, 0x360(3) // context->uc_mcontext.fp_regs[31] -+ -+ // FPSCR -+ mffs 0 -+ stfd 0, 0x368(3) // context->uc_mcontext.fp_regs[32] -+ -+ // Save VMX Vector registers -+ // Update r4 to contain the base address of vmx_reserve -+ addi 4, 3, 0x378 -+ // Ensure that it is quadword aligned -+ andi. 5, 4, 0xF -+ beq 1f // No alignment is necessary -+ // Address is doubleword aligned and not quadword aligned, add 8 -+ addi 4, 4, 8 -+ -+1: -+ // Store VMX registers 0-31 -+ // r4 will contain the base address -+ // r5 will contain the index -+ li 5, 0 -+ stvx 0, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 0] -+ addi 5, 5, 16 -+ stvx 1, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 1] -+ addi 5, 5, 16 -+ stvx 2, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 2] -+ addi 5, 5, 16 -+ stvx 3, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 3] -+ addi 5, 5, 16 -+ stvx 4, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 4] -+ addi 5, 5, 16 -+ stvx 5, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 5] -+ addi 5, 5, 16 -+ stvx 6, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 6] -+ addi 5, 5, 16 -+ stvx 7, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 7] -+ addi 5, 5, 16 -+ stvx 8, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 8] -+ addi 5, 5, 16 -+ stvx 9, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 9] -+ addi 5, 5, 16 -+ stvx 10, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 10] -+ addi 5, 5, 16 -+ stvx 11, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 11] -+ addi 5, 5, 16 -+ stvx 12, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 12] -+ addi 5, 5, 16 -+ stvx 13, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 13] -+ addi 5, 5, 16 -+ stvx 14, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 14] -+ addi 5, 5, 16 -+ stvx 15, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 15] -+ addi 5, 5, 16 -+ stvx 16, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 16] -+ addi 5, 5, 16 -+ stvx 17, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 17] -+ addi 5, 5, 16 -+ stvx 18, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 18] -+ addi 5, 5, 16 -+ stvx 19, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 19] -+ addi 5, 5, 16 -+ stvx 20, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 20] -+ addi 5, 5, 16 -+ stvx 21, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 21] -+ addi 5, 5, 16 -+ stvx 22, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 22] -+ addi 5, 5, 16 -+ stvx 23, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 23] -+ addi 5, 5, 16 -+ stvx 24, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 24] -+ addi 5, 5, 16 -+ stvx 25, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 25] -+ addi 5, 5, 16 -+ stvx 26, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 26] -+ addi 5, 5, 16 -+ stvx 27, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 27] -+ addi 5, 5, 16 -+ stvx 28, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 28] -+ addi 5, 5, 16 -+ stvx 29, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 29] -+ addi 5, 5, 16 -+ stvx 30, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 30] -+ addi 5, 5, 16 -+ stvx 31, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 31] -+ addi 5, 5, 16 -+ -+ // VSCR -+ mfvscr 0 -+ stvx 0, 4, 5 -+ addi 5, 5, 16 -+ -+ // VRSAVE -+ mfvrsave 0 -+ stwx 0, 4, 5 -+ -+ // Update context->uc_mcontext.v_regs to point to vmx_reserve + alignment. -+ std 4, 0x370(3) -+ -+ // Zero out all unused fields -+ li 4, 0 -+ std 4, 0xc8(3) // context->uc_mcontext.signal -+ std 4, 0xd0(3) // context->uc_mcontext.handler -+ std 4, 0xd8(3) // context->uc_mcontext.oldmask -+ -+ blr - #elif defined(__riscv) - - #define MCONTEXT_GREGS_OFFSET 176 -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -@@ -48,7 +48,7 @@ void TestCaptureContext() { - uintptr_t pc = ProgramCounterFromContext(context_1); - - #if !defined(ADDRESS_SANITIZER) && !defined(ARCH_CPU_MIPS_FAMILY) && \ -- !defined(MEMORY_SANITIZER) -+ !defined(MEMORY_SANITIZER) && !defined(ARCH_CPU_PPC64_FAMILY) - // Sanitizers can cause enough code bloat that the “nearby” check would - // likely fail. - const uintptr_t kReferencePC = -Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -+++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -@@ -38,6 +38,8 @@ void SanityCheckContext(const NativeCPUC - #elif defined(ARCH_CPU_RISCV64) - EXPECT_EQ(context.uc_mcontext.__gregs[10], - FromPointerCast(&context)); -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ EXPECT_EQ(context.uc_mcontext.gp_regs[3], FromPointerCast(&context)); - #endif - } - -@@ -54,6 +56,8 @@ uintptr_t ProgramCounterFromContext(cons - return context.uc_mcontext.pc; - #elif defined(ARCH_CPU_RISCV64) - return context.uc_mcontext.__gregs[0]; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ return context.uc_mcontext.gp_regs[PT_NIP]; - #endif - } - -@@ -70,6 +74,8 @@ uintptr_t StackPointerFromContext(const - return context.uc_mcontext.gregs[29]; - #elif defined(ARCH_CPU_RISCV64) - return context.uc_mcontext.__gregs[2]; -+#elif defined(ARCH_CPU_PPC64_FAMILY) -+ return context.uc_mcontext.gp_regs[1]; - #endif - } - -kIndex: chromium-114.0.5735.45/base/allocator/partition_allocator/partition_alloc.gni -=================================================================== -Index: chromium-134.0.6998.35/base/allocator/partition_allocator/partition_alloc.gni -=================================================================== ---- chromium-134.0.6998.35.orig/base/allocator/partition_allocator/partition_alloc.gni -+++ chromium-134.0.6998.35/base/allocator/partition_allocator/partition_alloc.gni -@@ -69,7 +69,8 @@ if (is_nacl) { - # NaCl targets don't use 64-bit pointers. - has_64_bit_pointers = false - } else if (current_cpu == "x64" || current_cpu == "arm64" || -- current_cpu == "loong64" || current_cpu == "riscv64") { -+ current_cpu == "loong64" || current_cpu == "riscv64" || -+ current_cpu == "ppc64") { - has_64_bit_pointers = true - } else if (current_cpu == "x86" || current_cpu == "arm") { - has_64_bit_pointers = false -Index: chromium-134.0.6998.35/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -=================================================================== ---- chromium-134.0.6998.35.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -+++ chromium-134.0.6998.35/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -@@ -209,7 +209,11 @@ SystemPageBaseMask() { - return ~SystemPageOffsetMask(); - } - -+#if PA_BUILDFLAG(PA_ARCH_CPU_PPC64_FAMILY) -+constexpr size_t kPageMetadataShift = 6; // 64 bytes per partition page. -+#else - constexpr size_t kPageMetadataShift = 5; // 32 bytes per partition page. -+#endif - constexpr size_t kPageMetadataSize = 1 << kPageMetadataShift; - - } // namespace internal -Index: chromium-134.0.6998.35/third_party/dawn/src/dawn/common/Platform.h -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/dawn/src/dawn/common/Platform.h -+++ chromium-134.0.6998.35/third_party/dawn/src/dawn/common/Platform.h -@@ -159,10 +159,12 @@ - #elif defined(__s390x__) - #define DAWN_PLATFORM_IS_S390X 1 - --#elif defined(__PPC__) --#define DAWN_PLATFORM_IS_PPC 1 -+// Order matters here -+// PPC64 also defines PPC, which can lead to detection failures on ppc64le systems - #elif defined(__PPC64__) - #define DAWN_PLATFORM_IS_PPC64 1 -+#elif defined(__PPC__) -+#define DAWN_PLATFORM_IS_PPC 1 - - #elif defined(__wasm32__) - #define DAWN_PLATFORM_IS_WASM32 1 -Index: chromium-134.0.6998.35/base/process/launch.h -=================================================================== ---- chromium-134.0.6998.35.orig/base/process/launch.h -+++ chromium-134.0.6998.35/base/process/launch.h -@@ -58,6 +58,9 @@ namespace base { - #if defined(ARCH_CPU_ARM64) - #define PTHREAD_STACK_MIN_CONST \ - (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072) -+#elif defined(ARCH_CPU_PPC64) -+#define PTHREAD_STACK_MIN_CONST \ -+ (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072) - #else - #define PTHREAD_STACK_MIN_CONST \ - (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 16384) -diff -up chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.orig chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ---- chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.orig 2025-09-28 16:56:19.438134010 +0200 -+++ chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2025-09-28 16:56:51.790767660 +0200 -@@ -41,7 +41,7 @@ - #endif - - #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \ -- !defined(__arm__) && !defined(__aarch64__) && \ -+ !defined(__arm__) && !defined(__aarch64__) && !defined(__powerpc64__) && \ - !defined(PTRACE_GET_THREAD_AREA) - // Also include asm/ptrace-abi.h since ptrace.h in older libc (for instance - // the one in Ubuntu 16.04 LTS) is missing PTRACE_GET_THREAD_AREA. -diff -up chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ---- chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig 2025-09-28 16:58:22.853176446 +0200 -+++ chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc 2025-09-28 17:28:40.653091370 +0200 -@@ -621,18 +621,19 @@ bool SyscallSets::IsAllowedGeneralIo(int - case __NR_readv: - case __NR_pread64: - #if defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_recv: - #endif - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_recvfrom: // Could specify source. - case __NR_recvmsg: // Could specify source. - #endif --#if defined(__i386__) || defined(__x86_64__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) - case __NR_select: - #endif --#if defined(__i386__) || defined(__arm__) || defined(__mips__) -+#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__) - case __NR__newselect: - #endif - case __NR_write: -@@ -649,11 +650,12 @@ bool SyscallSets::IsAllowedGeneralIo(int - #endif - // send* syscalls need their flags filtered. - #if defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_send: - #endif - #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ -- defined(__mips__) || defined(__aarch64__) -+ defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__) - case __NR_sendmsg: // Could specify destination. - case __NR_sendto: // Could specify destination. - #endif -@@ -666,11 +668,12 @@ bool SyscallSets::IsAllowedGeneralIo(int - bool SyscallSets::IsSockSendOneMsg(int sysno) { - switch (sysno) { - #if defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_send: - #endif - #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ -- defined(__mips__) || defined(__aarch64__) -+ defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__) - case __NR_sendmsg: // Could specify destination. - case __NR_sendto: // Could specify destination. - #endif -Index: chromium-134.0.6998.35/third_party/highway/src/hwy/targets.cc -=================================================================== ---- chromium-134.0.6998.35.orig/third_party/highway/src/hwy/targets.cc -+++ chromium-134.0.6998.35/third_party/highway/src/hwy/targets.cc -@@ -35,7 +35,7 @@ - HWY_OS_LINUX - // sys/auxv.h does not always include asm/hwcap.h, or define HWCAP*, hence we - // still include this directly. See #1199. --#ifndef TOOLCHAIN_MISS_ASM_HWCAP_H -+#if !defined(TOOLCHAIN_MISS_ASM_HWCAP_H) && !defined(HWY_ARCH_PPC) - #include - #endif - #if HWY_HAVE_AUXV diff --git a/qtwebengine-ffmpeg-first_dts.patch b/qtwebengine-ffmpeg-first_dts.patch new file mode 100644 index 0000000..e2c7118 --- /dev/null +++ b/qtwebengine-ffmpeg-first_dts.patch @@ -0,0 +1,168 @@ +diff --git a/configure.cmake b/configure.cmake +index 8f30b34..bbd934e 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -209,25 +209,6 @@ int main(void){ + }" + ) + +-qt_config_compile_test(libavformat +- LABEL "libavformat" +- LIBRARIES +- PkgConfig::FFMPEG +- CODE +-" +-#include \"libavformat/version.h\" +-extern \"C\" { +-#include \"libavformat/avformat.h\" +-} +-int main(void) { +-#if LIBAVFORMAT_VERSION_MAJOR >= 59 +- AVStream stream; +- auto first_dts = av_stream_get_first_dts(&stream); +-#endif +- return 0; +-}" +-) +- + #### Features + + qt_feature("qtwebengine-build" PUBLIC +@@ -563,11 +544,6 @@ add_check_for_support( + CONDITION NOT LINUX OR DBUS_FOUND + MESSAGE "Build requires dbus." + ) +-add_check_for_support( +- MODULES QtWebEngine +- CONDITION NOT LINUX OR NOT QT_FEATURE_webengine_system_ffmpeg OR TEST_libavformat +- MESSAGE "Unmodified ffmpeg >= 5.0 is not supported." +-) + # FIXME: This prevents non XCB Linux builds from building: + set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST) + foreach(xs ${xcbSupport}) +diff --git a/src/3rdparty/chromium/AUTHORS b/src/3rdparty/chromium/AUTHORS +index ff6abe8..0fd7937 100644 +--- a/src/3rdparty/chromium/AUTHORS ++++ b/src/3rdparty/chromium/AUTHORS +@@ -99,6 +99,7 @@ Andra Paraschiv + Andras Tokodi + Andreas Nazlidis + Andreas Papacharalampous ++Andreas Schneider + Andrei Borza + Andrei Parvu + Andrei Parvu +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +index f41464b..3aa3918 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +@@ -59,7 +59,7 @@ namespace media { + + namespace { + +-constexpr int64_t kInvalidPTSMarker = static_cast(0x8000000000000000); ++constexpr int64_t kRelativeTsBase = static_cast(0x7ffeffffffffffff); + + void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) { + DCHECK(stream); +@@ -97,7 +97,7 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) { + sample_rate); + } + +-static base::TimeDelta ExtractStartTime(AVStream* stream) { ++static base::TimeDelta ExtractStartTime(AVStream* stream, int64_t first_dts) { + // The default start time is zero. + base::TimeDelta start_time; + +@@ -107,12 +107,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { + + // Next try to use the first DTS value, for codecs where we know PTS == DTS + // (excludes all H26x codecs). The start time must be returned in PTS. +- if (av_stream_get_first_dts(stream) != kInvalidPTSMarker && ++ if (first_dts != AV_NOPTS_VALUE && + stream->codecpar->codec_id != AV_CODEC_ID_HEVC && + stream->codecpar->codec_id != AV_CODEC_ID_H264 && + stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) { + const base::TimeDelta first_pts = +- ConvertFromTimeBase(stream->time_base, av_stream_get_first_dts(stream)); ++ ConvertFromTimeBase(stream->time_base, first_dts); + if (first_pts < start_time) + start_time = first_pts; + } +@@ -270,6 +270,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( + fixup_negative_timestamps_(false), + fixup_chained_ogg_(false), + num_discarded_packet_warnings_(0), ++ first_dts_(AV_NOPTS_VALUE), + last_packet_pos_(AV_NOPTS_VALUE), + last_packet_dts_(AV_NOPTS_VALUE) { + DCHECK(demuxer_); +@@ -336,6 +337,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + int64_t packet_dts = + packet->dts == AV_NOPTS_VALUE ? packet->pts : packet->dts; + ++ if (first_dts_ == AV_NOPTS_VALUE && packet->dts != AV_NOPTS_VALUE && ++ last_packet_dts_ != AV_NOPTS_VALUE) { ++ first_dts_ = packet->dts - (last_packet_dts_ + kRelativeTsBase); ++ } ++ + // Chained ogg files have non-monotonically increasing position and time stamp + // values, which prevents us from using them to determine if a packet should + // be dropped. Since chained ogg is only allowed on single track audio only +@@ -683,6 +689,7 @@ void FFmpegDemuxerStream::FlushBuffers(bool preserve_packet_position) { + ResetBitstreamConverter(); + + if (!preserve_packet_position) { ++ first_dts_ = AV_NOPTS_VALUE; + last_packet_pos_ = AV_NOPTS_VALUE; + last_packet_dts_ = AV_NOPTS_VALUE; + } +@@ -1452,7 +1459,8 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) { + + max_duration = std::max(max_duration, streams_[i]->duration()); + +- base::TimeDelta start_time = ExtractStartTime(stream); ++ base::TimeDelta start_time = ++ ExtractStartTime(stream, streams_[i]->first_dts()); + + // Note: This value is used for seeking, so we must take the true value and + // not the one possibly clamped to zero below. +@@ -1609,7 +1617,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindStreamWithLowestStartTimestamp( + for (const auto& stream : streams_) { + if (!stream || stream->IsEnabled() != enabled) + continue; +- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker) ++ if (stream->first_dts() == AV_NOPTS_VALUE) + continue; + if (!lowest_start_time_stream || + stream->start_time() < lowest_start_time_stream->start_time()) { +@@ -1630,7 +1638,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindPreferredStreamForSeeking( + if (stream->type() != DemuxerStream::VIDEO) + continue; + +- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker) ++ if (stream->first_dts() == AV_NOPTS_VALUE) + continue; + + if (!stream->IsEnabled()) +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h +index 086a795..ba9c665 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h +@@ -145,6 +145,8 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { + base::TimeDelta start_time() const { return start_time_; } + void set_start_time(base::TimeDelta time) { start_time_ = time; } + ++ int64_t first_dts() const { return first_dts_; } ++ + private: + friend class FFmpegDemuxerTest; + +@@ -202,6 +204,7 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { + bool fixup_chained_ogg_; + + int num_discarded_packet_warnings_; ++ int64_t first_dts_; + int64_t last_packet_pos_; + int64_t last_packet_dts_; + // Requested buffer count. The actual returned buffer count could be less diff --git a/qtwebengine-fix-arm-build.patch b/qtwebengine-fix-arm-build.patch deleted file mode 100644 index 5013750..0000000 --- a/qtwebengine-fix-arm-build.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index d5e9b715e..af4c046c4 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -570,6 +570,10 @@ foreach(arch ${archs}) - list(APPEND gnArgArg libyuv_use_sve=false) - endif() - endif() -+ if(cpu MATCHES "arm.*") -+ # https://bugreports.qt.io/browse/QTBUG-129985 -+ list(APPEND gnArgArg build_webnn_with_xnnpack=false) -+ endif() - unset(cpu) - endif() - diff --git a/qtwebengine-fix-build-against-gcc16.patch b/qtwebengine-fix-build-against-gcc16.patch deleted file mode 100644 index ad97de9..0000000 --- a/qtwebengine-fix-build-against-gcc16.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/3rdparty/chromium/base/strings/to_string.h b/src/3rdparty/chromium/base/strings/to_string.h -index 96e61daa9e..5d097946f7 100644 ---- a/src/3rdparty/chromium/base/strings/to_string.h -+++ b/src/3rdparty/chromium/base/strings/to_string.h -@@ -6,6 +6,7 @@ - #define BASE_STRINGS_TO_STRING_H_ - - #include -+#include - #include - #include - #include diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch new file mode 100644 index 0000000..be6a7bc --- /dev/null +++ b/qtwebengine-fix-build.patch @@ -0,0 +1,287 @@ +diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h +index 80c73feb9..d3921a6aa 100644 +--- a/src/3rdparty/chromium/base/debug/profiler.h ++++ b/src/3rdparty/chromium/base/debug/profiler.h +@@ -5,6 +5,7 @@ + #ifndef BASE_DEBUG_PROFILER_H_ + #define BASE_DEBUG_PROFILER_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc +index 714bd5efe..cf0bb5fa9 100644 +--- a/src/3rdparty/chromium/cc/trees/target_property.cc ++++ b/src/3rdparty/chromium/cc/trees/target_property.cc +@@ -8,6 +8,8 @@ + + #include "ui/gfx/animation/keyframe/target_property.h" + ++#include ++ + namespace cc { + + static_assert(TargetProperty::LAST_TARGET_PROPERTY < +diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +index c62a00ee0..af54520b7 100644 +--- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc ++++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +@@ -6,6 +6,8 @@ + + #include "base/threading/platform_thread.h" + ++#include ++ + namespace device { + + OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} +diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h +index 27adc05bf..a4839e859 100644 +--- a/src/3rdparty/chromium/extensions/common/constants.h ++++ b/src/3rdparty/chromium/extensions/common/constants.h +@@ -12,6 +12,8 @@ + #include "build/chromeos_buildflags.h" + #include "extensions/common/extensions_export.h" + ++#include ++ + namespace extensions { + + // Scheme we serve extension content from. +diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h +index 574aca1ff..fca32671c 100644 +--- a/src/3rdparty/chromium/gpu/config/gpu_util.h ++++ b/src/3rdparty/chromium/gpu/config/gpu_util.h +@@ -5,6 +5,8 @@ + #ifndef GPU_CONFIG_GPU_UTIL_H_ + #define GPU_CONFIG_GPU_UTIL_H_ + ++#include ++ + #include "build/build_config.h" + #include "gpu/config/gpu_feature_info.h" + #include "gpu/gpu_export.h" +diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h +index 091649590..a49ed9382 100644 +--- a/src/3rdparty/chromium/net/base/parse_number.h ++++ b/src/3rdparty/chromium/net/base/parse_number.h +@@ -10,6 +10,8 @@ + #include "base/strings/string_piece.h" + #include "net/base/net_export.h" + ++#include ++ + // This file contains utility functions for parsing numbers, in the context of + // network protocols. + // +diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h +index 7c0dcdecb..97054d476 100644 +--- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h ++++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h +@@ -38,6 +38,10 @@ namespace pp { + /// As a further optimization, we can add support for this later. + class ThreadSafeThreadTraits { + public: ++ ++ typedef pp::Lock Lock; ++ typedef pp::AutoLock AutoLock; ++ + class RefCount { + public: + /// Default constructor. In debug mode, this checks that the object is being +@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits { + int32_t ref_; + }; + +- typedef pp::Lock Lock; +- typedef pp::AutoLock AutoLock; + }; + + /// The non-thread-safe version of thread traits. Using this class as the +diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h +index 6cec3b6b8..541bba5b1 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h ++++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h +@@ -15,6 +15,7 @@ + #ifndef SRC_DAWN_NATIVE_CACHEKEY_H_ + #define SRC_DAWN_NATIVE_CACHEKEY_H_ + ++#include + #include + + #include "dawn/native/stream/ByteVectorSink.h" +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h +index 90077421d..f303f9e8b 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h +@@ -15,6 +15,7 @@ + #ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ + #define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ + ++#include + #include + + #include "src/tint/ast/pipeline_stage.h" +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h +index 7a20e8738..655f69ce3 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h +@@ -15,6 +15,7 @@ + #ifndef SRC_TINT_READER_SPIRV_NAMER_H_ + #define SRC_TINT_READER_SPIRV_NAMER_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h +index 8e0306b6a..0fc0cc2b0 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h +@@ -15,6 +15,7 @@ + #ifndef SRC_TINT_READER_WGSL_LEXER_H_ + #define SRC_TINT_READER_WGSL_LEXER_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h +index 222f28ef8..335c4c396 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h +@@ -15,6 +15,7 @@ + #ifndef SRC_TINT_READER_WGSL_TOKEN_H_ + #define SRC_TINT_READER_WGSL_TOKEN_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h b/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h +index 0601ca068..ac9dde64e 100644 +--- a/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h ++++ b/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h +@@ -15,6 +15,7 @@ + #ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_ + #define SRC_TINT_WRITER_SPIRV_OPERAND_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +index a3099e15d..2e6f0eea7 100644 +--- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc ++++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +index 3ff56aa0b..a36388bb8 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h ++++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +@@ -21,6 +21,8 @@ + #include "perfetto/ext/base/optional.h" + #include "src/trace_processor/importers/common/trace_parser.h" + ++#include ++ + namespace perfetto { + + namespace protos { +diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +index 0101632c5..3f04a2dd2 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +@@ -15,6 +15,10 @@ + #include + #include + ++#include ++#include ++#include ++ + static constexpr const char* gColorNames[] = { + "aliceblue", + "antiquewhite", +diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +index 9e073d4e1..da96f327c 100644 +--- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h ++++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +@@ -105,6 +105,8 @@ Documentation of all members: vk_mem_alloc.h + - [Source repository on GitHub](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) + */ + ++#include ++ + #ifdef __cplusplus + extern "C" { + #endif +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h +index ab52508c2..050229a2f 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h +@@ -13,6 +13,7 @@ + + #include + ++#include + #include + + namespace webrtc { +diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h +index 41ff9906d..1864e9e21 100644 +--- a/src/3rdparty/chromium/ui/events/gesture_event_details.h ++++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h +@@ -5,6 +5,7 @@ + #ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_ + #define UI_EVENTS_GESTURE_EVENT_DETAILS_H_ + ++#include + #include + + #include "base/check_op.h" +diff --git a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h +index ab0ce5808..9a9f187bb 100644 +--- a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h ++++ b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h +@@ -5,6 +5,7 @@ + #ifndef UI_GFX_LINEAR_GRADIENT_H_ + #define UI_GFX_LINEAR_GRADIENT_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h +index cd5b91f74..a74c0021f 100644 +--- a/src/3rdparty/chromium/v8/src/base/macros.h ++++ b/src/3rdparty/chromium/v8/src/base/macros.h +@@ -5,6 +5,7 @@ + #ifndef V8_BASE_MACROS_H_ + #define V8_BASE_MACROS_H_ + ++#include + #include + #include + +diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h +index a611a710c..67743f52b 100644 +--- a/src/core/browsing_data_remover_delegate_qt.h ++++ b/src/core/browsing_data_remover_delegate_qt.h +@@ -8,6 +8,8 @@ + + #include "content/public/browser/browsing_data_remover_delegate.h" + ++#include ++ + namespace QtWebEngineCore { + + class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate { diff --git a/qtwebengine-fix-quick-popup-window-positioning-under-x11.patch b/qtwebengine-fix-quick-popup-window-positioning-under-x11.patch deleted file mode 100644 index 318a852..0000000 --- a/qtwebengine-fix-quick-popup-window-positioning-under-x11.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 65ea28e7204eaeb39588a33cfc2f69c48951aa6a Mon Sep 17 00:00:00 2001 -From: Peter Varga -Date: Thu, 14 Aug 2025 16:17:41 +0200 -Subject: [PATCH] Fix Quick popup window positioning under X11 - -If the popup window has the Qt::Dialog flag, some window managers may -try to resize and move the popup after it becomes visible. This can lead -to a blinking popup or even worse, it can cause a loop that continuously -moves the popup window. - -Replace Qt::Tool flag with Qt::Popup to get rid of the Qt::Dialog flag -but keep popup as popup. - -Note on Wayland Qt:Tool is xdg toplevel not a 'popup' neither 'grabbing -popup' and it creates shell surface. This means it will get random -position on the screen. - -Note this tricky issue as we already changed that several times both -for widgets and quick due to different reasons (see 1390979a, 2f720836, -58467ed19, 7e7dd2625, c56169f7a1) - -Fixes: QTBUG-140321 -Task-number: QTBUG-132794 -Task-number: QTBUG-138747 -Pick-to: 6.10 -Change-Id: I8c3a94519008455fac2d8ab4c3bf34d860e2475b -Reviewed-by: Peter Varga ---- - .../render_widget_host_view_qt_delegate_quickwindow.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp -index 3ad88ca39aa..95b5e3500b3 100644 ---- a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp -+++ b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp -@@ -31,7 +31,8 @@ RenderWidgetHostViewQtDelegateQuickWindow::RenderWidgetHostViewQtDelegateQuickWi - RenderWidgetHostViewQtDelegateItem *realDelegate, QWindow *parent) - : QQuickWindow(), m_realDelegate(realDelegate), m_virtualParent(nullptr), m_transformed(false) - { -- setFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus); -+ setFlags(Qt::Popup | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint -+ | Qt::WindowDoesNotAcceptFocus); - realDelegate->setParentItem(contentItem()); - setTransientParent(parent); - } diff --git a/qtwebengine-link-pipewire.patch b/qtwebengine-link-pipewire.patch index 49d8aa2..e21f728 100644 --- a/qtwebengine-link-pipewire.patch +++ b/qtwebengine-link-pipewire.patch @@ -1,13 +1,13 @@ diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index 5a1c43c..82870d2 100644 +index a5da76c..9c5d358 100644 --- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -@@ -150,7 +150,7 @@ declare_args() { +@@ -138,7 +138,7 @@ declare_args() { rtc_use_pipewire = is_linux && use_sysroot - + # Set this to link PipeWire and required libraries directly instead of using the dlopen. - rtc_link_pipewire = false + rtc_link_pipewire = true - + # Enable to use the Mozilla internal settings. build_with_mozilla = false diff --git a/qtwebengine-move-gpu-info-logging-to-gpu-thread.patch b/qtwebengine-move-gpu-info-logging-to-gpu-thread.patch deleted file mode 100644 index 3d64eff..0000000 --- a/qtwebengine-move-gpu-info-logging-to-gpu-thread.patch +++ /dev/null @@ -1,607 +0,0 @@ -From 1534a75e57b47d763af8f32eec91bc8471442816 Mon Sep 17 00:00:00 2001 -From: Peter Varga -Date: Mon, 20 Oct 2025 10:43:49 +0200 -Subject: [PATCH] Move GPU info logging to the GPU thread - -Accessing certain GPU information (eg. GPU feature status values) from -the browser thread requires extra API on top of Chromium, such as -content::GpuChildThread::gpu_channel_manager(). - -This change moves the logging to the GPU thread, allowing use of -existing APIs like content::GpuDataManager::GetFeatureStatus(). - -Task-number: QTBUG-139335 -Fixes: QTBUG-142497 -Fixes: QTBUG-142720 -Change-Id: I4e4471a78258a1502ec0e11683cae3936e170ce1 -Reviewed-by: Moss Heim -(cherry picked from commit 0b65b0754d1534280acc3fe48be61127ce24ac93) ---- - -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index 64ef09f..eb83a82 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -132,6 +132,7 @@ - file_system_access/file_system_access_permission_request_manager_qt.cpp file_system_access/file_system_access_permission_request_manager_qt.h - find_text_helper.cpp find_text_helper.h - global_descriptors_qt.h -+ gpu/content_gpu_client_qt.cpp gpu/content_gpu_client_qt.h - javascript_dialog_controller.cpp javascript_dialog_controller.h javascript_dialog_controller_p.h - javascript_dialog_manager_qt.cpp javascript_dialog_manager_qt.h - login_delegate_qt.cpp login_delegate_qt.h -diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp -index 4d81e39..ed63980 100644 ---- a/src/core/content_client_qt.cpp -+++ b/src/core/content_client_qt.cpp -@@ -4,8 +4,6 @@ - - #include "content_client_qt.h" - --#include "compositor/compositor.h" -- - #include "base/command_line.h" - #include "base/files/file_util.h" - #include "base/json/json_string_value_serializer.h" -@@ -13,15 +11,11 @@ - #include "base/strings/string_util.h" - #include "base/values.h" - #include "base/version.h" --#include "content/gpu/gpu_child_thread.h" - #include "content/public/common/cdm_info.h" - #include "content/public/common/content_constants.h" - #include "content/public/common/content_switches.h" - #include "extensions/buildflags/buildflags.h" - #include "extensions/common/constants.h" --#include "gpu/config/gpu_feature_info.h" --#include "gpu/config/gpu_preferences.h" --#include "gpu/ipc/service/gpu_channel_manager.h" - #include "media/base/media_switches.h" - #include "media/base/video_codecs.h" - #include "media/cdm/supported_audio_codecs.h" -@@ -34,10 +28,8 @@ - #include - #include - #include --#include - #include - #include --#include - - #if BUILDFLAG(IS_WIN) - #include "ui/gl/gl_utils.h" -@@ -497,165 +489,4 @@ - return origin_trial_policy_.get(); - } - --void ContentClientQt::SetGpuInfo(const gpu::GPUInfo &gpu_info) --{ -- base::CommandLine *commandLine = base::CommandLine::ForCurrentProcess(); -- const bool isBrowserProcess = !commandLine->HasSwitch(switches::kProcessType); -- const bool isMainThread = QThread::currentThread() == qApp->thread(); -- -- // Limit this to the main thread of the browser process for now. -- if (!isBrowserProcess || !isMainThread) -- return; -- -- if (!gpu_info.IsInitialized()) { -- // This is probably not an issue but suspicious. -- qWarning("Failed to initialize GPUInfo."); -- return; -- } -- -- const gpu::GPUInfo::GPUDevice &primary = gpu_info.gpu; -- -- // Do not print the info again if the device hasn't been changed. -- // Change of the device is unexpected: we don't support or implement fallback yet. -- // It is suspicious if the info is logged twice. -- if (m_gpuInfo && m_gpuInfo->gpu.device_string == primary.device_string) -- return; -- m_gpuInfo = gpu_info; -- -- auto *gpuChannelManager = content::GpuChildThread::instance()->gpu_channel_manager(); -- const gpu::GpuFeatureStatus gpuCompositingStatus = -- gpuChannelManager->gpu_feature_info() -- .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_GL]; -- --#if BUILDFLAG(IS_OZONE) -- if (gpuCompositingStatus == gpu::kGpuFeatureStatusEnabled) { -- // See entry 3 in //gpu/config/software_rendering_list.json -- QRegularExpression filter(u"software|llvmpipe|softpipe"_s, -- QRegularExpression::CaseInsensitiveOption); -- if (filter.match(QLatin1StringView(gpu_info.gl_renderer)).hasMatch()) { -- qWarning("Hardware rendering is enabled but it is not supported with Mesa software " -- "rasterizer. Expect troubles."); -- -- if (gpuChannelManager->gpu_preferences().ignore_gpu_blocklist) -- qWarning("Rendering may fail because --ignore-gpu-blocklist is set."); -- } -- } --#endif -- -- if (Q_LIKELY(!lcWebEngineCompositor().isDebugEnabled())) -- return; -- -- auto deviceToString = [](const gpu::GPUInfo::GPUDevice &device) -> QString { -- if (device.vendor_id == 0x0) -- return "Disabled"_L1; -- -- QString log; -- -- // TODO: Factor vendor translation out from QtWebEngineCore::GPUInfo. -- // Only name the most common desktop GPU hardware vendors for now. -- switch (device.vendor_id) { -- case 0x1002: -- log += "AMD"_L1; -- break; -- case 0x10DE: -- log += "Nvidia"_L1; -- break; -- case 0x8086: -- log += "Intel"_L1; -- break; -- default: -- log += "vendor id: 0x"_L1 + QString::number(device.vendor_id, 16); -- } -- -- log += ", device id: 0x"_L1 + QString::number(device.device_id, 16); -- -- if (!device.driver_vendor.empty()) { -- log += ", driver: "_L1 + QLatin1StringView(device.driver_vendor) + u' ' -- + QLatin1StringView(device.driver_version); -- } -- log += ", system device id: 0x"_L1 + QString::number(device.system_device_id, 16); -- -- log += ", preference: "_L1; -- switch (device.gpu_preference) { -- case gl::GpuPreference::kNone: -- log += "None"_L1; -- break; -- case gl::GpuPreference::kDefault: -- log += "Default"_L1; -- break; -- case gl::GpuPreference::kLowPower: -- log += "LowPower"_L1; -- break; -- case gl::GpuPreference::kHighPerformance: -- log += "HighPerformance"_L1; -- break; -- } -- -- log += ", active: "_L1 + (device.active ? "yes"_L1 : "no"_L1); -- return log; -- }; -- -- QString log; -- -- log = "GPU Compositing: "; -- switch (gpuCompositingStatus) { -- case gpu::kGpuFeatureStatusEnabled: -- log += "Enabled"_L1; -- break; -- case gpu::kGpuFeatureStatusBlocklisted: -- log += "Blocklisted"_L1; -- break; -- case gpu::kGpuFeatureStatusDisabled: -- log += "Disabled"_L1; -- break; -- case gpu::kGpuFeatureStatusSoftware: -- log += "Software"_L1; -- break; -- case gpu::kGpuFeatureStatusUndefined: -- log += "Undefined"_L1; -- break; -- case gpu::kGpuFeatureStatusMax: -- log += "Max"_L1; -- break; -- } -- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log)); -- -- if (gpu_info.gl_vendor.empty() || gpu_info.gl_vendor == "Disabled") { -- log = "ANGLE is disabled:\n"_L1; -- log += " GL Renderer: "_L1 + QLatin1StringView(gpu_info.gl_renderer) + u'\n'; -- log += " Software Renderer: "_L1 + (primary.IsSoftwareRenderer() ? "yes"_L1 : "no"_L1) -- + u'\n'; -- log += " Primary GPU: "_L1 + deviceToString(primary) + u'\n'; -- } else { -- log = QLatin1StringView(gpu_info.display_type) + " display is initialized:\n"_L1; -- log += " GL Renderer: "_L1 + QLatin1StringView(gpu_info.gl_renderer) + u'\n'; -- log += " "_L1 + QString::number(gpu_info.GpuCount()) + " GPU(s) detected:\n"_L1; -- log += " "_L1 + deviceToString(primary) + u'\n'; -- for (auto &secondary : gpu_info.secondary_gpus) -- log += " "_L1 + deviceToString(secondary) + u'\n'; -- -- log += " NVIDIA Optimus: "_L1 + (gpu_info.optimus ? "enabled"_L1 : "disabled"_L1) + u'\n'; -- log += " AMD Switchable: "_L1 + (gpu_info.amd_switchable ? "enabled"_L1 : "disabled"_L1); -- } -- -- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log)); -- --#if BUILDFLAG(IS_WIN) -- log = "Windows specific driver information:\n"_L1; -- -- log += " Direct Composition: "_L1; -- if (gpu_info.overlay_info.direct_composition) -- log += "enabled\n"_L1; -- else if (gl::GetGlWorkarounds().disable_direct_composition) -- log += "disabled by workaround\n"_L1; -- else -- log += "disabled\n"_L1; -- -- log += " Supports Overlays: "_L1 -- + (gpu_info.overlay_info.supports_overlays ? "yes"_L1 : "no"_L1) + u'\n'; -- log += " Supports D3D Shared Images: "_L1 + (gpu_info.shared_image_d3d ? "yes"_L1 : "no"_L1); -- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log)); --#endif --} -- - } // namespace QtWebEngineCore -diff --git a/src/core/content_client_qt.h b/src/core/content_client_qt.h -index 2936c23..d5f9e71 100644 ---- a/src/core/content_client_qt.h -+++ b/src/core/content_client_qt.h -@@ -10,11 +10,9 @@ - #include "base/synchronization/lock.h" - #include "components/embedder_support/origin_trials/origin_trial_policy_impl.h" - #include "content/public/common/content_client.h" --#include "gpu/config/gpu_info.h" - #include "ui/base/layout.h" - - #include --#include - - namespace QtWebEngineCore { - -@@ -32,13 +30,11 @@ - gfx::Image &GetNativeImageNamed(int resource_id) override; - std::u16string GetLocalizedString(int message_id) override; - blink::OriginTrialPolicy *GetOriginTrialPolicy() override; -- void SetGpuInfo(const gpu::GPUInfo &gpu_info) override; - - private: - // Used to lock when |origin_trial_policy_| is initialized. - base::Lock origin_trial_policy_lock_; - std::unique_ptr origin_trial_policy_; -- std::optional m_gpuInfo; - }; - - } // namespace QtWebEngineCore -diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp -index 6c61c7a..1512f9a 100644 ---- a/src/core/content_main_delegate_qt.cpp -+++ b/src/core/content_main_delegate_qt.cpp -@@ -194,6 +194,12 @@ - return m_browserClient.get(); - } - -+content::ContentGpuClient *ContentMainDelegateQt::CreateContentGpuClient() -+{ -+ m_gpuClient.reset(new ContentGpuClientQt); -+ return m_gpuClient.get(); -+} -+ - content::ContentRendererClient *ContentMainDelegateQt::CreateContentRendererClient() - { - #if BUILDFLAG(IS_LINUX) -diff --git a/src/core/content_main_delegate_qt.h b/src/core/content_main_delegate_qt.h -index cb320ec..b725d88 100644 ---- a/src/core/content_main_delegate_qt.h -+++ b/src/core/content_main_delegate_qt.h -@@ -10,6 +10,7 @@ - #include "content_browser_client_qt.h" - #include "content_client_qt.h" - #include "content_utility_client_qt.h" -+#include "gpu/content_gpu_client_qt.h" - - namespace QtWebEngineCore { - -@@ -23,6 +24,7 @@ - - content::ContentClient *CreateContentClient() override; - content::ContentBrowserClient* CreateContentBrowserClient() override; -+ content::ContentGpuClient* CreateContentGpuClient() override; - content::ContentRendererClient* CreateContentRendererClient() override; - content::ContentUtilityClient* CreateContentUtilityClient() override; - std::optional BasicStartupComplete() override; -@@ -30,6 +32,7 @@ - private: - ContentClientQt m_contentClient; - std::unique_ptr m_browserClient; -+ std::unique_ptr m_gpuClient; - std::unique_ptr m_utilityClient; - }; - -diff --git a/src/core/gpu/content_gpu_client_qt.cpp b/src/core/gpu/content_gpu_client_qt.cpp -new file mode 100644 -index 0000000..2cb6592 ---- /dev/null -+++ b/src/core/gpu/content_gpu_client_qt.cpp -@@ -0,0 +1,236 @@ -+// Copyright (C) 2025 The Qt Company Ltd. -+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -+// Qt-Security score:significant reason:default -+ -+#include "content_gpu_client_qt.h" -+ -+#include "compositor/compositor.h" -+ -+#include "content/public/browser/browser_thread.h" -+#include "content/public/browser/gpu_data_manager.h" -+#include "content/public/browser/gpu_data_manager_observer.h" -+#include "gpu/config/gpu_driver_bug_workarounds.h" -+#include "gpu/config/gpu_info.h" -+#include "mojo/public/cpp/bindings/binder_map.h" -+ -+#include -+#include -+ -+#include -+#include -+ -+#if BUILDFLAG(IS_WIN) -+#include "ui/gl/gl_utils.h" -+#endif -+ -+using namespace Qt::StringLiterals; -+ -+namespace QtWebEngineCore { -+ -+namespace { -+static inline bool isSameDevice(const gpu::GPUInfo::GPUDevice &d1, -+ const gpu::GPUInfo::GPUDevice &d2) -+{ -+ return std::tie(d1.vendor_id, d1.device_id, d1.system_device_id, d1.vendor_string, -+ d1.device_string, d1.driver_vendor, d1.driver_version) -+ == std::tie(d2.vendor_id, d2.device_id, d2.system_device_id, d2.vendor_string, -+ d2.device_string, d2.driver_vendor, d2.driver_version); -+} -+ -+static QString gpuDeviceToString(const gpu::GPUInfo::GPUDevice &device) -+{ -+ if (device.vendor_id == 0x0) -+ return "Disabled"_L1; -+ -+ QString deviceString; -+ -+ // TODO: Factor vendor translation out from QtWebEngineCore::GPUInfo. -+ // Only name the most common desktop GPU hardware vendors for now. -+ switch (device.vendor_id) { -+ case 0x1002: -+ deviceString += "AMD"_L1; -+ break; -+ case 0x10DE: -+ deviceString += "Nvidia"_L1; -+ break; -+ case 0x8086: -+ deviceString += "Intel"_L1; -+ break; -+ default: -+ deviceString += "vendor id: 0x"_L1 + QString::number(device.vendor_id, 16); -+ } -+ -+ deviceString += ", device id: 0x"_L1 + QString::number(device.device_id, 16); -+ -+ if (!device.driver_vendor.empty()) { -+ deviceString += ", driver: "_L1 + QLatin1StringView(device.driver_vendor) + u' ' -+ + QLatin1StringView(device.driver_version); -+ } -+ deviceString += ", system device id: 0x"_L1 + QString::number(device.system_device_id, 16); -+ -+ deviceString += ", preference: "_L1; -+ switch (device.gpu_preference) { -+ case gl::GpuPreference::kNone: -+ deviceString += "None"_L1; -+ break; -+ case gl::GpuPreference::kDefault: -+ deviceString += "Default"_L1; -+ break; -+ case gl::GpuPreference::kLowPower: -+ deviceString += "LowPower"_L1; -+ break; -+ case gl::GpuPreference::kHighPerformance: -+ deviceString += "HighPerformance"_L1; -+ break; -+ } -+ -+ deviceString += ", active: "_L1 + (device.active ? "yes"_L1 : "no"_L1); -+ return deviceString; -+} -+ -+static inline const char *gpuFeatureStatusToString(const gpu::GpuFeatureStatus &status) -+{ -+ switch (status) { -+ case gpu::kGpuFeatureStatusEnabled: -+ return "Enabled"; -+ case gpu::kGpuFeatureStatusBlocklisted: -+ return "Blocklisted"; -+ case gpu::kGpuFeatureStatusDisabled: -+ return "Disabled"; -+ case gpu::kGpuFeatureStatusSoftware: -+ return "Software"; -+ case gpu::kGpuFeatureStatusUndefined: -+ return "Undefined"; -+ case gpu::kGpuFeatureStatusMax: -+ return "Max"; -+ } -+} -+ -+static QString angleInfo(const gpu::GPUInfo &gpuInfo) -+{ -+ QString info; -+ -+ if (gpuInfo.gl_vendor.empty() || gpuInfo.gl_vendor == "Disabled") { -+ info = "ANGLE is disabled:\n"_L1; -+ info += " GL Renderer: "_L1 + QLatin1StringView(gpuInfo.gl_renderer) + u'\n'; -+ info += " Software Renderer: "_L1 + (gpuInfo.gpu.IsSoftwareRenderer() ? "yes"_L1 : "no"_L1) -+ + u'\n'; -+ info += " Primary GPU: "_L1 + gpuDeviceToString(gpuInfo.gpu) + u'\n'; -+ return info; -+ } -+ -+ info = QLatin1StringView(gpuInfo.display_type) + " display is initialized:\n"_L1; -+ info += " GL Renderer: "_L1 + QLatin1StringView(gpuInfo.gl_renderer) + u'\n'; -+ info += " "_L1 + QString::number(gpuInfo.GpuCount()) + " GPU(s) detected:\n"_L1; -+ info += " "_L1 + gpuDeviceToString(gpuInfo.gpu) + u'\n'; -+ for (auto &secondary : gpuInfo.secondary_gpus) -+ info += " "_L1 + gpuDeviceToString(secondary) + u'\n'; -+ -+ info += " NVIDIA Optimus: "_L1 + (gpuInfo.optimus ? "enabled"_L1 : "disabled"_L1) + u'\n'; -+ info += " AMD Switchable: "_L1 + (gpuInfo.amd_switchable ? "enabled"_L1 : "disabled"_L1); -+ -+ return info; -+} -+ -+#if BUILDFLAG(IS_WIN) -+static QString windowsInfo(const gpu::GPUInfo &gpuInfo) -+{ -+ QString info; -+ info = "Windows specific driver information:\n"_L1; -+ -+ info += " Direct Composition: "_L1; -+ if (gpuInfo.overlay_info.direct_composition) -+ info += "enabled\n"_L1; -+ else if (gl::GetGlWorkarounds().disable_direct_composition) -+ info += "disabled by workaround\n"_L1; -+ else -+ info += "disabled\n"_L1; -+ -+ info += " Supports Overlays: "_L1 -+ + (gpuInfo.overlay_info.supports_overlays ? "yes"_L1 : "no"_L1) + u'\n'; -+ info += " Supports D3D Shared Images: "_L1 + (gpuInfo.shared_image_d3d ? "yes"_L1 : "no"_L1); -+ return info; -+} -+#endif -+} // namespace -+ -+class GpuObserver : public content::GpuDataManagerObserver -+{ -+public: -+ GpuObserver(ContentGpuClientQt *client) : m_client(client) -+ { -+ content::GpuDataManager *manager = content::GpuDataManager::GetInstance(); -+ if (manager->IsEssentialGpuInfoAvailable()) -+ OnGpuInfoUpdate(); -+ } -+ -+ ~GpuObserver() { content::GpuDataManager::GetInstance()->RemoveObserver(this); } -+ -+ void OnGpuInfoUpdate() override -+ { -+ content::GpuDataManager *manager = content::GpuDataManager::GetInstance(); -+ Q_ASSERT(manager->IsEssentialGpuInfoAvailable()); -+ -+ const gpu::GPUInfo &gpuInfo = manager->GetGPUInfo(); -+ Q_ASSERT(gpuInfo.IsInitialized()); -+ -+ // Avoid logging the info again if the device hasn't changed. -+ // A change in the device is unexpected, as we currently don't support or implement -+ // fallback. Logging the info multiple times may indicate a problem. -+ if (m_gpuInfo && isSameDevice(m_gpuInfo->gpu, gpuInfo.gpu)) -+ return; -+ m_gpuInfo = gpuInfo; -+ -+ const gpu::GpuFeatureStatus gpuCompositingStatus = -+ manager->GetFeatureStatus(gpu::GPU_FEATURE_TYPE_ACCELERATED_GL); -+ qCDebug(lcWebEngineCompositor, "GPU Compositing: %s", -+ gpuFeatureStatusToString(gpuCompositingStatus)); -+ -+#if BUILDFLAG(IS_OZONE) -+ if (gpuCompositingStatus == gpu::kGpuFeatureStatusEnabled) { -+ // See entry 3 in //gpu/config/software_rendering_list.json -+ QRegularExpression filter(u"software|llvmpipe|softpipe"_s, -+ QRegularExpression::CaseInsensitiveOption); -+ if (filter.match(QLatin1StringView(gpuInfo.gl_renderer)).hasMatch()) { -+ qWarning("Hardware rendering is enabled but it is not supported with Mesa software " -+ "rasterizer. Expect troubles."); -+ -+ if (m_client->gpuPreferences().ignore_gpu_blocklist) -+ qWarning("Rendering may fail because --ignore-gpu-blocklist is set."); -+ } -+ } -+#endif -+ -+ qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(angleInfo(gpuInfo))); -+#if BUILDFLAG(IS_WIN) -+ qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(windowsInfo(gpuInfo))); -+#endif -+ } -+ -+private: -+ ContentGpuClientQt *m_client; -+ std::optional m_gpuInfo; -+}; -+ -+ContentGpuClientQt::ContentGpuClientQt() = default; -+ContentGpuClientQt::~ContentGpuClientQt() = default; -+ -+void ContentGpuClientQt::GpuServiceInitialized() -+{ -+ // This is expected to be called on the GPU thread. -+ Q_ASSERT(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); -+ -+ m_gpuObserver.reset(new GpuObserver(this)); -+ content::GpuDataManager::GetInstance()->AddObserver(m_gpuObserver.get()); -+} -+ -+void ContentGpuClientQt::ExposeInterfacesToBrowser( -+ const gpu::GpuPreferences &gpu_preferences, -+ const gpu::GpuDriverBugWorkarounds &gpu_workarounds, mojo::BinderMap *binders) -+{ -+ Q_UNUSED(gpu_workarounds); -+ Q_UNUSED(binders); -+ m_gpuPreferences = gpu_preferences; -+} -+ -+} // namespace QtWebEngineCore -diff --git a/src/core/gpu/content_gpu_client_qt.h b/src/core/gpu/content_gpu_client_qt.h -new file mode 100644 -index 0000000..51b3a0d ---- /dev/null -+++ b/src/core/gpu/content_gpu_client_qt.h -@@ -0,0 +1,46 @@ -+// Copyright (C) 2025 The Qt Company Ltd. -+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only -+// Qt-Security score:significant reason:default -+ -+#ifndef CONTENT_GPU_CLIENT_QT_H -+#define CONTENT_GPU_CLIENT_QT_H -+ -+#include "content/public/gpu/content_gpu_client.h" -+#include "gpu/config/gpu_preferences.h" -+ -+#include -+ -+namespace gpu { -+class GpuDriverBugWorkarounds; -+} -+ -+namespace mojo { -+class BinderMap; -+} -+ -+namespace QtWebEngineCore { -+ -+class GpuObserver; -+ -+class ContentGpuClientQt : public content::ContentGpuClient -+{ -+public: -+ ContentGpuClientQt(); -+ ~ContentGpuClientQt(); -+ -+ gpu::GpuPreferences gpuPreferences() const { return m_gpuPreferences; } -+ -+ // Overridden from content::ContentGpuClient: -+ void GpuServiceInitialized() override; -+ void ExposeInterfacesToBrowser(const gpu::GpuPreferences &gpu_preferences, -+ const gpu::GpuDriverBugWorkarounds &gpu_workarounds, -+ mojo::BinderMap *binders) override; -+ -+private: -+ QScopedPointer m_gpuObserver; -+ gpu::GpuPreferences m_gpuPreferences; -+}; -+ -+} // namespace QtWebEngineCore -+ -+#endif // CONTENT_GPU_CLIENT_QT_H diff --git a/qtwebengine-use-openh264.patch b/qtwebengine-use-openh264.patch deleted file mode 100644 index c3541e2..0000000 --- a/qtwebengine-use-openh264.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index cc992b4..7b6326f 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -449,6 +449,8 @@ foreach(arch ${archs}) - use_bluez=false - is_cfi=false - use_ozone=true -+ media_use_openh264=true -+ rtc_use_h264=true - ozone_auto_platforms=false - ozone_platform_headless=false - ozone_platform_external=true diff --git a/qtwebengine-webrtc-dlopen-h264.patch b/qtwebengine-webrtc-dlopen-h264.patch new file mode 100644 index 0000000..048e191 --- /dev/null +++ b/qtwebengine-webrtc-dlopen-h264.patch @@ -0,0 +1,159 @@ +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn +index 8e3529974..ca7370599 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn +@@ -7,6 +7,7 @@ + # be found in the AUTHORS file in the root of the source tree. + + import("//third_party/libaom/options.gni") ++import("//tools/generate_stubs/rules.gni") + import("../../webrtc.gni") + + rtc_library("encoded_frame") { +@@ -461,6 +462,17 @@ rtc_library("video_coding_utility") { + ] + } + ++if (rtc_use_h264 && rtc_dlopen_openh264) { ++ # When OpenH264 is not directly linked, use stubs to allow for dlopening of ++ # the binary. ++ generate_stubs("openh264_stubs") { ++ configs = [ "../../:common_config" ] ++ extra_header = "codecs/h264/openh264_stub_header.fragment" ++ output_name = "codecs/h264/openh264_stubs" ++ sigs = [ "codecs/h264/openh264.sigs" ] ++ } ++} ++ + rtc_library("webrtc_h264") { + visibility = [ "*" ] + sources = [ +@@ -507,10 +519,15 @@ rtc_library("webrtc_h264") { + ] + + if (rtc_use_h264) { +- deps += [ +- "//third_party/ffmpeg", +- "//third_party/openh264:encoder", +- ] ++ deps += [ "//third_party/ffmpeg" ] ++ ++ if (rtc_dlopen_openh264) { ++ defines = [ "WEBRTC_DLOPEN_OPENH264" ] ++ deps += [ ":openh264_stubs" ] ++ } else { ++ deps += [ "//third_party/openh264:encoder" ] ++ } ++ + if (!build_with_mozilla) { + deps += [ "../../media:rtc_media_base" ] + } +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc +index b6023ac50..228486870 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc +@@ -39,10 +39,22 @@ + #include "third_party/openh264/src/codec/api/wels/codec_def.h" + #include "third_party/openh264/src/codec/api/wels/codec_ver.h" + ++#if defined(WEBRTC_DLOPEN_OPENH264) ++#include "modules/video_coding/codecs/h264/openh264_stubs.h" ++#endif // defined(WEBRTC_DLOPEN_OPENH264) ++ + namespace webrtc { + + namespace { + ++#if defined(WEBRTC_DLOPEN_OPENH264) ++using third_party_webrtc_modules_video_coding_codecs_h264::InitializeStubs; ++using third_party_webrtc_modules_video_coding_codecs_h264::kModuleOpenh264; ++using third_party_webrtc_modules_video_coding_codecs_h264::StubPathMap; ++ ++static constexpr char kOpenH264Lib[] = "libopenh264.so.7"; ++#endif ++ + const bool kOpenH264EncoderDetailedLogging = false; + + // QP scaling thresholds. +@@ -198,6 +210,15 @@ H264EncoderImpl::~H264EncoderImpl() { + + int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, + const VideoEncoder::Settings& settings) { ++#if defined(WEBRTC_DLOPEN_OPENH264) ++ StubPathMap paths; ++ paths[kModuleOpenh264].push_back(kOpenH264Lib); ++ ++ static bool result = InitializeStubs(paths); ++ if (!result) ++ return WEBRTC_VIDEO_CODEC_UNINITIALIZED; ++#endif ++ + ReportInit(); + if (!inst || inst->codecType != kVideoCodecH264) { + ReportError(); +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs +new file mode 100644 +index 000000000..4924f8e9a +--- /dev/null ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs +@@ -0,0 +1,14 @@ ++// Copyright 2022 The WebRTC project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//------------------------------------------------ ++// Functions from OpenH264. ++//------------------------------------------------ ++int WelsCreateSVCEncoder(ISVCEncoder **ppEncoder); ++void WelsDestroySVCEncoder(ISVCEncoder *pEncoder); ++int WelsGetDecoderCapability(SDecoderCapability *pDecCapability); ++long WelsCreateDecoder(ISVCDecoder **ppDecoder); ++void WelsDestroyDecoder(ISVCDecoder *pDecoder); ++OpenH264Version WelsGetCodecVersion(void); ++void WelsGetCodecVersionEx(OpenH264Version *pVersion); +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment +new file mode 100644 +index 000000000..9bc0a7cbe +--- /dev/null ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment +@@ -0,0 +1,11 @@ ++// The extra include header needed in the generated stub file for defining ++// various OpenH264 types. ++ ++extern "C" { ++ ++#include "third_party/openh264/src/codec/api/wels/codec_api.h" ++#include "third_party/openh264/src/codec/api/wels/codec_app_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_ver.h" ++ ++} +diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +index 8dfcc9d24..0a27fd2d6 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni ++++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +@@ -181,6 +181,10 @@ declare_args() { + rtc_use_h264 = + proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang) + ++ # Allow to use OpenH264 on systems where OpenH264 cannot be installed by ++ # default due to licensing, but can be installed later from other sources. ++ rtc_dlopen_openh264 = false ++ + # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. + rtc_use_absl_mutex = false + +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index 4153ce180..afaa9dcb1 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -418,6 +418,9 @@ foreach(arch ${archs}) + use_udev=true + is_cfi=false + use_ozone=true ++ media_use_openh264=false ++ rtc_use_h264=true ++ rtc_dlopen_openh264=true + ozone_auto_platforms=false + ozone_platform_headless=false + ozone_platform_external=true diff --git a/series.ppc64 b/series.ppc64 deleted file mode 100644 index c0e8461..0000000 --- a/series.ppc64 +++ /dev/null @@ -1,44 +0,0 @@ -# from chromium-130 branch at https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches.git -# do following edits to the patches: -# - third_party/0001-Add-PPC64-support-for-boringssl.patch -# - remove third_party/boringssl/src/crypto/test/abi_test.h -# - crashpad/0001-Implement-support-for-PPC64-on-Linux.patch -# - remove all tests -# - crashpad/minidump/test/* -# - crashpad/snapshot/test/* -# - crashpad/test/* -# -# or use prepare-ppc64.sh script to generate the patchset -# - -ppc64le/sandbox/0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch -ppc64le/sandbox/0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch -ppc64le/sandbox/0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch -ppc64le/sandbox/0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch -ppc64le/sandbox/0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch -ppc64le/sandbox/0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch -ppc64le/sandbox/0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch -ppc64le/sandbox/0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch -ppc64le/sandbox/0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch -ppc64le/sandbox/0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch -ppc64le/sandbox/0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch -ppc64le/sandbox/0005-sandbox-linux-update-unit-test-for-ppc64.patch -ppc64le/sandbox/0006-sandbox-linux-disable-timedwait-time64-ppc64.patch -ppc64le/sandbox/0007-sandbox-linux-add-ppc64-stat.patch -ppc64le/sandbox/Sandbox-linux-services-credentials.cc-PPC.patch -ppc64le/sandbox/0008-sandbox-fix-ppc64le-glibc234.patch -ppc64le/third_party/0001-third_party-angle-Include-missing-header-cstddef-in-.patch -ppc64le/third_party/0001-Add-PPC64-support-for-boringssl.patch -ppc64le/third_party/0001-third_party-lss-Don-t-look-for-mmap2-on-ppc64.patch -ppc64le/third_party/0002-third_party-lss-kernel-structs.patch -ppc64le/libaom/0001-Add-ppc64-target-to-libaom.patch -ppc64le/libaom/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch -ppc64le/third_party/0002-third_party-libvpx-Remove-bad-ppc64-config.patch -ppc64le/third_party/0002-Add-PPC64-generated-files-for-boringssl.patch -ppc64le/third_party/0003-third_party-libvpx-Add-ppc64-generated-config.patch -ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch -ppc64le/fixes/fix-partition-alloc-compile.patch -ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch -ppc64le/third_party/dawn-fix-ppc64le-detection.patch -ppc64le/core/add-ppc64-pthread-stack-size.patch -ppc64le/third_party/0001-third-party-hwy-wrong-include.patch diff --git a/sources b/sources index 3d8dace..7a0740e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be -SHA512 (qtwebengine-everywhere-src-6.10.1-clean.tar.xz) = c297c030623663dce4943562ca60ac64067702dd96b487f5786fb765c477162ee7d040e6ecb4b820ff9ef162259e1f56bd1054e20e0982fef90fa32857a462c9 +SHA512 (qtwebengine-everywhere-src-6.6.0-clean.tar.xz) = 4f578066dbd28c7688c4e6801bee11156791cf6df39b0b084017e351aa0520fb473c3a519c411662ea8d7a94e362b160b785462f6a16ea5df69773c6a722030f