ir3_cf breaks nir_op_fquantize2f16
ir3_cf's "don't optimize out f2f32(f2f16(x))
" thing doesn't work because cf will first push the f2f16 into whatever produced x, so we then we have (for example) cov.f16f32(add.f hr, z, w))
and ir3_cf can't detect it any more. I could disable optimization out of cov.f16f32
, but I'm dubious of this pass even needing to exist: I went looking to see what work cf is doing for us on my shader-db, and it seems to all be "convert our bary instructions to half". This feels like work that should be done at the GLSL and NIR levels.
Testcase: dEQP-VK.spirv_assembly.instruction.graphics.opquantize.too_small_vert