diff options
author | Yonghong Song <yhs@fb.com> | 2018-03-13 06:47:07 +0000 |
---|---|---|
committer | Yonghong Song <yhs@fb.com> | 2018-03-13 06:47:07 +0000 |
commit | 82bf8bcb4facac36b18208f96b9f99c6f1af9f19 (patch) | |
tree | 3bdd42e85864290249000a7400a5b72e5500c912 /llvm/lib/Target/BPF | |
parent | e91802f33624f8e747f4128d5ad1dae2bb5d0da3 (diff) | |
download | bcm5719-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.cpp | 20 |
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; } |