11e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora/* 21e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 31e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * 41e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * Use of this source code is governed by a BSD-style license 51e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * that can be found in the LICENSE file in the root of the source 61e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * tree. An additional intellectual property rights grant can be found 71e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * in the file PATENTS. All contributing project authors may 81e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora * be found in the AUTHORS file in the root of the source tree. 91e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora */ 101e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 111e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora// You can download Android source at 121e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora// http://source.android.com/source/downloading.html 131e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora// Original files are in ndk/sources/android/cpufeatures 141e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora// Revision is Change-Id: I9a0629efba36a6023f05e5f092e7addcc1b7d2a9 151e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 161e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora#ifndef CPU_FEATURES_H 171e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora#define CPU_FEATURES_H 181e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 191e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora#include <sys/cdefs.h> 201e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora#include <stdint.h> 211e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 221e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora__BEGIN_DECLS 231e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 241e7bf8805bd030c19924a5306837ecd72c295751Vikas Aroratypedef enum { 251e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_FAMILY_UNKNOWN = 0, 261e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_FAMILY_ARM, 271e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_FAMILY_X86, 281e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 291e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_FAMILY_MAX /* do not remove */ 301e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 311e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora} AndroidCpuFamily; 321e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 331e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora/* Return family of the device's CPU */ 341e7bf8805bd030c19924a5306837ecd72c295751Vikas Aroraextern AndroidCpuFamily android_getCpuFamily(void); 351e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 361e7bf8805bd030c19924a5306837ecd72c295751Vikas Aroraenum { 371e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_ARM_FEATURE_ARMv7 = (1 << 0), 381e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_ARM_FEATURE_VFPv3 = (1 << 1), 391e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_ARM_FEATURE_NEON = (1 << 2), 401e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_ARM_FEATURE_LDREX_STREX = (1 << 3), 411e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora}; 421e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 431e7bf8805bd030c19924a5306837ecd72c295751Vikas Aroraenum { 441e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_X86_FEATURE_SSSE3 = (1 << 0), 451e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_X86_FEATURE_POPCNT = (1 << 1), 461e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora ANDROID_CPU_X86_FEATURE_MOVBE = (1 << 2), 471e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora}; 481e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 491e7bf8805bd030c19924a5306837ecd72c295751Vikas Aroraextern uint64_t android_getCpuFeatures(void); 501e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 511e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora/* Return the number of CPU cores detected on this device. */ 521e7bf8805bd030c19924a5306837ecd72c295751Vikas Aroraextern int android_getCpuCount(void); 531e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 541e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora__END_DECLS 551e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora 561e7bf8805bd030c19924a5306837ecd72c295751Vikas Arora#endif /* CPU_FEATURES_H */ 57