Skip to content

Support 128-bit AVX/SIMD comparison logging and mutation #3749

@yoursanonymous

Description

@yoursanonymous

Is your feature request related to a problem? Please describe.
When fuzzing high-performance targets, modern codebases frequently use AVX/SIMD instructions for comparisons. Since libafl and libafl_targets cap comparison logging at 64-bit values, the fuzzer is completely blind to 128-bit, 256-bit, and 512-bit vector comparisons significantly limiting mutation effectiveness on these code paths.

Describe the solution you'd like
To add native 128-bit comparison support to CmpLog and the mutation framework, with room to extend to 256/512-bit later. The main changes would be: adding a U128 variant to CmpValues, widening CmplogBytes, fixing up the CmpMap dictionary extraction to properly reconstruct u128 halves, and hooking it all into havoc_mutations::dict_insert()

Describe alternatives you've considered
CmpValues::Bytes sort of works but loses the semantic aware mutations that make CmpLog actually useful. Manual per-target hooking is another option, but it's messy putting this in the core CmpMap means every CmpLog-enabled target gets the benefit automatically.

Additional context
Without this, achieving deep coverage in cryptographic routines, vectorized string parsers, and multimedia libraries remains substantially harder, as magic bytes and equality conditions hidden behind SIMD optimizations go unresolved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions