From 5269c6d4221bc840b1831273c7788be69e275ddd Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Thu, 9 Apr 2026 17:41:18 +0200 Subject: [PATCH] zink/ntv: seperate float control2 exact bits Reviewed-by: Mel Henning Part-of: --- .../drivers/zink/nir_to_spirv/nir_to_spirv.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 5cb18a7c933..4d5d9b6b025 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -2310,13 +2310,17 @@ emit_alu(struct ntv_context *ctx, nir_alu_instr *alu) if (!nir_alu_instr_is_nan_preserve(alu)) fp_mode |= SpvFPFastMathModeNotNaNMask; - if (!nir_alu_instr_is_exact(alu)) { - fp_mode |= - SpvFPFastMathModeAllowRecipMask | - SpvFPFastMathModeAllowContractMask | - SpvFPFastMathModeAllowReassocMask | - SpvFPFastMathModeAllowTransformMask; - } + if (!nir_alu_instr_no_contract(alu)) + fp_mode |= SpvFPFastMathModeAllowContractMask; + + if (!nir_alu_instr_no_reassoc(alu)) + fp_mode |= SpvFPFastMathModeAllowReassocMask; + + if (!nir_alu_instr_no_transform(alu)) + fp_mode |= SpvFPFastMathModeAllowTransformMask; + + /* Vulkan always allows rcp anyway. */ + fp_mode |= SpvFPFastMathModeAllowRecipMask; if (fp_mode != default_fp_mode) spirv_builder_emit_fp_fast_math_mode(&ctx->builder, result, fp_mode);