[llvm] r320837 - Fix for bug PR35549 - Repeated schedule comments.
Andrew V. Tischenko via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 15 10:13:05 PST 2017
Author: avt77
Date: Fri Dec 15 10:13:05 2017
New Revision: 320837
URL: http://llvm.org/viewvc/llvm-project?rev=320837&view=rev
Log:
Fix for bug PR35549 - Repeated schedule comments.
Differential Revision: https://reviews.llvm.org/D40960
Modified:
llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
llvm/trunk/lib/Target/X86/X86MCInstLower.cpp
llvm/trunk/test/CodeGen/X86/avx512-schedule.ll
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=320837&r1=320836&r2=320837&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Fri Dec 15 10:13:05 2017
@@ -722,7 +722,9 @@ void AsmPrinter::EmitFunctionEntryLabel(
}
/// emitComments - Pretty-print comments for instructions.
-static void emitComments(const MachineInstr &MI, raw_ostream &CommentOS,
+/// It returns true iff the sched comment was emitted.
+/// Otherwise it returns false.
+static bool emitComments(const MachineInstr &MI, raw_ostream &CommentOS,
AsmPrinter *AP) {
const MachineFunction *MF = MI.getMF();
const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
@@ -766,12 +768,16 @@ static void emitComments(const MachineIn
CommentOS << " Reload Reuse";
}
- if (Commented && AP->EnablePrintSchedInfo)
- // If any comment was added above and we need sched info comment then
- // add this new comment just after the above comment w/o "\n" between them.
- CommentOS << " " << MF->getSubtarget().getSchedInfoStr(MI) << "\n";
- else if (Commented)
+ if (Commented) {
+ if (AP->EnablePrintSchedInfo) {
+ // If any comment was added above and we need sched info comment then add
+ // this new comment just after the above comment w/o "\n" between them.
+ CommentOS << " " << MF->getSubtarget().getSchedInfoStr(MI) << "\n";
+ return true;
+ }
CommentOS << "\n";
+ }
+ return false;
}
/// emitImplicitDef - This method emits the specified machine instruction
@@ -1013,8 +1019,10 @@ void AsmPrinter::EmitFunctionBody() {
}
}
- if (isVerbose())
- emitComments(MI, OutStreamer->GetCommentOS(), this);
+ if (isVerbose() && emitComments(MI, OutStreamer->GetCommentOS(), this)) {
+ MachineInstr *MIP = const_cast<MachineInstr *>(&MI);
+ MIP->setAsmPrinterFlag(MachineInstr::NoSchedComment);
+ }
switch (MI.getOpcode()) {
case TargetOpcode::CFI_INSTRUCTION:
Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h?rev=320837&r1=320836&r2=320837&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h (original)
+++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86BaseInfo.h Fri Dec 15 10:13:05 2017
@@ -59,7 +59,9 @@ namespace X86 {
IP_HAS_AD_SIZE = 2,
IP_HAS_REPEAT_NE = 4,
IP_HAS_REPEAT = 8,
- IP_HAS_LOCK = 16
+ IP_HAS_LOCK = 16,
+ NO_SCHED_INFO = 32 // Don't add sched comment to the current instr because
+ // it was already added
};
} // end namespace X86;
Modified: llvm/trunk/lib/Target/X86/X86MCInstLower.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MCInstLower.cpp?rev=320837&r1=320836&r2=320837&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86MCInstLower.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86MCInstLower.cpp Fri Dec 15 10:13:05 2017
@@ -100,7 +100,9 @@ void X86AsmPrinter::StackMapShadowTracke
}
void X86AsmPrinter::EmitAndCountInstruction(MCInst &Inst) {
- OutStreamer->EmitInstruction(Inst, getSubtargetInfo(), EnablePrintSchedInfo);
+ OutStreamer->EmitInstruction(Inst, getSubtargetInfo(),
+ EnablePrintSchedInfo &&
+ !(Inst.getFlags() & X86::NO_SCHED_INFO));
SMShadowTracker.count(Inst, getSubtargetInfo(), CodeEmitter.get());
}
@@ -2000,6 +2002,8 @@ void X86AsmPrinter::EmitInstruction(cons
MCInst TmpInst;
MCInstLowering.Lower(MI, TmpInst);
+ if (MI->getAsmPrinterFlag(MachineInstr::NoSchedComment))
+ TmpInst.setFlags(TmpInst.getFlags() | X86::NO_SCHED_INFO);
// Stackmap shadows cannot include branch targets, so we can count the bytes
// in a call towards the shadow, but must ensure that the no thread returns
Modified: llvm/trunk/test/CodeGen/X86/avx512-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-schedule.ll?rev=320837&r1=320836&r2=320837&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/avx512-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/avx512-schedule.ll Fri Dec 15 10:13:05 2017
@@ -8811,10 +8811,8 @@ define <16 x float> @broadcast_ss_spill(
; GENERIC-NEXT: .cfi_def_cfa_offset 32
; GENERIC-NEXT: vaddss %xmm0, %xmm0, %xmm0 # sched: [3:1.00]
; GENERIC-NEXT: vmovaps %xmm0, (%rsp) # 16-byte Spill sched: [5:1.00]
-; GENERIC-NEXT: # sched: [5:1.00]
; GENERIC-NEXT: callq func_f32
; GENERIC-NEXT: vbroadcastss (%rsp), %zmm0 # 16-byte Folded Reload sched: [5:1.00]
-; GENERIC-NEXT: # sched: [5:1.00]
; GENERIC-NEXT: addq $24, %rsp # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@@ -8824,10 +8822,8 @@ define <16 x float> @broadcast_ss_spill(
; SKX-NEXT: .cfi_def_cfa_offset 32
; SKX-NEXT: vaddss %xmm0, %xmm0, %xmm0 # sched: [4:0.33]
; SKX-NEXT: vmovaps %xmm0, (%rsp) # 16-byte Spill sched: [1:1.00]
-; SKX-NEXT: # sched: [1:1.00]
; SKX-NEXT: callq func_f32
; SKX-NEXT: vbroadcastss (%rsp), %zmm0 # 16-byte Folded Reload sched: [8:0.50]
-; SKX-NEXT: # sched: [8:0.50]
; SKX-NEXT: addq $24, %rsp # sched: [1:0.25]
; SKX-NEXT: retq # sched: [7:1.00]
%a = fadd float %x, %x
@@ -8845,10 +8841,8 @@ define <8 x double> @broadcast_sd_spill(
; GENERIC-NEXT: .cfi_def_cfa_offset 32
; GENERIC-NEXT: vaddsd %xmm0, %xmm0, %xmm0 # sched: [3:1.00]
; GENERIC-NEXT: vmovapd %xmm0, (%rsp) # 16-byte Spill sched: [5:1.00]
-; GENERIC-NEXT: # sched: [5:1.00]
; GENERIC-NEXT: callq func_f64
; GENERIC-NEXT: vbroadcastsd (%rsp), %zmm0 # 16-byte Folded Reload sched: [5:1.00]
-; GENERIC-NEXT: # sched: [5:1.00]
; GENERIC-NEXT: addq $24, %rsp # sched: [1:0.33]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
@@ -8858,10 +8852,8 @@ define <8 x double> @broadcast_sd_spill(
; SKX-NEXT: .cfi_def_cfa_offset 32
; SKX-NEXT: vaddsd %xmm0, %xmm0, %xmm0 # sched: [4:0.33]
; SKX-NEXT: vmovapd %xmm0, (%rsp) # 16-byte Spill sched: [1:1.00]
-; SKX-NEXT: # sched: [1:1.00]
; SKX-NEXT: callq func_f64
; SKX-NEXT: vbroadcastsd (%rsp), %zmm0 # 16-byte Folded Reload sched: [8:0.50]
-; SKX-NEXT: # sched: [8:0.50]
; SKX-NEXT: addq $24, %rsp # sched: [1:0.25]
; SKX-NEXT: retq # sched: [7:1.00]
%a = fadd double %x, %x
More information about the llvm-commits
mailing list