turnip: 16-bit float/storage v2
It is a rebased version of !4695 (closed) with additional fixes to make all tests pass.
Passes:
dEQP-VK.spirv_assembly.instruction.*.16bit_storage.*
dEQP-VK.spirv_assembly.instruction.*.float16.*
dEQP-VK.spirv_assembly.*.float_controls.*
Additional things that were done:
- Changed "freedreno/ir3: invert IR3_REG_EVEN" to have
IR3_REG_RTZ
on all cat1 exceptf2f16
andf2f16_rtne
; - Fixed shift for 16b integers which are used after lowering of frexp_exp;
- Found a toggle to enable/disable infinities for float16;
This MR is ready for review with few caveats:
- The "TEST: clamp branchstack to 32" is necessary to pass all tests, however it is not related to float16. It could be removed.
I'll look into how blob deals with bigger branch depths in a general case, but that would be a matter of another MR.Would be resolved by !9859 (merged) -
TheFixed asserts for 16b STIBVK_KHR_16bit_storage
is WIP because I just commented out two asserts instead of changing them to be correct.