extra/webkitgtk: v8 fixes

This commit is contained in:
Kevin Mihelich 2016-03-19 02:21:13 +00:00
parent 16deb46427
commit 7f36cf7b4a
5 changed files with 191 additions and 57 deletions

View file

@ -0,0 +1,74 @@
Index: trunk/Source/WTF/wtf/Atomics.h
===================================================================
--- trunk/Source/WTF/wtf/Atomics.h (revision 166233)
+++ trunk/Source/WTF/wtf/Atomics.h (revision 166234)
@@ -105,20 +105,34 @@
"movw %1, #1\n\t"
"ldrex %2, %0\n\t"
"cmp %3, %2\n\t"
"bne.n 0f\n\t"
"strex %1, %4, %0\n\t"
"0:"
: "+Q"(*location), "=&r"(result), "=&r"(tmp)
: "r"(expected), "r"(newValue)
: "memory");
result = !result;
+#elif CPU(ARM64) && COMPILER(GCC)
+ unsigned tmp;
+ unsigned result;
+ asm volatile(
+ "mov %w1, #1\n\t"
+ "ldxr %w2, [%0]\n\t"
+ "cmp %w3, %w2\n\t"
+ "b.ne 0f\n\t"
+ "stxr %w1, %w4, [%0]\n\t"
+ "0:"
+ : "+r"(location), "=&r"(result), "=&r"(tmp)
+ : "r"(expected), "r"(newValue)
+ : "memory");
+ result = !result;
#elif CPU(ARM64)
unsigned tmp;
unsigned result;
asm volatile(
"mov %w1, #1\n\t"
"ldxr %w2, %0\n\t"
"cmp %w3, %w2\n\t"
"b.ne 0f\n\t"
"stxr %w1, %w4, %0\n\t"
"0:"
@@ -145,20 +159,34 @@
#if CPU(X86_64)
bool result;
asm volatile(
"lock; cmpxchgq %3, %2\n\t"
"sete %1"
: "+a"(expected), "=q"(result), "+m"(*location)
: "r"(newValue)
: "memory"
);
return result;
+#elif CPU(ARM64) && COMPILER(GCC)
+ bool result;
+ void* tmp;
+ asm volatile(
+ "mov %w1, #1\n\t"
+ "ldxr %x2, [%0]\n\t"
+ "cmp %x3, %x2\n\t"
+ "b.ne 0f\n\t"
+ "stxr %w1, %x4, [%0]\n\t"
+ "0:"
+ : "+r"(location), "=&r"(result), "=&r"(tmp)
+ : "r"(expected), "r"(newValue)
+ : "memory");
+ return !result;
#elif CPU(ARM64)
bool result;
void* tmp;
asm volatile(
"mov %w1, #1\n\t"
"ldxr %x2, %0\n\t"
"cmp %x3, %x2\n\t"
"b.ne 0f\n\t"
"stxr %w1, %x4, %0\n\t"
"0:"

View file

@ -0,0 +1,111 @@
Index: trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp
===================================================================
--- trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp (revision 165676)
+++ trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp (revision 166233)
@@ -1041,59 +1041,59 @@
asm volatile (
// First, load the leftMatrix completely in memory. The leftMatrix is in v16-v23.
- "mov x4, %[leftMatrix]\n\t"
- "ld1.2d {v16, v17, v18, v19}, [%[leftMatrix]], #64\n\t"
- "ld1.2d {v20, v21, v22, v23}, [%[leftMatrix]]\n\t"
+ "mov x4, %[leftMatrix]\n\t"
+ "ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [%[leftMatrix]], #64\n\t"
+ "ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [%[leftMatrix]]\n\t"
// First row.
- "ld4r.2d {v24, v25, v26, v27}, [%[rightMatrix]], #32\n\t"
- "fmul.2d v28, v24, v16\n\t"
- "fmul.2d v29, v24, v17\n\t"
- "fmla.2d v28, v25, v18\n\t"
- "fmla.2d v29, v25, v19\n\t"
- "fmla.2d v28, v26, v20\n\t"
- "fmla.2d v29, v26, v21\n\t"
- "fmla.2d v28, v27, v22\n\t"
- "fmla.2d v29, v27, v23\n\t"
-
- "ld4r.2d {v0, v1, v2, v3}, [%[rightMatrix]], #32\n\t"
- "st1.2d {v28, v29}, [x4], #32\n\t"
+ "ld4r {v24.2d, v25.2d, v26.2d, v27.2d}, [%[rightMatrix]], #32\n\t"
+ "fmul v28.2d, v24.2d, v16.2d\n\t"
+ "fmul v29.2d, v24.2d, v17.2d\n\t"
+ "fmla v28.2d, v25.2d, v18.2d\n\t"
+ "fmla v29.2d, v25.2d, v19.2d\n\t"
+ "fmla v28.2d, v26.2d, v20.2d\n\t"
+ "fmla v29.2d, v26.2d, v21.2d\n\t"
+ "fmla v28.2d, v27.2d, v22.2d\n\t"
+ "fmla v29.2d, v27.2d, v23.2d\n\t"
+
+ "ld4r {v0.2d, v1.2d, v2.2d, v3.2d}, [%[rightMatrix]], #32\n\t"
+ "st1 {v28.2d, v29.2d}, [x4], #32\n\t"
// Second row.
- "fmul.2d v30, v0, v16\n\t"
- "fmul.2d v31, v0, v17\n\t"
- "fmla.2d v30, v1, v18\n\t"
- "fmla.2d v31, v1, v19\n\t"
- "fmla.2d v30, v2, v20\n\t"
- "fmla.2d v31, v2, v21\n\t"
- "fmla.2d v30, v3, v22\n\t"
- "fmla.2d v31, v3, v23\n\t"
-
- "ld4r.2d {v24, v25, v26, v27}, [%[rightMatrix]], #32\n\t"
- "st1.2d {v30, v31}, [x4], #32\n\t"
+ "fmul v30.2d, v0.2d, v16.2d\n\t"
+ "fmul v31.2d, v0.2d, v17.2d\n\t"
+ "fmla v30.2d, v1.2d, v18.2d\n\t"
+ "fmla v31.2d, v1.2d, v19.2d\n\t"
+ "fmla v30.2d, v2.2d, v20.2d\n\t"
+ "fmla v31.2d, v2.2d, v21.2d\n\t"
+ "fmla v30.2d, v3.2d, v22.2d\n\t"
+ "fmla v31.2d, v3.2d, v23.2d\n\t"
+
+ "ld4r {v24.2d, v25.2d, v26.2d, v27.2d}, [%[rightMatrix]], #32\n\t"
+ "st1 {v30.2d, v31.2d}, [x4], #32\n\t"
// Third row.
- "fmul.2d v28, v24, v16\n\t"
- "fmul.2d v29, v24, v17\n\t"
- "fmla.2d v28, v25, v18\n\t"
- "fmla.2d v29, v25, v19\n\t"
- "fmla.2d v28, v26, v20\n\t"
- "fmla.2d v29, v26, v21\n\t"
- "fmla.2d v28, v27, v22\n\t"
- "fmla.2d v29, v27, v23\n\t"
-
- "ld4r.2d {v0, v1, v2, v3}, [%[rightMatrix]], #32\n\t"
- "st1.2d {v28, v29}, [x4], #32\n\t"
+ "fmul v28.2d, v24.2d, v16.2d\n\t"
+ "fmul v29.2d, v24.2d, v17.2d\n\t"
+ "fmla v28.2d, v25.2d, v18.2d\n\t"
+ "fmla v29.2d, v25.2d, v19.2d\n\t"
+ "fmla v28.2d, v26.2d, v20.2d\n\t"
+ "fmla v29.2d, v26.2d, v21.2d\n\t"
+ "fmla v28.2d, v27.2d, v22.2d\n\t"
+ "fmla v29.2d, v27.2d, v23.2d\n\t"
+
+ "ld4r {v0.2d, v1.2d, v2.2d, v3.2d}, [%[rightMatrix]], #32\n\t"
+ "st1 {v28.2d, v29.2d}, [x4], #32\n\t"
// Fourth row.
- "fmul.2d v30, v0, v16\n\t"
- "fmul.2d v31, v0, v17\n\t"
- "fmla.2d v30, v1, v18\n\t"
- "fmla.2d v31, v1, v19\n\t"
- "fmla.2d v30, v2, v20\n\t"
- "fmla.2d v31, v2, v21\n\t"
- "fmla.2d v30, v3, v22\n\t"
- "fmla.2d v31, v3, v23\n\t"
-
- "st1.2d {v30, v31}, [x4]\n\t"
+ "fmul v30.2d, v0.2d, v16.2d\n\t"
+ "fmul v31.2d, v0.2d, v17.2d\n\t"
+ "fmla v30.2d, v1.2d, v18.2d\n\t"
+ "fmla v31.2d, v1.2d, v19.2d\n\t"
+ "fmla v30.2d, v2.2d, v20.2d\n\t"
+ "fmla v31.2d, v2.2d, v21.2d\n\t"
+ "fmla v30.2d, v3.2d, v22.2d\n\t"
+ "fmla v31.2d, v3.2d, v23.2d\n\t"
+
+ "st1 {v30.2d, v31.2d}, [x4]\n\t"
: [leftMatrix]"+r"(leftMatrix), [rightMatrix]"+r"(rightMatrix)

View file

@ -22,11 +22,11 @@ optdepends=('gst-plugins-base: free media decoding'
'gst-libav: nonfree media decoding')
options=(!emptydirs)
source=(http://webkitgtk.org/releases/$pkgbase-${pkgver}.tar.xz
webkitgtk-aarch64.patch
webkitgtk-2.4.1-ppc64_align.patch)
ARM64-GCC-generates-wrong-code-with-O2-flag-in-WTF-weakCompareAndSwap.patch
ARM64-GNU-assembler-fails-in-TransformationMatrix-multiply.patch)
sha256sums=('33fda4b20d7fec2d6e9399ba03ef3f6d2a733c628bd77d397880c44e4bf7c614'
'362c66145e3a7978cd612d1a838be7b556d31bb4c51f9ffe12054b5c91b08a73'
'8b1759b819cb964e4b6f0a65c2f89dd68919f8ffe30094d22f0f598fc8cd9f60')
'9313e66470e502bc3f2152ec00d8ef7d7c637dcc087b29e124b89ce92d8e28ce'
'2b1bbe3b3106c414085f98c5447e9555d9323b5aa388216df08cb5fadf041b1d')
prepare() {
mkdir build-gtk{,2} path
@ -34,9 +34,9 @@ prepare() {
# AArch64 fixes
cd $pkgbase-$pkgver
patch -p1 -i ../webkitgtk-aarch64.patch
if [[ $CARCH == "aarch64" ]]; then
patch -p1 -i ../webkitgtk-2.4.1-ppc64_align.patch
patch -p1 -i ../ARM64-GCC-generates-wrong-code-with-O2-flag-in-WTF-weakCompareAndSwap.patch
patch -p1 -i ../ARM64-GNU-assembler-fails-in-TransformationMatrix-multiply.patch
CFLAGS+=" -DENABLE_YARR_JIT=0"
CXXFLAGS+=" -DENABLE_YARR_JIT=0"
fi

View file

@ -1,12 +0,0 @@
diff -up webkitgtk-2.4.2/Source/JavaScriptCore/heap/CopiedBlock.h.ppc64_align webkitgtk-2.4.2/Source/JavaScriptCore/heap/CopiedBlock.h
--- webkitgtk-2.4.2/Source/JavaScriptCore/heap/CopiedBlock.h.ppc64_align 2014-05-12 08:03:53.000000000 +0200
+++ webkitgtk-2.4.2/Source/JavaScriptCore/heap/CopiedBlock.h 2014-05-14 15:16:36.946318596 +0200
@@ -81,7 +81,7 @@ public:
size_t size();
size_t capacity();
- static const size_t blockSize = 32 * KB;
+ static const size_t blockSize = 64 * KB;
bool hasWorkList();
CopyWorkList& workList();

View file

@ -1,39 +0,0 @@
diff -up webkitgtk-2.4.9/Source/WTF/wtf/dtoa/utils.h.aarch64 webkitgtk-2.4.9/Source/WTF/wtf/dtoa/utils.h
--- webkitgtk-2.4.9/Source/WTF/wtf/dtoa/utils.h.aarch64 2015-05-20 11:03:24.000000000 +0200
+++ webkitgtk-2.4.9/Source/WTF/wtf/dtoa/utils.h 2015-05-20 13:45:35.629023925 +0200
@@ -49,7 +49,7 @@
defined(__ARMEL__) || \
defined(_MIPS_ARCH_MIPS32R2)
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
-#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA)
+#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(AARCH64) || CPU(HPPA)
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
#elif defined(_M_IX86) || defined(__i386__)
#if defined(_WIN32)
diff -up webkitgtk-2.4.9/Source/WTF/wtf/Platform.h.aarch64 webkitgtk-2.4.9/Source/WTF/wtf/Platform.h
--- webkitgtk-2.4.9/Source/WTF/wtf/Platform.h.aarch64 2015-05-20 11:03:24.000000000 +0200
+++ webkitgtk-2.4.9/Source/WTF/wtf/Platform.h 2015-05-20 13:47:34.439861401 +0200
@@ -334,6 +334,14 @@
#define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
#endif
+/* CPU(AARCH64) - AArch64 */
+#if defined(__aarch64__)
+#define WTF_CPU_AARCH64 1
+#if defined(__AARCH64BE__)
+#define WTF_CPU_BIG_ENDIAN 1
+#endif
+#endif
+
/* ==== OS() - underlying operating system; only to be used for mandated low-level services like
virtual memory, not to choose a GUI toolkit ==== */
@@ -654,7 +662,7 @@
#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS))) \
|| (CPU(IA64) && !CPU(IA64_32)) \
|| CPU(ALPHA) \
- || CPU(ARM64) \
+ || CPU(AARCH64) \
|| CPU(S390X) \
|| CPU(MIPS64) \
|| CPU(PPC64) \