Lines Matching refs:Out
198 MCStreamer &Out, in InstrumentAndEmitInstruction() argument
200 InstrumentMOVS(Inst, Operands, Ctx, MII, Out); in InstrumentAndEmitInstruction()
202 EmitInstruction(Out, MCInstBuilder(X86::REP_PREFIX)); in InstrumentAndEmitInstruction()
204 InstrumentMOV(Inst, Operands, Ctx, MII, Out); in InstrumentAndEmitInstruction()
208 EmitInstruction(Out, Inst); in InstrumentAndEmitInstruction()
214 MCStreamer &Out) = 0;
219 MCStreamer &Out) = 0;
224 MCContext &Ctx, MCStreamer &Out) = 0;
228 MCContext &Ctx, MCStreamer &Out) = 0;
231 MCStreamer &Out) = 0;
235 MCStreamer &Out);
237 unsigned AccessSize, MCContext &Ctx, MCStreamer &Out);
240 MCContext &Ctx, const MCInstrInfo &MII, MCStreamer &Out);
242 MCContext &Ctx, const MCInstrInfo &MII, MCStreamer &Out);
245 void EmitLabel(MCStreamer &Out, MCSymbol *Label) { Out.EmitLabel(Label); } in EmitLabel() argument
247 void EmitLEA(X86Operand &Op, unsigned Size, unsigned Reg, MCStreamer &Out) { in EmitLEA() argument
253 EmitInstruction(Out, Inst); in EmitLEA()
257 unsigned Reg, MCContext &Ctx, MCStreamer &Out);
294 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperand() argument
300 InstrumentMemOperandSmall(Op, AccessSize, IsWrite, RegCtx, Ctx, Out); in InstrumentMemOperand()
302 InstrumentMemOperandLarge(Op, AccessSize, IsWrite, RegCtx, Ctx, Out); in InstrumentMemOperand()
308 MCContext &Ctx, MCStreamer &Out) { in InstrumentMOVSBase() argument
319 InstrumentMemOperandPrologue(RegCtx, Ctx, Out); in InstrumentMOVSBase()
327 Out); in InstrumentMOVSBase()
337 Out); in InstrumentMOVSBase()
345 InstrumentMemOperand(*Op, AccessSize, true /* IsWrite */, RegCtx, Ctx, Out); in InstrumentMOVSBase()
354 InstrumentMemOperand(*Op, AccessSize, true /* IsWrite */, RegCtx, Ctx, Out); in InstrumentMOVSBase()
357 InstrumentMemOperandEpilogue(RegCtx, Ctx, Out); in InstrumentMOVSBase()
363 MCStreamer &Out) { in InstrumentMOVS() argument
384 InstrumentMOVSImpl(AccessSize, Ctx, Out); in InstrumentMOVS()
390 MCStreamer &Out) { in InstrumentMOV() argument
437 InstrumentMemOperandPrologue(RegCtx, Ctx, Out); in InstrumentMOV()
438 InstrumentMemOperand(MemOp, AccessSize, IsWrite, RegCtx, Ctx, Out); in InstrumentMOV()
439 InstrumentMemOperandEpilogue(RegCtx, Ctx, Out); in InstrumentMOV()
447 MCStreamer &Out) { in ComputeMemOperandAddress() argument
458 EmitLEA(Op, Size, Reg, Out); in ComputeMemOperandAddress()
465 EmitLEA(*NewOp, Size, Reg, Out); in ComputeMemOperandAddress()
473 EmitLEA(*DispOp, Size, Reg, Out); in ComputeMemOperandAddress()
516 unsigned GetFrameReg(const MCContext &Ctx, MCStreamer &Out) { in GetFrameReg() argument
517 unsigned FrameReg = GetFrameRegGeneric(Ctx, Out); in GetFrameReg()
523 void SpillReg(MCStreamer &Out, unsigned Reg) { in SpillReg() argument
524 EmitInstruction(Out, MCInstBuilder(X86::PUSH32r).addReg(Reg)); in SpillReg()
528 void RestoreReg(MCStreamer &Out, unsigned Reg) { in RestoreReg() argument
529 EmitInstruction(Out, MCInstBuilder(X86::POP32r).addReg(Reg)); in RestoreReg()
533 void StoreFlags(MCStreamer &Out) { in StoreFlags() argument
534 EmitInstruction(Out, MCInstBuilder(X86::PUSHF32)); in StoreFlags()
538 void RestoreFlags(MCStreamer &Out) { in RestoreFlags() argument
539 EmitInstruction(Out, MCInstBuilder(X86::POPF32)); in RestoreFlags()
545 MCStreamer &Out) override { in InstrumentMemOperandPrologue() argument
550 unsigned FrameReg = GetFrameReg(Ctx, Out); in InstrumentMemOperandPrologue()
552 SpillReg(Out, LocalFrameReg); in InstrumentMemOperandPrologue()
554 Out.EmitCFIAdjustCfaOffset(4 /* byte size of the LocalFrameReg */); in InstrumentMemOperandPrologue()
555 Out.EmitCFIRelOffset( in InstrumentMemOperandPrologue()
559 Out, in InstrumentMemOperandPrologue()
561 Out.EmitCFIRememberState(); in InstrumentMemOperandPrologue()
562 Out.EmitCFIDefCfaRegister( in InstrumentMemOperandPrologue()
566 SpillReg(Out, RegCtx.AddressReg(32)); in InstrumentMemOperandPrologue()
567 SpillReg(Out, RegCtx.ShadowReg(32)); in InstrumentMemOperandPrologue()
569 SpillReg(Out, RegCtx.ScratchReg(32)); in InstrumentMemOperandPrologue()
570 StoreFlags(Out); in InstrumentMemOperandPrologue()
575 MCStreamer &Out) override { in InstrumentMemOperandEpilogue() argument
579 RestoreFlags(Out); in InstrumentMemOperandEpilogue()
581 RestoreReg(Out, RegCtx.ScratchReg(32)); in InstrumentMemOperandEpilogue()
582 RestoreReg(Out, RegCtx.ShadowReg(32)); in InstrumentMemOperandEpilogue()
583 RestoreReg(Out, RegCtx.AddressReg(32)); in InstrumentMemOperandEpilogue()
585 unsigned FrameReg = GetFrameReg(Ctx, Out); in InstrumentMemOperandEpilogue()
587 RestoreReg(Out, LocalFrameReg); in InstrumentMemOperandEpilogue()
588 Out.EmitCFIRestoreState(); in InstrumentMemOperandEpilogue()
590 Out.EmitCFIAdjustCfaOffset(-4 /* byte size of the LocalFrameReg */); in InstrumentMemOperandEpilogue()
598 MCStreamer &Out) override;
603 MCStreamer &Out) override;
605 MCStreamer &Out) override;
609 MCStreamer &Out, const RegisterContext &RegCtx) { in EmitCallAsanReport() argument
610 EmitInstruction(Out, MCInstBuilder(X86::CLD)); in EmitCallAsanReport()
611 EmitInstruction(Out, MCInstBuilder(X86::MMX_EMMS)); in EmitCallAsanReport()
613 EmitInstruction(Out, MCInstBuilder(X86::AND32ri8) in EmitCallAsanReport()
618 Out, MCInstBuilder(X86::PUSH32r).addReg(RegCtx.AddressReg(32))); in EmitCallAsanReport()
625 EmitInstruction(Out, MCInstBuilder(X86::CALLpcrel32).addExpr(FnExpr)); in EmitCallAsanReport()
631 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandSmall() argument
639 ComputeMemOperandAddress(Op, 32, AddressRegI32, Ctx, Out); in InstrumentMemOperandSmall()
641 EmitInstruction(Out, MCInstBuilder(X86::MOV32rr).addReg(ShadowRegI32).addReg( in InstrumentMemOperandSmall()
643 EmitInstruction(Out, MCInstBuilder(X86::SHR32ri) in InstrumentMemOperandSmall()
657 EmitInstruction(Out, Inst); in InstrumentMemOperandSmall()
661 Out, MCInstBuilder(X86::TEST8rr).addReg(ShadowRegI8).addReg(ShadowRegI8)); in InstrumentMemOperandSmall()
664 EmitInstruction(Out, MCInstBuilder(X86::JE_1).addExpr(DoneExpr)); in InstrumentMemOperandSmall()
666 EmitInstruction(Out, MCInstBuilder(X86::MOV32rr).addReg(ScratchRegI32).addReg( in InstrumentMemOperandSmall()
668 EmitInstruction(Out, MCInstBuilder(X86::AND32ri) in InstrumentMemOperandSmall()
682 EmitLEA(*Op, 32, ScratchRegI32, Out); in InstrumentMemOperandSmall()
686 EmitInstruction(Out, MCInstBuilder(X86::ADD32ri8) in InstrumentMemOperandSmall()
694 Out, in InstrumentMemOperandSmall()
696 EmitInstruction(Out, MCInstBuilder(X86::CMP32rr).addReg(ScratchRegI32).addReg( in InstrumentMemOperandSmall()
698 EmitInstruction(Out, MCInstBuilder(X86::JL_1).addExpr(DoneExpr)); in InstrumentMemOperandSmall()
700 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandSmall()
701 EmitLabel(Out, DoneSym); in InstrumentMemOperandSmall()
706 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandLarge() argument
710 ComputeMemOperandAddress(Op, 32, AddressRegI32, Ctx, Out); in InstrumentMemOperandLarge()
712 EmitInstruction(Out, MCInstBuilder(X86::MOV32rr).addReg(ShadowRegI32).addReg( in InstrumentMemOperandLarge()
714 EmitInstruction(Out, MCInstBuilder(X86::SHR32ri) in InstrumentMemOperandLarge()
735 EmitInstruction(Out, Inst); in InstrumentMemOperandLarge()
739 EmitInstruction(Out, MCInstBuilder(X86::JE_1).addExpr(DoneExpr)); in InstrumentMemOperandLarge()
741 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandLarge()
742 EmitLabel(Out, DoneSym); in InstrumentMemOperandLarge()
747 MCStreamer &Out) { in InstrumentMOVSImpl() argument
748 StoreFlags(Out); in InstrumentMOVSImpl()
754 Out, MCInstBuilder(X86::TEST32rr).addReg(X86::ECX).addReg(X86::ECX)); in InstrumentMOVSImpl()
755 EmitInstruction(Out, MCInstBuilder(X86::JE_1).addExpr(DoneExpr)); in InstrumentMOVSImpl()
759 X86::ECX /* CntReg */, AccessSize, Ctx, Out); in InstrumentMOVSImpl()
761 EmitLabel(Out, DoneSym); in InstrumentMOVSImpl()
762 RestoreFlags(Out); in InstrumentMOVSImpl()
774 unsigned GetFrameReg(const MCContext &Ctx, MCStreamer &Out) { in GetFrameReg() argument
775 unsigned FrameReg = GetFrameRegGeneric(Ctx, Out); in GetFrameReg()
781 void SpillReg(MCStreamer &Out, unsigned Reg) { in SpillReg() argument
782 EmitInstruction(Out, MCInstBuilder(X86::PUSH64r).addReg(Reg)); in SpillReg()
786 void RestoreReg(MCStreamer &Out, unsigned Reg) { in RestoreReg() argument
787 EmitInstruction(Out, MCInstBuilder(X86::POP64r).addReg(Reg)); in RestoreReg()
791 void StoreFlags(MCStreamer &Out) { in StoreFlags() argument
792 EmitInstruction(Out, MCInstBuilder(X86::PUSHF64)); in StoreFlags()
796 void RestoreFlags(MCStreamer &Out) { in RestoreFlags() argument
797 EmitInstruction(Out, MCInstBuilder(X86::POPF64)); in RestoreFlags()
803 MCStreamer &Out) override { in InstrumentMemOperandPrologue() argument
808 unsigned FrameReg = GetFrameReg(Ctx, Out); in InstrumentMemOperandPrologue()
810 SpillReg(Out, X86::RBP); in InstrumentMemOperandPrologue()
812 Out.EmitCFIAdjustCfaOffset(8 /* byte size of the LocalFrameReg */); in InstrumentMemOperandPrologue()
813 Out.EmitCFIRelOffset( in InstrumentMemOperandPrologue()
817 Out, in InstrumentMemOperandPrologue()
819 Out.EmitCFIRememberState(); in InstrumentMemOperandPrologue()
820 Out.EmitCFIDefCfaRegister( in InstrumentMemOperandPrologue()
824 EmitAdjustRSP(Ctx, Out, -128); in InstrumentMemOperandPrologue()
825 SpillReg(Out, RegCtx.ShadowReg(64)); in InstrumentMemOperandPrologue()
826 SpillReg(Out, RegCtx.AddressReg(64)); in InstrumentMemOperandPrologue()
828 SpillReg(Out, RegCtx.ScratchReg(64)); in InstrumentMemOperandPrologue()
829 StoreFlags(Out); in InstrumentMemOperandPrologue()
834 MCStreamer &Out) override { in InstrumentMemOperandEpilogue() argument
838 RestoreFlags(Out); in InstrumentMemOperandEpilogue()
840 RestoreReg(Out, RegCtx.ScratchReg(64)); in InstrumentMemOperandEpilogue()
841 RestoreReg(Out, RegCtx.AddressReg(64)); in InstrumentMemOperandEpilogue()
842 RestoreReg(Out, RegCtx.ShadowReg(64)); in InstrumentMemOperandEpilogue()
843 EmitAdjustRSP(Ctx, Out, 128); in InstrumentMemOperandEpilogue()
845 unsigned FrameReg = GetFrameReg(Ctx, Out); in InstrumentMemOperandEpilogue()
847 RestoreReg(Out, LocalFrameReg); in InstrumentMemOperandEpilogue()
848 Out.EmitCFIRestoreState(); in InstrumentMemOperandEpilogue()
850 Out.EmitCFIAdjustCfaOffset(-8 /* byte size of the LocalFrameReg */); in InstrumentMemOperandEpilogue()
858 MCStreamer &Out) override;
863 MCStreamer &Out) override;
865 MCStreamer &Out) override;
868 void EmitAdjustRSP(MCContext &Ctx, MCStreamer &Out, long Offset) { in EmitAdjustRSP() argument
873 EmitLEA(*Op, 64, X86::RSP, Out); in EmitAdjustRSP()
878 MCStreamer &Out, const RegisterContext &RegCtx) { in EmitCallAsanReport() argument
879 EmitInstruction(Out, MCInstBuilder(X86::CLD)); in EmitCallAsanReport()
880 EmitInstruction(Out, MCInstBuilder(X86::MMX_EMMS)); in EmitCallAsanReport()
882 EmitInstruction(Out, MCInstBuilder(X86::AND64ri8) in EmitCallAsanReport()
888 EmitInstruction(Out, MCInstBuilder(X86::MOV64rr).addReg(X86::RDI).addReg( in EmitCallAsanReport()
896 EmitInstruction(Out, MCInstBuilder(X86::CALL64pcrel32).addExpr(FnExpr)); in EmitCallAsanReport()
904 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandSmall() argument
914 ComputeMemOperandAddress(Op, 64, AddressRegI64, Ctx, Out); in InstrumentMemOperandSmall()
916 EmitInstruction(Out, MCInstBuilder(X86::MOV64rr).addReg(ShadowRegI64).addReg( in InstrumentMemOperandSmall()
918 EmitInstruction(Out, MCInstBuilder(X86::SHR64ri) in InstrumentMemOperandSmall()
931 EmitInstruction(Out, Inst); in InstrumentMemOperandSmall()
935 Out, MCInstBuilder(X86::TEST8rr).addReg(ShadowRegI8).addReg(ShadowRegI8)); in InstrumentMemOperandSmall()
938 EmitInstruction(Out, MCInstBuilder(X86::JE_1).addExpr(DoneExpr)); in InstrumentMemOperandSmall()
940 EmitInstruction(Out, MCInstBuilder(X86::MOV32rr).addReg(ScratchRegI32).addReg( in InstrumentMemOperandSmall()
942 EmitInstruction(Out, MCInstBuilder(X86::AND32ri) in InstrumentMemOperandSmall()
956 EmitLEA(*Op, 32, ScratchRegI32, Out); in InstrumentMemOperandSmall()
960 EmitInstruction(Out, MCInstBuilder(X86::ADD32ri8) in InstrumentMemOperandSmall()
968 Out, in InstrumentMemOperandSmall()
970 EmitInstruction(Out, MCInstBuilder(X86::CMP32rr).addReg(ScratchRegI32).addReg( in InstrumentMemOperandSmall()
972 EmitInstruction(Out, MCInstBuilder(X86::JL_1).addExpr(DoneExpr)); in InstrumentMemOperandSmall()
974 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandSmall()
975 EmitLabel(Out, DoneSym); in InstrumentMemOperandSmall()
980 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandLarge() argument
984 ComputeMemOperandAddress(Op, 64, AddressRegI64, Ctx, Out); in InstrumentMemOperandLarge()
986 EmitInstruction(Out, MCInstBuilder(X86::MOV64rr).addReg(ShadowRegI64).addReg( in InstrumentMemOperandLarge()
988 EmitInstruction(Out, MCInstBuilder(X86::SHR64ri) in InstrumentMemOperandLarge()
1009 EmitInstruction(Out, Inst); in InstrumentMemOperandLarge()
1014 EmitInstruction(Out, MCInstBuilder(X86::JE_1).addExpr(DoneExpr)); in InstrumentMemOperandLarge()
1016 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandLarge()
1017 EmitLabel(Out, DoneSym); in InstrumentMemOperandLarge()
1022 MCStreamer &Out) { in InstrumentMOVSImpl() argument
1023 StoreFlags(Out); in InstrumentMOVSImpl()
1029 Out, MCInstBuilder(X86::TEST64rr).addReg(X86::RCX).addReg(X86::RCX)); in InstrumentMOVSImpl()
1030 EmitInstruction(Out, MCInstBuilder(X86::JE_1).addExpr(DoneExpr)); in InstrumentMOVSImpl()
1034 X86::RCX /* CntReg */, AccessSize, Ctx, Out); in InstrumentMOVSImpl()
1036 EmitLabel(Out, DoneSym); in InstrumentMOVSImpl()
1037 RestoreFlags(Out); in InstrumentMOVSImpl()
1047 const MCInstrInfo &MII, MCStreamer &Out, bool PrintSchedInfoEnabled) { in InstrumentAndEmitInstruction() argument
1048 EmitInstruction(Out, Inst, PrintSchedInfoEnabled); in InstrumentAndEmitInstruction()
1051 void X86AsmInstrumentation::EmitInstruction(MCStreamer &Out, const MCInst &Inst, in EmitInstruction() argument
1053 Out.EmitInstruction(Inst, *STI, PrintSchedInfoEnabled); in EmitInstruction()
1057 MCStreamer &Out) { in GetFrameRegGeneric() argument
1058 if (!Out.getNumFrameInfos()) // No active dwarf frame in GetFrameRegGeneric()
1060 const MCDwarfFrameInfo &Frame = Out.getDwarfFrameInfos().back(); in GetFrameRegGeneric()