• Home
  • Raw
  • Download

Lines Matching full:bitset

43     def case_name(self, bitset, name):  argument
44 …return bitset.encode.case_prefix + name.upper().replace('.', '_').replace('-', '_').replace('#', '…
46 # Return a list of all <map> entries for a leaf bitset, with the child
47 # bitset overriding the parent bitset's entries. Because we can't resolve
51 def decode_fields(self, bitset): argument
52 if bitset.get_root().decode is None:
56 if bitset.encode is not None:
57 for name, expr in bitset.encode.maps.items():
61 if bitset.extends is not None:
62 for field in self.decode_fields(self.isa.bitsets[bitset.extends]):
72 def resolve_simple_field(self, bitset, name): argument
74 for case in bitset.cases:
79 if bitset.extends is not None:
80 return self.resolve_simple_field(bitset.isa.bitsets[bitset.extends], name)
110 * dump them up front before the bitset tables
125 * generated expression functions, can be linked from bitset tables, so
140 /* forward-declarations of bitset decode functions */
141 %for name, bitset in isa.all_bitsets():
142 % for df in s.decode_fields(bitset):
143 static void decode_${bitset.get_c_name()}_gen_${bitset.gen_min}_${df.get_c_name()}(void *out, struc…
145 static const struct isa_field_decode decode_${bitset.get_c_name()}_gen_${bitset.gen_min}_fields[] =…
146 % for df in s.decode_fields(bitset):
149 .decode = decode_${bitset.get_c_name()}_gen_${bitset.gen_min}_${df.get_c_name()},
153 static void decode_${bitset.get_c_name()}_gen_${bitset.gen_min}(void *out, struct decode_scope *sco…
161 %for name, bitset in isa.all_bitsets():
162 static const struct isa_bitset bitset_${bitset.get_c_name()}_gen_${bitset.gen_min};
170 * bitset tables:
173 %for name, bitset in isa.all_bitsets():
174 % for case in bitset.cases:
178 static const struct isa_field_params ${case.get_c_name()}_gen_${bitset.gen_min}_${field.get_c_name(…
190 static const struct isa_case ${case.get_c_name()}_gen_${bitset.gen_min} = {
211 .params = &${case.get_c_name()}_gen_${bitset.gen_min}_${field.get_c_name()},
218 .val.bitset = { ${', '.join(isa.split_bits(field.val, 32))} },
228 static const struct isa_bitset bitset_${bitset.get_c_name()}_gen_${bitset.gen_min} = {
229 <% pattern = bitset.get_pattern() %>
230 % if bitset.extends is not None:
231 ….parent = &bitset_${isa.bitsets[bitset.extends].get_c_name()}_gen_${isa.bitsets[bitset.extends].…
233 .name = "${bitset.display_name}",
235 .min = ${bitset.get_gen_min()},
236 .max = ${bitset.get_gen_max()},
238 .match.bitset = { ${', '.join(isa.split_bits(pattern.match, 32))} },
239 .dontcare.bitset = { ${', '.join(isa.split_bits(pattern.dontcare, 32))} },
240 .mask.bitset = { ${', '.join(isa.split_bits(pattern.mask, 32))} },
241 .decode = decode_${bitset.get_c_name()}_gen_${bitset.gen_min},
242 .num_decode_fields = ARRAY_SIZE(decode_${bitset.get_c_name()}_gen_${bitset.gen_min}_fields),
243 .decode_fields = decode_${bitset.get_c_name()}_gen_${bitset.gen_min}_fields,
244 .num_cases = ${len(bitset.cases)},
246 % for case in bitset.cases:
247 &${case.get_c_name()}_gen_${bitset.gen_min},
254 * bitset hierarchy root tables (where decoding starts from):
272 %for name, bitset in isa.all_bitsets():
273 % for df in s.decode_fields(bitset):
274 <% field = s.resolve_simple_field(bitset, df.name) %>
275 static void decode_${bitset.get_c_name()}_gen_${bitset.gen_min}_${df.get_c_name()}(void *out, struc…
277 % if bitset.get_root().decode is not None and field is not None:
278 ${bitset.get_root().encode.type} src = *(${bitset.get_root().encode.type} *)out;
286 *(${bitset.get_root().encode.type} *)out = src;
291 static void decode_${bitset.get_c_name()}_gen_${bitset.gen_min}(void *out, struct decode_scope *sco…
293 % if bitset.get_root().decode is not None:
294 UNUSED ${bitset.get_root().encode.type} src;
295 % if bitset.get_root().encode.type.endswith('*') and name in isa.leafs and bitset.get_root().…
296 src = ${bitset.get_root().get_c_name()}_create(${s.case_name(bitset.get_root(), bitset.name)});
297 *(${bitset.get_root().encode.type} *)out = src;
332 #include <util/bitset.h>
337 BITSET_WORD bitset[BITMASK_WORDS];
348 instr->bitset[${i}] = *(start + ${i});
356 return mask.bitset[0];
358 return ((uint64_t)mask.bitset[1] << 32) | mask.bitset[0];
366 .bitset[0] = val & 0xffffffff,
368 .bitset[1] = (val >> 32) & 0xffffffff,