Home | History | Annotate | Download | only in x86
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #include "managed_register_x86.h"
     18 
     19 #include "base/globals.h"
     20 #include "gtest/gtest.h"
     21 
     22 namespace art {
     23 namespace x86 {
     24 
     25 TEST(X86ManagedRegister, NoRegister) {
     26   X86ManagedRegister reg = ManagedRegister::NoRegister().AsX86();
     27   EXPECT_TRUE(reg.IsNoRegister());
     28   EXPECT_TRUE(!reg.Overlaps(reg));
     29 }
     30 
     31 TEST(X86ManagedRegister, CpuRegister) {
     32   X86ManagedRegister reg = X86ManagedRegister::FromCpuRegister(EAX);
     33   EXPECT_TRUE(!reg.IsNoRegister());
     34   EXPECT_TRUE(reg.IsCpuRegister());
     35   EXPECT_TRUE(!reg.IsXmmRegister());
     36   EXPECT_TRUE(!reg.IsX87Register());
     37   EXPECT_TRUE(!reg.IsRegisterPair());
     38   EXPECT_EQ(EAX, reg.AsCpuRegister());
     39 
     40   reg = X86ManagedRegister::FromCpuRegister(EBX);
     41   EXPECT_TRUE(!reg.IsNoRegister());
     42   EXPECT_TRUE(reg.IsCpuRegister());
     43   EXPECT_TRUE(!reg.IsXmmRegister());
     44   EXPECT_TRUE(!reg.IsX87Register());
     45   EXPECT_TRUE(!reg.IsRegisterPair());
     46   EXPECT_EQ(EBX, reg.AsCpuRegister());
     47 
     48   reg = X86ManagedRegister::FromCpuRegister(ECX);
     49   EXPECT_TRUE(!reg.IsNoRegister());
     50   EXPECT_TRUE(reg.IsCpuRegister());
     51   EXPECT_TRUE(!reg.IsXmmRegister());
     52   EXPECT_TRUE(!reg.IsX87Register());
     53   EXPECT_TRUE(!reg.IsRegisterPair());
     54   EXPECT_EQ(ECX, reg.AsCpuRegister());
     55 
     56   reg = X86ManagedRegister::FromCpuRegister(EDI);
     57   EXPECT_TRUE(!reg.IsNoRegister());
     58   EXPECT_TRUE(reg.IsCpuRegister());
     59   EXPECT_TRUE(!reg.IsXmmRegister());
     60   EXPECT_TRUE(!reg.IsX87Register());
     61   EXPECT_TRUE(!reg.IsRegisterPair());
     62   EXPECT_EQ(EDI, reg.AsCpuRegister());
     63 }
     64 
     65 TEST(X86ManagedRegister, XmmRegister) {
     66   X86ManagedRegister reg = X86ManagedRegister::FromXmmRegister(XMM0);
     67   EXPECT_TRUE(!reg.IsNoRegister());
     68   EXPECT_TRUE(!reg.IsCpuRegister());
     69   EXPECT_TRUE(reg.IsXmmRegister());
     70   EXPECT_TRUE(!reg.IsX87Register());
     71   EXPECT_TRUE(!reg.IsRegisterPair());
     72   EXPECT_EQ(XMM0, reg.AsXmmRegister());
     73 
     74   reg = X86ManagedRegister::FromXmmRegister(XMM1);
     75   EXPECT_TRUE(!reg.IsNoRegister());
     76   EXPECT_TRUE(!reg.IsCpuRegister());
     77   EXPECT_TRUE(reg.IsXmmRegister());
     78   EXPECT_TRUE(!reg.IsX87Register());
     79   EXPECT_TRUE(!reg.IsRegisterPair());
     80   EXPECT_EQ(XMM1, reg.AsXmmRegister());
     81 
     82   reg = X86ManagedRegister::FromXmmRegister(XMM7);
     83   EXPECT_TRUE(!reg.IsNoRegister());
     84   EXPECT_TRUE(!reg.IsCpuRegister());
     85   EXPECT_TRUE(reg.IsXmmRegister());
     86   EXPECT_TRUE(!reg.IsX87Register());
     87   EXPECT_TRUE(!reg.IsRegisterPair());
     88   EXPECT_EQ(XMM7, reg.AsXmmRegister());
     89 }
     90 
     91 TEST(X86ManagedRegister, X87Register) {
     92   X86ManagedRegister reg = X86ManagedRegister::FromX87Register(ST0);
     93   EXPECT_TRUE(!reg.IsNoRegister());
     94   EXPECT_TRUE(!reg.IsCpuRegister());
     95   EXPECT_TRUE(!reg.IsXmmRegister());
     96   EXPECT_TRUE(reg.IsX87Register());
     97   EXPECT_TRUE(!reg.IsRegisterPair());
     98   EXPECT_EQ(ST0, reg.AsX87Register());
     99 
    100   reg = X86ManagedRegister::FromX87Register(ST1);
    101   EXPECT_TRUE(!reg.IsNoRegister());
    102   EXPECT_TRUE(!reg.IsCpuRegister());
    103   EXPECT_TRUE(!reg.IsXmmRegister());
    104   EXPECT_TRUE(reg.IsX87Register());
    105   EXPECT_TRUE(!reg.IsRegisterPair());
    106   EXPECT_EQ(ST1, reg.AsX87Register());
    107 
    108   reg = X86ManagedRegister::FromX87Register(ST7);
    109   EXPECT_TRUE(!reg.IsNoRegister());
    110   EXPECT_TRUE(!reg.IsCpuRegister());
    111   EXPECT_TRUE(!reg.IsXmmRegister());
    112   EXPECT_TRUE(reg.IsX87Register());
    113   EXPECT_TRUE(!reg.IsRegisterPair());
    114   EXPECT_EQ(ST7, reg.AsX87Register());
    115 }
    116 
    117 TEST(X86ManagedRegister, RegisterPair) {
    118   X86ManagedRegister reg = X86ManagedRegister::FromRegisterPair(EAX_EDX);
    119   EXPECT_TRUE(!reg.IsNoRegister());
    120   EXPECT_TRUE(!reg.IsCpuRegister());
    121   EXPECT_TRUE(!reg.IsXmmRegister());
    122   EXPECT_TRUE(!reg.IsX87Register());
    123   EXPECT_TRUE(reg.IsRegisterPair());
    124   EXPECT_EQ(EAX, reg.AsRegisterPairLow());
    125   EXPECT_EQ(EDX, reg.AsRegisterPairHigh());
    126 
    127   reg = X86ManagedRegister::FromRegisterPair(EAX_ECX);
    128   EXPECT_TRUE(!reg.IsNoRegister());
    129   EXPECT_TRUE(!reg.IsCpuRegister());
    130   EXPECT_TRUE(!reg.IsXmmRegister());
    131   EXPECT_TRUE(!reg.IsX87Register());
    132   EXPECT_TRUE(reg.IsRegisterPair());
    133   EXPECT_EQ(EAX, reg.AsRegisterPairLow());
    134   EXPECT_EQ(ECX, reg.AsRegisterPairHigh());
    135 
    136   reg = X86ManagedRegister::FromRegisterPair(EAX_EBX);
    137   EXPECT_TRUE(!reg.IsNoRegister());
    138   EXPECT_TRUE(!reg.IsCpuRegister());
    139   EXPECT_TRUE(!reg.IsXmmRegister());
    140   EXPECT_TRUE(!reg.IsX87Register());
    141   EXPECT_TRUE(reg.IsRegisterPair());
    142   EXPECT_EQ(EAX, reg.AsRegisterPairLow());
    143   EXPECT_EQ(EBX, reg.AsRegisterPairHigh());
    144 
    145   reg = X86ManagedRegister::FromRegisterPair(EAX_EDI);
    146   EXPECT_TRUE(!reg.IsNoRegister());
    147   EXPECT_TRUE(!reg.IsCpuRegister());
    148   EXPECT_TRUE(!reg.IsXmmRegister());
    149   EXPECT_TRUE(!reg.IsX87Register());
    150   EXPECT_TRUE(reg.IsRegisterPair());
    151   EXPECT_EQ(EAX, reg.AsRegisterPairLow());
    152   EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
    153 
    154   reg = X86ManagedRegister::FromRegisterPair(EDX_ECX);
    155   EXPECT_TRUE(!reg.IsNoRegister());
    156   EXPECT_TRUE(!reg.IsCpuRegister());
    157   EXPECT_TRUE(!reg.IsXmmRegister());
    158   EXPECT_TRUE(!reg.IsX87Register());
    159   EXPECT_TRUE(reg.IsRegisterPair());
    160   EXPECT_EQ(EDX, reg.AsRegisterPairLow());
    161   EXPECT_EQ(ECX, reg.AsRegisterPairHigh());
    162 
    163   reg = X86ManagedRegister::FromRegisterPair(EDX_EBX);
    164   EXPECT_TRUE(!reg.IsNoRegister());
    165   EXPECT_TRUE(!reg.IsCpuRegister());
    166   EXPECT_TRUE(!reg.IsXmmRegister());
    167   EXPECT_TRUE(!reg.IsX87Register());
    168   EXPECT_TRUE(reg.IsRegisterPair());
    169   EXPECT_EQ(EDX, reg.AsRegisterPairLow());
    170   EXPECT_EQ(EBX, reg.AsRegisterPairHigh());
    171 
    172   reg = X86ManagedRegister::FromRegisterPair(EDX_EDI);
    173   EXPECT_TRUE(!reg.IsNoRegister());
    174   EXPECT_TRUE(!reg.IsCpuRegister());
    175   EXPECT_TRUE(!reg.IsXmmRegister());
    176   EXPECT_TRUE(!reg.IsX87Register());
    177   EXPECT_TRUE(reg.IsRegisterPair());
    178   EXPECT_EQ(EDX, reg.AsRegisterPairLow());
    179   EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
    180 
    181   reg = X86ManagedRegister::FromRegisterPair(ECX_EBX);
    182   EXPECT_TRUE(!reg.IsNoRegister());
    183   EXPECT_TRUE(!reg.IsCpuRegister());
    184   EXPECT_TRUE(!reg.IsXmmRegister());
    185   EXPECT_TRUE(!reg.IsX87Register());
    186   EXPECT_TRUE(reg.IsRegisterPair());
    187   EXPECT_EQ(ECX, reg.AsRegisterPairLow());
    188   EXPECT_EQ(EBX, reg.AsRegisterPairHigh());
    189 
    190   reg = X86ManagedRegister::FromRegisterPair(ECX_EDI);
    191   EXPECT_TRUE(!reg.IsNoRegister());
    192   EXPECT_TRUE(!reg.IsCpuRegister());
    193   EXPECT_TRUE(!reg.IsXmmRegister());
    194   EXPECT_TRUE(!reg.IsX87Register());
    195   EXPECT_TRUE(reg.IsRegisterPair());
    196   EXPECT_EQ(ECX, reg.AsRegisterPairLow());
    197   EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
    198 
    199   reg = X86ManagedRegister::FromRegisterPair(EBX_EDI);
    200   EXPECT_TRUE(!reg.IsNoRegister());
    201   EXPECT_TRUE(!reg.IsCpuRegister());
    202   EXPECT_TRUE(!reg.IsXmmRegister());
    203   EXPECT_TRUE(!reg.IsX87Register());
    204   EXPECT_TRUE(reg.IsRegisterPair());
    205   EXPECT_EQ(EBX, reg.AsRegisterPairLow());
    206   EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
    207 }
    208 
    209 TEST(X86ManagedRegister, Equals) {
    210   X86ManagedRegister reg_eax = X86ManagedRegister::FromCpuRegister(EAX);
    211   EXPECT_TRUE(reg_eax.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
    212   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
    213   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
    214   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
    215   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
    216   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromX87Register(ST0)));
    217   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromX87Register(ST7)));
    218   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    219   EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    220 
    221   X86ManagedRegister reg_xmm0 = X86ManagedRegister::FromXmmRegister(XMM0);
    222   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
    223   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
    224   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
    225   EXPECT_TRUE(reg_xmm0.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
    226   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
    227   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromX87Register(ST0)));
    228   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromX87Register(ST7)));
    229   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    230   EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    231 
    232   X86ManagedRegister reg_st0 = X86ManagedRegister::FromX87Register(ST0);
    233   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
    234   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
    235   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
    236   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
    237   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
    238   EXPECT_TRUE(reg_st0.Equals(X86ManagedRegister::FromX87Register(ST0)));
    239   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromX87Register(ST7)));
    240   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    241   EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    242 
    243   X86ManagedRegister reg_pair = X86ManagedRegister::FromRegisterPair(EAX_EDX);
    244   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
    245   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
    246   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
    247   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
    248   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
    249   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromX87Register(ST0)));
    250   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromX87Register(ST7)));
    251   EXPECT_TRUE(reg_pair.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    252   EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    253 }
    254 
    255 TEST(X86ManagedRegister, Overlaps) {
    256   X86ManagedRegister reg = X86ManagedRegister::FromCpuRegister(EAX);
    257   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    258   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    259   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    260   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    261   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    262   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    263   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    264   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    265   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    266 
    267   reg = X86ManagedRegister::FromCpuRegister(EDX);
    268   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    269   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    270   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    271   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    272   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    273   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    274   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    275   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    276   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    277 
    278   reg = X86ManagedRegister::FromCpuRegister(EDI);
    279   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    280   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    281   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    282   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    283   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    284   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    285   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    286   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    287   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    288 
    289   reg = X86ManagedRegister::FromCpuRegister(EBX);
    290   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    291   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    292   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    293   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    294   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    295   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    296   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    297   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    298   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    299 
    300   reg = X86ManagedRegister::FromXmmRegister(XMM0);
    301   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    302   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    303   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    304   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    305   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    306   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    307   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    308   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    309   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    310 
    311   reg = X86ManagedRegister::FromX87Register(ST0);
    312   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    313   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    314   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    315   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    316   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    317   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    318   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    319   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    320   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    321 
    322   reg = X86ManagedRegister::FromRegisterPair(EAX_EDX);
    323   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    324   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    325   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    326   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    327   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    328   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    329   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    330   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    331   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EDX_ECX)));
    332   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    333 
    334   reg = X86ManagedRegister::FromRegisterPair(EBX_EDI);
    335   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    336   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    337   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    338   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    339   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    340   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    341   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    342   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    343   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    344   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EDX_EBX)));
    345 
    346   reg = X86ManagedRegister::FromRegisterPair(EDX_ECX);
    347   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
    348   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
    349   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
    350   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
    351   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
    352   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
    353   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
    354   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
    355   EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
    356   EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EDX_EBX)));
    357 }
    358 
    359 }  // namespace x86
    360 }  // namespace art
    361