Section courante

A propos

Section administrative du site

is_x86_feature_detected

Est-ce que la fourniture x86 détecté
Rust

Syntaxe

macro_rules! is_x86_feature_detected {
   ("aes") => { ... };
   ("pclmulqdq") => { ... };
   ("rdrand") => { ... };
   ("rdseed") => { ... };
   ("tsc") => { ... };
   ("mmx") => { ... };
   ("sse") => { ... };
   ("sse2") => { ... };
   ("sse3") => { ... };
   ("ssse3") => { ... };
   ("sse4.1") => { ... };
   ("sse4.2") => { ... };
   ("sse4a") => { ... };
   ("sha") => { ... };
   ("avx") => { ... };
   ("avx2") => { ... };
   ("sha512") => { ... };
   ("sm3") => { ... };
   ("sm4") => { ... };
   ("avx512f") => { ... };
   ("avx512cd") => { ... };
   ("avx512er") => { ... };
   ("avx512pf") => { ... };
   ("avx512bw") => { ... };
   ("avx512dq") => { ... };
   ("avx512vl") => { ... };
   ("avx512ifma") => { ... };
   ("avx512vbmi") => { ... };
   ("avx512vpopcntdq") => { ... };
   ("avx512vbmi2") => { ... };
   ("gfni") => { ... };
   ("vaes") => { ... };
   ("vpclmulqdq") => { ... };
   ("avx512vnni") => { ... };
   ("avx512bitalg") => { ... };
   ("avx512bf16") => { ... };
   ("avx512vp2intersect") => { ... };
   ("avx512fp16") => { ... };
   ("avxifma") => { ... };
   ("avxneconvert") => { ... };
   ("avxvnni") => { ... };
   ("avxvnniint16") => { ... };
   ("avxvnniint8") => { ... };
   ("amx-tile") => { ... };
   ("amx-int8") => { ... };
   ("amx-bf16") => { ... };
   ("amx-fp16") => { ... };
   ("amx-complex") => { ... };
   ("amx-avx512") => { ... };
   ("amx-fp8") => { ... };
   ("amx-movrs") => { ... };
   ("amx-tf32") => { ... };
   ("amx-transpose") => { ... };
   ("f16c") => { ... };
   ("fma") => { ... };
   ("bmi1") => { ... };
   ("bmi2") => { ... };
   ("lzcnt") => { ... };
   ("tbm") => { ... };
   ("popcnt") => { ... };
   ("fxsr") => { ... };
   ("xsave") => { ... };
   ("xsaveopt") => { ... };
   ("xsaves") => { ... };
   ("xsavec") => { ... };
   ("cmpxchg16b") => { ... };
   ("kl") => { ... };
   ("widekl") => { ... };
   ("adx") => { ... };
   ("rtm") => { ... };
   ("movbe") => { ... };
   ("movrs") => { ... };
   ("ermsb") => { ... };
   ("xop") => { ... };
   ("abm") => { ... };
   ("avx512gfni") => { ... };
   ("avx512vaes") => { ... };
   ("avx512vpclmulqdq") => { ... };
   ($t:tt,) => { ... };
   ($t:tt) => { ... }; }

Description

Cette macro permet de vérifier à l'exécution si une fonctionnalité spécifique du processeur x86/x86-64 est disponible, comme SSE ou AVX.

Remarques

Il s'agit d'une macro permettant de tester à l'exécution si une fonctionnalité CPU est disponible sur les plateformes x86/x86-64.

Cette macro est fournie dans la bibliothèque standard et détecte à l'exécution si la fonctionnalité CPU spécifiée est détectée. Ce problème ne se résout pas à la compilation, sauf si la fonctionnalité spécifiée est déjà activée pour l'ensemble du crate. La détection à l'exécution repose actuellement principalement sur l'instruction cpuid.

Cette macro n'accepte qu'un seul paramètre : une chaîne littérale de la fonctionnalité testée. Les noms de fonctionnalités pris en charge sont les versions minuscules de ceux définis par Intel dans sa documentation.

Paramètres pris en charge

Cette macro prend en charge les mêmes noms que #[target_feature]. Cependant, contrairement à #[target_feature], elle ne prend pas en charge les noms séparés par une virgule. Pour le moment, le test de plusieurs fonctionnalités doit être effectué via des invocations de macro distinctes.

Les paramètres pris en charge sont :



Dernière mise à jour : Mardi, le 5 Août 2025