Home | History | Annotate | Download | only in powerpc-vsx
      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 (at) 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
     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