Skip to content

evaluation missmatch between JIT and IR interpreter #4302

Description

@proppy

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):

blaze test //third_party/xls/fuzzer:crasher_2026-05-21_c47d_test

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions