Investigate better bitpacking for Operand and Use
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Refactorización
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- compilers, performance
Línea de trabajo
Comienza localizando las definiciones y los diseños de bits de Operand y Use; después, sigue cómo sus campos u32 codifican información sobre registros, registros virtuales, instrucciones y restricciones. Mide los límites actuales y el impacto en el tiempo de compilación antes de evaluar si la información que se usa con poca frecuencia puede almacenarse fuera de línea. Done debe incluir un diseño concreto que aumente los límites relevantes sin ampliar la representación habitual.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Two core data-structure elements, Operand and Use, are both designed to fit a relatively large amount of information in one u32. This is a performance optimization that we have found to be relatively impactful; expanding even to a u64 has a measurable impact (of at least a few percent) on compilation time.
Unfortunately, the scarcity of bits means that certain limits are lower than we would prefer. For example, we support only a 5-bit index for physical registers in each register class (so 32 integer registers and 32 float/vector registers), which may not be enough for some use-cases (though it can work for aarch64 and x64 at least). This also limits the VReg count to 1M (2^20).
We should investigate ways of, e.g., out-of-lining infrequently-used information (such as fixed-PReg constraints) to raise the limits on VRegs, PRegs, instruction count, and the like and provide enough headroom for any reasonably-imaginable use case.
- 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 · 7 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 75/100
-
issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
web-infra-dev/rspack#15847 ·