| // Copyright 2011 Google Inc. All Rights Reserved. |
| |
| #include "globals.h" |
| #include "managed_register_arm.h" |
| #include "gtest/gtest.h" |
| |
| namespace art { |
| namespace arm { |
| |
| TEST(ArmManagedRegister, NoRegister) { |
| ArmManagedRegister reg = ManagedRegister::NoRegister().AsArm(); |
| EXPECT_TRUE(reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.Overlaps(reg)); |
| } |
| |
| TEST(ArmManagedRegister, CoreRegister) { |
| ArmManagedRegister reg = ArmManagedRegister::FromCoreRegister(R0); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(R0, reg.AsCoreRegister()); |
| |
| reg = ArmManagedRegister::FromCoreRegister(R1); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(R1, reg.AsCoreRegister()); |
| |
| reg = ArmManagedRegister::FromCoreRegister(R8); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(R8, reg.AsCoreRegister()); |
| |
| reg = ArmManagedRegister::FromCoreRegister(R15); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(R15, reg.AsCoreRegister()); |
| } |
| |
| |
| TEST(ArmManagedRegister, SRegister) { |
| ArmManagedRegister reg = ArmManagedRegister::FromSRegister(S0); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(S0, reg.AsSRegister()); |
| |
| reg = ArmManagedRegister::FromSRegister(S1); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(S1, reg.AsSRegister()); |
| |
| reg = ArmManagedRegister::FromSRegister(S3); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(S3, reg.AsSRegister()); |
| |
| reg = ArmManagedRegister::FromSRegister(S15); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(S15, reg.AsSRegister()); |
| |
| reg = ArmManagedRegister::FromSRegister(S30); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(S30, reg.AsSRegister()); |
| |
| reg = ArmManagedRegister::FromSRegister(S31); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(S31, reg.AsSRegister()); |
| } |
| |
| |
| TEST(ArmManagedRegister, DRegister) { |
| ArmManagedRegister reg = ArmManagedRegister::FromDRegister(D0); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D0, reg.AsDRegister()); |
| EXPECT_EQ(S0, reg.AsOverlappingDRegisterLow()); |
| EXPECT_EQ(S1, reg.AsOverlappingDRegisterHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S0))); |
| |
| reg = ArmManagedRegister::FromDRegister(D1); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D1, reg.AsDRegister()); |
| EXPECT_EQ(S2, reg.AsOverlappingDRegisterLow()); |
| EXPECT_EQ(S3, reg.AsOverlappingDRegisterHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S2))); |
| |
| reg = ArmManagedRegister::FromDRegister(D6); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D6, reg.AsDRegister()); |
| EXPECT_EQ(S12, reg.AsOverlappingDRegisterLow()); |
| EXPECT_EQ(S13, reg.AsOverlappingDRegisterHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S12))); |
| |
| reg = ArmManagedRegister::FromDRegister(D14); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D14, reg.AsDRegister()); |
| EXPECT_EQ(S28, reg.AsOverlappingDRegisterLow()); |
| EXPECT_EQ(S29, reg.AsOverlappingDRegisterHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S28))); |
| |
| reg = ArmManagedRegister::FromDRegister(D15); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D15, reg.AsDRegister()); |
| EXPECT_EQ(S30, reg.AsOverlappingDRegisterLow()); |
| EXPECT_EQ(S31, reg.AsOverlappingDRegisterHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S30))); |
| |
| #ifdef VFPv3_D32 |
| reg = ArmManagedRegister::FromDRegister(D16); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D16, reg.AsDRegister()); |
| |
| reg = ArmManagedRegister::FromDRegister(D18); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D18, reg.AsDRegister()); |
| |
| reg = ArmManagedRegister::FromDRegister(D30); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D30, reg.AsDRegister()); |
| |
| reg = ArmManagedRegister::FromDRegister(D31); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(!reg.IsRegisterPair()); |
| EXPECT_EQ(D31, reg.AsDRegister()); |
| #endif // VFPv3_D32 |
| } |
| |
| |
| TEST(ArmManagedRegister, Pair) { |
| ArmManagedRegister reg = ArmManagedRegister::FromRegisterPair(R0_R1); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(reg.IsRegisterPair()); |
| EXPECT_EQ(R0_R1, reg.AsRegisterPair()); |
| EXPECT_EQ(R0, reg.AsRegisterPairLow()); |
| EXPECT_EQ(R1, reg.AsRegisterPairHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R0))); |
| |
| reg = ArmManagedRegister::FromRegisterPair(R1_R2); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(reg.IsRegisterPair()); |
| EXPECT_EQ(R1_R2, reg.AsRegisterPair()); |
| EXPECT_EQ(R1, reg.AsRegisterPairLow()); |
| EXPECT_EQ(R2, reg.AsRegisterPairHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R1))); |
| |
| reg = ArmManagedRegister::FromRegisterPair(R2_R3); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(reg.IsRegisterPair()); |
| EXPECT_EQ(R2_R3, reg.AsRegisterPair()); |
| EXPECT_EQ(R2, reg.AsRegisterPairLow()); |
| EXPECT_EQ(R3, reg.AsRegisterPairHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R2))); |
| |
| reg = ArmManagedRegister::FromRegisterPair(R4_R5); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(reg.IsRegisterPair()); |
| EXPECT_EQ(R4_R5, reg.AsRegisterPair()); |
| EXPECT_EQ(R4, reg.AsRegisterPairLow()); |
| EXPECT_EQ(R5, reg.AsRegisterPairHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R4))); |
| |
| reg = ArmManagedRegister::FromRegisterPair(R6_R7); |
| EXPECT_TRUE(!reg.IsNoRegister()); |
| EXPECT_TRUE(!reg.IsCoreRegister()); |
| EXPECT_TRUE(!reg.IsSRegister()); |
| EXPECT_TRUE(!reg.IsDRegister()); |
| EXPECT_TRUE(!reg.IsOverlappingDRegister()); |
| EXPECT_TRUE(reg.IsRegisterPair()); |
| EXPECT_EQ(R6_R7, reg.AsRegisterPair()); |
| EXPECT_EQ(R6, reg.AsRegisterPairLow()); |
| EXPECT_EQ(R7, reg.AsRegisterPairHigh()); |
| EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R6))); |
| } |
| |
| |
| TEST(ArmManagedRegister, Equals) { |
| ManagedRegister no_reg = ManagedRegister::NoRegister(); |
| EXPECT_TRUE(no_reg.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_R0 = ArmManagedRegister::FromCoreRegister(R0); |
| EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(reg_R0.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_R1 = ArmManagedRegister::FromCoreRegister(R1); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(reg_R1.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_R8 = ArmManagedRegister::FromCoreRegister(R8); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(reg_R8.Equals(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_S0 = ArmManagedRegister::FromSRegister(S0); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(reg_S0.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_S1 = ArmManagedRegister::FromSRegister(S1); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(reg_S1.Equals(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_S31 = ArmManagedRegister::FromSRegister(S31); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(reg_S31.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_D0 = ArmManagedRegister::FromDRegister(D0); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(reg_D0.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_D15 = ArmManagedRegister::FromDRegister(D15); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(reg_D15.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| #ifdef VFPv3_D32 |
| ArmManagedRegister reg_D16 = ArmManagedRegister::FromDRegister(D16); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(reg_D16.Equals(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_D30 = ArmManagedRegister::FromDRegister(D30); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(reg_D30.Equals(ArmManagedRegister::FromDRegister(D30))); |
| EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| |
| ArmManagedRegister reg_D31 = ArmManagedRegister::FromDRegister(D30); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D30))); |
| EXPECT_TRUE(reg_D31.Equals(ArmManagedRegister::FromDRegister(D31))); |
| EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| #endif // VFPv3_D32 |
| |
| ArmManagedRegister reg_R0R1 = ArmManagedRegister::FromRegisterPair(R0_R1); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(reg_R0R1.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromRegisterPair(R2_R3))); |
| |
| ArmManagedRegister reg_R4R5 = ArmManagedRegister::FromRegisterPair(R4_R5); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(reg_R4R5.Equals(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromRegisterPair(R6_R7))); |
| |
| ArmManagedRegister reg_R6R7 = ArmManagedRegister::FromRegisterPair(R6_R7); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::NoRegister())); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| EXPECT_TRUE(reg_R6R7.Equals(ArmManagedRegister::FromRegisterPair(R6_R7))); |
| } |
| |
| |
| TEST(ArmManagedRegister, Overlaps) { |
| ArmManagedRegister reg = ArmManagedRegister::FromCoreRegister(R0); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromCoreRegister(R1); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromCoreRegister(R7); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromSRegister(S0); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromSRegister(S1); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromSRegister(S15); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromSRegister(S31); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromDRegister(D0); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromDRegister(D7); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromDRegister(D15); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| #ifdef VFPv3_D32 |
| reg = ArmManagedRegister::FromDRegister(D16); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromDRegister(D31); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| #endif // VFPv3_D32 |
| |
| reg = ArmManagedRegister::FromRegisterPair(R0_R1); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| |
| reg = ArmManagedRegister::FromRegisterPair(R4_R5); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); |
| #ifdef VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); |
| #endif // VFPv3_D32 |
| EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); |
| EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); |
| } |
| |
| } // namespace arm |
| } // namespace art |