evaluation missmatch between JIT and IR interpreter
- Dominant language
- C++
- Stars
- 1.9k
- Forks
- 283
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 135
Description
## Description
The XLS fuzzer found a JIT mismatch on optimized IR.
Specifically, evaluated opt IR (JIT) miscompared with evaluated opt IR (interpreter) and unoptimized IR.
**Miscompare Details:**
```
args: bits[15]:0x2aaa; bits[2]:0x2 evaluated opt IR (JIT) = (bits[15]:0x2aab, bits[2]:0x2, (bits[14]:0x1555, bits[49]:0x0, bits[39]:0x58_c1d6_b1d9), bits[1]:0x1) evaluated opt IR (interpreter), evaluated unopt IR (JIT), evaluated unopt IR (interpreter), interpreted DSLX, simulated = (bits[15]:0x2aab, bits[2]:0x2, (bits[14]:0x1555, bits[49]:0x1_ffff_ffff_ffff, bits[39]:0x1_0000_0000), bits[1]:0x1)
```
The differences are in:
- `bits[49]: 0x0` (JIT) vs `0x1_ffff_ffff_ffff` (Expected)
- `bits[39]: 0x58_c1d6_b1d9` (JIT) vs `0x1_0000_0000` (Expected)
This corresponds to `sign_ext.428` and `concat.321` in the optimized IR.
The selector `concat.77` for the priority selects in `concat.321` seems to have evaluated incorrectly in JIT (selecting case 0 instead of case 1).
### Repro steps
Run the regression test (once the CL is submitted or by using the crasher file directly):
```bash
blaze test //third_party/xls/fuzzer:crasher_2026-05-21_c47d_test
```
Contributor guide
Assessment
This issue has not been assessed yet.