freedreno: Enable precision-lowering and optimizations.
This MR is following MR !1043 (closed).
This enables precision lowering at GLSL IR stage by adding an option to set PIPE_SHADER_CAP_FP16. Also includes some passes to optimize redundant fp16 conversions produced during precision-lowering.
- ir3_cf : fp16 conversion folding at the ir3 compilation.
- ir3_nir_opt_collapse_fp_conv : nir opt pass for collapsing fp conversions.
- folding const conversion at ir3_cp.
- enabling nir_opt_loop_unroll (tested only on a6xx so far).
Besides, this includes a couple of important fixes.
- Handle half regs of arrays during register allocation
- Fix a regression for handling values of half const regs.