49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
//===- LoongArchAsmPrinter.cpp - LoongArch LLVM Assembly Printer -*- 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 a printer that converts from our internal representation
 | 
						|
// of machine-dependent LLVM code to GAS-format LoongArch assembly language.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#include "LoongArchAsmPrinter.h"
 | 
						|
#include "LoongArch.h"
 | 
						|
#include "LoongArchTargetMachine.h"
 | 
						|
#include "TargetInfo/LoongArchTargetInfo.h"
 | 
						|
#include "llvm/CodeGen/AsmPrinter.h"
 | 
						|
#include "llvm/MC/TargetRegistry.h"
 | 
						|
 | 
						|
using namespace llvm;
 | 
						|
 | 
						|
#define DEBUG_TYPE "loongarch-asm-printer"
 | 
						|
 | 
						|
// Simple pseudo-instructions have their lowering (with expansion to real
 | 
						|
// instructions) auto-generated.
 | 
						|
#include "LoongArchGenMCPseudoLowering.inc"
 | 
						|
 | 
						|
void LoongArchAsmPrinter::emitInstruction(const MachineInstr *MI) {
 | 
						|
  // Do any auto-generated pseudo lowerings.
 | 
						|
  if (emitPseudoExpansionLowering(*OutStreamer, MI))
 | 
						|
    return;
 | 
						|
 | 
						|
  MCInst TmpInst;
 | 
						|
  if (!lowerLoongArchMachineInstrToMCInst(MI, TmpInst, *this))
 | 
						|
    EmitToStreamer(*OutStreamer, TmpInst);
 | 
						|
}
 | 
						|
 | 
						|
bool LoongArchAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
 | 
						|
  AsmPrinter::runOnMachineFunction(MF);
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
// Force static initialization.
 | 
						|
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLoongArchAsmPrinter() {
 | 
						|
  RegisterAsmPrinter<LoongArchAsmPrinter> X(getTheLoongArch32Target());
 | 
						|
  RegisterAsmPrinter<LoongArchAsmPrinter> Y(getTheLoongArch64Target());
 | 
						|
}
 |