1303231Sdim//===-- Lanai.h - Top-level interface for Lanai representation --*- C++ -*-===//
2303231Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6303231Sdim//
7303231Sdim//===----------------------------------------------------------------------===//
8303231Sdim//
9303231Sdim// This file contains the entry points for global functions defined in the LLVM
10303231Sdim// Lanai back-end.
11303231Sdim//
12303231Sdim//===----------------------------------------------------------------------===//
13303231Sdim
14303231Sdim#ifndef LLVM_LIB_TARGET_LANAI_LANAI_H
15303231Sdim#define LLVM_LIB_TARGET_LANAI_LANAI_H
16303231Sdim
17353358Sdim#include "llvm/Pass.h"
18303231Sdim
19303231Sdimnamespace llvm {
20303231Sdimclass FunctionPass;
21303231Sdimclass LanaiTargetMachine;
22303231Sdimclass MachineFunctionPass;
23303231Sdimclass TargetMachine;
24303231Sdimclass formatted_raw_ostream;
25303231Sdim
26303231Sdim// createLanaiISelDag - This pass converts a legalized DAG into a
27303231Sdim// Lanai-specific DAG, ready for instruction scheduling.
28303231SdimFunctionPass *createLanaiISelDag(LanaiTargetMachine &TM);
29303231Sdim
30303231Sdim// createLanaiDelaySlotFillerPass - This pass fills delay slots
31303231Sdim// with useful instructions or nop's
32303231SdimFunctionPass *createLanaiDelaySlotFillerPass(const LanaiTargetMachine &TM);
33303231Sdim
34303231Sdim// createLanaiMemAluCombinerPass - This pass combines loads/stores and
35303231Sdim// arithmetic operations.
36303231SdimFunctionPass *createLanaiMemAluCombinerPass();
37303231Sdim
38303231Sdim// createLanaiSetflagAluCombinerPass - This pass combines SET_FLAG and ALU
39303231Sdim// operations.
40303231SdimFunctionPass *createLanaiSetflagAluCombinerPass();
41303231Sdim
42303231Sdim} // namespace llvm
43303231Sdim
44303231Sdim#endif // LLVM_LIB_TARGET_LANAI_LANAI_H
45