From 8e7f33818f0c8c8f73f82057c3ed536b0302d1a4 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 8 Mar 2024 15:12:10 -0600 Subject: [PATCH] nak: Add more NIR wrappers for walking the NIR CFG Reviewed-by: M Henning Part-of: --- src/nouveau/compiler/nak/nir.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/nouveau/compiler/nak/nir.rs b/src/nouveau/compiler/nak/nir.rs index ddd7a3beca5..c1a10e2ccdd 100644 --- a/src/nouveau/compiler/nak/nir.rs +++ b/src/nouveau/compiler/nak/nir.rs @@ -44,6 +44,14 @@ impl<'a, T> ExecListIter<'a, T> { _marker: PhantomData, } } + + fn at(n: &'a exec_node, offset: usize) -> Self { + Self { + n, + offset: offset, + _marker: PhantomData, + } + } } impl<'a, T: 'a> Iterator for ExecListIter<'a, T> { @@ -556,6 +564,7 @@ pub trait NirCfNode { fn as_block(&self) -> Option<&nir_block>; fn as_if(&self) -> Option<&nir_if>; fn as_loop(&self) -> Option<&nir_loop>; + fn next(&self) -> Option<&nir_cf_node>; } impl NirCfNode for nir_cf_node { @@ -582,6 +591,12 @@ impl NirCfNode for nir_cf_node { None } } + + fn next(&self) -> Option<&nir_cf_node> { + let mut iter: ExecListIter = + ExecListIter::at(&self.node, offset_of!(nir_cf_node, node)); + iter.next() + } } pub trait NirFunctionImpl {