@@ -16,7 +16,7 @@ using namespace lldb;
16
16
TEST (RegisterFlagsTest, Field) {
17
17
// We assume that start <= end is always true, so that is not tested here.
18
18
19
- RegisterFlags::Field f1 (" abc" , 0 , 0 );
19
+ RegisterFlags::Field f1 (" abc" , 0 );
20
20
ASSERT_EQ (f1.GetName (), " abc" );
21
21
// start == end means a 1 bit field.
22
22
ASSERT_EQ (f1.GetSizeInBits (), (unsigned )1 );
@@ -51,11 +51,15 @@ static RegisterFlags::Field make_field(unsigned start, unsigned end) {
51
51
return RegisterFlags::Field (" " , start, end);
52
52
}
53
53
54
+ static RegisterFlags::Field make_field (unsigned bit) {
55
+ return RegisterFlags::Field (" " , bit);
56
+ }
57
+
54
58
TEST (RegisterFlagsTest, FieldOverlaps) {
55
59
// Single bit fields
56
- ASSERT_FALSE (make_field (0 , 0 ).Overlaps (make_field (1 , 1 )));
57
- ASSERT_TRUE (make_field (1 , 1 ).Overlaps (make_field (1 , 1 )));
58
- ASSERT_FALSE (make_field (1 , 1 ).Overlaps (make_field (3 , 3 )));
60
+ ASSERT_FALSE (make_field (0 , 0 ).Overlaps (make_field (1 )));
61
+ ASSERT_TRUE (make_field (1 , 1 ).Overlaps (make_field (1 )));
62
+ ASSERT_FALSE (make_field (1 , 1 ).Overlaps (make_field (3 )));
59
63
60
64
ASSERT_TRUE (make_field (0 , 1 ).Overlaps (make_field (1 , 2 )));
61
65
ASSERT_TRUE (make_field (1 , 2 ).Overlaps (make_field (0 , 1 )));
@@ -71,13 +75,13 @@ TEST(RegisterFlagsTest, PaddingDistance) {
71
75
// (start bit is higher) field first and that they do not overlap.
72
76
73
77
// [field 1][field 2]
74
- ASSERT_EQ (make_field (1 , 1 ).PaddingDistance (make_field (0 , 0 )), 0ULL );
78
+ ASSERT_EQ (make_field (1 , 1 ).PaddingDistance (make_field (0 )), 0ULL );
75
79
// [field 1][..][field 2]
76
- ASSERT_EQ (make_field (2 , 2 ).PaddingDistance (make_field (0 , 0 )), 1ULL );
80
+ ASSERT_EQ (make_field (2 , 2 ).PaddingDistance (make_field (0 )), 1ULL );
77
81
// [field 1][field 1][field 2]
78
- ASSERT_EQ (make_field (1 , 2 ).PaddingDistance (make_field (0 , 0 )), 0ULL );
82
+ ASSERT_EQ (make_field (1 , 2 ).PaddingDistance (make_field (0 )), 0ULL );
79
83
// [field 1][30 bits free][field 2]
80
- ASSERT_EQ (make_field (31 , 31 ).PaddingDistance (make_field (0 , 0 )), 30ULL );
84
+ ASSERT_EQ (make_field (31 , 31 ).PaddingDistance (make_field (0 )), 30ULL );
81
85
}
82
86
83
87
static void test_padding (const std::vector<RegisterFlags::Field> &fields,
@@ -99,18 +103,18 @@ TEST(RegisterFlagsTest, RegisterFlagsPadding) {
99
103
100
104
// Needs padding in between the fields, single bit.
101
105
test_padding ({make_field (17 , 31 ), make_field (0 , 15 )},
102
- {make_field (17 , 31 ), make_field (16 , 16 ), make_field (0 , 15 )});
106
+ {make_field (17 , 31 ), make_field (16 ), make_field (0 , 15 )});
103
107
// Multiple bits of padding.
104
108
test_padding ({make_field (17 , 31 ), make_field (0 , 14 )},
105
109
{make_field (17 , 31 ), make_field (15 , 16 ), make_field (0 , 14 )});
106
110
107
111
// Padding before first field, single bit.
108
- test_padding ({make_field (0 , 30 )}, {make_field (31 , 31 ), make_field (0 , 30 )});
112
+ test_padding ({make_field (0 , 30 )}, {make_field (31 ), make_field (0 , 30 )});
109
113
// Multiple bits.
110
114
test_padding ({make_field (0 , 15 )}, {make_field (16 , 31 ), make_field (0 , 15 )});
111
115
112
116
// Padding after last field, single bit.
113
- test_padding ({make_field (1 , 31 )}, {make_field (1 , 31 ), make_field (0 , 0 )});
117
+ test_padding ({make_field (1 , 31 )}, {make_field (1 , 31 ), make_field (0 )});
114
118
// Multiple bits.
115
119
test_padding ({make_field (2 , 31 )}, {make_field (2 , 31 ), make_field (0 , 1 )});
116
120
@@ -132,9 +136,8 @@ TEST(RegisterFieldsTest, ReverseFieldOrder) {
132
136
ASSERT_EQ (0x56781234ULL , (unsigned long long )rf2.ReverseFieldOrder (0x12345678 ));
133
137
134
138
// Many small fields.
135
- RegisterFlags rf3 (" " , 4 ,
136
- {make_field (31 , 31 ), make_field (30 , 30 ), make_field (29 , 29 ),
137
- make_field (28 , 28 )});
139
+ RegisterFlags rf3 (
140
+ " " , 4 , {make_field (31 ), make_field (30 ), make_field (29 ), make_field (28 )});
138
141
ASSERT_EQ (0x00000005ULL , rf3.ReverseFieldOrder (0xA0000000 ));
139
142
}
140
143
@@ -167,7 +170,7 @@ TEST(RegisterFlagsTest, AsTable) {
167
170
pos_wider.AsTable (100 ));
168
171
169
172
// Single bit fields don't need to show start and end, just one of them.
170
- RegisterFlags single_bit (" " , 4 , {make_field (31 , 31 )});
173
+ RegisterFlags single_bit (" " , 4 , {make_field (31 )});
171
174
ASSERT_EQ (" | 31 | 30-0 |\n "
172
175
" |----|------|\n "
173
176
" | | |" ,
@@ -177,7 +180,7 @@ TEST(RegisterFlagsTest, AsTable) {
177
180
RegisterFlags many_fields (" " , 4 ,
178
181
{RegisterFlags::Field (" cat" , 28 , 31 ),
179
182
RegisterFlags::Field (" pigeon" , 20 , 23 ),
180
- RegisterFlags::Field (" wolf" , 12 , 12 ),
183
+ RegisterFlags::Field (" wolf" , 12 ),
181
184
RegisterFlags::Field (" x" , 0 , 4 )});
182
185
ASSERT_EQ (" | 31-28 | 27-24 | 23-20 | 19-13 | 12 | 11-5 | 4-0 |\n "
183
186
" |-------|-------|--------|-------|------|------|-----|\n "
0 commit comments