Home | History | Annotate | Download | only in AsmParser
      1 //===- X86AsmInstrumentation.h - Instrument X86 inline assembly *- 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 X86_ASM_INSTRUMENTATION_H
     11 #define X86_ASM_INSTRUMENTATION_H
     12 
     13 #include "llvm/ADT/SmallVector.h"
     14 
     15 #include <memory>
     16 
     17 namespace llvm {
     18 
     19 class MCContext;
     20 class MCInst;
     21 class MCInstrInfo;
     22 class MCParsedAsmOperand;
     23 class MCStreamer;
     24 class MCSubtargetInfo;
     25 class MCTargetOptions;
     26 
     27 class X86AsmInstrumentation;
     28 
     29 X86AsmInstrumentation *
     30 CreateX86AsmInstrumentation(const MCTargetOptions &MCOptions,
     31                             const MCContext &Ctx, const MCSubtargetInfo &STI);
     32 
     33 class X86AsmInstrumentation {
     34 public:
     35   virtual ~X86AsmInstrumentation();
     36 
     37   // Instruments Inst. Should be called just before the original
     38   // instruction is sent to Out.
     39   virtual void InstrumentInstruction(
     40       const MCInst &Inst,
     41       SmallVectorImpl<std::unique_ptr<MCParsedAsmOperand>> &Operands,
     42       MCContext &Ctx, const MCInstrInfo &MII, MCStreamer &Out);
     43 
     44 protected:
     45   friend X86AsmInstrumentation *
     46   CreateX86AsmInstrumentation(const MCTargetOptions &MCOptions,
     47                               const MCContext &Ctx, const MCSubtargetInfo &STI);
     48 
     49   X86AsmInstrumentation();
     50 };
     51 
     52 } // End llvm namespace
     53 
     54 #endif // X86_ASM_INSTRUMENTATION_H
     55