Lines Matching refs:field

44 #      ... encode field A ...
45 # ... encode field B ...
47 # // Third level - each display field can be potentially resolved
49 # // an if/else ladder for an individual display field
51 # ... encode field C ...
53 # ... encode field C ...
62 # Represents a concrete field, ie. a field can be overriden
63 # by an override, so the exact choice to encode a given field
66 def __init__(self, field, case):
67 self.field = field
73 if self.field.type in ['int', 'offset', 'branch']:
78 def __init__(self, field, case):
79 self.field = field
87 # Represents a field to be encoded:
98 # field is similar to resolving the display template
105 field = case.fields[self.name]
109 # field itself.
110 if field.get_c_typename() == 'TYPE_BITSET':
111 for param in field.params:
115 if isinstance(field, BitSetDerivedField):
116 expr = bitset.isa.expressions[field.expr]
118 elif not isinstance(field, BitSetAssertField):
119 yield FieldCase(field, case)
121 # the named field, we are done
148 # In the process of resolving a field, we might discover additional
151 # a) a derived field which maps to one or more other concrete fields
152 # b) a bitset field, which may be "parameterized".. for example a
153 # #multisrc field which refers back to SRC1_R/SRC2_R outside of
154 # the range of bits covered by the #multisrc field itself
171 for name, field in case.fields.items():
172 if field.get_c_typename() == 'TYPE_ASSERT':
173 yield AssertField(field, case)
205 if f.field.get_c_typename() == 'TYPE_BITSET':
206 for param in f.field.params:
234 # expressions used in a bitset (case or field or recursively parent bitsets)
239 for name, field in case.fields.items():
240 if isinstance(field, BitSetDerivedField):
241 yield self.isa.expressions[field.expr]
269 # In the special case of needing to access a field with bitset type
270 # for an expr, we need to encode the field so we end up with an
275 field = self.resolve_simple_field(bitset, name)
276 if isinstance(field, BitSetDerivedField):
277 expr = self.isa.expressions[field.expr]
284 if field and field.get_c_typename() == 'TYPE_BITSET':
285 extr = 'encode' + isa.roots[field.type].get_c_name() + '(s, ' + p + ', ' + extr + ')'
288 # A limited resolver for field type which doesn't properly account for
289 # overrides. In particular, if a field is defined differently in multiple
295 field = None
298 field = case.fields[name]
299 if field is not None:
300 return field
389 bitmask_t field, mask;
402 BITSET_ZERO(field.bitset);
405 return field;
410 field = uint64_t_to_bitmask(val);
411 BITSET_AND(field.bitset, field.bitset, mask.bitset);
412 BITSET_SHL(field.bitset, low);
414 return field;
441 <%def name="encode_params(leaf, field)">
443 %for param in field.params:
457 <% field = s.resolve_simple_field(leaf, fieldname) %>
458 % if field is not None and field.get_c_typename() == 'TYPE_BITSET':
459 { ${encode_params(leaf, field)}
598 <%def name="encode_params(leaf, field)">
600 %for param in field.params:
615 # per-expression-case track display-field-names that we have
617 # <override> case overrides a given field (for ex. #cat5-src3)
640 if f.field.name in seen_fields[expr]:
642 seen_fields[expr].append(f.field.name)
645 % if f.field.get_c_typename() == 'TYPE_BITSET':
646 { ${encode_params(leaf, f.field)}
647 bitmask_t tmp = encode${isa.roots[f.field.type].get_c_name()}(s, &bp, ${s.extractor(leaf, f.field.name)});
651 fld = ${s.extractor(leaf, f.field.name)};
653 const bitmask_t packed = pack_field(${f.field.low}, ${f.field.high}, fld, ${f.signed()}); /* ${f.field.name} */
673 const bitmask_t packed = pack_field(${f.field.low}, ${f.field.high}, ${f.field.val}, ${f.signed()});
677 {} /* in case no unconditional field to close out last '} else' */