nir: add support for flushing to zero denorm constants
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Wed, 20 Jun 2018 07:11:14 +0000 (09:11 +0200)
committerAndres Gomez <agomez@igalia.com>
Tue, 17 Sep 2019 20:39:18 +0000 (23:39 +0300)
commitf7d73db353e5b6416c98a8c05c585ea79b3eada2
tree955c1f81406e37115b6aaa019a52b66298b36267
parent45668a8be112878a2d34a6ba11684b0ff60df4ed
nir: add support for flushing to zero denorm constants

v2:
- Refactor conditions and shared function (Connor).
- Move code to nir_eval_const_opcode() (Connor).
- Don't flush to zero on fquantize2f16
  From Vulkan spec, VK_KHR_shader_float_controls section:

  "3) Do denorm and rounding mode controls apply to OpSpecConstantOp?

  RESOLVED: Yes, except when the opcode is OpQuantizeToF16."

v3:
- Fix bit size (Connor).
- Fix execution mode on nir_loop_analize (Connor).

v4:
- Adapt after API changes to nir_eval_const_opcode (Andres).

v5:
- Simplify constant_denorm_flush_to_zero (Caio).

v6:
- Adapt after API changes and to use the new constant
  constructors (Andres).
- Replace MAYBE_UNUSED with UNUSED as the first is going
  away (Andres).

v7:
- Adapt to newly added calls (Andres).
- Simplified the auxiliary to flush denorms to zero (Caio).
- Updated to renamed supported capabilities member (Andres).

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com> [v4]
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/compiler/nir/nir_constant_expressions.h
src/compiler/nir/nir_constant_expressions.py
src/compiler/nir/nir_loop_analyze.c
src/compiler/nir/nir_opt_constant_folding.c
src/compiler/spirv/spirv_to_nir.c