Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Precompute folds `relaxed_laneselect` and `i16x8.relaxed_dot_i8x16_i7x16_s` although their results are implementation-defined

Fermée Adaptée aux débutants
#9,207 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
cpp, wasm
Domaine
compilers

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

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de WebAssembly/binaryen

Toutes les issues de WebAssembly/binaryen

Issues similaires

Plus d'issues Compilers

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.