From 60d5b5fdeec64b69c92db60242d3d90b3f978e69 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 14 Nov 2010 19:40:38 +0000 Subject: stub out a powerpc MCInstPrinter implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119059 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/InstPrinter/CMakeLists.txt | 6 ++ lib/Target/PowerPC/InstPrinter/Makefile | 16 ++++++ lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp | 41 ++++++++++++++ lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h | 67 +++++++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 lib/Target/PowerPC/InstPrinter/CMakeLists.txt create mode 100644 lib/Target/PowerPC/InstPrinter/Makefile create mode 100644 lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp create mode 100644 lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h (limited to 'lib/Target/PowerPC/InstPrinter') diff --git a/lib/Target/PowerPC/InstPrinter/CMakeLists.txt b/lib/Target/PowerPC/InstPrinter/CMakeLists.txt new file mode 100644 index 0000000..389ea77 --- /dev/null +++ b/lib/Target/PowerPC/InstPrinter/CMakeLists.txt @@ -0,0 +1,6 @@ +include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/.. ) + +add_llvm_library(LLVMPowerPCAsmPrinter + PPCInstPrinter.cpp + ) +add_dependencies(LLVMPowerPCAsmPrinter PowerPCCodeGenTable_gen) diff --git a/lib/Target/PowerPC/InstPrinter/Makefile b/lib/Target/PowerPC/InstPrinter/Makefile new file mode 100644 index 0000000..f097e84 --- /dev/null +++ b/lib/Target/PowerPC/InstPrinter/Makefile @@ -0,0 +1,16 @@ +##===- lib/Target/PowerPC/AsmPrinter/Makefile --------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../../../.. +LIBRARYNAME = LLVMPowerPCAsmPrinter + +# Hack: we need to include 'main' powerpc target directory to grab private headers +CPP.Flags += -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/.. + +include $(LEVEL)/Makefile.common diff --git a/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp new file mode 100644 index 0000000..adb93f2 --- /dev/null +++ b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp @@ -0,0 +1,41 @@ +//===-- PPCInstPrinter.cpp - Convert PPC 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 PPC MCInst to a .s file. +// +//===----------------------------------------------------------------------===// + +#define DEBUG_TYPE "asm-printer" +#include "PPCInstPrinter.h" +#include "llvm/MC/MCInst.h" +//#include "llvm/MC/MCAsmInfo.h" +//#include "llvm/MC/MCExpr.h" +//#include "llvm/ADT/StringExtras.h" +#include "llvm/Support/raw_ostream.h" + +#include "PPCGenRegisterNames.inc" +#include "PPCGenInstrNames.inc" +using namespace llvm; + +#define GET_INSTRUCTION_NAME +#define PPCAsmPrinter PPCInstPrinter +#define MachineInstr MCInst +#include "PPCGenAsmWriter.inc" + +StringRef PPCInstPrinter::getOpcodeName(unsigned Opcode) const { + return getInstructionName(Opcode); +} + + +void PPCInstPrinter::printInst(const MCInst *MI, raw_ostream &O) { + // TODO: pseudo ops. + + printInstruction(MI, O); +} + diff --git a/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h new file mode 100644 index 0000000..1c59e5f --- /dev/null +++ b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h @@ -0,0 +1,67 @@ +//===-- PPCInstPrinter.h - Convert PPC 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 PPC MCInst to a .s file. +// +//===----------------------------------------------------------------------===// + +#ifndef PPCINSTPRINTER_H +#define PPCINSTPRINTER_H + +#include "llvm/MC/MCInstPrinter.h" + +namespace llvm { + class MCOperand; + +class PPCInstPrinter : public MCInstPrinter { +public: + PPCInstPrinter(const MCAsmInfo &MAI) : MCInstPrinter(MAI) {} + + virtual void printInst(const MCInst *MI, raw_ostream &O); + virtual StringRef getOpcodeName(unsigned Opcode) const; + + static const char *getInstructionName(unsigned Opcode); + + // Autogenerated by tblgen. + void printInstruction(const MCInst *MI, raw_ostream &O); + static const char *getRegisterName(unsigned RegNo); + + + void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printPredicateOperand(const MCInst *MI, unsigned OpNo, + raw_ostream &O, const char *Modifier) {} + + + void printS5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printU5ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printU6ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printS16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printU16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printS16X4ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printBranchOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printCallOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printAbsAddrOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + + void printcrbitm(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + + void printMemRegImm(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printMemRegImmShifted(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printMemRegReg(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + + // FIXME: Remove + void PrintSpecial(const MCInst *MI, raw_ostream &O, const char *Modifier) {} + void printSymbolLo(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printSymbolHi(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printPICLabel(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + void printTOCEntryLabel(const MCInst *MI, unsigned OpNo, raw_ostream &O) {} + +}; +} // end namespace llvm + +#endif -- cgit v1.1