From 6383050826466ec3874548cc4b0be564fef6c07a Mon Sep 17 00:00:00 2001 From: Lorenzo Rossi Date: Tue, 5 Aug 2025 23:24:47 +0200 Subject: [PATCH] nak: Fix pre-volta iadd3 panic during compilation Commit 431a9508a02 added an optimization that inserts a NIR iadd3 instruction, this is not supported in GPUs before volta, thus when translating NIR into NAK IR the builder would panic. This commits adds a simple check that disables the optimizations on pre-volta GPUs. Fixes: 431a9508a02 ("nak: copy late_algebraic iadd3 rules without the constant restriction") Signed-off-by: Lorenzo Rossi Part-of: --- src/nouveau/compiler/nak_nir_algebraic.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/nouveau/compiler/nak_nir_algebraic.py b/src/nouveau/compiler/nak_nir_algebraic.py index 9fbd680582a..9a29d5c45aa 100644 --- a/src/nouveau/compiler/nak_nir_algebraic.py +++ b/src/nouveau/compiler/nak_nir_algebraic.py @@ -40,8 +40,10 @@ algebraic_lowering = [ (('umax', 'a', 'b'), ('bcsel', ('ult', a, b), b, a), volta), (('iadd', 'a@64', ('ineg', 'b@64')), ('isub', a, b)), - (('iadd', ('iadd(is_used_once)', 'a(is_not_const)', '#b'), 'c(is_not_const)'), ('iadd3', a, b, c)), - (('iadd', ('iadd(is_used_once)', 'a(is_not_const)', 'b(is_not_const)'), '#c'), ('iadd3', a, b, c)), + (('iadd', ('iadd(is_used_once)', 'a(is_not_const)', '#b'), 'c(is_not_const)'), + ('iadd3', a, b, c), 'options->has_iadd3'), + (('iadd', ('iadd(is_used_once)', 'a(is_not_const)', 'b(is_not_const)'), '#c'), + ('iadd3', a, b, c), 'options->has_iadd3'), (('iadd(is_used_by_non_ldc_nv)', 'a@32', ('ishl', 'b@32', '#s@32')), ('lea_nv', a, b, s), 'nak->sm >= 70'),