Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: source/libvpx/third_party/libyuv/include/libyuv/cpu_id.h

Issue 341293003: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The LibYuv project authors. All Rights Reserved. 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef INCLUDE_LIBYUV_CPU_ID_H_ 11 #ifndef INCLUDE_LIBYUV_CPU_ID_H_ // NOLINT
12 #define INCLUDE_LIBYUV_CPU_ID_H_ 12 #define INCLUDE_LIBYUV_CPU_ID_H_
13 13
14 #include "basic_types.h"
15
14 #ifdef __cplusplus 16 #ifdef __cplusplus
15 namespace libyuv { 17 namespace libyuv {
16 extern "C" { 18 extern "C" {
17 #endif 19 #endif
18 20
19 // These flags are only valid on x86 processors 21 // TODO(fbarchard): Consider overlapping bits for different architectures.
20 static const int kCpuHasSSE2 = 1; 22 // Internal flag to indicate cpuid requires initialization.
21 static const int kCpuHasSSSE3 = 2; 23 #define kCpuInit 0x1
22 24
23 // These flags are only valid on ARM processors 25 // These flags are only valid on ARM processors.
24 static const int kCpuHasNEON = 4; 26 static const int kCpuHasARM = 0x2;
27 static const int kCpuHasNEON = 0x4;
28 // 0x8 reserved for future ARM flag.
25 29
26 // Internal flag to indicate cpuid is initialized. 30 // These flags are only valid on x86 processors.
27 static const int kCpuInitialized = 8; 31 static const int kCpuHasX86 = 0x10;
32 static const int kCpuHasSSE2 = 0x20;
33 static const int kCpuHasSSSE3 = 0x40;
34 static const int kCpuHasSSE41 = 0x80;
35 static const int kCpuHasSSE42 = 0x100;
36 static const int kCpuHasAVX = 0x200;
37 static const int kCpuHasAVX2 = 0x400;
38 static const int kCpuHasERMS = 0x800;
39 static const int kCpuHasFMA3 = 0x1000;
40 // 0x2000, 0x4000, 0x8000 reserved for future X86 flags.
41
42 // These flags are only valid on MIPS processors.
43 static const int kCpuHasMIPS = 0x10000;
44 static const int kCpuHasMIPS_DSP = 0x20000;
45 static const int kCpuHasMIPS_DSPR2 = 0x40000;
46
47 // Internal function used to auto-init.
48 LIBYUV_API
49 int InitCpuFlags(void);
50
51 // Internal function for parsing /proc/cpuinfo.
52 LIBYUV_API
53 int ArmCpuCaps(const char* cpuinfo_name);
28 54
29 // Detect CPU has SSE2 etc. 55 // Detect CPU has SSE2 etc.
30 // test_flag parameter should be one of kCpuHas constants above 56 // Test_flag parameter should be one of kCpuHas constants above.
31 // returns non-zero if instruction set is detected 57 // returns non-zero if instruction set is detected
32 static __inline int TestCpuFlag(int test_flag) { 58 static __inline int TestCpuFlag(int test_flag) {
33 extern int cpu_info_; 59 LIBYUV_API extern int cpu_info_;
34 extern int InitCpuFlags(); 60 return (cpu_info_ == kCpuInit ? InitCpuFlags() : cpu_info_) & test_flag;
35 return (cpu_info_ ? cpu_info_ : InitCpuFlags()) & test_flag;
36 } 61 }
37 62
38 // For testing, allow CPU flags to be disabled. 63 // For testing, allow CPU flags to be disabled.
39 // ie MaskCpuFlags(~kCpuHasSSSE3) to disable SSSE3. 64 // ie MaskCpuFlags(~kCpuHasSSSE3) to disable SSSE3.
40 // -1 to enable all cpu specific optimizations. 65 // MaskCpuFlags(-1) to enable all cpu specific optimizations.
41 // 0 to disable all cpu specific optimizations. 66 // MaskCpuFlags(0) to disable all cpu specific optimizations.
67 LIBYUV_API
42 void MaskCpuFlags(int enable_flags); 68 void MaskCpuFlags(int enable_flags);
43 69
70 // Low level cpuid for X86. Returns zeros on other CPUs.
71 // eax is the info type that you want.
72 // ecx is typically the cpu number, and should normally be zero.
73 LIBYUV_API
74 void CpuId(uint32 eax, uint32 ecx, uint32* cpu_info);
75
44 #ifdef __cplusplus 76 #ifdef __cplusplus
45 } // extern "C" 77 } // extern "C"
46 } // namespace libyuv 78 } // namespace libyuv
47 #endif 79 #endif
48 80
49 #endif // INCLUDE_LIBYUV_CPU_ID_H_ 81 #endif // INCLUDE_LIBYUV_CPU_ID_H_ NOLINT
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698