119 lines · c
1//===-- LanaiBaseInfo.h - Top level definitions for Lanai MC ----*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains small standalone helper functions and enum definitions for10// the Lanai target useful for the compiler back-end and the MC libraries.11//12//===----------------------------------------------------------------------===//13 14#ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H15#define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H16 17#include "LanaiMCTargetDesc.h"18#include "llvm/MC/MCExpr.h"19#include "llvm/Support/DataTypes.h"20#include "llvm/Support/ErrorHandling.h"21 22namespace llvm {23 24// LanaiII - This namespace holds all of the target specific flags that25// instruction info tracks.26namespace LanaiII {27// Target Operand Flag enum.28enum TOF {29 //===------------------------------------------------------------------===//30 // Lanai Specific MachineOperand flags.31 MO_NO_FLAG,32 33 // MO_ABS_HI/LO - Represents the hi or low part of an absolute symbol34 // address.35 MO_ABS_HI,36 MO_ABS_LO,37};38} // namespace LanaiII39 40static inline unsigned getLanaiRegisterNumbering(MCRegister Reg) {41 switch (Reg.id()) {42 case Lanai::R0:43 return 0;44 case Lanai::R1:45 return 1;46 case Lanai::R2:47 case Lanai::PC:48 return 2;49 case Lanai::R3:50 return 3;51 case Lanai::R4:52 case Lanai::SP:53 return 4;54 case Lanai::R5:55 case Lanai::FP:56 return 5;57 case Lanai::R6:58 return 6;59 case Lanai::R7:60 return 7;61 case Lanai::R8:62 case Lanai::RV:63 return 8;64 case Lanai::R9:65 return 9;66 case Lanai::R10:67 case Lanai::RR1:68 return 10;69 case Lanai::R11:70 case Lanai::RR2:71 return 11;72 case Lanai::R12:73 return 12;74 case Lanai::R13:75 return 13;76 case Lanai::R14:77 return 14;78 case Lanai::R15:79 case Lanai::RCA:80 return 15;81 case Lanai::R16:82 return 16;83 case Lanai::R17:84 return 17;85 case Lanai::R18:86 return 18;87 case Lanai::R19:88 return 19;89 case Lanai::R20:90 return 20;91 case Lanai::R21:92 return 21;93 case Lanai::R22:94 return 22;95 case Lanai::R23:96 return 23;97 case Lanai::R24:98 return 24;99 case Lanai::R25:100 return 25;101 case Lanai::R26:102 return 26;103 case Lanai::R27:104 return 27;105 case Lanai::R28:106 return 28;107 case Lanai::R29:108 return 29;109 case Lanai::R30:110 return 30;111 case Lanai::R31:112 return 31;113 default:114 llvm_unreachable("Unknown register number!");115 }116}117} // namespace llvm118#endif // LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H119