bpf: print backward branch target properly
authorYonghong Song <yhs@fb.com>
Thu, 16 Nov 2017 19:15:36 +0000 (19:15 +0000)
committerYonghong Song <yhs@fb.com>
Thu, 16 Nov 2017 19:15:36 +0000 (19:15 +0000)
commitce96738dee560a9a3ad08301860d1483df3356d4
treeb6f467eeb92a8d43b61221e6c2fcc053d5634556
parent1eaf300faced614c63cb2ff5c683fffdd3a2935b
bpf: print backward branch target properly

Currently, it prints the backward branch offset as unsigned value
like below:
       7:       7d 34 0b 00 00 00 00 00         if r4 s>= r3 goto 11 <LBB0_3>
       8:       b7 00 00 00 00 00 00 00         r0 = 0
LBB0_2:
       9:       07 00 00 00 01 00 00 00         r0 += 1
      ......
      17:       bf 31 00 00 00 00 00 00         r1 = r3
      18:       6d 32 f6 ff 00 00 00 00         if r2 s> r3 goto 65526 <LBB0_3+0x7FFB0>

The correct print insn 18 should be:
      18:       6d 32 f6 ff 00 00 00 00         if r2 s> r3 goto -10 <LBB0_2>

To provide better clarity and be consistent with kernel verifier output,
the insn 7 output is changed to the following with "+" added to
non-negative branch offset:
       7:       7d 34 0b 00 00 00 00 00         if r4 s>= r3 goto +11 <LBB0_3>

Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 318442
llvm/lib/Target/BPF/BPFInstrInfo.td
llvm/lib/Target/BPF/InstPrinter/BPFInstPrinter.cpp
llvm/lib/Target/BPF/InstPrinter/BPFInstPrinter.h
llvm/lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.cpp
llvm/test/CodeGen/BPF/objdump_cond_op.ll
llvm/test/CodeGen/BPF/objdump_cond_op_2.ll [new file with mode: 0644]
llvm/test/MC/BPF/insn-unit.s