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