12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 16b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 17578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "globals.h" 18578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "managed_register_arm.h" 19b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#include "gtest/gtest.h" 20b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 21b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogersnamespace art { 222c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogersnamespace arm { 23b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 242c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, NoRegister) { 252c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg = ManagedRegister::NoRegister().AsArm(); 26b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsNoRegister()); 27b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.Overlaps(reg)); 28b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 29b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 302c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, CoreRegister) { 312c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg = ArmManagedRegister::FromCoreRegister(R0); 32b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 33b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsCoreRegister()); 34b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 35b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 36b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 37b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R0, reg.AsCoreRegister()); 38b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 392c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromCoreRegister(R1); 40b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 41b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsCoreRegister()); 42b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 43b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 44b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 45b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 46b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R1, reg.AsCoreRegister()); 47b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromCoreRegister(R8); 49b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 50b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsCoreRegister()); 51b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 52b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 53b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 54b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 55b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R8, reg.AsCoreRegister()); 56b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 572c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromCoreRegister(R15); 58b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 59b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsCoreRegister()); 60b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 61b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 62b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 63b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 64b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R15, reg.AsCoreRegister()); 65b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 66b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 67b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 682c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, SRegister) { 692c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg = ArmManagedRegister::FromSRegister(S0); 70b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 71b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 72b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsSRegister()); 73b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 74b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 75b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 76b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S0, reg.AsSRegister()); 77b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 782c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S1); 79b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 80b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 81b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsSRegister()); 82b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 83b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 84b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 85b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S1, reg.AsSRegister()); 86b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 872c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S3); 88b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 89b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 90b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsSRegister()); 91b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 92b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 93b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 94b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S3, reg.AsSRegister()); 95b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 962c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S15); 97b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 98b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 99b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsSRegister()); 100b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 101b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 102b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 103b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S15, reg.AsSRegister()); 104b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S30); 106b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 107b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 108b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsSRegister()); 109b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 110b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 111b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 112b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S30, reg.AsSRegister()); 113b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S31); 115b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 116b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 117b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsSRegister()); 118b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 119b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 120b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 121b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S31, reg.AsSRegister()); 122b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 123b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 124b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1252c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, DRegister) { 1262c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg = ArmManagedRegister::FromDRegister(D0); 127b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 128b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 129b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 130b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 131b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsOverlappingDRegister()); 132b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 133b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D0, reg.AsDRegister()); 134b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S0, reg.AsOverlappingDRegisterLow()); 135b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S1, reg.AsOverlappingDRegisterHigh()); 1362c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S0))); 137b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1382c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D1); 139b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 140b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 141b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 142b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 143b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsOverlappingDRegister()); 144b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 145b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D1, reg.AsDRegister()); 146b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S2, reg.AsOverlappingDRegisterLow()); 147b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S3, reg.AsOverlappingDRegisterHigh()); 1482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S2))); 149b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1502c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D6); 151b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 152b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 153b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 154b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 155b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsOverlappingDRegister()); 156b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 157b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D6, reg.AsDRegister()); 158b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S12, reg.AsOverlappingDRegisterLow()); 159b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S13, reg.AsOverlappingDRegisterHigh()); 1602c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S12))); 161b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1622c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D14); 163b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 164b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 165b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 166b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 167b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsOverlappingDRegister()); 168b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 169b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D14, reg.AsDRegister()); 170b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S28, reg.AsOverlappingDRegisterLow()); 171b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S29, reg.AsOverlappingDRegisterHigh()); 1722c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S28))); 173b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1742c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D15); 175b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 176b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 177b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 178b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 179b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsOverlappingDRegister()); 180b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 181b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D15, reg.AsDRegister()); 182b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S30, reg.AsOverlappingDRegisterLow()); 183b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(S31, reg.AsOverlappingDRegisterHigh()); 1842c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromSRegisterPair(S30))); 185b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 186b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 1872c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D16); 188b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 189b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 190b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 191b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 192b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 193b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 194b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D16, reg.AsDRegister()); 195b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 1962c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D18); 197b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 198b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 199b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 200b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 201b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 202b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 203b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D18, reg.AsDRegister()); 204b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D30); 206b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 207b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 208b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 209b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 210b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 211b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 212b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D30, reg.AsDRegister()); 213b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D31); 215b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 216b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 217b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 218b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsDRegister()); 219b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 220b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsRegisterPair()); 221b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(D31, reg.AsDRegister()); 222b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 223b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 224b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 225b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2262c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, Pair) { 2272c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg = ArmManagedRegister::FromRegisterPair(R0_R1); 228b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 229b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 230b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 231b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 232b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 233b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsRegisterPair()); 234b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R0_R1, reg.AsRegisterPair()); 235b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R0, reg.AsRegisterPairLow()); 236b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R1, reg.AsRegisterPairHigh()); 2372c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R0))); 238b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2392c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromRegisterPair(R1_R2); 2407a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 2417a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 2427a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 2437a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 2447a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 2457a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_TRUE(reg.IsRegisterPair()); 2467a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_EQ(R1_R2, reg.AsRegisterPair()); 2477a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_EQ(R1, reg.AsRegisterPairLow()); 2487a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers EXPECT_EQ(R2, reg.AsRegisterPairHigh()); 2492c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R1))); 2507a99c11d220ec68c208b507570e3a78c2c18a7a1Ian Rogers 2512c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromRegisterPair(R2_R3); 252b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 253b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 254b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 255b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 256b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 257b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsRegisterPair()); 258b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R2_R3, reg.AsRegisterPair()); 259b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R2, reg.AsRegisterPairLow()); 260b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R3, reg.AsRegisterPairHigh()); 2612c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R2))); 262b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2632c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromRegisterPair(R4_R5); 264b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 265b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 266b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 267b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 268b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 269b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsRegisterPair()); 270b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R4_R5, reg.AsRegisterPair()); 271b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R4, reg.AsRegisterPairLow()); 272b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R5, reg.AsRegisterPairHigh()); 2732c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R4))); 274b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2752c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromRegisterPair(R6_R7); 276b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsNoRegister()); 277b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsCoreRegister()); 278b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsSRegister()); 279b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsDRegister()); 280b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(!reg.IsOverlappingDRegister()); 281b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_TRUE(reg.IsRegisterPair()); 282b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R6_R7, reg.AsRegisterPair()); 283b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R6, reg.AsRegisterPairLow()); 284b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers EXPECT_EQ(R7, reg.AsRegisterPairHigh()); 2852c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Equals(ArmManagedRegister::FromCoreRegisterPair(R6))); 286b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 287b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 288b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 2892c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, Equals) { 290b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers ManagedRegister no_reg = ManagedRegister::NoRegister(); 2912c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(no_reg.Equals(ArmManagedRegister::NoRegister())); 2922c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromCoreRegister(R0))); 2932c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromCoreRegister(R1))); 2942c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromSRegister(S0))); 2952c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromDRegister(D0))); 2962c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!no_reg.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 2972c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 2982c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_R0 = ArmManagedRegister::FromCoreRegister(R0); 2992c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::NoRegister())); 3002c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_R0.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3012c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3022c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromSRegister(S0))); 3032c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromDRegister(D0))); 3042c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3062c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_R1 = ArmManagedRegister::FromCoreRegister(R1); 3072c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::NoRegister())); 3082c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3092c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_R1.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3102c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromSRegister(S0))); 3112c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromDRegister(D0))); 3122c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromSRegister(S1))); 3132c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromDRegister(D1))); 3142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R1.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3152c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3162c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_R8 = ArmManagedRegister::FromCoreRegister(R8); 3172c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::NoRegister())); 3182c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3192c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_R8.Equals(ArmManagedRegister::FromCoreRegister(R8))); 3202c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromSRegister(S0))); 3212c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromDRegister(D0))); 3222c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromSRegister(S1))); 3232c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromDRegister(D1))); 3242c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R8.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3252c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3262c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_S0 = ArmManagedRegister::FromSRegister(S0); 3272c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::NoRegister())); 3282c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3292c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3302c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_S0.Equals(ArmManagedRegister::FromSRegister(S0))); 3312c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromSRegister(S1))); 3322c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromDRegister(D0))); 3332c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromDRegister(D1))); 3342c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S0.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3352c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3362c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_S1 = ArmManagedRegister::FromSRegister(S1); 3372c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::NoRegister())); 3382c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3392c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3402c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromSRegister(S0))); 3412c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_S1.Equals(ArmManagedRegister::FromSRegister(S1))); 3422c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromDRegister(D0))); 3432c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromDRegister(D1))); 3442c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S1.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3452c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3462c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_S31 = ArmManagedRegister::FromSRegister(S31); 3472c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::NoRegister())); 3482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3492c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3502c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromSRegister(S0))); 3512c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_S31.Equals(ArmManagedRegister::FromSRegister(S31))); 3522c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromDRegister(D0))); 3532c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromDRegister(D1))); 3542c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_S31.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3552c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3562c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_D0 = ArmManagedRegister::FromDRegister(D0); 3572c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::NoRegister())); 3582c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3592c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3602c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromSRegister(S0))); 3612c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromSRegister(S31))); 3622c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_D0.Equals(ArmManagedRegister::FromDRegister(D0))); 3632c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromDRegister(D1))); 3642c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D0.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3652c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3662c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_D15 = ArmManagedRegister::FromDRegister(D15); 3672c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::NoRegister())); 3682c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3692c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3702c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromSRegister(S0))); 3712c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromSRegister(S31))); 3722c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromDRegister(D0))); 3732c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromDRegister(D1))); 3742c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_D15.Equals(ArmManagedRegister::FromDRegister(D15))); 3752c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D15.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 376b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 377b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 3782c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_D16 = ArmManagedRegister::FromDRegister(D16); 3792c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::NoRegister())); 3802c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3812c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3822c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromSRegister(S0))); 3832c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromSRegister(S31))); 3842c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromDRegister(D0))); 3852c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromDRegister(D1))); 3862c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromDRegister(D15))); 3872c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_D16.Equals(ArmManagedRegister::FromDRegister(D16))); 3882c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D16.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 3892c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 3902c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_D30 = ArmManagedRegister::FromDRegister(D30); 3912c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::NoRegister())); 3922c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromCoreRegister(R0))); 3932c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromCoreRegister(R1))); 3942c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromSRegister(S0))); 3952c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromSRegister(S31))); 3962c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D0))); 3972c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D1))); 3982c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D15))); 3992c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromDRegister(D16))); 4002c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_D30.Equals(ArmManagedRegister::FromDRegister(D30))); 4012c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D30.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 4022c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 4032c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_D31 = ArmManagedRegister::FromDRegister(D30); 4042c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::NoRegister())); 4052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromCoreRegister(R0))); 4062c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromCoreRegister(R1))); 4072c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromSRegister(S0))); 4082c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromSRegister(S31))); 4092c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D0))); 4102c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D1))); 4112c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D15))); 4122c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D16))); 4132c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromDRegister(D30))); 4142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_D31.Equals(ArmManagedRegister::FromDRegister(D31))); 4152c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_D31.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 416b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 417b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 4182c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_R0R1 = ArmManagedRegister::FromRegisterPair(R0_R1); 4192c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::NoRegister())); 4202c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromCoreRegister(R0))); 4212c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromCoreRegister(R1))); 4222c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromSRegister(S0))); 4232c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromSRegister(S31))); 4242c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromDRegister(D0))); 4252c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromDRegister(D1))); 4262c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromDRegister(D15))); 4272c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_R0R1.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 4282c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R0R1.Equals(ArmManagedRegister::FromRegisterPair(R2_R3))); 4292c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 4302c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_R4R5 = ArmManagedRegister::FromRegisterPair(R4_R5); 4312c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::NoRegister())); 4322c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromCoreRegister(R0))); 4332c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromCoreRegister(R1))); 4342c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromSRegister(S0))); 4352c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromSRegister(S31))); 4362c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromDRegister(D0))); 4372c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromDRegister(D1))); 4382c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromDRegister(D15))); 4392c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 4402c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_R4R5.Equals(ArmManagedRegister::FromRegisterPair(R4_R5))); 4412c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R4R5.Equals(ArmManagedRegister::FromRegisterPair(R6_R7))); 4422c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 4432c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg_R6R7 = ArmManagedRegister::FromRegisterPair(R6_R7); 4442c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::NoRegister())); 4452c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromCoreRegister(R0))); 4462c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromCoreRegister(R1))); 4472c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromSRegister(S0))); 4482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromSRegister(S31))); 4492c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromDRegister(D0))); 4502c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromDRegister(D1))); 4512c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromDRegister(D15))); 4522c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromRegisterPair(R0_R1))); 4532c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg_R6R7.Equals(ArmManagedRegister::FromRegisterPair(R4_R5))); 4542c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg_R6R7.Equals(ArmManagedRegister::FromRegisterPair(R6_R7))); 455b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 456b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 457b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 4582c8f653c98d658419f464b6147c10e11a664d2e6Ian RogersTEST(ArmManagedRegister, Overlaps) { 4592c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers ArmManagedRegister reg = ArmManagedRegister::FromCoreRegister(R0); 4602c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 4612c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 4622c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 4632c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 4642c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 4652c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 4662c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 4672c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 4682c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 4692c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 4702c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 4712c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 4722c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 4732c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 474b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 4752c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 4762c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 477b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 4782c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 4792c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 4802c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 4812c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromCoreRegister(R1); 4822c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 4832c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 4842c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 4852c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 4862c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 4872c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 4882c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 4892c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 4902c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 4912c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 4922c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 4932c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 4942c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 4952c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 496b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 4972c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 4982c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 499b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 5002c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 5012c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 5022c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 5032c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromCoreRegister(R7); 5042c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 5052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 5062c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 5072c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 5082c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 5092c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 5102c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 5112c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 5122c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 5132c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 5142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 5152c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 5162c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 5172c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 518b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 5192c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 5202c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 521b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 5222c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 5232c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 5242c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 5252c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S0); 5262c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 5272c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 5282c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 5292c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 5302c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 5312c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 5322c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 5332c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 5342c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 5352c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 5362c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 5372c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 5382c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 5392c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 540b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 5412c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 5422c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 543b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 5442c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 5452c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 5462c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 5472c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S1); 5482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 5492c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 5502c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 5512c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 5522c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 5532c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 5542c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 5552c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 5562c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 5572c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 5582c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 5592c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 5602c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 5612c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 562b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 5632c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 5642c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 565b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 5662c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 5672c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 5682c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 5692c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S15); 5702c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 5712c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 5722c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 5732c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 5742c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 5752c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 5762c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 5772c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 5782c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 5792c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 5802c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 5812c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 5822c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 5832c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 584b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 5852c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 5862c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 587b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 5882c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 5892c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 5902c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 5912c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromSRegister(S31); 5922c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 5932c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 5942c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 5952c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 5962c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 5972c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 5982c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 5992c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 6002c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 6012c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 6022c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 6032c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 6042c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 6052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 606b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 6072c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 6082c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 609b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 6102c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 6112c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 6122c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 6132c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D0); 6142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 6152c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 6162c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 6172c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 6182c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 6192c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 6202c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 6212c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 6222c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 6232c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 6242c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 6252c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 6262c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 6272c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 628b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 6292c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 6302c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 631b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 6322c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 6332c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 6342c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 6352c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D7); 6362c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 6372c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 6382c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 6392c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 6402c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 6412c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 6422c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 6432c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 6442c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 6452c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 6462c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 6472c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 6482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 6492c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 650b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 6512c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 6522c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 653b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 6542c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 6552c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 6562c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 6572c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D15); 6582c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 6592c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 6602c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 6612c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 6622c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 6632c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 6642c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 6652c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 6662c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 6672c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 6682c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 6692c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 6702c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 6712c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 672b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 6732c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 6742c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 675b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 6762c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 6772c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 678b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 679b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 6802c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D16); 6812c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 6822c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 6832c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 6842c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 6852c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 6862c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 6872c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 6882c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 6892c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 6902c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 6912c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 6922c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 6932c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 6942c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 6952c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 6962c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 6972c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 6982c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 6992c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 7002c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromDRegister(D31); 7012c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 7022c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 7032c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 7042c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 7052c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 7062c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 7072c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 7082c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 7092c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 7102c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 7112c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 7122c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 7132c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 7142c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 7152c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 7162c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 7172c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 7182c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 719b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 720b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 7212c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromRegisterPair(R0_R1); 7222c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 7232c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 7242c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 7252c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 7262c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 7272c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 7282c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 7292c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 7302c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 7312c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 7322c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 7332c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 7342c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 7352c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 736b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 7372c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 7382c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 739b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 7402c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 7412c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 7422c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers 7432c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers reg = ArmManagedRegister::FromRegisterPair(R4_R5); 7442c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R0))); 7452c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R1))); 7462c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R7))); 7472c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromCoreRegister(R8))); 7482c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S0))); 7492c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S1))); 7502c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S2))); 7512c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S15))); 7522c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S30))); 7532c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromSRegister(S31))); 7542c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D0))); 7552c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D1))); 7562c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D7))); 7572c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D15))); 758b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#ifdef VFPv3_D32 7592c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D16))); 7602c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromDRegister(D31))); 761b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers#endif // VFPv3_D32 7622c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(!reg.Overlaps(ArmManagedRegister::FromRegisterPair(R0_R1))); 7632c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers EXPECT_TRUE(reg.Overlaps(ArmManagedRegister::FromRegisterPair(R4_R5))); 764b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} 765b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers 7662c8f653c98d658419f464b6147c10e11a664d2e6Ian Rogers} // namespace arm 767b033c75ebda80ac75f936366fe78d1edf5cec937Ian Rogers} // namespace art 768