MipsRegisterInfo.cpp revision 96601ca332ab388754ca4673be8973396fea2ddd
19b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org//===-- MipsRegisterInfo.cpp - MIPS Register Information -== --------------===// 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// 39b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org// The LLVM Compiler Infrastructure 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com// This file is distributed under the University of Illinois Open Source 69b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org// License. See LICENSE.TXT for details. 79b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org// 86112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org//===----------------------------------------------------------------------===// 99b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org// 10f71b2103d56dde247605b718a0c89123ad8f0094vandebo@chromium.org// This file contains the MIPS implementation of the TargetRegisterInfo class. 119b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org// 1248543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org//===----------------------------------------------------------------------===// 1348543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org 146112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org#define DEBUG_TYPE "mips-reg-info" 1548543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org 1648543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "MipsRegisterInfo.h" 17b24f89353ed7a45b27ab0ffc69c222b81bbf87c3commit-bot@chromium.org#include "Mips.h" 1848543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "MipsAnalyzeImmediate.h" 1948543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "MipsInstrInfo.h" 2048543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "MipsSubtarget.h" 2148543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "MipsMachineFunction.h" 2248543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/Constants.h" 2348543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/DebugInfo.h" 2448543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/Type.h" 2548543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/CodeGen/ValueTypes.h" 2648543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/CodeGen/MachineInstrBuilder.h" 2748543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/CodeGen/MachineFunction.h" 28b24f89353ed7a45b27ab0ffc69c222b81bbf87c3commit-bot@chromium.org#include "llvm/CodeGen/MachineFrameInfo.h" 29b24f89353ed7a45b27ab0ffc69c222b81bbf87c3commit-bot@chromium.org#include "llvm/Target/TargetFrameLowering.h" 30b24f89353ed7a45b27ab0ffc69c222b81bbf87c3commit-bot@chromium.org#include "llvm/Target/TargetMachine.h" 31b24f89353ed7a45b27ab0ffc69c222b81bbf87c3commit-bot@chromium.org#include "llvm/Target/TargetOptions.h" 3248543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/Target/TargetInstrInfo.h" 3325adce81ce24702174ede33445c414a8d21d8a23vandebo@chromium.org#include "llvm/Support/CommandLine.h" 3448543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/Support/Debug.h" 3548543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/Support/ErrorHandling.h" 3648543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/Support/raw_ostream.h" 3748543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/ADT/BitVector.h" 3848543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "llvm/ADT/STLExtras.h" 3948543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org 4048543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#define GET_REGINFO_TARGET_DESC 4148543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org#include "MipsGenRegisterInfo.inc" 423b416216d1e90cb8b1bba41bb95806fe2d40da88vandebo@chromium.org 433b416216d1e90cb8b1bba41bb95806fe2d40da88vandebo@chromium.orgusing namespace llvm; 443b416216d1e90cb8b1bba41bb95806fe2d40da88vandebo@chromium.org 456112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orgMipsRegisterInfo::MipsRegisterInfo(const MipsSubtarget &ST, 466112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org const TargetInstrInfo &tii) 47769fa6a013baca6d7404e2bf096a34a7e3635fa5ctguil@chromium.org : MipsGenRegisterInfo(Mips::RA), Subtarget(ST), TII(tii) {} 4848543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org 4948543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.orgunsigned MipsRegisterInfo::getPICCallReg() { return Mips::T9; } 5048543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org 5148543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org//===----------------------------------------------------------------------===// 5248543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org// Callee Saved Registers methods 5348543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org//===----------------------------------------------------------------------===// 5448543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org 559b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org/// Mips Callee Saved Registers 56f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.comconst uint16_t* MipsRegisterInfo:: 576112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orggetCalleeSavedRegs(const MachineFunction *MF) const { 58f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com if (Subtarget.isSingleFloat()) 596112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org return CSR_SingleFloatOnly_SaveList; 60918352f86e939fe042495aad4f5ff33c4ecec9edvandebo@chromium.org else if (!Subtarget.hasMips64()) 61f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com return CSR_O32_SaveList; 626112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org else if (Subtarget.isABI_N32()) 636112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org return CSR_N32_SaveList; 646112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 656112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org assert(Subtarget.isABI_N64()); 666addb1930013ebb2f984045141650fd7afcfa90fedisonn@google.com return CSR_N64_SaveList; 676addb1930013ebb2f984045141650fd7afcfa90fedisonn@google.com} 686addb1930013ebb2f984045141650fd7afcfa90fedisonn@google.com 696addb1930013ebb2f984045141650fd7afcfa90fedisonn@google.comconst uint32_t* 709b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.orgMipsRegisterInfo::getCallPreservedMask(CallingConv::ID) const { 719b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org if (Subtarget.isSingleFloat()) 729b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org return CSR_SingleFloatOnly_RegMask; 739b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org else if (!Subtarget.hasMips64()) 749b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org return CSR_O32_RegMask; 759b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org else if (Subtarget.isABI_N32()) 769b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org return CSR_N32_RegMask; 779b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 7848543277728fdf66b993f17421f65fba532a23a2vandebo@chromium.org assert(Subtarget.isABI_N64()); 799b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org return CSR_N64_RegMask; 809b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org} 819b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 829b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.orgBitVector MipsRegisterInfo:: 839b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.orggetReservedRegs(const MachineFunction &MF) const { 849b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org static const uint16_t ReservedCPURegs[] = { 85b83f6c3cbdabc14d8290b00d9f38ba59bf6719a1mtklein Mips::ZERO, Mips::AT, Mips::K0, Mips::K1, Mips::SP 86b83f6c3cbdabc14d8290b00d9f38ba59bf6719a1mtklein }; 879b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 889b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org static const uint16_t ReservedCPU64Regs[] = { 899b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org Mips::ZERO_64, Mips::AT_64, Mips::K0_64, Mips::K1_64, Mips::SP_64 909b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org }; 919b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 921771cbf43d9a1334e3d870c635b4215bb888dd98digit@google.com BitVector Reserved(getNumRegs()); 931771cbf43d9a1334e3d870c635b4215bb888dd98digit@google.com typedef TargetRegisterClass::const_iterator RegIter; 949b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 959b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org for (unsigned I = 0; I < array_lengthof(ReservedCPURegs); ++I) 969b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org Reserved.set(ReservedCPURegs[I]); 979b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 98b83f6c3cbdabc14d8290b00d9f38ba59bf6719a1mtklein if (Subtarget.hasMips64()) { 99f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com for (unsigned I = 0; I < array_lengthof(ReservedCPU64Regs); ++I) 100f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com Reserved.set(ReservedCPU64Regs[I]); 1019b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 102f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com // Reserve all registers in AFGR64. 103f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com for (RegIter Reg = Mips::AFGR64RegClass.begin(), 1049b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org EReg = Mips::AFGR64RegClass.end(); Reg != EReg; ++Reg) 1059b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org Reserved.set(*Reg); 106f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com } else { 1079b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org // Reserve all registers in CPU64Regs & FGR64. 1089b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org for (RegIter Reg = Mips::CPU64RegsRegClass.begin(), 1099b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org EReg = Mips::CPU64RegsRegClass.end(); Reg != EReg; ++Reg) 1109b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org Reserved.set(*Reg); 11119e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org 11219e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org for (RegIter Reg = Mips::FGR64RegClass.begin(), 113b83f6c3cbdabc14d8290b00d9f38ba59bf6719a1mtklein EReg = Mips::FGR64RegClass.end(); Reg != EReg; ++Reg) 11419e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org Reserved.set(*Reg); 11519e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org } 11619e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org 11719e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org // Reserve FP if this function should have a dedicated frame pointer register. 118d96d17b9c113ac694138224249ff2ce643e961ddvandebo@chromium.org if (MF.getTarget().getFrameLowering()->hasFP(MF)) { 11919e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org Reserved.set(Mips::FP); 120c789cf1c6f3947283aeb34acb5a22e6204f8f6f5reed@google.com Reserved.set(Mips::FP_64); 121c789cf1c6f3947283aeb34acb5a22e6204f8f6f5reed@google.com } 12219e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org 12319e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org // Reserve hardware registers. 124d96d17b9c113ac694138224249ff2ce643e961ddvandebo@chromium.org Reserved.set(Mips::HWR29); 125d96d17b9c113ac694138224249ff2ce643e961ddvandebo@chromium.org Reserved.set(Mips::HWR29_64); 12619e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org 12719e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org // Reserve RA if in mips16 mode. 128c789cf1c6f3947283aeb34acb5a22e6204f8f6f5reed@google.com if (Subtarget.inMips16Mode()) { 12919e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org Reserved.set(Mips::RA); 13019e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org Reserved.set(Mips::RA_64); 13119e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org } 13219e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org 13319e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org // Reserve GP if small section is used. 13419e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org if (Subtarget.useSmallSection()) { 13519e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org Reserved.set(Mips::GP); 136f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com Reserved.set(Mips::GP_64); 13793a2e213441c75033b04365c7d68c8d3887288accommit-bot@chromium.org } 1386112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1396112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org return Reserved; 140f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com} 1416112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 142d96d17b9c113ac694138224249ff2ce643e961ddvandebo@chromium.orgbool 14393a2e213441c75033b04365c7d68c8d3887288accommit-bot@chromium.orgMipsRegisterInfo::requiresRegisterScavenging(const MachineFunction &MF) const { 14493a2e213441c75033b04365c7d68c8d3887288accommit-bot@chromium.org return true; 14593a2e213441c75033b04365c7d68c8d3887288accommit-bot@chromium.org} 14693a2e213441c75033b04365c7d68c8d3887288accommit-bot@chromium.org 14793a2e213441c75033b04365c7d68c8d3887288accommit-bot@chromium.orgbool 1486112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orgMipsRegisterInfo::trackLivenessAfterRegAlloc(const MachineFunction &MF) const { 1496112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org return true; 1506112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org} 1516112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1526112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org// FrameIndex represent objects inside a abstract stack. 153c789cf1c6f3947283aeb34acb5a22e6204f8f6f5reed@google.com// We must replace FrameIndex with an stack/frame pointer 1546112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org// direct reference. 1556112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orgvoid MipsRegisterInfo:: 1566112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orgeliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj, 1576112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org RegScavenger *RS) const { 1586112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org MachineInstr &MI = *II; 15919e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org MachineFunction &MF = *MI.getParent()->getParent(); 16019e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org 16119e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org unsigned i = 0; 16219e3c1ed1b20ce93cc092d25c3637b62f90c5bc5vandebo@chromium.org while (!MI.getOperand(i).isFI()) { 1636112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org ++i; 1646112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org assert(i < MI.getNumOperands() && 1656112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org "Instr doesn't have FrameIndex operand!"); 1666112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org } 1676112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1686112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org DEBUG(errs() << "\nFunction : " << MF.getName() << "\n"; 169f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com errs() << "<--------->\n" << MI); 170f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com 1716112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org int FrameIndex = MI.getOperand(i).getIndex(); 1726112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org uint64_t stackSize = MF.getFrameInfo()->getStackSize(); 1736112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org int64_t spOffset = MF.getFrameInfo()->getObjectOffset(FrameIndex); 1746112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1756112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org DEBUG(errs() << "FrameIndex : " << FrameIndex << "\n" 176c789cf1c6f3947283aeb34acb5a22e6204f8f6f5reed@google.com << "spOffset : " << spOffset << "\n" 177c789cf1c6f3947283aeb34acb5a22e6204f8f6f5reed@google.com << "stackSize : " << stackSize << "\n"); 1786112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1796112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org eliminateFI(MI, i, FrameIndex, stackSize, spOffset); 1806112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org} 1816112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1826112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orgunsigned MipsRegisterInfo:: 1836112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orggetFrameRegister(const MachineFunction &MF) const { 184f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering(); 185b83f6c3cbdabc14d8290b00d9f38ba59bf6719a1mtklein bool IsN64 = Subtarget.isABI_N64(); 1869b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 187f6c3ebdeb135dcdb9af225bd7af77f1fe1f92787reed@google.com return TFI->hasFP(MF) ? (IsN64 ? Mips::FP_64 : Mips::FP) : 1889b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org (IsN64 ? Mips::SP_64 : Mips::SP); 1899b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org} 1906112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org 1916112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orgunsigned MipsRegisterInfo:: 1926112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orggetEHExceptionRegister() const { 1936112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org llvm_unreachable("What is the exception register"); 1946112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org} 1959b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org 1969b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.orgunsigned MipsRegisterInfo:: 1976112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.orggetEHHandlerRegister() const { 1986112c215fbdd53388e64ece36e6c7bba0fe3a451vandebo@chromium.org llvm_unreachable("What is the exception handler register"); 1999b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org} 2009b49dc0db8254e3dcdc2de4a1e0add4f8a7ac5a8vandebo@chromium.org