From 82bf8bcb4facac36b18208f96b9f99c6f1af9f19 Mon Sep 17 00:00:00 2001 From: Yonghong Song Date: Tue, 13 Mar 2018 06:47:07 +0000 Subject: 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 Signed-off-by: Yonghong Song llvm-svn: 327371 --- llvm/lib/Target/BPF/BPFMIPeephole.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Target/BPF') 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; } -- cgit v1.2.3