181ad6265SDimitry Andric //===-- LoongArch.h - Top-level interface for LoongArch ---------*- C++ -*-===// 281ad6265SDimitry Andric // 381ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 481ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 581ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 681ad6265SDimitry Andric // 781ad6265SDimitry Andric //===----------------------------------------------------------------------===// 881ad6265SDimitry Andric // 981ad6265SDimitry Andric // This file contains the entry points for global functions defined in the LLVM 1081ad6265SDimitry Andric // LoongArch back-end. 1181ad6265SDimitry Andric // 1281ad6265SDimitry Andric //===----------------------------------------------------------------------===// 1381ad6265SDimitry Andric 1481ad6265SDimitry Andric #ifndef LLVM_LIB_TARGET_LOONGARCH_LOONGARCH_H 1581ad6265SDimitry Andric #define LLVM_LIB_TARGET_LOONGARCH_LOONGARCH_H 1681ad6265SDimitry Andric 1781ad6265SDimitry Andric #include "MCTargetDesc/LoongArchBaseInfo.h" 1881ad6265SDimitry Andric #include "llvm/Target/TargetMachine.h" 1981ad6265SDimitry Andric 2081ad6265SDimitry Andric namespace llvm { 2181ad6265SDimitry Andric class AsmPrinter; 2281ad6265SDimitry Andric class FunctionPass; 23bdd1243dSDimitry Andric class LoongArchTargetMachine; 2481ad6265SDimitry Andric class MCInst; 2581ad6265SDimitry Andric class MCOperand; 2681ad6265SDimitry Andric class MachineInstr; 2781ad6265SDimitry Andric class MachineOperand; 28bdd1243dSDimitry Andric class PassRegistry; 2981ad6265SDimitry Andric 3081ad6265SDimitry Andric bool lowerLoongArchMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, 3181ad6265SDimitry Andric AsmPrinter &AP); 3281ad6265SDimitry Andric bool lowerLoongArchMachineOperandToMCOperand(const MachineOperand &MO, 3381ad6265SDimitry Andric MCOperand &MCOp, 3481ad6265SDimitry Andric const AsmPrinter &AP); 3581ad6265SDimitry Andric 36*0fca6ea1SDimitry Andric FunctionPass *createLoongArchDeadRegisterDefinitionsPass(); 37bdd1243dSDimitry Andric FunctionPass *createLoongArchExpandAtomicPseudoPass(); 3881ad6265SDimitry Andric FunctionPass *createLoongArchISelDag(LoongArchTargetMachine &TM); 39*0fca6ea1SDimitry Andric FunctionPass *createLoongArchOptWInstrsPass(); 40bdd1243dSDimitry Andric FunctionPass *createLoongArchPreRAExpandPseudoPass(); 41b121cb00SDimitry Andric FunctionPass *createLoongArchExpandPseudoPass(); 42*0fca6ea1SDimitry Andric void initializeLoongArchDAGToDAGISelLegacyPass(PassRegistry &); 43*0fca6ea1SDimitry Andric void initializeLoongArchDeadRegisterDefinitionsPass(PassRegistry &); 44bdd1243dSDimitry Andric void initializeLoongArchExpandAtomicPseudoPass(PassRegistry &); 45*0fca6ea1SDimitry Andric void initializeLoongArchOptWInstrsPass(PassRegistry &); 46bdd1243dSDimitry Andric void initializeLoongArchPreRAExpandPseudoPass(PassRegistry &); 47b121cb00SDimitry Andric void initializeLoongArchExpandPseudoPass(PassRegistry &); 48972a253aSDimitry Andric } // end namespace llvm 4981ad6265SDimitry Andric 5081ad6265SDimitry Andric #endif // LLVM_LIB_TARGET_LOONGARCH_LOONGARCH_H 51