• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
23 static int
png_have_vsx(png_structp png_ptr)24 png_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 
37