Precompute folds `relaxed_laneselect` and `i16x8.relaxed_dot_i8x16_i7x16_s` although their results are implementation-defined
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 86/100
Piste de recherche
Commencez dans src/wasm-interpreter.h, au niveau de visitSIMDTernary et visitSIMDBinary, et comparez la façon dont les autres instructions relaxed gèrent le mode NonConstant. Exécutez le reproducer wasm-opt fourni avec --enable-simd --enable-relaxed-simd --precompute --print ; cela signifie que ces opérations relaxed ne sont pas précalculées et conservent des résultats dépendant du moteur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
#7465 stopped the interpreter from folding relaxed SIMD instructions while optimizing, but relaxed_laneselect (4 variants) and i16x8.relaxed_dot_i8x16_i7x16_s were missed. In src/wasm-interpreter.h, visitSIMDTernary handles RelaxedLaneselect* together with Bitselect, and visitSIMDBinary handles RelaxedDotI8x16I7x16SToVecI16x8, both without the check. Precompute (so -O1 and above) therefore bakes in Binaryen's choice, which can differ from the engine's.
Reproducer
(module
(func (export "laneselect") (result i32)
(i32x4.extract_lane 0
(i32x4.relaxed_laneselect
(v128.const i32x4 1 1 1 1)
(v128.const i32x4 2 2 2 2)
(v128.const i32x4 0x7fffffff 0x7fffffff 0x7fffffff 0x7fffffff))))
(func (export "dot") (result i32)
(i32x4.extract_lane 0
(i16x8.relaxed_dot_i8x16_i7x16_s
(v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)
(v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)))))
$ wasm-opt in.wat --enable-simd --enable-relaxed-simd --precompute --print
(func $0 (result i32) (i32.const 1))
(func $1 (result i32) (i32.const 131074))
Result
| export | original | after --precompute |
|---|---|---|
laneselect |
2 | 1 |
dot |
-33358334 | 131074 |
Measured on V8 13.6 (node v24.13.0) and Wasmtime 46.0.1 with default settings, both x86_64.
Expected
Like the other relaxed instructions, return NONCONSTANT_FLOW in NonConstant mode.
Reproduced on main at 82439ad (wasm-opt version 133).
AI was used as part of the process of finding this issue. I have manually checked and reproduced it.
- Langage dominant
- WebAssembly
- Étoiles
- 8.7k
- Forks
- 897
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 103
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire 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.
Autres issues de WebAssembly/binaryen
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
WebAssembly/binaryen#9135 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 Une demi-journée Accessibilité débutants 76/100
WebAssembly/binaryen#9018 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
WebAssembly/binaryen#9260 · 5 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
WebAssembly/binaryen#9257 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
WebAssembly/binaryen#9249 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de WebAssembly/binaryen
Issues similaires
-
bug priority: P2
Difficulté 1/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
clang:static analyzer
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
llvm/llvm-project#233598 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
AeneasVerif/aeneas#1467 ·
Les mainteneurs répondent en général sous 1 jour
-
arrays asr pass enhancement format I/O low priority
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Les mainteneurs répondent en général sous 1 jour