LLVM 20.0.0git
Mips16ISelDAGToDAG.h
Go to the documentation of this file.
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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Subclass of MipsDAGToDAGISel specialized for mips16.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_MIPS_MIPS16ISELDAGTODAG_H
14#define LLVM_LIB_TARGET_MIPS_MIPS16ISELDAGTODAG_H
15
16#include "MipsISelDAGToDAG.h"
17
18namespace llvm {
19
21public:
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,
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 the
44 // first MBB of the function.
45 void initGlobalBaseReg(MachineFunction &MF);
46
47 void initMips16SPAliasReg(MachineFunction &MF);
48};
49
51public:
53};
54
56 CodeGenOptLevel OptLevel);
57}
58
59#endif
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
uint64_t Addr
const char LLVMTargetMachineRef TM
FunctionPass class - This class is used to implement most global optimizations.
Definition: Pass.h:310
Mips16DAGToDAGISel(MipsTargetMachine &TM, CodeGenOptLevel OL)
Wrapper class for IR location info (IR ordering and DebugLoc) to be passed into SDNode creation funct...
Represents one node in the SelectionDAG.
Unlike LLVM values, Selection DAG nodes may return multiple values as the result of a computation.
MachineFunction * MF
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
@ Offset
Definition: DWP.cpp:480
CodeGenOptLevel
Code generation optimization level.
Definition: CodeGen.h:54
FunctionPass * createMips16ISelDag(MipsTargetMachine &TM, CodeGenOptLevel OptLevel)
#define N
Extended Value Type.
Definition: ValueTypes.h:35