Lines Matching refs:expr

68         self.expr  = None
69 if case.expr is not None:
70 self.expr = isa.expressions[case.expr]
75 self.expr = None
76 if case.expr is not None:
77 self.expr = isa.expressions[case.expr]
93 if case.expr is not None:
94 expr = bitset.isa.expressions[case.expr]
95 self.case.append_expr_fields(expr)
106 # fields that are referenced by the expr
108 expr = bitset.isa.expressions[field.expr]
109 self.case.append_expr_fields(expr)
114 if case.expr is None:
125 self.expr = None
126 if case.expr is not None:
127 self.expr = isa.expressions[case.expr]
151 def append_expr_fields(self, expr):
152 for fieldname in expr.fieldnames:
180 # if this is the last case (ie. case.expr is None)
182 if case.expr is None and bitset.extends is not None:
222 if case.expr:
223 yield self.isa.expressions[case.expr]
226 yield self.isa.expressions[field.expr]
255 # for an expr, we need to encode the field so we end up with an
262 expr = self.isa.expressions[field.expr]
263 return self.expr_name(bitset.get_root(), expr) + '(s, p, src)'
278 # to emit code which evaluates the case.expr
298 def expr_name(self, root, expr):
299 return root.get_c_name() + '_' + expr.get_c_name()
400 ## TODO before the expr evaluators, we should generate extract_FOO() for
423 <%def name="render_expr(leaf, expr)">
425 ${s.expr_name(leaf.get_root(), expr)}(struct encode_state *s, struct bitset_params *p, ${leaf.get_root().encode.type} src)
427 % for fieldname in expr.fieldnames:
430 % for fieldname in expr.fieldnames:
441 return ${expr.expr};
453 % for expr in s.bitset_used_exprs(leaf):
455 if expr in rendered_exprs:
457 rendered_exprs.append(expr)
459 ${render_expr(leaf, expr)}
525 <%def name="case_pre(root, expr)">
526 %if expr is not None:
527 if (${s.expr_name(root, expr)}(s, p, src)) {
533 <%def name="case_post(root, expr)">
534 %if expr is not None:
555 if case.expr is not None:
556 visited_exprs.append(case.expr)
558 ${case_pre(root, case.expr)}
564 expr = f.expr
565 if expr == case.expr:
567 expr = None
568 elif expr in visited_exprs:
573 ${case_pre(root, expr)}
584 ${case_post(root, expr)}
592 expr = f.expr
593 if expr == case.expr:
595 expr = None
596 elif expr in visited_exprs:
601 ${case_pre(root, expr)}
607 ${case_post(root, case.expr)}