brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 3c0b34d Raw
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