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 def __init__(self, field, case):
74 self.field = field
79 # Represents a field to be encoded:
90 # field is similar to resolving the display template
97 field = case.fields[self.name]
101 # field itself.
102 if field.get_c_typename() == 'TYPE_BITSET':
103 for param in field.params:
107 if isinstance(field, BitSetDerivedField):
108 expr = bitset.isa.expressions[field.expr]
110 elif not isinstance(field, BitSetAssertField):
111 yield FieldCase(field, case)
113 # the named field, we are done
140 # In the process of resolving a field, we might discover additional
143 # a) a derived field which maps to one or more other concrete fields
144 # b) a bitset field, which may be "parameterized".. for example a
145 # #multisrc field which refers back to SRC1_R/SRC2_R outside of
146 # the range of bits covered by the #multisrc field itself
163 for name, field in case.fields.items():
164 if field.get_c_typename() == 'TYPE_ASSERT':
165 yield AssertField(field, case)
197 if f.field.get_c_typename() == 'TYPE_BITSET':
198 for param in f.field.params:
219 # expressions used in a bitset (case or field or recursively parent bitsets)
224 for name, field in case.fields.items():
225 if isinstance(field, BitSetDerivedField):
226 yield self.isa.expressions[field.expr]
254 # In the special case of needing to access a field with bitset type
255 # for an expr, we need to encode the field so we end up with an
260 field = self.resolve_simple_field(bitset, name)
261 if isinstance(field, BitSetDerivedField):
262 expr = self.isa.expressions[field.expr]
269 if field and field.get_c_typename() == 'TYPE_BITSET':
270 extr = 'encode' + isa.roots[field.type].get_c_name() + '(s, ' + p + ', ' + extr + ')'
273 # A limited resolver for field type which doesn't properly account for
274 # overrides. In particular, if a field is defined differently in multiple
280 field = None
283 field = case.fields[name]
284 if field is not None:
285 return field
374 bitmask_t field, mask;
376 BITSET_ZERO(field.bitset);
379 return field;
384 field = uint64_t_to_bitmask(val);
385 BITSET_AND(field.bitset, field.bitset, mask.bitset);
386 BITSET_SHL(field.bitset, low);
388 return field;
415 <%def name="encode_params(leaf, field)">
417 %for param in field.params:
431 <% field = s.resolve_simple_field(leaf, fieldname) %>
432 % if field is not None and field.get_c_typename() == 'TYPE_BITSET':
433 { ${encode_params(leaf, field)}
541 <%def name="encode_params(leaf, field)">
543 %for param in field.params:
574 % if f.field.get_c_typename() == 'TYPE_BITSET':
575 { ${encode_params(leaf, f.field)}
576 bitmask_t tmp = encode${isa.roots[f.field.type].get_c_name()}(s, &bp, ${s.extractor(leaf, f.field.name)});
580 fld = ${s.extractor(leaf, f.field.name)};
582 const bitmask_t packed = pack_field(${f.field.low}, ${f.field.high}, fld); /* ${f.field.name} */
602 const bitmask_t packed = pack_field(${f.field.low}, ${f.field.high}, ${f.field.val});
606 {} /* in case no unconditional field to close out last '} else' */