From 4816f4d40e3ae02c63af4e8a93dc46e3fdd4e5a7 Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Wed, 22 Jan 2025 05:27:06 +0000 Subject: [PATCH] Bug 1942738 - Move the .fpu neon directive around. a=RyanVM clang's integrated assembler doesn't handle .fpu coming before .arch like GNU as does. The pixman patch was sent upstream: https://gitlab.freedesktop.org/pixman/pixman/-/issues/113#note_2746582 Original Revision: https://phabricator.services.mozilla.com/D235087 Differential Revision: https://phabricator.services.mozilla.com/D235100 --- gfx/cairo/README | 2 ++ .../src/pixman-arm-neon-asm-bilinear.S | 2 +- gfx/cairo/libpixman/src/pixman-arm-neon-asm.S | 2 +- gfx/cairo/pixman-neon.patch | 30 +++++++++++++++++++ gfx/ycbcr/yuv_convert_arm.cpp | 2 +- 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 gfx/cairo/pixman-neon.patch diff --git a/gfx/cairo/README b/gfx/cairo/README index e79e603ea7ec..bc2c4f831d9e 100644 --- a/gfx/cairo/README +++ b/gfx/cairo/README @@ -63,3 +63,5 @@ pixman-interp.patch: use lower quality interpolation by default on mobile pixman-intrin.patch: include intrin.h on Windows to fix bustage pixman-rename.patch: include pixman-rename.h for renaming of external symbols + +pixman-neon.patch: fix for a build failure with clang on armhf linux diff --git a/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S b/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S index 6bd27360aa02..cd33babca1e0 100644 --- a/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S +++ b/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S @@ -55,9 +55,9 @@ #endif .text -.fpu neon .arch armv7a .object_arch armv4 +.fpu neon .eabi_attribute 10, 0 .eabi_attribute 12, 0 .arm diff --git a/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S b/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S index 0e092577f1c7..c04b335d1e5b 100644 --- a/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S +++ b/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S @@ -40,9 +40,9 @@ #endif .text - .fpu neon .arch armv7a .object_arch armv4 + .fpu neon .eabi_attribute 10, 0 /* suppress Tag_FP_arch */ .eabi_attribute 12, 0 /* suppress Tag_Advanced_SIMD_arch */ .arm diff --git a/gfx/cairo/pixman-neon.patch b/gfx/cairo/pixman-neon.patch new file mode 100644 index 000000000000..049b8b7105f7 --- /dev/null +++ b/gfx/cairo/pixman-neon.patch @@ -0,0 +1,30 @@ +diff --git a/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S b/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S +index 6bd27360aa027..cd33babca1e0c 100644 +--- a/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S ++++ b/gfx/cairo/libpixman/src/pixman-arm-neon-asm-bilinear.S +@@ -55,9 +55,9 @@ + #endif + + .text +-.fpu neon + .arch armv7a + .object_arch armv4 ++.fpu neon + .eabi_attribute 10, 0 + .eabi_attribute 12, 0 + .arm +diff --git a/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S b/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S +index 0e092577f1c73..c04b335d1e5bd 100644 +--- a/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S ++++ b/gfx/cairo/libpixman/src/pixman-arm-neon-asm.S +@@ -40,9 +40,9 @@ + #endif + + .text +- .fpu neon + .arch armv7a + .object_arch armv4 ++ .fpu neon + .eabi_attribute 10, 0 /* suppress Tag_FP_arch */ + .eabi_attribute 12, 0 /* suppress Tag_Advanced_SIMD_arch */ + .arm diff --git a/gfx/ycbcr/yuv_convert_arm.cpp b/gfx/ycbcr/yuv_convert_arm.cpp index 7d58fa475db6..76df7e51c58d 100644 --- a/gfx/ycbcr/yuv_convert_arm.cpp +++ b/gfx/ycbcr/yuv_convert_arm.cpp @@ -53,11 +53,11 @@ void __attribute((noinline,optimize("-fomit-frame-pointer"))) * q13, q14, q15 - various constants (#16, #149, #204, #50, #104, #154) */ asm volatile ( -".fpu neon\n" /* Allow to build on targets not supporting neon, and force the object file * target to avoid bumping the final binary target */ ".arch armv7-a\n" ".object_arch armv4t\n" +".fpu neon\n" ".macro convert_macroblock size\n" /* load up to 16 source pixels */ ".if \\size == 16\n"