diff options
author | Siarhei Siamashka <siarhei.siamashka@nokia.com> | 2009-12-27 00:27:53 +0200 |
---|---|---|
committer | Siarhei Siamashka <siarhei.siamashka@nokia.com> | 2010-03-22 16:15:18 +0200 |
commit | 5791026e45f79d8f5168e302a498455870363ac6 (patch) | |
tree | 32b48e066e668af9eef35b7372bcb129c2dd9f4e | |
parent | 68d8d83223b5a35e25d379c2ee9e2e3a1d242323 (diff) |
ARM: Workaround for a NEON bug in assembler from binutils 2.18
The problem was reported as bug 25534 against pixman in
freedesktop.org bugzila. Link to a patch for binutils:
http://sourceware.org/ml/binutils/2008-03/msg00260.html
For pixman the impact is a build failure when using
binutils 2.18. Versions 2.19 and higer are fine. Still
some distros may be using older versions of binutils and
this is causing problems.
This patch workarounds the problem by replacing a problematic
"vmov a, b" instruction with equivalent "vorr a, b, b". Actually
they even map to the same instruction opcode in the generated
code, so the resulting binary is identical with and without patch.
-rw-r--r-- | pixman/pixman-arm-neon-asm.S | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S index 6be8d239..51bc347b 100644 --- a/pixman/pixman-arm-neon-asm.S +++ b/pixman/pixman-arm-neon-asm.S @@ -876,8 +876,8 @@ generate_composite_function \ vsli.u64 d0, d0, #8 vsli.u64 d0, d0, #16 vsli.u64 d0, d0, #32 - vmov d1, d0 - vmov q1, q0 + vorr d1, d0, d0 + vorr q1, q0, q0 .endm .macro pixman_composite_src_n_8_cleanup @@ -915,8 +915,8 @@ generate_composite_function \ vld1.32 {d0[0]}, [DUMMY] vsli.u64 d0, d0, #16 vsli.u64 d0, d0, #32 - vmov d1, d0 - vmov q1, q0 + vorr d1, d0, d0 + vorr q1, q0, q0 .endm .macro pixman_composite_src_n_0565_cleanup @@ -953,8 +953,8 @@ generate_composite_function \ add DUMMY, sp, #ARGS_STACK_OFFSET vld1.32 {d0[0]}, [DUMMY] vsli.u64 d0, d0, #32 - vmov d1, d0 - vmov q1, q0 + vorr d1, d0, d0 + vorr q1, q0, q0 .endm .macro pixman_composite_src_n_8888_cleanup |