blob: 238291f44df3ad1d602b690f6e024a545d416ba4 [file] [log] [blame]
Ian Rogersb033c752011-07-20 12:22:35 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
Brian Carlstrom578bbdc2011-07-21 14:07:47 -07003#include "globals.h"
4#include "managed_register_arm.h"
Ian Rogersb033c752011-07-20 12:22:35 -07005#include "gtest/gtest.h"
6
7namespace art {
8
9TEST(ManagedRegister, NoRegister) {
10 ManagedRegister reg = ManagedRegister::NoRegister();
11 EXPECT_TRUE(reg.IsNoRegister());
12 EXPECT_TRUE(!reg.Overlaps(reg));
13}
14
15TEST(ManagedRegister, CoreRegister) {
16 ManagedRegister reg = ManagedRegister::FromCoreRegister(R0);
17 EXPECT_TRUE(!reg.IsNoRegister());
18 EXPECT_TRUE(reg.IsCoreRegister());
19 EXPECT_TRUE(!reg.IsSRegister());
20 EXPECT_TRUE(!reg.IsDRegister());
21 EXPECT_TRUE(!reg.IsRegisterPair());
22 EXPECT_EQ(R0, reg.AsCoreRegister());
23
24 reg = ManagedRegister::FromCoreRegister(R1);
25 EXPECT_TRUE(!reg.IsNoRegister());
26 EXPECT_TRUE(reg.IsCoreRegister());
27 EXPECT_TRUE(!reg.IsSRegister());
28 EXPECT_TRUE(!reg.IsDRegister());
29 EXPECT_TRUE(!reg.IsOverlappingDRegister());
30 EXPECT_TRUE(!reg.IsRegisterPair());
31 EXPECT_EQ(R1, reg.AsCoreRegister());
32
33 reg = ManagedRegister::FromCoreRegister(R8);
34 EXPECT_TRUE(!reg.IsNoRegister());
35 EXPECT_TRUE(reg.IsCoreRegister());
36 EXPECT_TRUE(!reg.IsSRegister());
37 EXPECT_TRUE(!reg.IsDRegister());
38 EXPECT_TRUE(!reg.IsOverlappingDRegister());
39 EXPECT_TRUE(!reg.IsRegisterPair());
40 EXPECT_EQ(R8, reg.AsCoreRegister());
41
42 reg = ManagedRegister::FromCoreRegister(R15);
43 EXPECT_TRUE(!reg.IsNoRegister());
44 EXPECT_TRUE(reg.IsCoreRegister());
45 EXPECT_TRUE(!reg.IsSRegister());
46 EXPECT_TRUE(!reg.IsDRegister());
47 EXPECT_TRUE(!reg.IsOverlappingDRegister());
48 EXPECT_TRUE(!reg.IsRegisterPair());
49 EXPECT_EQ(R15, reg.AsCoreRegister());
50}
51
52
53TEST(ManagedRegister, SRegister) {
54 ManagedRegister reg = ManagedRegister::FromSRegister(S0);
55 EXPECT_TRUE(!reg.IsNoRegister());
56 EXPECT_TRUE(!reg.IsCoreRegister());
57 EXPECT_TRUE(reg.IsSRegister());
58 EXPECT_TRUE(!reg.IsDRegister());
59 EXPECT_TRUE(!reg.IsOverlappingDRegister());
60 EXPECT_TRUE(!reg.IsRegisterPair());
61 EXPECT_EQ(S0, reg.AsSRegister());
62
63 reg = ManagedRegister::FromSRegister(S1);
64 EXPECT_TRUE(!reg.IsNoRegister());
65 EXPECT_TRUE(!reg.IsCoreRegister());
66 EXPECT_TRUE(reg.IsSRegister());
67 EXPECT_TRUE(!reg.IsDRegister());
68 EXPECT_TRUE(!reg.IsOverlappingDRegister());
69 EXPECT_TRUE(!reg.IsRegisterPair());
70 EXPECT_EQ(S1, reg.AsSRegister());
71
72 reg = ManagedRegister::FromSRegister(S3);
73 EXPECT_TRUE(!reg.IsNoRegister());
74 EXPECT_TRUE(!reg.IsCoreRegister());
75 EXPECT_TRUE(reg.IsSRegister());
76 EXPECT_TRUE(!reg.IsDRegister());
77 EXPECT_TRUE(!reg.IsOverlappingDRegister());
78 EXPECT_TRUE(!reg.IsRegisterPair());
79 EXPECT_EQ(S3, reg.AsSRegister());
80
81 reg = ManagedRegister::FromSRegister(S15);
82 EXPECT_TRUE(!reg.IsNoRegister());
83 EXPECT_TRUE(!reg.IsCoreRegister());
84 EXPECT_TRUE(reg.IsSRegister());
85 EXPECT_TRUE(!reg.IsDRegister());
86 EXPECT_TRUE(!reg.IsOverlappingDRegister());
87 EXPECT_TRUE(!reg.IsRegisterPair());
88 EXPECT_EQ(S15, reg.AsSRegister());
89
90 reg = ManagedRegister::FromSRegister(S30);
91 EXPECT_TRUE(!reg.IsNoRegister());
92 EXPECT_TRUE(!reg.IsCoreRegister());
93 EXPECT_TRUE(reg.IsSRegister());
94 EXPECT_TRUE(!reg.IsDRegister());
95 EXPECT_TRUE(!reg.IsOverlappingDRegister());
96 EXPECT_TRUE(!reg.IsRegisterPair());
97 EXPECT_EQ(S30, reg.AsSRegister());
98
99 reg = ManagedRegister::FromSRegister(S31);
100 EXPECT_TRUE(!reg.IsNoRegister());
101 EXPECT_TRUE(!reg.IsCoreRegister());
102 EXPECT_TRUE(reg.IsSRegister());
103 EXPECT_TRUE(!reg.IsDRegister());
104 EXPECT_TRUE(!reg.IsOverlappingDRegister());
105 EXPECT_TRUE(!reg.IsRegisterPair());
106 EXPECT_EQ(S31, reg.AsSRegister());
107}
108
109
110TEST(ManagedRegister, DRegister) {
111 ManagedRegister reg = ManagedRegister::FromDRegister(D0);
112 EXPECT_TRUE(!reg.IsNoRegister());
113 EXPECT_TRUE(!reg.IsCoreRegister());
114 EXPECT_TRUE(!reg.IsSRegister());
115 EXPECT_TRUE(reg.IsDRegister());
116 EXPECT_TRUE(reg.IsOverlappingDRegister());
117 EXPECT_TRUE(!reg.IsRegisterPair());
118 EXPECT_EQ(D0, reg.AsDRegister());
119 EXPECT_EQ(S0, reg.AsOverlappingDRegisterLow());
120 EXPECT_EQ(S1, reg.AsOverlappingDRegisterHigh());
121 EXPECT_TRUE(reg.Equals(ManagedRegister::FromSRegisterPair(S0)));
122
123 reg = ManagedRegister::FromDRegister(D1);
124 EXPECT_TRUE(!reg.IsNoRegister());
125 EXPECT_TRUE(!reg.IsCoreRegister());
126 EXPECT_TRUE(!reg.IsSRegister());
127 EXPECT_TRUE(reg.IsDRegister());
128 EXPECT_TRUE(reg.IsOverlappingDRegister());
129 EXPECT_TRUE(!reg.IsRegisterPair());
130 EXPECT_EQ(D1, reg.AsDRegister());
131 EXPECT_EQ(S2, reg.AsOverlappingDRegisterLow());
132 EXPECT_EQ(S3, reg.AsOverlappingDRegisterHigh());
133 EXPECT_TRUE(reg.Equals(ManagedRegister::FromSRegisterPair(S2)));
134
135 reg = ManagedRegister::FromDRegister(D6);
136 EXPECT_TRUE(!reg.IsNoRegister());
137 EXPECT_TRUE(!reg.IsCoreRegister());
138 EXPECT_TRUE(!reg.IsSRegister());
139 EXPECT_TRUE(reg.IsDRegister());
140 EXPECT_TRUE(reg.IsOverlappingDRegister());
141 EXPECT_TRUE(!reg.IsRegisterPair());
142 EXPECT_EQ(D6, reg.AsDRegister());
143 EXPECT_EQ(S12, reg.AsOverlappingDRegisterLow());
144 EXPECT_EQ(S13, reg.AsOverlappingDRegisterHigh());
145 EXPECT_TRUE(reg.Equals(ManagedRegister::FromSRegisterPair(S12)));
146
147 reg = ManagedRegister::FromDRegister(D14);
148 EXPECT_TRUE(!reg.IsNoRegister());
149 EXPECT_TRUE(!reg.IsCoreRegister());
150 EXPECT_TRUE(!reg.IsSRegister());
151 EXPECT_TRUE(reg.IsDRegister());
152 EXPECT_TRUE(reg.IsOverlappingDRegister());
153 EXPECT_TRUE(!reg.IsRegisterPair());
154 EXPECT_EQ(D14, reg.AsDRegister());
155 EXPECT_EQ(S28, reg.AsOverlappingDRegisterLow());
156 EXPECT_EQ(S29, reg.AsOverlappingDRegisterHigh());
157 EXPECT_TRUE(reg.Equals(ManagedRegister::FromSRegisterPair(S28)));
158
159 reg = ManagedRegister::FromDRegister(D15);
160 EXPECT_TRUE(!reg.IsNoRegister());
161 EXPECT_TRUE(!reg.IsCoreRegister());
162 EXPECT_TRUE(!reg.IsSRegister());
163 EXPECT_TRUE(reg.IsDRegister());
164 EXPECT_TRUE(reg.IsOverlappingDRegister());
165 EXPECT_TRUE(!reg.IsRegisterPair());
166 EXPECT_EQ(D15, reg.AsDRegister());
167 EXPECT_EQ(S30, reg.AsOverlappingDRegisterLow());
168 EXPECT_EQ(S31, reg.AsOverlappingDRegisterHigh());
169 EXPECT_TRUE(reg.Equals(ManagedRegister::FromSRegisterPair(S30)));
170
171#ifdef VFPv3_D32
172 reg = ManagedRegister::FromDRegister(D16);
173 EXPECT_TRUE(!reg.IsNoRegister());
174 EXPECT_TRUE(!reg.IsCoreRegister());
175 EXPECT_TRUE(!reg.IsSRegister());
176 EXPECT_TRUE(reg.IsDRegister());
177 EXPECT_TRUE(!reg.IsOverlappingDRegister());
178 EXPECT_TRUE(!reg.IsRegisterPair());
179 EXPECT_EQ(D16, reg.AsDRegister());
180
181 reg = ManagedRegister::FromDRegister(D18);
182 EXPECT_TRUE(!reg.IsNoRegister());
183 EXPECT_TRUE(!reg.IsCoreRegister());
184 EXPECT_TRUE(!reg.IsSRegister());
185 EXPECT_TRUE(reg.IsDRegister());
186 EXPECT_TRUE(!reg.IsOverlappingDRegister());
187 EXPECT_TRUE(!reg.IsRegisterPair());
188 EXPECT_EQ(D18, reg.AsDRegister());
189
190 reg = ManagedRegister::FromDRegister(D30);
191 EXPECT_TRUE(!reg.IsNoRegister());
192 EXPECT_TRUE(!reg.IsCoreRegister());
193 EXPECT_TRUE(!reg.IsSRegister());
194 EXPECT_TRUE(reg.IsDRegister());
195 EXPECT_TRUE(!reg.IsOverlappingDRegister());
196 EXPECT_TRUE(!reg.IsRegisterPair());
197 EXPECT_EQ(D30, reg.AsDRegister());
198
199 reg = ManagedRegister::FromDRegister(D31);
200 EXPECT_TRUE(!reg.IsNoRegister());
201 EXPECT_TRUE(!reg.IsCoreRegister());
202 EXPECT_TRUE(!reg.IsSRegister());
203 EXPECT_TRUE(reg.IsDRegister());
204 EXPECT_TRUE(!reg.IsOverlappingDRegister());
205 EXPECT_TRUE(!reg.IsRegisterPair());
206 EXPECT_EQ(D31, reg.AsDRegister());
207#endif // VFPv3_D32
208}
209
210
211TEST(ManagedRegister, Pair) {
212 ManagedRegister reg = ManagedRegister::FromRegisterPair(R0_R1);
213 EXPECT_TRUE(!reg.IsNoRegister());
214 EXPECT_TRUE(!reg.IsCoreRegister());
215 EXPECT_TRUE(!reg.IsSRegister());
216 EXPECT_TRUE(!reg.IsDRegister());
217 EXPECT_TRUE(!reg.IsOverlappingDRegister());
218 EXPECT_TRUE(reg.IsRegisterPair());
219 EXPECT_EQ(R0_R1, reg.AsRegisterPair());
220 EXPECT_EQ(R0, reg.AsRegisterPairLow());
221 EXPECT_EQ(R1, reg.AsRegisterPairHigh());
222 EXPECT_TRUE(reg.Equals(ManagedRegister::FromCoreRegisterPair(R0)));
223
224 reg = ManagedRegister::FromRegisterPair(R2_R3);
225 EXPECT_TRUE(!reg.IsNoRegister());
226 EXPECT_TRUE(!reg.IsCoreRegister());
227 EXPECT_TRUE(!reg.IsSRegister());
228 EXPECT_TRUE(!reg.IsDRegister());
229 EXPECT_TRUE(!reg.IsOverlappingDRegister());
230 EXPECT_TRUE(reg.IsRegisterPair());
231 EXPECT_EQ(R2_R3, reg.AsRegisterPair());
232 EXPECT_EQ(R2, reg.AsRegisterPairLow());
233 EXPECT_EQ(R3, reg.AsRegisterPairHigh());
234 EXPECT_TRUE(reg.Equals(ManagedRegister::FromCoreRegisterPair(R2)));
235
236 reg = ManagedRegister::FromRegisterPair(R4_R5);
237 EXPECT_TRUE(!reg.IsNoRegister());
238 EXPECT_TRUE(!reg.IsCoreRegister());
239 EXPECT_TRUE(!reg.IsSRegister());
240 EXPECT_TRUE(!reg.IsDRegister());
241 EXPECT_TRUE(!reg.IsOverlappingDRegister());
242 EXPECT_TRUE(reg.IsRegisterPair());
243 EXPECT_EQ(R4_R5, reg.AsRegisterPair());
244 EXPECT_EQ(R4, reg.AsRegisterPairLow());
245 EXPECT_EQ(R5, reg.AsRegisterPairHigh());
246 EXPECT_TRUE(reg.Equals(ManagedRegister::FromCoreRegisterPair(R4)));
247
248 reg = ManagedRegister::FromRegisterPair(R6_R7);
249 EXPECT_TRUE(!reg.IsNoRegister());
250 EXPECT_TRUE(!reg.IsCoreRegister());
251 EXPECT_TRUE(!reg.IsSRegister());
252 EXPECT_TRUE(!reg.IsDRegister());
253 EXPECT_TRUE(!reg.IsOverlappingDRegister());
254 EXPECT_TRUE(reg.IsRegisterPair());
255 EXPECT_EQ(R6_R7, reg.AsRegisterPair());
256 EXPECT_EQ(R6, reg.AsRegisterPairLow());
257 EXPECT_EQ(R7, reg.AsRegisterPairHigh());
258 EXPECT_TRUE(reg.Equals(ManagedRegister::FromCoreRegisterPair(R6)));
259}
260
261
262TEST(ManagedRegister, Equals) {
263 ManagedRegister no_reg = ManagedRegister::NoRegister();
264 EXPECT_TRUE(no_reg.Equals(ManagedRegister::NoRegister()));
265 EXPECT_TRUE(!no_reg.Equals(ManagedRegister::FromCoreRegister(R0)));
266 EXPECT_TRUE(!no_reg.Equals(ManagedRegister::FromCoreRegister(R1)));
267 EXPECT_TRUE(!no_reg.Equals(ManagedRegister::FromSRegister(S0)));
268 EXPECT_TRUE(!no_reg.Equals(ManagedRegister::FromDRegister(D0)));
269 EXPECT_TRUE(!no_reg.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
270
271 ManagedRegister reg_R0 = ManagedRegister::FromCoreRegister(R0);
272 EXPECT_TRUE(!reg_R0.Equals(ManagedRegister::NoRegister()));
273 EXPECT_TRUE(reg_R0.Equals(ManagedRegister::FromCoreRegister(R0)));
274 EXPECT_TRUE(!reg_R0.Equals(ManagedRegister::FromCoreRegister(R1)));
275 EXPECT_TRUE(!reg_R0.Equals(ManagedRegister::FromSRegister(S0)));
276 EXPECT_TRUE(!reg_R0.Equals(ManagedRegister::FromDRegister(D0)));
277 EXPECT_TRUE(!reg_R0.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
278
279 ManagedRegister reg_R1 = ManagedRegister::FromCoreRegister(R1);
280 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::NoRegister()));
281 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::FromCoreRegister(R0)));
282 EXPECT_TRUE(reg_R1.Equals(ManagedRegister::FromCoreRegister(R1)));
283 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::FromSRegister(S0)));
284 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::FromDRegister(D0)));
285 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::FromSRegister(S1)));
286 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::FromDRegister(D1)));
287 EXPECT_TRUE(!reg_R1.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
288
289 ManagedRegister reg_R8 = ManagedRegister::FromCoreRegister(R8);
290 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::NoRegister()));
291 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::FromCoreRegister(R0)));
292 EXPECT_TRUE(reg_R8.Equals(ManagedRegister::FromCoreRegister(R8)));
293 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::FromSRegister(S0)));
294 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::FromDRegister(D0)));
295 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::FromSRegister(S1)));
296 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::FromDRegister(D1)));
297 EXPECT_TRUE(!reg_R8.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
298
299 ManagedRegister reg_S0 = ManagedRegister::FromSRegister(S0);
300 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::NoRegister()));
301 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::FromCoreRegister(R0)));
302 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::FromCoreRegister(R1)));
303 EXPECT_TRUE(reg_S0.Equals(ManagedRegister::FromSRegister(S0)));
304 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::FromSRegister(S1)));
305 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::FromDRegister(D0)));
306 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::FromDRegister(D1)));
307 EXPECT_TRUE(!reg_S0.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
308
309 ManagedRegister reg_S1 = ManagedRegister::FromSRegister(S1);
310 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::NoRegister()));
311 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::FromCoreRegister(R0)));
312 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::FromCoreRegister(R1)));
313 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::FromSRegister(S0)));
314 EXPECT_TRUE(reg_S1.Equals(ManagedRegister::FromSRegister(S1)));
315 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::FromDRegister(D0)));
316 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::FromDRegister(D1)));
317 EXPECT_TRUE(!reg_S1.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
318
319 ManagedRegister reg_S31 = ManagedRegister::FromSRegister(S31);
320 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::NoRegister()));
321 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::FromCoreRegister(R0)));
322 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::FromCoreRegister(R1)));
323 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::FromSRegister(S0)));
324 EXPECT_TRUE(reg_S31.Equals(ManagedRegister::FromSRegister(S31)));
325 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::FromDRegister(D0)));
326 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::FromDRegister(D1)));
327 EXPECT_TRUE(!reg_S31.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
328
329 ManagedRegister reg_D0 = ManagedRegister::FromDRegister(D0);
330 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::NoRegister()));
331 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::FromCoreRegister(R0)));
332 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::FromCoreRegister(R1)));
333 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::FromSRegister(S0)));
334 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::FromSRegister(S31)));
335 EXPECT_TRUE(reg_D0.Equals(ManagedRegister::FromDRegister(D0)));
336 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::FromDRegister(D1)));
337 EXPECT_TRUE(!reg_D0.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
338
339 ManagedRegister reg_D15 = ManagedRegister::FromDRegister(D15);
340 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::NoRegister()));
341 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromCoreRegister(R0)));
342 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromCoreRegister(R1)));
343 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromSRegister(S0)));
344 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromSRegister(S31)));
345 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromDRegister(D0)));
346 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromDRegister(D1)));
347 EXPECT_TRUE(reg_D15.Equals(ManagedRegister::FromDRegister(D15)));
348 EXPECT_TRUE(!reg_D15.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
349
350#ifdef VFPv3_D32
351 ManagedRegister reg_D16 = ManagedRegister::FromDRegister(D16);
352 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::NoRegister()));
353 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromCoreRegister(R0)));
354 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromCoreRegister(R1)));
355 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromSRegister(S0)));
356 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromSRegister(S31)));
357 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromDRegister(D0)));
358 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromDRegister(D1)));
359 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromDRegister(D15)));
360 EXPECT_TRUE(reg_D16.Equals(ManagedRegister::FromDRegister(D16)));
361 EXPECT_TRUE(!reg_D16.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
362
363 ManagedRegister reg_D30 = ManagedRegister::FromDRegister(D30);
364 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::NoRegister()));
365 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromCoreRegister(R0)));
366 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromCoreRegister(R1)));
367 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromSRegister(S0)));
368 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromSRegister(S31)));
369 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromDRegister(D0)));
370 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromDRegister(D1)));
371 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromDRegister(D15)));
372 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromDRegister(D16)));
373 EXPECT_TRUE(reg_D30.Equals(ManagedRegister::FromDRegister(D30)));
374 EXPECT_TRUE(!reg_D30.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
375
376 ManagedRegister reg_D31 = ManagedRegister::FromDRegister(D30);
377 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::NoRegister()));
378 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromCoreRegister(R0)));
379 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromCoreRegister(R1)));
380 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromSRegister(S0)));
381 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromSRegister(S31)));
382 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromDRegister(D0)));
383 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromDRegister(D1)));
384 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromDRegister(D15)));
385 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromDRegister(D16)));
386 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromDRegister(D30)));
387 EXPECT_TRUE(reg_D31.Equals(ManagedRegister::FromDRegister(D31)));
388 EXPECT_TRUE(!reg_D31.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
389#endif // VFPv3_D32
390
391 ManagedRegister reg_R0R1 = ManagedRegister::FromRegisterPair(R0_R1);
392 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::NoRegister()));
393 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromCoreRegister(R0)));
394 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromCoreRegister(R1)));
395 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromSRegister(S0)));
396 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromSRegister(S31)));
397 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromDRegister(D0)));
398 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromDRegister(D1)));
399 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromDRegister(D15)));
400 EXPECT_TRUE(reg_R0R1.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
401 EXPECT_TRUE(!reg_R0R1.Equals(ManagedRegister::FromRegisterPair(R2_R3)));
402
403 ManagedRegister reg_R4R5 = ManagedRegister::FromRegisterPair(R4_R5);
404 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::NoRegister()));
405 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromCoreRegister(R0)));
406 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromCoreRegister(R1)));
407 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromSRegister(S0)));
408 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromSRegister(S31)));
409 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromDRegister(D0)));
410 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromDRegister(D1)));
411 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromDRegister(D15)));
412 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
413 EXPECT_TRUE(reg_R4R5.Equals(ManagedRegister::FromRegisterPair(R4_R5)));
414 EXPECT_TRUE(!reg_R4R5.Equals(ManagedRegister::FromRegisterPair(R6_R7)));
415
416 ManagedRegister reg_R6R7 = ManagedRegister::FromRegisterPair(R6_R7);
417 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::NoRegister()));
418 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromCoreRegister(R0)));
419 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromCoreRegister(R1)));
420 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromSRegister(S0)));
421 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromSRegister(S31)));
422 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromDRegister(D0)));
423 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromDRegister(D1)));
424 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromDRegister(D15)));
425 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromRegisterPair(R0_R1)));
426 EXPECT_TRUE(!reg_R6R7.Equals(ManagedRegister::FromRegisterPair(R4_R5)));
427 EXPECT_TRUE(reg_R6R7.Equals(ManagedRegister::FromRegisterPair(R6_R7)));
428}
429
430
431TEST(ManagedRegister, Overlaps) {
432 ManagedRegister reg = ManagedRegister::FromCoreRegister(R0);
433 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
434 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
435 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
436 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
437 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
438 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
439 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
440 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
441 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
442 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
443 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
444 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
445 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
446 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
447#ifdef VFPv3_D32
448 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
449 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
450#endif // VFPv3_D32
451 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
452 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
453
454 reg = ManagedRegister::FromCoreRegister(R1);
455 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
456 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
457 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
458 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
459 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
460 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
461 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
462 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
463 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
464 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
465 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
466 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
467 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
468 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
469#ifdef VFPv3_D32
470 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
471 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
472#endif // VFPv3_D32
473 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
474 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
475
476 reg = ManagedRegister::FromCoreRegister(R7);
477 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
478 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
479 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
480 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
481 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
482 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
483 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
484 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
485 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
486 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
487 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
488 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
489 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
490 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
491#ifdef VFPv3_D32
492 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
493 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
494#endif // VFPv3_D32
495 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
496 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
497
498 reg = ManagedRegister::FromSRegister(S0);
499 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
500 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
501 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
502 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
503 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S0)));
504 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
505 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
506 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
507 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
508 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
509 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D0)));
510 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
511 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
512 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
513#ifdef VFPv3_D32
514 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
515 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
516#endif // VFPv3_D32
517 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
518 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
519
520 reg = ManagedRegister::FromSRegister(S1);
521 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
522 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
523 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
524 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
525 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
526 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S1)));
527 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
528 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
529 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
530 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
531 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D0)));
532 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
533 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
534 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
535#ifdef VFPv3_D32
536 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
537 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
538#endif // VFPv3_D32
539 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
540 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
541
542 reg = ManagedRegister::FromSRegister(S15);
543 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
544 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
545 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
546 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
547 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
548 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
549 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
550 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S15)));
551 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
552 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
553 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
554 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
555 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D7)));
556 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
557#ifdef VFPv3_D32
558 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
559 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
560#endif // VFPv3_D32
561 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
562 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
563
564 reg = ManagedRegister::FromSRegister(S31);
565 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
566 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
567 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
568 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
569 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
570 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
571 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
572 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
573 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
574 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S31)));
575 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
576 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
577 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
578 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D15)));
579#ifdef VFPv3_D32
580 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
581 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
582#endif // VFPv3_D32
583 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
584 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
585
586 reg = ManagedRegister::FromDRegister(D0);
587 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
588 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
589 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
590 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
591 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S0)));
592 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S1)));
593 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
594 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
595 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
596 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
597 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D0)));
598 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
599 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
600 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
601#ifdef VFPv3_D32
602 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
603 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
604#endif // VFPv3_D32
605 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
606 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
607
608 reg = ManagedRegister::FromDRegister(D7);
609 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
610 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
611 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
612 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
613 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
614 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
615 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
616 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S15)));
617 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
618 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
619 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
620 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
621 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D7)));
622 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
623#ifdef VFPv3_D32
624 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
625 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
626#endif // VFPv3_D32
627 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
628 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
629
630 reg = ManagedRegister::FromDRegister(D15);
631 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
632 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
633 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
634 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
635 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
636 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
637 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
638 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
639 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S30)));
640 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromSRegister(S31)));
641 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
642 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
643 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
644 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D15)));
645#ifdef VFPv3_D32
646 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
647 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
648#endif // VFPv3_D32
649 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
650 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
651
652#ifdef VFPv3_D32
653 reg = ManagedRegister::FromDRegister(D16);
654 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
655 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
656 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
657 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
658 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
659 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
660 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
661 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
662 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
663 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
664 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
665 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
666 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
667 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
668 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D16)));
669 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
670 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
671 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
672
673 reg = ManagedRegister::FromDRegister(D31);
674 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
675 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
676 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
677 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
678 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
679 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
680 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
681 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
682 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
683 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
684 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
685 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
686 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
687 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
688 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
689 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromDRegister(D31)));
690 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
691 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
692#endif // VFPv3_D32
693
694 reg = ManagedRegister::FromRegisterPair(R0_R1);
695 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
696 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
697 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
698 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
699 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
700 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
701 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
702 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
703 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
704 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
705 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
706 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
707 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
708 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
709#ifdef VFPv3_D32
710 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
711 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
712#endif // VFPv3_D32
713 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
714 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
715
716 reg = ManagedRegister::FromRegisterPair(R4_R5);
717 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R0)));
718 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R1)));
719 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R7)));
720 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromCoreRegister(R8)));
721 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S0)));
722 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S1)));
723 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S2)));
724 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S15)));
725 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S30)));
726 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromSRegister(S31)));
727 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D0)));
728 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D1)));
729 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D7)));
730 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D15)));
731#ifdef VFPv3_D32
732 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D16)));
733 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromDRegister(D31)));
734#endif // VFPv3_D32
735 EXPECT_TRUE(!reg.Overlaps(ManagedRegister::FromRegisterPair(R0_R1)));
736 EXPECT_TRUE(reg.Overlaps(ManagedRegister::FromRegisterPair(R4_R5)));
737}
738
739} // namespace art