1616 PragmaIteration , PragmaTransfer )
1717from devito .passes .iet .languages .utils import joins
1818from devito .passes .iet .languages .C import CBB
19+ from devito .passes .iet .languages .CXX import CXXBB
1920from devito .symbolics import CondEq , DefFunction
2021from devito .tools import filter_ordered
2122
@@ -111,7 +112,7 @@ def _generate(self):
111112 return self .pragma % (joins (* items ), n )
112113
113114
114- class OmpBB (LangBB ):
115+ class AbstractOmpBB (LangBB ):
115116
116117 mapper = {
117118 # Misc
@@ -134,14 +135,21 @@ class OmpBB(LangBB):
134135 'atomic' :
135136 Pragma ('omp atomic update' )
136137 }
137- mapper .update (CBB .mapper )
138138
139139 Region = OmpRegion
140140 HostIteration = OmpIteration
141141 DeviceIteration = DeviceOmpIteration
142142 Prodder = ThreadedProdder
143143
144144
145+ class OmpBB (AbstractOmpBB ):
146+ mapper = {** AbstractOmpBB .mapper , ** CBB .mapper }
147+
148+
149+ class CXXOmpBB (AbstractOmpBB ):
150+ mapper = {** AbstractOmpBB .mapper , ** CXXBB .mapper }
151+
152+
145153class DeviceOmpBB (OmpBB , PragmaLangBB ):
146154
147155 BackendCall = DeviceCall
@@ -213,9 +221,11 @@ class SimdOmpizer(PragmaSimdTransformer):
213221 langbb = OmpBB
214222
215223
216- class Ompizer (PragmaShmTransformer ):
224+ class CXXSimdOmpizer (PragmaSimdTransformer ):
225+ langbb = CXXOmpBB
217226
218- langbb = OmpBB
227+
228+ class AbstractOmpizer (PragmaShmTransformer ):
219229
220230 @classmethod
221231 def _support_array_reduction (cls , compiler ):
@@ -227,6 +237,14 @@ def _support_array_reduction(cls, compiler):
227237 return True
228238
229239
240+ class Ompizer (AbstractOmpizer ):
241+ langbb = OmpBB
242+
243+
244+ class CXXOmpizer (AbstractOmpizer ):
245+ langbb = CXXOmpBB
246+
247+
230248class DeviceOmpizer (PragmaDeviceAwareTransformer ):
231249 langbb = DeviceOmpBB
232250
0 commit comments