From 3468f70ca1dbe0ddb66bd18759cfa982f7bd026a Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 25 Oct 2023 11:13:21 -0500 Subject: [PATCH] nak: Use barriers for re-convergence Now that we're getting total re-convergence through barriers, we can drop our OpWarpSyncs in front of barriers and derivatives Part-of: --- src/nouveau/compiler/nak_from_nir.rs | 3 --- src/nouveau/compiler/nak_nir.c | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/nouveau/compiler/nak_from_nir.rs b/src/nouveau/compiler/nak_from_nir.rs index 3fa381cf72c..f29eab9bac3 100644 --- a/src/nouveau/compiler/nak_from_nir.rs +++ b/src/nouveau/compiler/nak_from_nir.rs @@ -922,7 +922,6 @@ impl<'a> ShaderFromNir<'a> { assert!(alu.def.bit_size() == 32); let scratch = b.alloc_ssa(RegFile::GPR, 1); - b.push_op(OpWarpSync { mask: u32::MAX }); b.push_op(OpShfl { dst: scratch[0].into(), src: srcs[0], @@ -953,7 +952,6 @@ impl<'a> ShaderFromNir<'a> { assert!(alu.def.bit_size() == 32); let scratch = b.alloc_ssa(RegFile::GPR, 1); - b.push_op(OpWarpSync { mask: u32::MAX }); b.push_op(OpShfl { dst: scratch[0].into(), src: srcs[0], @@ -1844,7 +1842,6 @@ impl<'a> ShaderFromNir<'a> { match intrin.execution_scope() { SCOPE_NONE => (), SCOPE_WORKGROUP => { - b.push_op(OpWarpSync { mask: u32::MAX }); if self.nir.info.stage() == MESA_SHADER_COMPUTE { b.push_op(OpBar {}).deps.yld = true; } diff --git a/src/nouveau/compiler/nak_nir.c b/src/nouveau/compiler/nak_nir.c index f4802609c14..f1467afe47d 100644 --- a/src/nouveau/compiler/nak_nir.c +++ b/src/nouveau/compiler/nak_nir.c @@ -790,6 +790,8 @@ nak_postprocess_nir(nir_shader *nir, nir_divergence_analysis(nir); + OPT(nir, nak_nir_add_barriers, nak); + /* Re-index blocks and compact SSA defs because we'll use them to index * arrays */