[Migrated] Malformed SPIR-V when compiling a simple loop
Nessuno ha ancora preso questa issue.
- Lingua principale
- Rust
- Stelle
- 3.4k
- Fork
- 125
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/1076
Old labels: t: bug
Originally creatd by Patryk27 on 2023-06-16T15:19:59Z
Hi,
Compiling this code:
#[spirv(compute(threads(8, 8)))]
pub fn main(#[spirv(descriptor_set = 0, binding = 0)] out: TexRgba32f) {
let mut value = vec3(0.1, 0.2, 0.3);
let mut i = 0;
loop {
if i >= 32 {
break;
}
i += 1;
}
unsafe {
out.write(uvec2(0, 0), value.extend(1.0));
}
}
... will work, but adding a seemingly no-op value = value into that loop:
loop {
value = value;
if i >= 32 {
break;
}
i += 1;
}
... will panic the compiler, saying:
error: malformed SPIR-V (in OpCompositeExtract: undefined ID %4547)
Meta:
rustc 1.71.0-nightly (1a5f8bce7 2023-05-26)
SPIRV-Tools v2023.2 unknown hash, 1980-01-01T00:00:00
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia compilando il reproducer Rust con e senza il no-op value = value all'interno del ciclo, quindi esamina lo SPIR-V generato e la diagnostica di OpCompositeExtract. Il lavoro è completato quando entrambe le versioni vengono compilate senza un errore di SPIR-V malformato e producono un output valido.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100