Skip to content

Commit d6b2d08

Browse files
committed
libavutil/ppc: Include the hardware feature flags like the other archs
Also include the hardware feature flags like the other archs do and clean up the code a bit. Tested on Linux POWER9. Signed-off-by: Brad Smith <[email protected]>
1 parent d724584 commit d6b2d08

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

libavutil/ppc/cpu.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@
4646
#include "libavutil/cpu.h"
4747
#include "libavutil/cpu_internal.h"
4848

49+
#ifndef AT_HWCAP
50+
#define AT_HWCAP 16
51+
#endif
52+
#ifndef AT_HWCAP2
53+
#define AT_HWCAP2 26
54+
#endif
55+
56+
#define HWCAP_PPC_VSX (1 << 7)
57+
#define HWCAP_PPC_ALTIVEC (1 << 28)
58+
#define HWCAP2_PPC_ARCH_2_07 (1 << 31)
59+
4960
/**
5061
* This function MAY rely on signal() or fork() in order to make sure AltiVec
5162
* is present.
@@ -65,20 +76,14 @@ int ff_get_cpu_flags_ppc(void)
6576
int flags = 0;
6677

6778
unsigned long hwcap = ff_getauxval(AT_HWCAP);
68-
#ifdef PPC_FEATURE2_ARCH_2_07
6979
unsigned long hwcap2 = ff_getauxval(AT_HWCAP2);
70-
#endif
7180

72-
if (hwcap & PPC_FEATURE_HAS_ALTIVEC)
81+
if (hwcap & HWCAP_PPC_ALTIVEC)
7382
flags |= AV_CPU_FLAG_ALTIVEC;
74-
#ifdef PPC_FEATURE_HAS_VSX
75-
if (hwcap & PPC_FEATURE_HAS_VSX)
83+
if (hwcap & HWCAP_PPC_VSX)
7684
flags |= AV_CPU_FLAG_VSX;
77-
#endif
78-
#ifdef PPC_FEATURE2_ARCH_2_07
79-
if (hwcap2 & PPC_FEATURE2_ARCH_2_07)
85+
if (hwcap2 & HWCAP2_PPC_ARCH_2_07)
8086
flags |= AV_CPU_FLAG_POWER8;
81-
#endif
8287

8388
return flags;
8489
#elif defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__)
@@ -112,23 +117,17 @@ int ff_get_cpu_flags_ppc(void)
112117
if (buf[i] == AT_NULL)
113118
goto out;
114119
if (buf[i] == AT_HWCAP) {
115-
if (buf[i + 1] & PPC_FEATURE_HAS_ALTIVEC)
120+
if (buf[i + 1] & HWCAP_PPC_ALTIVEC)
116121
ret = AV_CPU_FLAG_ALTIVEC;
117-
#ifdef PPC_FEATURE_HAS_VSX
118-
if (buf[i + 1] & PPC_FEATURE_HAS_VSX)
122+
if (buf[i + 1] & HWCAP_PPC_VSX)
119123
ret |= AV_CPU_FLAG_VSX;
120-
#endif
121124
if (ret & AV_CPU_FLAG_VSX)
122125
av_assert0(ret & AV_CPU_FLAG_ALTIVEC);
123126
}
124-
#ifdef AT_HWCAP2 /* not introduced until glibc 2.18 */
125127
else if (buf[i] == AT_HWCAP2) {
126-
#ifdef PPC_FEATURE2_ARCH_2_07
127-
if (buf[i + 1] & PPC_FEATURE2_ARCH_2_07)
128+
if (buf[i + 1] & HWCAP2_PPC_ARCH_2_07)
128129
ret |= AV_CPU_FLAG_POWER8;
129-
#endif
130130
}
131-
#endif /* AT_HWCAP2 */
132131
}
133132
}
134133

0 commit comments

Comments
 (0)