diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py index 7b05e17aca1ec49d134aed4f2b78a615ec4846e8..7f0a05ec19ca51171e297d4c5252007d6172dab3 100644 --- a/src/pairs/code_gen/cgen.py +++ b/src/pairs/code_gen/cgen.py @@ -50,6 +50,16 @@ class CGen: self.print("") self.print("using namespace pairs;") self.print("") + + if self.target.is_gpu(): + for array in self.sim.arrays.statics(): + if array.device_flag: + t = array.type() + tkw = Types.ctype2keyword(t) + size = self.generate_expression(BinOp.inline(array.alloc_size())) + self.print(f"__constant__ {tkw} d_{array.name()}[{size}];") + + self.print("") for module in self.sim.modules(): self.generate_module(module) self.print.end() diff --git a/src/pairs/ir/arrays.py b/src/pairs/ir/arrays.py index 8316fc074cecffc578ca897008fea8d705164f8c..1ca7ca8bc3d1bbe9c13943ceb39ea4a16882349a 100644 --- a/src/pairs/ir/arrays.py +++ b/src/pairs/ir/arrays.py @@ -27,6 +27,9 @@ class Arrays: def all(self): return self.arrays + def statics(self): + return [a for a in self.arrays if a.is_static()] + def find(self, a_name): array = [a for a in self.arrays if a.name() == a_name] if array: