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)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 37