1a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin/* 2a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * 4a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * Use of this source code is governed by a BSD-style license 5a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * that can be found in the LICENSE file in the root of the source 6a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * tree. An additional intellectual property rights grant can be found 7a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * in the file PATENTS. All contributing project authors may 8a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin * be found in the AUTHORS file in the root of the source tree. 9a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin */ 10a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 11a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin// You can download Android source at 12a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin// http://source.android.com/source/downloading.html 13a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin// Original files are in ndk/sources/android/cpufeatures 14a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin// Revision is Change-Id: I9a0629efba36a6023f05e5f092e7addcc1b7d2a9 15a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 16a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#ifndef CPU_FEATURES_H 17a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#define CPU_FEATURES_H 18a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 19a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#include <sys/cdefs.h> 20a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#include <stdint.h> 21a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 22a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin__BEGIN_DECLS 23a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 24a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkintypedef enum { 25a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_FAMILY_UNKNOWN = 0, 26a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_FAMILY_ARM, 27a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_FAMILY_X86, 28a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 29a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_FAMILY_MAX /* do not remove */ 30a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 31a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin} AndroidCpuFamily; 32a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 33a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin/* Return family of the device's CPU */ 34a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinextern AndroidCpuFamily android_getCpuFamily(void); 35a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 36a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinenum { 37a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_ARM_FEATURE_ARMv7 = (1 << 0), 38a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_ARM_FEATURE_VFPv3 = (1 << 1), 39a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_ARM_FEATURE_NEON = (1 << 2), 40a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_ARM_FEATURE_LDREX_STREX = (1 << 3), 41a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin}; 42a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 43a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinenum { 44a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_X86_FEATURE_SSSE3 = (1 << 0), 45a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_X86_FEATURE_POPCNT = (1 << 1), 46a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin ANDROID_CPU_X86_FEATURE_MOVBE = (1 << 2), 47a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin}; 48a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 49a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinextern uint64_t android_getCpuFeatures(void); 50a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 51a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin/* Return the number of CPU cores detected on this device. */ 52a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkinextern int android_getCpuCount(void); 53a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 54a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin__END_DECLS 55a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin 56a6451827d543eb00824bc95097e47d0aac51ae93Alexander Gutkin#endif /* CPU_FEATURES_H */ 57