Lines Matching refs:self

66     def __init__(self, field, case):
67 self.field = field
68 self.expr = None
70 self.expr = isa.expressions[case.expr]
72 def signed(self):
73 if self.field.type in ['int', 'offset', 'branch']:
78 def __init__(self, field, case):
79 self.field = field
80 self.expr = None
82 self.expr = isa.expressions[case.expr]
84 def signed(self):
89 def __init__(self, bitset, case, name):
90 self.bitset = bitset # leaf bitset
91 self.case = case
92 self.name = name
94 def fields(self, bitset=None):
96 bitset = self.bitset
103 self.case.append_expr_fields(expr)
104 if self.name in case.fields:
105 field = case.fields[self.name]
112 self.case.append_field(param[0])
117 self.case.append_expr_fields(expr)
125 yield from self.fields(isa.bitsets[bitset.extends])
130 def __init__(self, bitset, case):
131 self.bitset = bitset # leaf bitset
132 self.case = case
133 self.expr = None
135 self.expr = isa.expressions[case.expr]
136 self.fieldnames = re.findall(r"{([a-zA-Z0-9_]+)}", case.display)
137 self.append_forced(bitset)
141 def append_forced(self, bitset):
144 self.append_field(name)
146 self.append_forced(isa.bitsets[bitset.extends])
155 def append_field(self, fieldname):
156 if fieldname not in self.fieldnames:
157 self.fieldnames.append(fieldname)
159 def append_expr_fields(self, expr):
161 self.append_field(fieldname)
163 def display_fields(self):
164 for fieldname in self.fieldnames:
165 yield DisplayField(self.bitset, self, fieldname)
167 def assert_cases(self, bitset=None):
169 bitset = self.bitset
175 yield from self.assert_cases(isa.bitsets[bitset.extends])
179 def __init__(self, isa):
180 self.isa = isa
181 self.warned_missing_extractors = []
183 def bitset_cases(self, bitset, leaf_bitset=None):
192 yield from self.bitset_cases(parent_bitset, leaf_bitset)
198 def unique_param_names(self):
200 for root in self.encode_roots():
201 for leaf in self.encode_leafs(root):
212 def case_name(self, bitset, name):
215 def encode_roots(self):
216 for name, root in self.isa.roots.items():
221 def encode_leafs(self, root):
222 for name, leafs in self.isa.leafs.items():
228 def encode_leaf_groups(self, root):
229 for name, leafs in self.isa.leafs.items():
235 def bitset_used_exprs(self, bitset):
238 yield self.isa.expressions[case.expr]
241 yield self.isa.expressions[field.expr]
243 yield from self.bitset_used_exprs(self.isa.bitsets[bitset.extends])
245 def extractor_impl(self, bitset, name):
250 return self.extractor_impl(self.isa.bitsets[bitset.extends], name)
256 def extractor_fallback(self, bitset, name):
258 if extr_name not in self.warned_missing_extractors:
260 self.warned_missing_extractors.append(extr_name)
263 def extractor(self, bitset, name):
264 extr = self.extractor_impl(bitset, name)
267 return self.extractor_fallback(bitset, name)
273 def expr_extractor(self, bitset, name, p):
274 extr = self.extractor_impl(bitset, name)
275 field = self.resolve_simple_field(bitset, name)
277 expr = self.isa.expressions[field.expr]
278 return self.expr_name(bitset.get_root(), expr) + '(s, p, src)'
280 if name in self.unique_param_names():
283 extr = self.extractor_fallback(bitset, name)
294 def resolve_simple_field(self, bitset, name):
302 return self.resolve_simple_field(isa.bitsets[bitset.extends], name)
305 def encode_type(self, bitset):
310 return self.encode_type(isa.bitsets[bitset.extends])
313 def expr_name(self, root, expr):