1 |
commit: 3e097ee7935471d2024e0a192d1dfbccd6d1aaa6 |
2 |
Author: Jory Pratt <anarchy <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Jul 11 21:15:52 2019 +0000 |
4 |
Commit: Jory Pratt <anarchy <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Jul 11 21:16:07 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3e097ee7 |
7 |
|
8 |
media-libs/libaom: Fix build issues on ppc64 |
9 |
|
10 |
Closes: https://bugs.gentoo.org/671036 |
11 |
Package-Manager: Portage-2.3.69, Repoman-2.3.16 |
12 |
Signed-off-by: Jory Pratt <anarchy <AT> gentoo.org> |
13 |
|
14 |
.../libaom/files/libaom-1.0.0-update-vsx-ppc.patch | 126 +++++++++++++++++++++ |
15 |
media-libs/libaom/libaom-1.0.0-r2.ebuild | 1 + |
16 |
2 files changed, 127 insertions(+) |
17 |
|
18 |
diff --git a/media-libs/libaom/files/libaom-1.0.0-update-vsx-ppc.patch b/media-libs/libaom/files/libaom-1.0.0-update-vsx-ppc.patch |
19 |
new file mode 100644 |
20 |
index 00000000000..7293c1a75e3 |
21 |
--- /dev/null |
22 |
+++ b/media-libs/libaom/files/libaom-1.0.0-update-vsx-ppc.patch |
23 |
@@ -0,0 +1,126 @@ |
24 |
+From 2f8587a8b30cb2e4b45df36c6c8461a440a77336 Mon Sep 17 00:00:00 2001 |
25 |
+From: Luca Barbato <lu_zero@g.o> |
26 |
+Date: Sat, 23 Jun 2018 02:47:16 -0500 |
27 |
+Subject: [PATCH] Update the VSX support |
28 |
+ |
29 |
+The CFL function signature takes a source and destination pointer. |
30 |
+Also make the typedef compatible with clang. |
31 |
+ |
32 |
+Change-Id: Ia633d10141ac0fd10af0a40b9878d18293463fb8 |
33 |
+--- |
34 |
+ av1/common/ppc/cfl_ppc.c | 85 ++++++++++++++++++++-------------------- |
35 |
+ 1 file changed, 42 insertions(+), 43 deletions(-) |
36 |
+ |
37 |
+diff --git a/av1/common/ppc/cfl_ppc.c b/av1/common/ppc/cfl_ppc.c |
38 |
+index 58933a7b3..026a07809 100644 |
39 |
+--- a/av1/common/ppc/cfl_ppc.c |
40 |
++++ b/av1/common/ppc/cfl_ppc.c |
41 |
+@@ -24,19 +24,21 @@ |
42 |
+ #define CFL_LINE_2 128 |
43 |
+ #define CFL_LINE_3 192 |
44 |
+ |
45 |
+-typedef vector int8_t int8x16_t; |
46 |
+-typedef vector uint8_t uint8x16_t; |
47 |
+-typedef vector int16_t int16x8_t; |
48 |
+-typedef vector uint16_t uint16x8_t; |
49 |
+-typedef vector int32_t int32x4_t; |
50 |
+-typedef vector uint32_t uint32x4_t; |
51 |
+-typedef vector uint64_t uint64x2_t; |
52 |
++typedef vector signed char int8x16_t; // NOLINT(runtime/int) |
53 |
++typedef vector unsigned char uint8x16_t; // NOLINT(runtime/int) |
54 |
++typedef vector signed short int16x8_t; // NOLINT(runtime/int) |
55 |
++typedef vector unsigned short uint16x8_t; // NOLINT(runtime/int) |
56 |
++typedef vector signed int int32x4_t; // NOLINT(runtime/int) |
57 |
++typedef vector unsigned int uint32x4_t; // NOLINT(runtime/int) |
58 |
++typedef vector unsigned long long uint64x2_t; // NOLINT(runtime/int) |
59 |
+ |
60 |
+-static INLINE void subtract_average_vsx(int16_t *pred_buf, int width, |
61 |
+- int height, int round_offset, |
62 |
++static INLINE void subtract_average_vsx(const uint16_t *src_ptr, int16_t *dst, |
63 |
++ int width, int height, int round_offset, |
64 |
+ int num_pel_log2) { |
65 |
+- const int16_t *end = pred_buf + height * CFL_BUF_LINE; |
66 |
+- const int16_t *sum_buf = pred_buf; |
67 |
++ // int16_t *dst = dst_ptr; |
68 |
++ const int16_t *dst_end = dst + height * CFL_BUF_LINE; |
69 |
++ const int16_t *sum_buf = (const int16_t *)src_ptr; |
70 |
++ const int16_t *end = sum_buf + height * CFL_BUF_LINE; |
71 |
+ const uint32x4_t div_shift = vec_splats((uint32_t)num_pel_log2); |
72 |
+ const uint8x16_t mask_64 = { 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, |
73 |
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; |
74 |
+@@ -71,43 +73,40 @@ static INLINE void subtract_average_vsx(int16_t *pred_buf, int width, |
75 |
+ const int32x4_t avg = vec_sr(sum_32x4, div_shift); |
76 |
+ const int16x8_t vec_avg = vec_pack(avg, avg); |
77 |
+ do { |
78 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0, pred_buf), vec_avg), OFF_0, pred_buf); |
79 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0 + CFL_LINE_1, pred_buf), vec_avg), |
80 |
+- OFF_0 + CFL_BUF_LINE_BYTES, pred_buf); |
81 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0 + CFL_LINE_2, pred_buf), vec_avg), |
82 |
+- OFF_0 + CFL_LINE_2, pred_buf); |
83 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0 + CFL_LINE_3, pred_buf), vec_avg), |
84 |
+- OFF_0 + CFL_LINE_3, pred_buf); |
85 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0, dst), vec_avg), OFF_0, dst); |
86 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0 + CFL_LINE_1, dst), vec_avg), |
87 |
++ OFF_0 + CFL_BUF_LINE_BYTES, dst); |
88 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0 + CFL_LINE_2, dst), vec_avg), |
89 |
++ OFF_0 + CFL_LINE_2, dst); |
90 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_0 + CFL_LINE_3, dst), vec_avg), |
91 |
++ OFF_0 + CFL_LINE_3, dst); |
92 |
+ if (width >= 16) { |
93 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1, pred_buf), vec_avg), OFF_1, |
94 |
+- pred_buf); |
95 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1 + CFL_LINE_1, pred_buf), vec_avg), |
96 |
+- OFF_1 + CFL_LINE_1, pred_buf); |
97 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1 + CFL_LINE_2, pred_buf), vec_avg), |
98 |
+- OFF_1 + CFL_LINE_2, pred_buf); |
99 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1 + CFL_LINE_3, pred_buf), vec_avg), |
100 |
+- OFF_1 + CFL_LINE_3, pred_buf); |
101 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1, dst), vec_avg), OFF_1, dst); |
102 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1 + CFL_LINE_1, dst), vec_avg), |
103 |
++ OFF_1 + CFL_LINE_1, dst); |
104 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1 + CFL_LINE_2, dst), vec_avg), |
105 |
++ OFF_1 + CFL_LINE_2, dst); |
106 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_1 + CFL_LINE_3, dst), vec_avg), |
107 |
++ OFF_1 + CFL_LINE_3, dst); |
108 |
+ } |
109 |
+ if (width == 32) { |
110 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2, pred_buf), vec_avg), OFF_2, |
111 |
+- pred_buf); |
112 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2 + CFL_LINE_1, pred_buf), vec_avg), |
113 |
+- OFF_2 + CFL_LINE_1, pred_buf); |
114 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2 + CFL_LINE_2, pred_buf), vec_avg), |
115 |
+- OFF_2 + CFL_LINE_2, pred_buf); |
116 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2 + CFL_LINE_3, pred_buf), vec_avg), |
117 |
+- OFF_2 + CFL_LINE_3, pred_buf); |
118 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2, dst), vec_avg), OFF_2, dst); |
119 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2 + CFL_LINE_1, dst), vec_avg), |
120 |
++ OFF_2 + CFL_LINE_1, dst); |
121 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2 + CFL_LINE_2, dst), vec_avg), |
122 |
++ OFF_2 + CFL_LINE_2, dst); |
123 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_2 + CFL_LINE_3, dst), vec_avg), |
124 |
++ OFF_2 + CFL_LINE_3, dst); |
125 |
+ |
126 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3, pred_buf), vec_avg), OFF_3, |
127 |
+- pred_buf); |
128 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3 + CFL_LINE_1, pred_buf), vec_avg), |
129 |
+- OFF_3 + CFL_LINE_1, pred_buf); |
130 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3 + CFL_LINE_2, pred_buf), vec_avg), |
131 |
+- OFF_3 + CFL_LINE_2, pred_buf); |
132 |
+- vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3 + CFL_LINE_3, pred_buf), vec_avg), |
133 |
+- OFF_3 + CFL_LINE_3, pred_buf); |
134 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3, dst), vec_avg), OFF_3, dst); |
135 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3 + CFL_LINE_1, dst), vec_avg), |
136 |
++ OFF_3 + CFL_LINE_1, dst); |
137 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3 + CFL_LINE_2, dst), vec_avg), |
138 |
++ OFF_3 + CFL_LINE_2, dst); |
139 |
++ vec_vsx_st(vec_sub(vec_vsx_ld(OFF_3 + CFL_LINE_3, dst), vec_avg), |
140 |
++ OFF_3 + CFL_LINE_3, dst); |
141 |
+ } |
142 |
+- } while ((pred_buf += CFL_BUF_LINE * 4) < end); |
143 |
++ } while ((dst += CFL_BUF_LINE * 4) < dst_end); |
144 |
+ } |
145 |
+ |
146 |
+ // Declare wrappers for VSX sizes |
147 |
+-- |
148 |
+2.22.0 |
149 |
+ |
150 |
|
151 |
diff --git a/media-libs/libaom/libaom-1.0.0-r2.ebuild b/media-libs/libaom/libaom-1.0.0-r2.ebuild |
152 |
index 2d3d0f2b2e8..52296f61d4a 100644 |
153 |
--- a/media-libs/libaom/libaom-1.0.0-r2.ebuild |
154 |
+++ b/media-libs/libaom/libaom-1.0.0-r2.ebuild |
155 |
@@ -47,6 +47,7 @@ PATCHES=( |
156 |
"${FILESDIR}/pthread_lib2.patch" |
157 |
"${FILESDIR}/${P}-version.patch" |
158 |
"${FILESDIR}/${P}-armv7l.patch" |
159 |
+ "${FILESDIR}/${P}-update-vsx-ppc.patch" |
160 |
) |
161 |
|
162 |
# the PATENTS file is required to be distributed with this package bug #682214 |