summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/BPF
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2018-03-13 06:47:07 +0000
committerYonghong Song <yhs@fb.com>2018-03-13 06:47:07 +0000
commit82bf8bcb4facac36b18208f96b9f99c6f1af9f19 (patch)
tree3bdd42e85864290249000a7400a5b72e5500c912 /llvm/lib/Target/BPF
parente91802f33624f8e747f4128d5ad1dae2bb5d0da3 (diff)
downloadbcm5719-llvm-82bf8bcb4facac36b18208f96b9f99c6f1af9f19.tar.gz
bcm5719-llvm-82bf8bcb4facac36b18208f96b9f99c6f1af9f19.zip
bpf: Enhance debug information for peephole optimization passes
Add more debug information for peephole optimization passes. These would only be enabled for debug version binary and could help analyzing why some optimization opportunities were missed. Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Yonghong Song <yhs@fb.com> llvm-svn: 327371
Diffstat (limited to 'llvm/lib/Target/BPF')
-rw-r--r--llvm/lib/Target/BPF/BPFMIPeephole.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/llvm/lib/Target/BPF/BPFMIPeephole.cpp b/llvm/lib/Target/BPF/BPFMIPeephole.cpp
index ac13490b3ee..09cc6b31ad8 100644
--- a/llvm/lib/Target/BPF/BPFMIPeephole.cpp
+++ b/llvm/lib/Target/BPF/BPFMIPeephole.cpp
@@ -79,6 +79,9 @@ bool BPFMIPeephole::isMovFrom32Def(MachineInstr *MovMI)
{
MachineInstr *DefInsn = MRI->getVRegDef(MovMI->getOperand(1).getReg());
+ DEBUG(dbgs() << " Def of Mov Src:");
+ DEBUG(DefInsn->dump());
+
if (!DefInsn)
return false;
@@ -108,6 +111,8 @@ bool BPFMIPeephole::isMovFrom32Def(MachineInstr *MovMI)
return false;
}
+ DEBUG(dbgs() << " One ZExt elim sequence identified.\n");
+
return true;
}
@@ -134,21 +139,32 @@ bool BPFMIPeephole::eliminateZExtSeq(void) {
unsigned ShfReg = MI.getOperand(1).getReg();
MachineInstr *SllMI = MRI->getVRegDef(ShfReg);
+ DEBUG(dbgs() << "Starting SRL found:");
+ DEBUG(MI.dump());
+
if (!SllMI ||
SllMI->isPHI() ||
SllMI->getOpcode() != BPF::SLL_ri ||
SllMI->getOperand(2).getImm() != 32)
continue;
+ DEBUG(dbgs() << " SLL found:");
+ DEBUG(SllMI->dump());
+
MachineInstr *MovMI = MRI->getVRegDef(SllMI->getOperand(1).getReg());
if (!MovMI ||
MovMI->isPHI() ||
MovMI->getOpcode() != BPF::MOV_32_64)
continue;
+ DEBUG(dbgs() << " Type cast Mov found:");
+ DEBUG(MovMI->dump());
+
unsigned SubReg = MovMI->getOperand(1).getReg();
- if (!isMovFrom32Def(MovMI))
+ if (!isMovFrom32Def(MovMI)) {
+ DEBUG(dbgs() << " One ZExt elim sequence failed qualifying elim.\n");
continue;
+ }
BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(BPF::SUBREG_TO_REG), DstReg)
.addImm(0).addReg(SubReg).addImm(BPF::sub_32);
@@ -223,6 +239,8 @@ bool BPFMIPreEmitPeephole::eliminateRedundantMov(void) {
for (MachineInstr &MI : MBB) {
// If the previous instruction was marked for elimination, remove it now.
if (ToErase) {
+ DEBUG(dbgs() << " Redundant Mov Eliminated:");
+ DEBUG(ToErase->dump());
ToErase->eraseFromParent();
ToErase = nullptr;
}
OpenPOWER on IntegriCloud