1166db04e259ca51838c311891598664deeed85adIan Rogers/*
2166db04e259ca51838c311891598664deeed85adIan Rogers * Copyright (C) 2011 The Android Open Source Project
3166db04e259ca51838c311891598664deeed85adIan Rogers *
4166db04e259ca51838c311891598664deeed85adIan Rogers * Licensed under the Apache License, Version 2.0 (the "License");
5166db04e259ca51838c311891598664deeed85adIan Rogers * you may not use this file except in compliance with the License.
6166db04e259ca51838c311891598664deeed85adIan Rogers * You may obtain a copy of the License at
7166db04e259ca51838c311891598664deeed85adIan Rogers *
8166db04e259ca51838c311891598664deeed85adIan Rogers *      http://www.apache.org/licenses/LICENSE-2.0
9166db04e259ca51838c311891598664deeed85adIan Rogers *
10166db04e259ca51838c311891598664deeed85adIan Rogers * Unless required by applicable law or agreed to in writing, software
11166db04e259ca51838c311891598664deeed85adIan Rogers * distributed under the License is distributed on an "AS IS" BASIS,
12166db04e259ca51838c311891598664deeed85adIan Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13166db04e259ca51838c311891598664deeed85adIan Rogers * See the License for the specific language governing permissions and
14166db04e259ca51838c311891598664deeed85adIan Rogers * limitations under the License.
15166db04e259ca51838c311891598664deeed85adIan Rogers */
16166db04e259ca51838c311891598664deeed85adIan Rogers
17166db04e259ca51838c311891598664deeed85adIan Rogers#include "registers_arm.h"
18166db04e259ca51838c311891598664deeed85adIan Rogers
19166db04e259ca51838c311891598664deeed85adIan Rogers#include <ostream>
20166db04e259ca51838c311891598664deeed85adIan Rogers
21166db04e259ca51838c311891598664deeed85adIan Rogersnamespace art {
22166db04e259ca51838c311891598664deeed85adIan Rogersnamespace arm {
23166db04e259ca51838c311891598664deeed85adIan Rogers
24166db04e259ca51838c311891598664deeed85adIan Rogersstatic const char* kRegisterNames[] = {
25166db04e259ca51838c311891598664deeed85adIan Rogers  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
26166db04e259ca51838c311891598664deeed85adIan Rogers  "fp", "ip", "sp", "lr", "pc"
27166db04e259ca51838c311891598664deeed85adIan Rogers};
28166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const Register& rhs) {
29166db04e259ca51838c311891598664deeed85adIan Rogers  if (rhs >= R0 && rhs <= PC) {
30166db04e259ca51838c311891598664deeed85adIan Rogers    os << kRegisterNames[rhs];
31166db04e259ca51838c311891598664deeed85adIan Rogers  } else {
32166db04e259ca51838c311891598664deeed85adIan Rogers    os << "Register[" << static_cast<int>(rhs) << "]";
33166db04e259ca51838c311891598664deeed85adIan Rogers  }
34166db04e259ca51838c311891598664deeed85adIan Rogers  return os;
35166db04e259ca51838c311891598664deeed85adIan Rogers}
36166db04e259ca51838c311891598664deeed85adIan Rogers
37166db04e259ca51838c311891598664deeed85adIan Rogersstd::ostream& operator<<(std::ostream& os, const SRegister& rhs) {
38166db04e259ca51838c311891598664deeed85adIan Rogers  if (rhs >= S0 && rhs < kNumberOfSRegisters) {
39166db04e259ca51838c311891598664deeed85adIan Rogers    os << "s" << static_cast<int>(rhs);
40166db04e259ca51838c311891598664deeed85adIan Rogers  } else {
41166db04e259ca51838c311891598664deeed85adIan Rogers    os << "SRegister[" << static_cast<int>(rhs) << "]";
42166db04e259ca51838c311891598664deeed85adIan Rogers  }
43166db04e259ca51838c311891598664deeed85adIan Rogers  return os;
44166db04e259ca51838c311891598664deeed85adIan Rogers}
45166db04e259ca51838c311891598664deeed85adIan Rogers
46166db04e259ca51838c311891598664deeed85adIan Rogers}  // namespace arm
47166db04e259ca51838c311891598664deeed85adIan Rogers}  // namespace art
48