Lines Matching refs:self

31     def __init__(self, *args, **kwargs):
35 self.pipeline_stages = []
36 self.access_flags = []
39 self.pipeline_stage_condition = dict()
41 self.access_flag_condition = dict()
44 self.pipeline_stage_equivalent = dict()
46 self.pipeline_stage_queue_support = dict()
49 self.access_flag_equivalent = dict()
51 self.access_flag_stage_support = dict()
53 self.pipeline_order_info = []
55 def endFile(self):
56 self.writeFlagDefinitions()
57 self.supportedPipelineStages()
58 self.supportedAccessTypes()
59 self.pipelineOrdering()
60 OutputGenerator.endFile(self)
62 def writeBlock(self, basename, contents):
69 filename = self.genOpts.directory + '/' + basename
70 self.logMsg('diag', '# Generating include file:', filename)
75 write(self.genOpts.conventions.warning_comment, file=fp)
81 self.logMsg('diag', '# No contents for:', filename)
83 def genSyncStage(self, stageinfo):
84 OutputGenerator.genSyncStage(self, stageinfo)
86 self.pipeline_stages.append(name)
89 self.pipeline_stage_condition[name] = stageinfo.condition
93 self.pipeline_stage_queue_support[name] = syncsupport.get('queues').split(',')
97 self.pipeline_stage_equivalent[name] = syncequivalent.get('stage').split(',')
99 def genSyncAccess(self, accessinfo):
100 OutputGenerator.genSyncStage(self, accessinfo)
102 self.access_flags.append(name)
105 self.access_flag_condition[name] = accessinfo.condition
109 self.access_flag_stage_support[name] = syncsupport.get('stage').split(',')
113 self.access_flag_equivalent[name] = syncequivalent.get('access').split(',')
115 def genSyncPipeline(self, pipelineinfo):
116 OutputGenerator.genSyncStage(self, pipelineinfo)
117 self.pipeline_order_info.append(pipelineinfo)
119 def isSameConditionPipeline(self, condition, stage):
120 if stage not in self.pipeline_stage_condition:
124 return self.pipeline_stage_condition[stage] == condition
126 def isSameConditionPipelineAccess(self, stage, flag):
127 if stage not in self.pipeline_stage_condition:
129 if flag not in self.access_flag_condition:
131 return self.pipeline_stage_condition[stage] == self.access_flag_condition[flag]
133 def writePipelineIfdef(self, stage, list):
134 condition = self.pipeline_stage_condition[stage] if stage in self.pipeline_stage_condition else None
138 def writePipelineEndif(self, stage, list):
139 condition = self.pipeline_stage_condition[stage] if stage in self.pipeline_stage_condition else None
143 def writeAccessIfdef(self, flag, list):
144 condition = self.access_flag_condition[flag] if flag in self.access_flag_condition else None
148 def writeAccessEndif(self, flag, list):
149 condition = self.access_flag_condition[flag] if flag in self.access_flag_condition else None
153 def writeFlagDefinitions(self):
154 for name, stages in self.pipeline_stage_equivalent.items():
157 self.writePipelineIfdef(stage, output)
159 self.writePipelineEndif(stage, output)
161 self.writeBlock(f'flagDefinitions/{name}{self.file_suffix}', output)
163 for name, flags in self.access_flag_equivalent.items():
166 self.writeAccessIfdef(flag, output)
168 self.writeAccessEndif(flag, output)
170 self.writeBlock(f'flagDefinitions/{name}{self.file_suffix}', output)
172 def supportedPipelineStages(self):
174 for stage in self.pipeline_stages:
175 self.writePipelineIfdef(stage, output)
177 if stage not in self.pipeline_stage_queue_support:
180 for queue in self.pipeline_stage_queue_support[stage]:
188 self.writePipelineEndif(stage, output)
190 self.writeBlock(f'supportedPipelineStages{self.file_suffix}', output)
192 def supportedAccessTypes(self):
194 for flag in self.access_flags:
195 self.writeAccessIfdef(flag, output)
198 if flag not in self.access_flag_stage_support:
201 stages = self.access_flag_stage_support[flag]
207 if not self.isSameConditionPipelineAccess(stage, flag):
208 self.writePipelineIfdef(stage, output)
210 if not self.isSameConditionPipelineAccess(stage, flag):
211 self.writePipelineEndif(stage, output)
213 self.writeAccessEndif(flag, output)
215 self.writeBlock(f'supportedAccessTypes{self.file_suffix}', output)
217 def pipelineOrdering(self):
218 for pipelineinfo in self.pipeline_order_info:
232 if not self.isSameConditionPipeline(depends, stage):
233 self.writePipelineIfdef(stage, output)
237 if not self.isSameConditionPipeline(depends, stage):
238 self.writePipelineEndif(stage, output)
241 self.writeBlock(f'pipelineOrders/{file_name}{self.file_suffix}', output)