Rematerialization
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza rastreando el Function trait y el Edit enum descritos en el issue, junto con el manejo existente de VReg, PReg, spill y reload. Determina si el alcance de la rematerialización simple de constantes puede diseñarse sin admitir la rematerialización compleja; se consideraría terminado cuando incluya la interfaz de metadatos, las ediciones de rematerialización y la cobertura del comportamiento de spill y reload.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
As an alternative to spilling and reloading, a vreg value can sometimes be recomputed from other available values. There are two ways this can be supported in regalloc2:
Simple rematerialization
Supporting rematerialization for constants, including runtime constants which only depend on pinned registers (e.g. VMContext), is relatively straightforward. The client needs to track rematerialization metadata for each VReg, after which we can elide spills for this vreg (unless there is a stack use) and replace reloads with rematerializations.
trait Function {
fn can_rematerialize(&self, vreg: VReg) -> bool;
}
enum Edit {
/// The code sequence for rematerialization is only allowed to
/// use `dest` and the dedicated scratch register.
Rematerialize {
vreg: VReg,
// This is not an Allocation because rematerializing
// into a stack slot doesn't make sense.
dest: PReg,
}
}
Complex rematerialization
Rematerialization involving values in other vregs is more complex and probably not worth the effort of implementing. It has been done before as part of a research project on V8 but AFAIK this has not made it into the main V8 codebase.
- Lenguaje dominante
- Rust
- Estrellas
- 266
- Forks
- 54
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bytecodealliance/regalloc2
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
bytecodealliance/regalloc2#265 · 9 comentarios ·
-
Modeling subregister aliasing Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
bytecodealliance/regalloc2#247 · 3 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
bytecodealliance/regalloc2#222 · 4 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
bytecodealliance/regalloc2#206 · 2 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
bytecodealliance/regalloc2#194 · 7 comentarios ·
Todos los issues de bytecodealliance/regalloc2
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
bug core
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
JIT-compiled number -> Decimal conversion silently overflows instead of raising DECIMAL_OVERFLOW Abiertofuzz
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ClickHouse/ClickHouse#122114 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
linebender/vello_svg#90 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100