SDL  2.0
SDL_cpuinfo.h File Reference
#include "SDL_stdinc.h"
#include <immintrin.h>
#include "begin_code.h"
#include "close_code.h"
+ Include dependency graph for SDL_cpuinfo.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SDL_CACHELINE_SIZE   128
 

Functions

int SDL_GetCPUCount (void)
 
int SDL_GetCPUCacheLineSize (void)
 
SDL_bool SDL_HasRDTSC (void)
 
SDL_bool SDL_HasAltiVec (void)
 
SDL_bool SDL_HasMMX (void)
 
SDL_bool SDL_Has3DNow (void)
 
SDL_bool SDL_HasSSE (void)
 
SDL_bool SDL_HasSSE2 (void)
 
SDL_bool SDL_HasSSE3 (void)
 
SDL_bool SDL_HasSSE41 (void)
 
SDL_bool SDL_HasSSE42 (void)
 
SDL_bool SDL_HasAVX (void)
 
SDL_bool SDL_HasAVX2 (void)
 
SDL_bool SDL_HasAVX512F (void)
 
SDL_bool SDL_HasNEON (void)
 
int SDL_GetSystemRAM (void)
 

Detailed Description

CPU feature detection for SDL.

Definition in file SDL_cpuinfo.h.

Macro Definition Documentation

◆ SDL_CACHELINE_SIZE

#define SDL_CACHELINE_SIZE   128

Definition at line 95 of file SDL_cpuinfo.h.

Function Documentation

◆ SDL_GetCPUCacheLineSize()

int SDL_GetCPUCacheLineSize ( void  )

This function returns the L1 cache line size of the CPU

This is useful for determining multi-threaded structure padding or SIMD prefetch sizes.

Definition at line 133 of file SDL_dynapi_procs.h.

References cpuid, d, SDL_CACHELINE_SIZE, SDL_GetCPUType(), SDL_strcmp, and void.

◆ SDL_GetCPUCount()

int SDL_GetCPUCount ( void  )

This function returns the number of CPU cores available.

Definition at line 423 of file SDL_cpuinfo.c.

424 {
425  if (!SDL_CPUCount) {
426 #ifndef SDL_CPUINFO_DISABLED
427 #if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_ONLN)
428  if (SDL_CPUCount <= 0) {
429  SDL_CPUCount = (int)sysconf(_SC_NPROCESSORS_ONLN);
430  }
431 #endif
432 #ifdef HAVE_SYSCTLBYNAME
433  if (SDL_CPUCount <= 0) {
434  size_t size = sizeof(SDL_CPUCount);
435  sysctlbyname("hw.ncpu", &SDL_CPUCount, &size, NULL, 0);
436  }
437 #endif
438 #ifdef __WIN32__
439  if (SDL_CPUCount <= 0) {
440  SYSTEM_INFO info;
441  GetSystemInfo(&info);
442  SDL_CPUCount = info.dwNumberOfProcessors;
443  }
444 #endif
445 #ifdef __OS2__
446  if (SDL_CPUCount <= 0) {
447  DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS,
448  &SDL_CPUCount, sizeof(SDL_CPUCount) );
449  }
450 #endif
451 #endif
452  /* There has to be at least 1, right? :) */
453  if (SDL_CPUCount <= 0) {
454  SDL_CPUCount = 1;
455  }
456  }
457  return SDL_CPUCount;
458 }

References NULL, and SDL_CPUCount.

◆ SDL_GetSystemRAM()

int SDL_GetSystemRAM ( void  )

This function returns the amount of RAM configured in the system, in MB.

Definition at line 143 of file SDL_dynapi_procs.h.

References NULL, and SDL_SystemRAM.

◆ SDL_Has3DNow()

SDL_bool SDL_Has3DNow ( void  )

This function returns true if the CPU has 3DNow! features.

Definition at line 137 of file SDL_dynapi_procs.h.

References CPU_FEATURE_AVAILABLE, and CPU_HAS_3DNOW.

◆ SDL_HasAltiVec()

SDL_bool SDL_HasAltiVec ( void  )

This function returns true if the CPU has AltiVec features.

Definition at line 135 of file SDL_dynapi_procs.h.

References CPU_FEATURE_AVAILABLE, and CPU_HAS_ALTIVEC.

◆ SDL_HasAVX()

SDL_bool SDL_HasAVX ( void  )

This function returns true if the CPU has AVX features.

Definition at line 599 of file SDL_dynapi_procs.h.

References CPU_FEATURE_AVAILABLE, and CPU_HAS_AVX.

◆ SDL_HasAVX2()

SDL_bool SDL_HasAVX2 ( void  )

This function returns true if the CPU has AVX2 features.

Definition at line 717 of file SDL_cpuinfo.c.

718 {
720 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_AVX2.

◆ SDL_HasAVX512F()

SDL_bool SDL_HasAVX512F ( void  )

This function returns true if the CPU has AVX-512F (foundation) features.

Definition at line 723 of file SDL_cpuinfo.c.

724 {
726 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_AVX512F.

◆ SDL_HasMMX()

SDL_bool SDL_HasMMX ( void  )

This function returns true if the CPU has MMX features.

Definition at line 669 of file SDL_cpuinfo.c.

670 {
672 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_MMX.

◆ SDL_HasNEON()

SDL_bool SDL_HasNEON ( void  )

This function returns true if the CPU has NEON (ARM SIMD) features.

Definition at line 652 of file SDL_dynapi_procs.h.

References CPU_FEATURE_AVAILABLE, and CPU_HAS_NEON.

◆ SDL_HasRDTSC()

SDL_bool SDL_HasRDTSC ( void  )

This function returns true if the CPU has the RDTSC instruction.

Definition at line 657 of file SDL_cpuinfo.c.

658 {
660 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_RDTSC.

◆ SDL_HasSSE()

SDL_bool SDL_HasSSE ( void  )

This function returns true if the CPU has SSE features.

Definition at line 681 of file SDL_cpuinfo.c.

682 {
684 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_SSE.

◆ SDL_HasSSE2()

SDL_bool SDL_HasSSE2 ( void  )

This function returns true if the CPU has SSE2 features.

Definition at line 139 of file SDL_dynapi_procs.h.

References CPU_FEATURE_AVAILABLE, and CPU_HAS_SSE2.

◆ SDL_HasSSE3()

SDL_bool SDL_HasSSE3 ( void  )

This function returns true if the CPU has SSE3 features.

Definition at line 693 of file SDL_cpuinfo.c.

694 {
696 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_SSE3.

◆ SDL_HasSSE41()

SDL_bool SDL_HasSSE41 ( void  )

This function returns true if the CPU has SSE4.1 features.

Definition at line 141 of file SDL_dynapi_procs.h.

References CPU_FEATURE_AVAILABLE, and CPU_HAS_SSE41.

◆ SDL_HasSSE42()

SDL_bool SDL_HasSSE42 ( void  )

This function returns true if the CPU has SSE4.2 features.

Definition at line 705 of file SDL_cpuinfo.c.

706 {
708 }

References CPU_FEATURE_AVAILABLE, and CPU_HAS_SSE42.

CPU_HAS_SSE
#define CPU_HAS_SSE
Definition: SDL_cpuinfo.c:85
NULL
#define NULL
Definition: begin_code.h:164
CPU_HAS_AVX2
#define CPU_HAS_AVX2
Definition: SDL_cpuinfo.c:91
CPU_FEATURE_AVAILABLE
#define CPU_FEATURE_AVAILABLE(f)
Definition: SDL_cpuinfo.c:655
CPU_HAS_SSE42
#define CPU_HAS_SSE42
Definition: SDL_cpuinfo.c:89
CPU_HAS_RDTSC
#define CPU_HAS_RDTSC
Definition: SDL_cpuinfo.c:81
CPU_HAS_AVX512F
#define CPU_HAS_AVX512F
Definition: SDL_cpuinfo.c:93
CPU_HAS_MMX
#define CPU_HAS_MMX
Definition: SDL_cpuinfo.c:83
size
GLsizeiptr size
Definition: SDL_opengl_glext.h:537
CPU_HAS_SSE3
#define CPU_HAS_SSE3
Definition: SDL_cpuinfo.c:87
SDL_CPUCount
static int SDL_CPUCount
Definition: SDL_cpuinfo.c:420