You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.179
Former-commit-id: 67aa10e65b237e1c4537630979ee99ebe1374215
This commit is contained in:
parent
d6bde52373
commit
8625704ad8
3
external/llvm/lib/Target/XCore/InstPrinter/CMakeLists.txt
vendored
Normal file
3
external/llvm/lib/Target/XCore/InstPrinter/CMakeLists.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
add_llvm_library(LLVMXCoreAsmPrinter
|
||||
XCoreInstPrinter.cpp
|
||||
)
|
23
external/llvm/lib/Target/XCore/InstPrinter/LLVMBuild.txt
vendored
Normal file
23
external/llvm/lib/Target/XCore/InstPrinter/LLVMBuild.txt
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
;===- ./lib/Target/XCore/InstPrinter/LLVMBuild.txt -------------*- Conf -*--===;
|
||||
;
|
||||
; The LLVM Compiler Infrastructure
|
||||
;
|
||||
; This file is distributed under the University of Illinois Open Source
|
||||
; License. See LICENSE.TXT for details.
|
||||
;
|
||||
;===------------------------------------------------------------------------===;
|
||||
;
|
||||
; This is an LLVMBuild description file for the components in this subdirectory.
|
||||
;
|
||||
; For more information on the LLVMBuild system, please see:
|
||||
;
|
||||
; http://llvm.org/docs/LLVMBuild.html
|
||||
;
|
||||
;===------------------------------------------------------------------------===;
|
||||
|
||||
[component_0]
|
||||
type = Library
|
||||
name = XCoreAsmPrinter
|
||||
parent = XCore
|
||||
required_libraries = MC Support
|
||||
add_to_library_groups = XCore
|
90
external/llvm/lib/Target/XCore/InstPrinter/XCoreInstPrinter.cpp
vendored
Normal file
90
external/llvm/lib/Target/XCore/InstPrinter/XCoreInstPrinter.cpp
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
//===-- XCoreInstPrinter.cpp - Convert XCore MCInst to assembly syntax ----===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This class prints an XCore MCInst to a .s file.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "XCoreInstPrinter.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/MC/MCExpr.h"
|
||||
#include "llvm/MC/MCInst.h"
|
||||
#include "llvm/MC/MCSymbol.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <cassert>
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "asm-printer"
|
||||
|
||||
#include "XCoreGenAsmWriter.inc"
|
||||
|
||||
void XCoreInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const {
|
||||
OS << StringRef(getRegisterName(RegNo)).lower();
|
||||
}
|
||||
|
||||
void XCoreInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
|
||||
StringRef Annot, const MCSubtargetInfo &STI) {
|
||||
printInstruction(MI, O);
|
||||
printAnnotation(O, Annot);
|
||||
}
|
||||
|
||||
void XCoreInstPrinter::
|
||||
printInlineJT(const MCInst *MI, int opNum, raw_ostream &O) {
|
||||
report_fatal_error("can't handle InlineJT");
|
||||
}
|
||||
|
||||
void XCoreInstPrinter::
|
||||
printInlineJT32(const MCInst *MI, int opNum, raw_ostream &O) {
|
||||
report_fatal_error("can't handle InlineJT32");
|
||||
}
|
||||
|
||||
static void printExpr(const MCExpr *Expr, const MCAsmInfo *MAI,
|
||||
raw_ostream &OS) {
|
||||
int Offset = 0;
|
||||
const MCSymbolRefExpr *SRE;
|
||||
|
||||
if (const MCBinaryExpr *BE = dyn_cast<MCBinaryExpr>(Expr)) {
|
||||
SRE = dyn_cast<MCSymbolRefExpr>(BE->getLHS());
|
||||
const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(BE->getRHS());
|
||||
assert(SRE && CE && "Binary expression must be sym+const.");
|
||||
Offset = CE->getValue();
|
||||
} else {
|
||||
SRE = dyn_cast<MCSymbolRefExpr>(Expr);
|
||||
assert(SRE && "Unexpected MCExpr type.");
|
||||
}
|
||||
assert(SRE->getKind() == MCSymbolRefExpr::VK_None);
|
||||
|
||||
SRE->getSymbol().print(OS, MAI);
|
||||
|
||||
if (Offset) {
|
||||
if (Offset > 0)
|
||||
OS << '+';
|
||||
OS << Offset;
|
||||
}
|
||||
}
|
||||
|
||||
void XCoreInstPrinter::
|
||||
printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
|
||||
const MCOperand &Op = MI->getOperand(OpNo);
|
||||
if (Op.isReg()) {
|
||||
printRegName(O, Op.getReg());
|
||||
return;
|
||||
}
|
||||
|
||||
if (Op.isImm()) {
|
||||
O << Op.getImm();
|
||||
return;
|
||||
}
|
||||
|
||||
assert(Op.isExpr() && "unknown operand kind in printOperand");
|
||||
printExpr(Op.getExpr(), &MAI, O);
|
||||
}
|
47
external/llvm/lib/Target/XCore/InstPrinter/XCoreInstPrinter.h
vendored
Normal file
47
external/llvm/lib/Target/XCore/InstPrinter/XCoreInstPrinter.h
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
//== XCoreInstPrinter.h - Convert XCore MCInst to assembly syntax -*- C++ -*-=//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
///
|
||||
/// \file
|
||||
/// \brief This file contains the declaration of the XCoreInstPrinter class,
|
||||
/// which is used to print XCore MCInst to a .s file.
|
||||
///
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIB_TARGET_XCORE_INSTPRINTER_XCOREINSTPRINTER_H
|
||||
#define LLVM_LIB_TARGET_XCORE_INSTPRINTER_XCOREINSTPRINTER_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/MC/MCInstPrinter.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class XCoreInstPrinter : public MCInstPrinter {
|
||||
public:
|
||||
XCoreInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
|
||||
const MCRegisterInfo &MRI)
|
||||
: MCInstPrinter(MAI, MII, MRI) {}
|
||||
|
||||
// Autogenerated by tblgen.
|
||||
void printInstruction(const MCInst *MI, raw_ostream &O);
|
||||
static const char *getRegisterName(unsigned RegNo);
|
||||
|
||||
void printRegName(raw_ostream &OS, unsigned RegNo) const override;
|
||||
void printInst(const MCInst *MI, raw_ostream &O, StringRef Annot,
|
||||
const MCSubtargetInfo &STI) override;
|
||||
|
||||
private:
|
||||
void printInlineJT(const MCInst *MI, int opNum, raw_ostream &O);
|
||||
void printInlineJT32(const MCInst *MI, int opNum, raw_ostream &O);
|
||||
void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
|
||||
void printMemOperand(const MCInst *MI, int opNum, raw_ostream &O);
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_LIB_TARGET_XCORE_INSTPRINTER_XCOREINSTPRINTER_H
|
Reference in New Issue
Block a user