---
name: "cpu_capabilities"
section: "3alleg"
platform: "linux"
package: "liballegro-doc"
version: "2:4.2.2-2.2"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/cpu_capabilities"
---

# cpu\_capabilities(3alleg)

Contains the capability flags of the CPU. Allegro game programming library.

## NAME

cpu\_capabilities - Contains the capability flags of the CPU. Allegro game programming library.

## SYNOPSIS

**#include \<allegro.h\>**

**extern int cpu\_capabilities;**

## DESCRIPTION

Contains CPU flags indicating what features are available on the current  CPU. The flags can be any combination of these:

```
   CPU_ID       - Indicates that the "cpuid" instruction is
                  available. If this is set, then all Allegro CPU
                  variables are 100% reliable, otherwise there
                  may be some mistakes.
   CPU_FPU      - An FPU is available.
   CPU_IA64     - Running on Intel 64 bit CPU
   CPU_AMD64    - Running on AMD 64 bit CPU
   CPU_MMX      - Intel MMX  instruction set is available.
   CPU_MMXPLUS  - Intel MMX+ instruction set is available.
   CPU_SSE      - Intel SSE  instruction set is available.
   CPU_SSE2     - Intel SSE2 instruction set is available.
   CPU_SSE3     - Intel SSE3 instruction set is available.
   CPU_3DNOW    - AMD 3DNow! instruction set is available.
   CPU_ENH3DNOW - AMD Enhanced 3DNow! instruction set is
                  available.
   CPU_CMOV     - Pentium Pro "cmov" instruction is available.
```

You can check for multiple features by OR-ing the flags together. For example, to check if the CPU has an FPU and MMX instructions available, you'd do:

```
   if ((cpu_capabilities & (CPU_FPU | CPU_MMX)) ==
       (CPU_FPU | CPU_MMX)) {
      printf("CPU has both an FPU and MMX instructions!\n");
   }
```

You can read this variable after you have called check\_cpu() (which is automatically called by allegro\_init()).

## SEE ALSO

[**check\_cpu**(3alleg)](/check_cpu/3alleg.md), [**cpu\_vendor**(3alleg)](/cpu_vendor/3alleg.md), [**cpu\_family**(3alleg)](/cpu_family/3alleg.md), [**cpu\_model**(3alleg)](/cpu_model/3alleg.md), [**cpu\_capabilities**(3alleg)](/cpu_capabilities/3alleg.md), [**allegro\_init**(3alleg)](/allegro_init/3alleg.md)
