Lines Matching full:field

17 TEST(RegisterFlagsTest, Field) {
20 RegisterFlags::Field f1("abc", 0);
22 // start == end means a 1 bit field.
29 // to make a 2 bit field.
30 RegisterFlags::Field f2("", 0, 1);
36 // If the field doesn't start at 0 we need to shift up/down
38 RegisterFlags::Field f3("", 2, 5);
51 static RegisterFlags::Field make_field(unsigned start, unsigned end) {
52 return RegisterFlags::Field("", start, end);
55 static RegisterFlags::Field make_field(unsigned bit) {
56 return RegisterFlags::Field("", bit);
76 // (start bit is higher) field first and that they do not overlap.
78 // [field 1][field 2]
80 // [field 1][..][field 2]
82 // [field 1][field 1][field 2]
84 // [field 1][30 bits free][field 2]
88 static void test_padding(const std::vector<RegisterFlags::Field> &fields,
89 const std::vector<RegisterFlags::Field> &expected) {
98 // * There may be gaps between each field.
102 std::vector<RegisterFlags::Field>{make_field(16, 31), make_field(0, 15)};
112 // Padding before first field, single bit.
117 // Padding after last field, single bit.
123 // [31-28][field 27-24][23-22][field 21-20][19-12][field 11-8][7-0]
161 RegisterFlags name_wider("", 4, {RegisterFlags::Field("aardvark", 0, 31)});
167 RegisterFlags pos_wider("", 4, {RegisterFlags::Field("?", 0, 31)});
182 {RegisterFlags::Field("cat", 28, 31),
183 RegisterFlags::Field("pigeon", 20, 23),
184 RegisterFlags::Field("wolf", 12),
185 RegisterFlags::Field("x", 0, 4)});
193 RegisterFlags exact_max_single_col("", 4, {RegisterFlags::Field("?", 0, 31)});
200 {RegisterFlags::Field("?", 16, 31), RegisterFlags::Field("#", 0, 15)});
208 RegisterFlags zero_max_single_col("", 4, {RegisterFlags::Field("?", 0, 31)});
217 {RegisterFlags::Field("?", 16, 31), RegisterFlags::Field("#", 0, 15)});
228 {RegisterFlags::Field("?", 0, 31)});
235 {RegisterFlags::Field("?", 16, 31), RegisterFlags::Field("#", 0, 15)});
246 {RegisterFlags::Field("A", 24, 31), RegisterFlags::Field("B", 16, 23),
247 RegisterFlags::Field("C", 8, 15),
248 RegisterFlags::Field("really long name", 0, 7)});
264 ASSERT_EQ(RegisterFlags("", 8, {RegisterFlags::Field{"A", 0}}).DumpEnums(80),
268 ASSERT_EQ(RegisterFlags("", 8, {RegisterFlags::Field{"A", 0, 0, &basic_enum}})
273 ASSERT_EQ(RegisterFlags("", 8, {RegisterFlags::Field{"A", 0, 0, &basic_enum}})
284 ASSERT_EQ(RegisterFlags("", 8, {RegisterFlags::Field{"A", 0, 2, &more_enum}})
297 RegisterFlags("", 8, {RegisterFlags::Field{"A", 0, 1, &another_enum}})
306 {RegisterFlags::Field{"AReallyLongFieldName", 0, 1,
314 // is set by the size of the fields name (as opposed to some max of all field
320 {RegisterFlags::Field{"Ab", 1, 1, &enum_1},
321 RegisterFlags::Field{"Cdef", 0, 0, &enum_2}})
332 RegisterFlags::Field{"A", 4, 4},
333 RegisterFlags::Field{"B", 3, 3, &enum_1},
334 RegisterFlags::Field{"C", 2, 2},
335 RegisterFlags::Field{"D", 1, 1, &enum_1},
336 RegisterFlags::Field{"E", 0, 0},
352 RegisterFlags("Foo", 4, {RegisterFlags::Field("", 0, 0)}).ToXML(strm);
357 RegisterFlags("Foo", 4, {RegisterFlags::Field("abc", 0, 0)}).ToXML(strm);
359 " <field name=\"abc\" start=\"0\" end=\"0\"/>\n"
367 {RegisterFlags::Field("f1", 25, 32), RegisterFlags::Field("f2", 10, 24)})
371 " <field name=\"f1\" start=\"25\" end=\"32\"/>\n"
372 " <field name=\"f2\" start=\"10\" end=\"24\"/>\n"
377 // Should replace any XML unsafe characters in field names.
379 {RegisterFlags::Field("A<", 4), RegisterFlags::Field("B>", 3),
380 RegisterFlags::Field("C'", 2), RegisterFlags::Field("D\"", 1),
381 RegisterFlags::Field("E&", 0)})
385 " <field name=\"A&lt;\" start=\"4\" end=\"4\"/>\n"
386 " <field name=\"B&gt;\" start=\"3\" end=\"3\"/>\n"
387 " <field name=\"C&apos;\" start=\"2\" end=\"2\"/>\n"
388 " <field name=\"D&quot;\" start=\"1\" end=\"1\"/>\n"
389 " <field name=\"E&amp;\" start=\"0\" end=\"0\"/>\n"
396 {RegisterFlags::Field("NoEnumerators", 4),
397 RegisterFlags::Field("OneEnumerator", 3, 3, &enum_single)})
401 " <field name=\"NoEnumerators\" start=\"4\" end=\"4\"/>\n"
402 " <field name=\"OneEnumerator\" start=\"3\" end=\"3\" "
471 RegisterFlags::Field("f1", 31, 31, &enum_a),
472 RegisterFlags::Field("f2", 30, 30, &enum_a),
473 RegisterFlags::Field("f3", 29, 29, &enum_b),
474 RegisterFlags::Field("f4", 27, 28, &enum_c),