Skip to content

Commit a1f318d

Browse files
committed
add remark
1 parent b06245b commit a1f318d

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

llvm/lib/Target/X86/X86ConditionalCompares.cpp

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@
2121
#include "llvm/ADT/DepthFirstIterator.h"
2222
#include "llvm/ADT/SmallPtrSet.h"
2323
#include "llvm/ADT/Statistic.h"
24+
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
2425
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
2526
#include "llvm/CodeGen/MachineDominators.h"
2627
#include "llvm/CodeGen/MachineFunction.h"
2728
#include "llvm/CodeGen/MachineFunctionPass.h"
2829
#include "llvm/CodeGen/MachineInstrBuilder.h"
2930
#include "llvm/CodeGen/MachineLoopInfo.h"
31+
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
3032
#include "llvm/CodeGen/MachineRegisterInfo.h"
3133
#include "llvm/CodeGen/MachineTraceMetrics.h"
3234
#include "llvm/CodeGen/Passes.h"
@@ -129,6 +131,7 @@ class SSACCmpConv {
129131
const TargetRegisterInfo *TRI;
130132
MachineRegisterInfo *MRI;
131133
const MachineBranchProbabilityInfo *MBPI;
134+
MachineOptimizationRemarkEmitter *ORE;
132135

133136
public:
134137
/// The first block containing a conditional branch, dominating everything
@@ -177,9 +180,11 @@ class SSACCmpConv {
177180
public:
178181
/// runOnMachineFunction - Initialize per-function data structures.
179182
void runOnMachineFunction(MachineFunction &MF,
180-
const MachineBranchProbabilityInfo *MBPI) {
183+
const MachineBranchProbabilityInfo *MBPI,
184+
MachineOptimizationRemarkEmitter *ORE) {
181185
this->MF = &MF;
182186
this->MBPI = MBPI;
187+
this->ORE = ORE;
183188
TII = MF.getSubtarget().getInstrInfo();
184189
TRI = MF.getSubtarget().getRegisterInfo();
185190
MRI = &MF.getRegInfo();
@@ -663,11 +668,17 @@ void SSACCmpConv::convert(SmallVectorImpl<MachineBasicBlock *> &RemovedBlocks) {
663668
unsigned NumDefs = CmpMI->getDesc().getNumDefs();
664669
MachineOperand Op0 = CmpMI->getOperand(NumDefs);
665670
MachineOperand Op1 = CmpMI->getOperand(NumDefs + 1);
666-
BuildMI(*Head, CmpMI, CmpMI->getDebugLoc(), MCID)
671+
DebugLoc DL = CmpMI->getDebugLoc();
672+
BuildMI(*Head, CmpMI, DL, MCID)
667673
.add(Op0)
668674
.add(Op1)
669675
.addImm(X86::getCondFlagsFromCondCode(CmpBBTailCC))
670676
.addImm(HeadCmpBBCC);
677+
ORE->emit([&]() {
678+
MachineOptimizationRemark R(DEBUG_TYPE, "ConvertedCMP", DL, CmpBB);
679+
R << "convert CMP into conditional CMP";
680+
return R;
681+
});
671682
CmpMI->eraseFromParent();
672683
Head->updateTerminator(CmpBB->getNextNode());
673684

@@ -691,6 +702,7 @@ class X86ConditionalCompares : public MachineFunctionPass {
691702
MachineDominatorTree *DomTree = nullptr;
692703
MachineLoopInfo *Loops = nullptr;
693704
MachineTraceMetrics *Traces = nullptr;
705+
MachineOptimizationRemarkEmitter *ORE = nullptr;
694706
SSACCmpConv CmpConv;
695707

696708
public:
@@ -802,9 +814,10 @@ bool X86ConditionalCompares::runOnMachineFunction(MachineFunction &MF) {
802814
Loops = getAnalysisIfAvailable<MachineLoopInfo>();
803815
MBPI = &getAnalysis<MachineBranchProbabilityInfo>();
804816
Traces = &getAnalysis<MachineTraceMetrics>();
817+
ORE = &getAnalysis<MachineOptimizationRemarkEmitterPass>().getORE();
805818

806819
bool Changed = false;
807-
CmpConv.runOnMachineFunction(MF, MBPI);
820+
CmpConv.runOnMachineFunction(MF, MBPI, ORE);
808821

809822
// Visit blocks in dominator tree pre-order. The pre-order enables multiple
810823
// cmp-conversions from the same head block.
@@ -815,5 +828,16 @@ bool X86ConditionalCompares::runOnMachineFunction(MachineFunction &MF) {
815828
if (tryConvert(I->getBlock()))
816829
Changed = true;
817830

831+
if (NumConverted) {
832+
ORE->emit([&]() {
833+
MachineOptimizationRemarkAnalysis R(DEBUG_TYPE, "NumOfCCMP",
834+
MF.getFunction().getSubprogram(),
835+
&MF.front());
836+
R << "generate " << ore::NV("NumConverted", NumConverted)
837+
<< "CCMP in function to eliminate JCC";
838+
return R;
839+
});
840+
}
841+
818842
return Changed;
819843
}

0 commit comments

Comments
 (0)