/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "globals.h"
#include "managed_register_x86.h"
#include "gtest/gtest.h"
namespace art {
namespace x86 {
TEST(X86ManagedRegister, NoRegister) {
X86ManagedRegister reg = ManagedRegister::NoRegister().AsX86();
EXPECT_TRUE(reg.IsNoRegister());
EXPECT_TRUE(!reg.Overlaps(reg));
}
TEST(X86ManagedRegister, CpuRegister) {
X86ManagedRegister reg = X86ManagedRegister::FromCpuRegister(EAX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(EAX, reg.AsCpuRegister());
reg = X86ManagedRegister::FromCpuRegister(EBX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(EBX, reg.AsCpuRegister());
reg = X86ManagedRegister::FromCpuRegister(ECX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(ECX, reg.AsCpuRegister());
reg = X86ManagedRegister::FromCpuRegister(EDI);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(EDI, reg.AsCpuRegister());
}
TEST(X86ManagedRegister, XmmRegister) {
X86ManagedRegister reg = X86ManagedRegister::FromXmmRegister(XMM0);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(XMM0, reg.AsXmmRegister());
reg = X86ManagedRegister::FromXmmRegister(XMM1);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(XMM1, reg.AsXmmRegister());
reg = X86ManagedRegister::FromXmmRegister(XMM7);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(XMM7, reg.AsXmmRegister());
}
TEST(X86ManagedRegister, X87Register) {
X86ManagedRegister reg = X86ManagedRegister::FromX87Register(ST0);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(ST0, reg.AsX87Register());
reg = X86ManagedRegister::FromX87Register(ST1);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(ST1, reg.AsX87Register());
reg = X86ManagedRegister::FromX87Register(ST7);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(reg.IsX87Register());
EXPECT_TRUE(!reg.IsRegisterPair());
EXPECT_EQ(ST7, reg.AsX87Register());
}
TEST(X86ManagedRegister, RegisterPair) {
X86ManagedRegister reg = X86ManagedRegister::FromRegisterPair(EAX_EDX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EAX, reg.AsRegisterPairLow());
EXPECT_EQ(EDX, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EAX_ECX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EAX, reg.AsRegisterPairLow());
EXPECT_EQ(ECX, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EAX_EBX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EAX, reg.AsRegisterPairLow());
EXPECT_EQ(EBX, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EAX_EDI);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EAX, reg.AsRegisterPairLow());
EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EDX_ECX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EDX, reg.AsRegisterPairLow());
EXPECT_EQ(ECX, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EDX_EBX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EDX, reg.AsRegisterPairLow());
EXPECT_EQ(EBX, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EDX_EDI);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EDX, reg.AsRegisterPairLow());
EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(ECX_EBX);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(ECX, reg.AsRegisterPairLow());
EXPECT_EQ(EBX, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(ECX_EDI);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(ECX, reg.AsRegisterPairLow());
EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
reg = X86ManagedRegister::FromRegisterPair(EBX_EDI);
EXPECT_TRUE(!reg.IsNoRegister());
EXPECT_TRUE(!reg.IsCpuRegister());
EXPECT_TRUE(!reg.IsXmmRegister());
EXPECT_TRUE(!reg.IsX87Register());
EXPECT_TRUE(reg.IsRegisterPair());
EXPECT_EQ(EBX, reg.AsRegisterPairLow());
EXPECT_EQ(EDI, reg.AsRegisterPairHigh());
}
TEST(X86ManagedRegister, Equals) {
X86ManagedRegister reg_eax = X86ManagedRegister::FromCpuRegister(EAX);
EXPECT_TRUE(reg_eax.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg_eax.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
X86ManagedRegister reg_xmm0 = X86ManagedRegister::FromXmmRegister(XMM0);
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(reg_xmm0.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg_xmm0.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
X86ManagedRegister reg_st0 = X86ManagedRegister::FromX87Register(ST0);
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(reg_st0.Equals(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg_st0.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
X86ManagedRegister reg_pair = X86ManagedRegister::FromRegisterPair(EAX_EDX);
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(reg_pair.Equals(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg_pair.Equals(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
}
TEST(X86ManagedRegister, Overlaps) {
X86ManagedRegister reg = X86ManagedRegister::FromCpuRegister(EAX);
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromCpuRegister(EDX);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromCpuRegister(EDI);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromCpuRegister(EBX);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromXmmRegister(XMM0);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromX87Register(ST0);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromRegisterPair(EAX_EDX);
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EDX_ECX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
reg = X86ManagedRegister::FromRegisterPair(EBX_EDI);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EDX_EBX)));
reg = X86ManagedRegister::FromRegisterPair(EDX_ECX);
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EAX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EBX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromCpuRegister(EDI)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromXmmRegister(XMM7)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST0)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromX87Register(ST7)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EAX_EDX)));
EXPECT_TRUE(!reg.Overlaps(X86ManagedRegister::FromRegisterPair(EBX_EDI)));
EXPECT_TRUE(reg.Overlaps(X86ManagedRegister::FromRegisterPair(EDX_EBX)));
}
} // namespace x86
} // namespace art