Home | History | Annotate | Download | only in SystemZ
      1 //===-- SystemZAsmPrinter.h - SystemZ LLVM assembly printer ----*- C++ -*--===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #ifndef SYSTEMZASMPRINTER_H
     11 #define SYSTEMZASMPRINTER_H
     12 
     13 #include "SystemZTargetMachine.h"
     14 #include "llvm/CodeGen/AsmPrinter.h"
     15 #include "llvm/Support/Compiler.h"
     16 
     17 namespace llvm {
     18 class MCStreamer;
     19 class MachineBasicBlock;
     20 class MachineInstr;
     21 class Module;
     22 class raw_ostream;
     23 
     24 class LLVM_LIBRARY_VISIBILITY SystemZAsmPrinter : public AsmPrinter {
     25 private:
     26   const SystemZSubtarget *Subtarget;
     27 
     28 public:
     29   SystemZAsmPrinter(TargetMachine &TM, MCStreamer &Streamer)
     30     : AsmPrinter(TM, Streamer) {
     31     Subtarget = &TM.getSubtarget<SystemZSubtarget>();
     32   }
     33 
     34   // Override AsmPrinter.
     35   virtual const char *getPassName() const LLVM_OVERRIDE {
     36     return "SystemZ Assembly Printer";
     37   }
     38   virtual void EmitInstruction(const MachineInstr *MI) LLVM_OVERRIDE;
     39   virtual void EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV)
     40     LLVM_OVERRIDE;
     41   virtual bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
     42                                unsigned AsmVariant, const char *ExtraCode,
     43                                raw_ostream &OS) LLVM_OVERRIDE;
     44   virtual bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
     45                                      unsigned AsmVariant,
     46                                      const char *ExtraCode,
     47                                      raw_ostream &OS) LLVM_OVERRIDE;
     48   virtual void EmitEndOfAsmFile(Module &M) LLVM_OVERRIDE;
     49 };
     50 } // end namespace llvm
     51 
     52 #endif
     53