SPIR-V codegen complains about capabilities despite understanding them properly
Personne n'a encore pris cette issue.
- Langage dominant
- Rust
- Étoiles
- 3.4k
- Forks
- 126
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
I was trying to do this:
#[cfg(all(target_arch = "spirv", not(target_feature = "Int64")))]
And despite I see similar code in spirv-std, I'm getting a warning:
warning: unexpected `cfg` condition value: `Int64`
--> ../src/shader.rs:13:15
|
13 | #[cfg(all(target_arch = "spirv", not(target_feature = "Int64")))]
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: expected values for `target_feature` are: `10e60`, `2e3`, `3e3r1`, `3e3r2`, `3e3r3`, `3e7`, `7e10`, `a`, `aclass`, `adx`, `aes`, `altivec`, `alu32`, `amx-bf16`, `amx-complex`, `amx-fp16`, `amx-int8`, `amx-tile`, `atomics`, `avx`, `avx2`, `avx512bf16`, `avx512bitalg`, `avx512bw`, `avx512cd`, `avx512dq`, `avx512f`, `avx512fp16`, `avx512ifma`, `avx512vbmi`, `avx512vbmi2`, `avx512vl`, `avx512vnni`, `avx512vp2intersect`, and `avx512vpopcntdq` and 251 more
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
= note: `#[warn(unexpected_cfgs)]` on by default
I did some more testing. SPIR-V codegen backend actually understands both target_arch = "spirv" and target_feature = "Int64", here is a simple test case:
#[cfg(all(target_arch = "spirv", target_feature = "Int64"))]
compile_error!("Hello");
Yet it only generates a warning for target_feature = "Int64" and not target_arch = "spirv".
Regular rustc, obviously, complains about either unless unexpected_cfgs is used to suppress the warning. I don't think this is supposed to happen, both should be accepted without warnings by SPIR-V codegen.
Originally posted by @nazar-pc in https://github.com/Rust-GPU/rust-gpu/discussions/304
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez l’avertissement avec les exemples de cfg de l’issue et examinez la gestion de target_arch et target_feature par le backend de génération de code SPIR-V. Comparez ses valeurs de configuration acceptées avec la vérification unexpected_cfgs ; c’est terminé lorsque spirv et Int64 compilent tous deux sans avertissements, tandis que le comportement démontré de compile_error continue de fonctionner.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100