brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · ec6e745 Raw
60 lines · c
1//===---- Mips16ISelDAGToDAG.h - A Dag to Dag Inst Selector for Mips ------===//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// Subclass of MipsDAGToDAGISel specialized for mips16.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_MIPS_MIPS16ISELDAGTODAG_H14#define LLVM_LIB_TARGET_MIPS_MIPS16ISELDAGTODAG_H15 16#include "MipsISelDAGToDAG.h"17 18namespace llvm {19 20class Mips16DAGToDAGISel : public MipsDAGToDAGISel {21public:22  explicit Mips16DAGToDAGISel(MipsTargetMachine &TM, CodeGenOptLevel OL)23      : MipsDAGToDAGISel(TM, OL) {}24 25private:26  std::pair<SDNode *, SDNode *> selectMULT(SDNode *N, unsigned Opc,27                                           const SDLoc &DL, EVT Ty, bool HasLo,28                                           bool HasHi);29 30  bool runOnMachineFunction(MachineFunction &MF) override;31 32  bool selectAddr(bool SPAllowed, SDValue Addr, SDValue &Base,33                  SDValue &Offset);34  bool selectAddr16(SDValue Addr, SDValue &Base,35                    SDValue &Offset) override;36  bool selectAddr16SP(SDValue Addr, SDValue &Base,37                      SDValue &Offset) override;38 39  bool trySelect(SDNode *Node) override;40 41  void processFunctionAfterISel(MachineFunction &MF) override;42 43  // Insert instructions to initialize the global base register in the44  // first MBB of the function.45  void initGlobalBaseReg(MachineFunction &MF);46 47  void initMips16SPAliasReg(MachineFunction &MF);48};49 50class Mips16DAGToDAGISelLegacy : public MipsDAGToDAGISelLegacy {51public:52  explicit Mips16DAGToDAGISelLegacy(MipsTargetMachine &TM, CodeGenOptLevel OL);53};54 55FunctionPass *createMips16ISelDag(MipsTargetMachine &TM,56                                  CodeGenOptLevel OptLevel);57}58 59#endif60