all repos — mgba @ 9de8f084ba55460b02d300c1dd8b8e6c56f691d5

mGBA Game Boy Advance Emulator

src/third-party/libpng/contrib/powerpc-vsx/linux_aux.c (view raw)

 1/* contrib/powerpc-vsx/linux_aux.c
 2 *
 3 * Copyright (c) 2017 Glenn Randers-Pehrson
 4 * Written by Vadim Barkov, 2017.
 5 * Last changed in libpng 1.6.29 [March 16, 2017]
 6 *
 7 * This code is released under the libpng license.
 8 * For conditions of distribution and use, see the disclaimer
 9 * and license in png.h
10 *
11 * STATUS: TESTED
12 * BUG REPORTS: png-mng-implement@sourceforge.net
13 *
14 * png_have_vsx implemented for Linux by using the auxiliary vector mechanism.
15 *
16 * This code is strict ANSI-C and is probably moderately portable; it does
17 * however use <stdio.h> and it assumes that /proc/cpuinfo is never localized.
18 */
19
20#include "sys/auxv.h"
21#include "png.h"
22
23static int
24png_have_vsx(png_structp png_ptr)
25{
26
27   const unsigned long auxv = getauxval( AT_HWCAP );
28
29   PNG_UNUSED(png_ptr)
30
31   if(auxv & (PPC_FEATURE_HAS_ALTIVEC|PPC_FEATURE_HAS_VSX ))
32      return 1;
33   else
34      return 0;
35}
36