• Ian Romanick's avatar
    nir: Use the flrp lowering pass instead of nir_opt_algebraic · d41cdef2
    Ian Romanick authored
    I tried to be very careful while updating all the various drivers, but I
    don't have any of that hardware for testing. :(
    i965 is the only platform that sets always_precise = true, and it is
    only set true for fragment shaders.  Gen4 and Gen5 both set lower_flrp32
    only for vertex shaders.  For fragment shaders, nir_op_flrp is lowered
    during code generation as a(1-c)+bc.  On all other platforms 64-bit
    nir_op_flrp and on Gen11 32-bit nir_op_flrp are lowered using the old
    nir_opt_algebraic method.
    No changes on any other Intel platforms.
    v2: Add panfrost changes.
    Iron Lake and GM45 had similar results. (Iron Lake shown)
    total cycles in shared programs: 188647754 -> 188647748 (<.01%)
    cycles in affected programs: 5096 -> 5090 (-0.12%)
    helped: 3
    HURT: 0
    helped stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
    helped stats (rel) min: 0.12% max: 0.12% x̄: 0.12% x̃: 0.12%
    Reviewed-by: Matt Turner's avatarMatt Turner <mattst88@gmail.com>
brw_nir.c 39.5 KB