Vector Optimized Library of Kernels  2.5.0
Architecture-tuned implementations of math kernels
cpuinfo_arm.c File Reference
#include "cpuinfo_arm.h"
#include <assert.h>
#include <ctype.h>
#include "internal/bit_utils.h"
#include "internal/filesystem.h"
#include "internal/hwcaps.h"
#include "internal/stack_line_reader.h"
#include "internal/string_view.h"
#include "define_tables.h"

Data Structures

struct  ProcCpuInfoData
 

Macros

#define DEFINE_TABLE_FEATURES
 
#define DEFINE_TABLE_FEATURE_TYPE   ArmFeatures
 

Functions

static int IndexOfNonDigit (StringView str)
 
static bool HandleArmLine (const LineResult result, ArmInfo *const info, ProcCpuInfoData *const proc_info)
 
uint32_t GetArmCpuId (const ArmInfo *const info)
 
static void FixErrors (ArmInfo *const info, ProcCpuInfoData *const proc_cpu_info_data)
 
static void FillProcCpuInfoData (ArmInfo *const info, ProcCpuInfoData *proc_cpu_info_data)
 
ArmInfo GetArmInfo (void)
 
int GetArmFeaturesEnumValue (const ArmFeatures *features, ArmFeaturesEnum value)
 
const char * GetArmFeaturesEnumName (ArmFeaturesEnum value)
 

Variables

static const ArmInfo kEmptyArmInfo
 
static const ProcCpuInfoData kEmptyProcCpuInfoData
 

Macro Definition Documentation

◆ DEFINE_TABLE_FEATURE_TYPE

#define DEFINE_TABLE_FEATURE_TYPE   ArmFeatures

◆ DEFINE_TABLE_FEATURES

#define DEFINE_TABLE_FEATURES
Value:
FEATURE(ARM_SWP, swp, "swp", ARM_HWCAP_SWP, 0) \
FEATURE(ARM_HALF, half, "half", ARM_HWCAP_HALF, 0) \
FEATURE(ARM_THUMB, thumb, "thumb", ARM_HWCAP_THUMB, 0) \
FEATURE(ARM_26BIT, _26bit, "26bit", ARM_HWCAP_26BIT, 0) \
FEATURE(ARM_FASTMULT, fastmult, "fastmult", ARM_HWCAP_FAST_MULT, 0) \
FEATURE(ARM_FPA, fpa, "fpa", ARM_HWCAP_FPA, 0) \
FEATURE(ARM_VFP, vfp, "vfp", ARM_HWCAP_VFP, 0) \
FEATURE(ARM_EDSP, edsp, "edsp", ARM_HWCAP_EDSP, 0) \
FEATURE(ARM_JAVA, java, "java", ARM_HWCAP_JAVA, 0) \
FEATURE(ARM_IWMMXT, iwmmxt, "iwmmxt", ARM_HWCAP_IWMMXT, 0) \
FEATURE(ARM_CRUNCH, crunch, "crunch", ARM_HWCAP_CRUNCH, 0) \
FEATURE(ARM_THUMBEE, thumbee, "thumbee", ARM_HWCAP_THUMBEE, 0) \
FEATURE(ARM_NEON, neon, "neon", ARM_HWCAP_NEON, 0) \
FEATURE(ARM_VFPV3, vfpv3, "vfpv3", ARM_HWCAP_VFPV3, 0) \
FEATURE(ARM_VFPV3D16, vfpv3d16, "vfpv3d16", ARM_HWCAP_VFPV3D16, 0) \
FEATURE(ARM_TLS, tls, "tls", ARM_HWCAP_TLS, 0) \
FEATURE(ARM_VFPV4, vfpv4, "vfpv4", ARM_HWCAP_VFPV4, 0) \
FEATURE(ARM_IDIVA, idiva, "idiva", ARM_HWCAP_IDIVA, 0) \
FEATURE(ARM_IDIVT, idivt, "idivt", ARM_HWCAP_IDIVT, 0) \
FEATURE(ARM_VFPD32, vfpd32, "vfpd32", ARM_HWCAP_VFPD32, 0) \
FEATURE(ARM_LPAE, lpae, "lpae", ARM_HWCAP_LPAE, 0) \
FEATURE(ARM_EVTSTRM, evtstrm, "evtstrm", ARM_HWCAP_EVTSTRM, 0) \
FEATURE(ARM_AES, aes, "aes", 0, ARM_HWCAP2_AES) \
FEATURE(ARM_PMULL, pmull, "pmull", 0, ARM_HWCAP2_PMULL) \
FEATURE(ARM_SHA1, sha1, "sha1", 0, ARM_HWCAP2_SHA1) \
FEATURE(ARM_SHA2, sha2, "sha2", 0, ARM_HWCAP2_SHA2) \
FEATURE(ARM_CRC32, crc32, "crc32", 0, ARM_HWCAP2_CRC32)
@ ARM_VFPV3
Definition: cpuinfo_arm.h:94
@ ARM_SWP
Definition: cpuinfo_arm.h:81
@ ARM_VFPV3D16
Definition: cpuinfo_arm.h:95
@ ARM_SHA2
Definition: cpuinfo_arm.h:106
@ ARM_IWMMXT
Definition: cpuinfo_arm.h:90
@ ARM_EVTSTRM
Definition: cpuinfo_arm.h:102
@ ARM_LPAE
Definition: cpuinfo_arm.h:101
@ ARM_FASTMULT
Definition: cpuinfo_arm.h:85
@ ARM_EDSP
Definition: cpuinfo_arm.h:88
@ ARM_FPA
Definition: cpuinfo_arm.h:86
@ ARM_VFPD32
Definition: cpuinfo_arm.h:100
@ ARM_PMULL
Definition: cpuinfo_arm.h:104
@ ARM_JAVA
Definition: cpuinfo_arm.h:89
@ ARM_SHA1
Definition: cpuinfo_arm.h:105
@ ARM_VFPV4
Definition: cpuinfo_arm.h:97
@ ARM_THUMBEE
Definition: cpuinfo_arm.h:92
@ ARM_IDIVA
Definition: cpuinfo_arm.h:98
@ ARM_CRUNCH
Definition: cpuinfo_arm.h:91
@ ARM_THUMB
Definition: cpuinfo_arm.h:83
@ ARM_HALF
Definition: cpuinfo_arm.h:82
@ ARM_IDIVT
Definition: cpuinfo_arm.h:99
@ ARM_26BIT
Definition: cpuinfo_arm.h:84
@ ARM_NEON
Definition: cpuinfo_arm.h:93
@ ARM_TLS
Definition: cpuinfo_arm.h:96
@ ARM_AES
Definition: cpuinfo_arm.h:103
@ ARM_VFP
Definition: cpuinfo_arm.h:87
@ ARM_CRC32
Definition: cpuinfo_arm.h:107
#define FEATURE(ENUM, NAME, CPUINFO_FLAG, HWCAP, HWCAP2)
Definition: define_tables.h:62
#define ARM_HWCAP_FAST_MULT
Definition: hwcaps.h:88
#define ARM_HWCAP_VFP
Definition: hwcaps.h:90
#define ARM_HWCAP_THUMBEE
Definition: hwcaps.h:95
#define ARM_HWCAP_IWMMXT
Definition: hwcaps.h:93
#define ARM_HWCAP_JAVA
Definition: hwcaps.h:92
#define ARM_HWCAP_THUMB
Definition: hwcaps.h:86
#define ARM_HWCAP2_SHA2
Definition: hwcaps.h:109
#define ARM_HWCAP_26BIT
Definition: hwcaps.h:87
#define ARM_HWCAP2_PMULL
Definition: hwcaps.h:107
#define ARM_HWCAP_SWP
Definition: hwcaps.h:84
#define ARM_HWCAP_TLS
Definition: hwcaps.h:99
#define ARM_HWCAP_EDSP
Definition: hwcaps.h:91
#define ARM_HWCAP_VFPV3
Definition: hwcaps.h:97
#define ARM_HWCAP_EVTSTRM
Definition: hwcaps.h:105
#define ARM_HWCAP_VFPD32
Definition: hwcaps.h:103
#define ARM_HWCAP_VFPV4
Definition: hwcaps.h:100
#define ARM_HWCAP2_CRC32
Definition: hwcaps.h:110
#define ARM_HWCAP_IDIVA
Definition: hwcaps.h:101
#define ARM_HWCAP_FPA
Definition: hwcaps.h:89
#define ARM_HWCAP_LPAE
Definition: hwcaps.h:104
#define ARM_HWCAP2_SHA1
Definition: hwcaps.h:108
#define ARM_HWCAP2_AES
Definition: hwcaps.h:106
#define ARM_HWCAP_CRUNCH
Definition: hwcaps.h:94
#define ARM_HWCAP_IDIVT
Definition: hwcaps.h:102
#define ARM_HWCAP_NEON
Definition: hwcaps.h:96
#define ARM_HWCAP_HALF
Definition: hwcaps.h:85
#define ARM_HWCAP_VFPV3D16
Definition: hwcaps.h:98

Function Documentation

◆ FillProcCpuInfoData()

static void FillProcCpuInfoData ( ArmInfo *const  info,
ProcCpuInfoData proc_cpu_info_data 
)
static

◆ FixErrors()

static void FixErrors ( ArmInfo *const  info,
ProcCpuInfoData *const  proc_cpu_info_data 
)
static

◆ GetArmCpuId()

uint32_t GetArmCpuId ( const ArmInfo *const  info)

◆ GetArmFeaturesEnumName()

const char* GetArmFeaturesEnumName ( ArmFeaturesEnum  value)

◆ GetArmFeaturesEnumValue()

int GetArmFeaturesEnumValue ( const ArmFeatures features,
ArmFeaturesEnum  value 
)

◆ GetArmInfo()

ArmInfo GetArmInfo ( void  )

◆ HandleArmLine()

static bool HandleArmLine ( const LineResult  result,
ArmInfo *const  info,
ProcCpuInfoData *const  proc_info 
)
static

◆ IndexOfNonDigit()

static int IndexOfNonDigit ( StringView  str)
static

Variable Documentation

◆ kEmptyArmInfo

const ArmInfo kEmptyArmInfo
static

◆ kEmptyProcCpuInfoData

const ProcCpuInfoData kEmptyProcCpuInfoData
static