| 
									
										
										
										
											2022-02-23 10:17:47 -08:00
										 |  |  | // Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project / 2022 Yuzu Emulator
 | 
					
						
							|  |  |  | // Project Project Licensed under GPLv2 or any later version Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2013-09-04 20:17:46 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-17 13:45:50 -04:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2013-09-04 20:17:46 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-23 10:17:47 -08:00
										 |  |  | #include "common/common_types.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-21 19:49:33 -04:00
										 |  |  | namespace Common { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-23 10:17:47 -08:00
										 |  |  | enum class Manufacturer : u8 { | 
					
						
							| 
									
										
										
										
											2020-02-09 16:53:22 -04:00
										 |  |  |     Intel = 0, | 
					
						
							|  |  |  |     AMD = 1, | 
					
						
							|  |  |  |     Hygon = 2, | 
					
						
							|  |  |  |     Unknown = 3, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-12 17:42:13 -04:00
										 |  |  | /// x86/x64 CPU capabilities that may be detected by this module
 | 
					
						
							|  |  |  | struct CPUCaps { | 
					
						
							| 
									
										
										
										
											2020-02-09 16:53:22 -04:00
										 |  |  |     Manufacturer manufacturer; | 
					
						
							| 
									
										
										
										
											2014-04-01 18:20:08 -04:00
										 |  |  |     char cpu_string[0x21]; | 
					
						
							|  |  |  |     char brand_string[0x41]; | 
					
						
							| 
									
										
										
										
											2020-02-09 16:53:22 -04:00
										 |  |  |     u32 base_frequency; | 
					
						
							|  |  |  |     u32 max_frequency; | 
					
						
							|  |  |  |     u32 bus_frequency; | 
					
						
							| 
									
										
										
										
											2022-02-23 10:17:47 -08:00
										 |  |  |     bool sse : 1; | 
					
						
							|  |  |  |     bool sse2 : 1; | 
					
						
							|  |  |  |     bool sse3 : 1; | 
					
						
							|  |  |  |     bool ssse3 : 1; | 
					
						
							|  |  |  |     bool sse4_1 : 1; | 
					
						
							|  |  |  |     bool sse4_2 : 1; | 
					
						
							|  |  |  |     bool lzcnt : 1; | 
					
						
							|  |  |  |     bool avx : 1; | 
					
						
							|  |  |  |     bool avx2 : 1; | 
					
						
							|  |  |  |     bool avx512 : 1; | 
					
						
							|  |  |  |     bool bmi1 : 1; | 
					
						
							|  |  |  |     bool bmi2 : 1; | 
					
						
							|  |  |  |     bool fma : 1; | 
					
						
							|  |  |  |     bool fma4 : 1; | 
					
						
							|  |  |  |     bool aes : 1; | 
					
						
							|  |  |  |     bool invariant_tsc : 1; | 
					
						
							| 
									
										
										
										
											2013-09-04 20:17:46 -04:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-12 17:42:13 -04:00
										 |  |  | /**
 | 
					
						
							|  |  |  |  * Gets the supported capabilities of the host CPU | 
					
						
							|  |  |  |  * @return Reference to a CPUCaps struct with the detected host CPU capabilities | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | const CPUCaps& GetCPUCaps(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-21 19:49:33 -04:00
										 |  |  | } // namespace Common
 |