summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiarhei Siamashka <siarhei.siamashka@nokia.com>2009-12-27 00:27:53 +0200
committerSiarhei Siamashka <siarhei.siamashka@nokia.com>2010-03-22 16:15:18 +0200
commit5791026e45f79d8f5168e302a498455870363ac6 (patch)
tree32b48e066e668af9eef35b7372bcb129c2dd9f4e
parent68d8d83223b5a35e25d379c2ee9e2e3a1d242323 (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.S12
1 files changed, 6 insertions, 6 deletions
diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
index 6be8d23..51bc347 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