//===-- LanaiBaseInfo.h - Top level definitions for Lanai MC ----*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file contains small standalone helper functions and enum definitions for
// the Lanai target useful for the compiler back-end and the MC libraries.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
#define LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H

#include "LanaiMCTargetDesc.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/ErrorHandling.h"

namespace llvm {

// LanaiII - This namespace holds all of the target specific flags that
// instruction info tracks.
namespace LanaiII {
// Target Operand Flag enum.
enum TOF {
  //===------------------------------------------------------------------===//
  // Lanai Specific MachineOperand flags.
  MO_NO_FLAG,

  // MO_ABS_HI/LO - Represents the hi or low part of an absolute symbol
  // address.
  MO_ABS_HI,
  MO_ABS_LO,
};
} // namespace LanaiII

static inline unsigned getLanaiRegisterNumbering(unsigned Reg) {
  switch (Reg) {
  case Lanai::R0:
    return 0;
  case Lanai::R1:
    return 1;
  case Lanai::R2:
  case Lanai::PC:
    return 2;
  case Lanai::R3:
    return 3;
  case Lanai::R4:
  case Lanai::SP:
    return 4;
  case Lanai::R5:
  case Lanai::FP:
    return 5;
  case Lanai::R6:
    return 6;
  case Lanai::R7:
    return 7;
  case Lanai::R8:
  case Lanai::RV:
    return 8;
  case Lanai::R9:
    return 9;
  case Lanai::R10:
  case Lanai::RR1:
    return 10;
  case Lanai::R11:
  case Lanai::RR2:
    return 11;
  case Lanai::R12:
    return 12;
  case Lanai::R13:
    return 13;
  case Lanai::R14:
    return 14;
  case Lanai::R15:
  case Lanai::RCA:
    return 15;
  case Lanai::R16:
    return 16;
  case Lanai::R17:
    return 17;
  case Lanai::R18:
    return 18;
  case Lanai::R19:
    return 19;
  case Lanai::R20:
    return 20;
  case Lanai::R21:
    return 21;
  case Lanai::R22:
    return 22;
  case Lanai::R23:
    return 23;
  case Lanai::R24:
    return 24;
  case Lanai::R25:
    return 25;
  case Lanai::R26:
    return 26;
  case Lanai::R27:
    return 27;
  case Lanai::R28:
    return 28;
  case Lanai::R29:
    return 29;
  case Lanai::R30:
    return 30;
  case Lanai::R31:
    return 31;
  default:
    llvm_unreachable("Unknown register number!");
  }
}
} // namespace llvm
#endif // LLVM_LIB_TARGET_LANAI_MCTARGETDESC_LANAIBASEINFO_H
