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 ):
@@ -231,6 +241,14 @@ def _support_array_reduction(cls, compiler):
231241 return True
232242
233243
244+ class Ompizer (AbstractOmpizer ):
245+ langbb = OmpBB
246+
247+
248+ class CXXOmpizer (AbstractOmpizer ):
249+ langbb = CXXOmpBB
250+
251+
234252class DeviceOmpizer (PragmaDeviceAwareTransformer ):
235253 langbb = DeviceOmpBB
236254
0 commit comments