119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman//===-- PTXAsmPrinter.h - Print machine code to a PTX file ----------------===// 219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// 319bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// The LLVM Compiler Infrastructure 419bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// 519bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// This file is distributed under the University of Illinois Open Source 619bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// License. See LICENSE.TXT for details. 719bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// 819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman//===----------------------------------------------------------------------===// 919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// 1019bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// PTX Assembly printer class. 1119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman// 1219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman//===----------------------------------------------------------------------===// 1319bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 1419bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#ifndef PTXASMPRINTER_H 1519bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#define PTXASMPRINTER_H 1619bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 1719bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#include "PTX.h" 1819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#include "PTXTargetMachine.h" 1919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#include "llvm/ADT/StringMap.h" 2019bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#include "llvm/CodeGen/AsmPrinter.h" 2119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#include "llvm/Support/Compiler.h" 2219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 2319bac1e08be200c31efd26f0f5fd144c9b3eefd3John Baumannamespace llvm { 2419bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 2519bac1e08be200c31efd26f0f5fd144c9b3eefd3John Baumanclass MCOperand; 2619bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 2719bac1e08be200c31efd26f0f5fd144c9b3eefd3John Baumanclass LLVM_LIBRARY_VISIBILITY PTXAsmPrinter : public AsmPrinter { 2819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Baumanpublic: 2919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman explicit PTXAsmPrinter(TargetMachine &TM, MCStreamer &Streamer) 3019bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman : AsmPrinter(TM, Streamer) {} 3119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 3219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman const char *getPassName() const { return "PTX Assembly Printer"; } 3319bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 3419bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman bool doFinalization(Module &M); 3519bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 3619bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman virtual void EmitStartOfAsmFile(Module &M); 3719bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman virtual void EmitFunctionBodyStart(); 3819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman virtual void EmitFunctionBodyEnd(); 3919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman virtual void EmitFunctionEntryLabel(); 4019bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman virtual void EmitInstruction(const MachineInstr *MI); 4119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 4219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman unsigned GetOrCreateSourceID(StringRef FileName, 4319bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman StringRef DirName); 4419bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 4519bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol); 4619bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman MCOperand lowerOperand(const MachineOperand &MO); 4719bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 4819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Baumanprivate: 4919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman void EmitVariableDeclaration(const GlobalVariable *gv); 5019bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman void EmitFunctionDeclaration(); 5119bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 5219bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman StringMap<unsigned> SourceIdMap; 5319bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman}; // class PTXAsmPrinter 5419bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman} // namespace llvm 5519bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 5619bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman#endif 5719bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman 58