Gentoo Archives: gentoo-commits

From: Jory Pratt <anarchy@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/libaom/, media-libs/libaom/files/
Date: Thu, 11 Jul 2019 21:16:20
Message-Id: 1562879767.3e097ee7935471d2024e0a192d1dfbccd6d1aaa6.anarchy@gentoo
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