Skip to content
  • Faith Ekstrand's avatar
    nir/search: Use the correct bit size for integer comparisons · bb96b034
    Faith Ekstrand authored
    
    
    The previous code always compared integers as 64-bit.  Due to variations
    in sign-extension in the code generated by nir_opt_algebraic.py, this
    meant that nir_search doesn't always do what you want.  Instead, 32-bit
    values should be matched as 32-bit and 64-bit values should be matched
    as 64-bit.  While we're here we unify the unsigned and signed paths.
    Now that we're using the right bit size, they should be the same since
    the only difference we had before was sign extension.
    
    This gets the UE4 bitfield_extract optimization working again.  It had
    stopped working due to the constant 0xff00ff00 getting sign-extended
    when it shouldn't have.
    
    Reviewed-by: default avatarIago Toral Quiroga <itoral@igalia.com>
    Reviewed-by: default avatarEric Anholt <eric@anholt.net>
    Cc: "17.0 13.0" <mesa-stable@lists.freedesktop.org>
    bb96b034