opencv
1/* power_features.c - POWER feature check
2* Copyright (C) 2020 Matheus Castanho <msc@linux.ibm.com>, IBM
3* Copyright (C) 2021-2022 Mika T. Lindqvist <postmaster@raasu.org>
4* For conditions of distribution and use, see copyright notice in zlib.h
5*/
6
7#ifdef HAVE_SYS_AUXV_H8# include <sys/auxv.h>9#endif10#ifdef __FreeBSD__11# include <machine/cpu.h>12#endif13#include "../../zbuild.h"14#include "power_features.h"15
16void Z_INTERNAL power_check_features(struct power_cpu_features *features) {17#ifdef PPC_FEATURES18unsigned long hwcap;19#ifdef __FreeBSD__20elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));21#else22hwcap = getauxval(AT_HWCAP);23#endif24
25if (hwcap & PPC_FEATURE_HAS_ALTIVEC)26features->has_altivec = 1;27#endif28
29#ifdef POWER_FEATURES30unsigned long hwcap2;31#ifdef __FreeBSD__32elf_aux_info(AT_HWCAP2, &hwcap2, sizeof(hwcap2));33#else34hwcap2 = getauxval(AT_HWCAP2);35#endif36
37#ifdef POWER8_VSX38if (hwcap2 & PPC_FEATURE2_ARCH_2_07)39features->has_arch_2_07 = 1;40#endif41#ifdef POWER942if (hwcap2 & PPC_FEATURE2_ARCH_3_00)43features->has_arch_3_00 = 1;44#endif45#endif46}
47