Commit 8b39341f authored by Sean Fertile's avatar Sean Fertile
Browse files

[PowerPC][AIX] Fix printing of program counter for AIX assembly.

Program counter on AIX is the dollar-sign.

Differential Revision:https://reviews.llvm.org/D75627
parent e3fc6b3c
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -419,8 +419,13 @@ void PPCInstPrinter::printBranchOperand(const MCInst *MI, unsigned OpNo,
    return printOperand(MI, OpNo, O);

  // Branches can take an immediate operand. This is used by the branch
  // selection pass to print .+8, an eight byte displacement from the PC.
  // selection pass to print, for example `.+8` (for ELF) or `$+8` (for AIX) to
  // express an eight byte displacement from the program counter.
  if (!TT.isOSAIX())
    O << ".";
  else
    O << "$";

  int32_t Imm = SignExtend32<32>((unsigned)MI->getOperand(OpNo).getImm() << 2);
  if (Imm >= 0)
    O << "+";
+31 −0
Original line number Diff line number Diff line
# RUN: llc -x mir -mtriple powerpc-unknown-aix-xcoff --verify-machineinstrs \
# RUN: -start-before=ppc-branch-select < %s | FileCheck %s
#
# RUN: llc -x mir -mtriple powerpc64-unknown-aix-xcoff --verify-machineinstrs \
# RUN: -start-before=ppc-branch-select < %s | FileCheck %s

# Test uses a long branch to force printing of a branch that uses the program
# counter as an operand. ($PC + 8)

---
name:            print_program_counter
machineFunctionInfo: {}
body:             |
  bb.0.entry:
    successors: %bb.1(0x30000000), %bb.2(0x50000000)
    liveins: $r3
    renamable $cr0 = CMPLWI killed renamable $r3, 0
    BCC 76, killed renamable $cr0, %bb.1
  bb.2:
    renamable $r3 = LI 2
    INLINEASM &".space 32760", 1
    BLR implicit $lr, implicit $rm, implicit killed $r3
  bb.1:
    renamable $r3 = LI 1
    INLINEASM &".space 32760", 1
    BLR implicit $lr, implicit $rm, implicit killed $r3

# CHECK-LABEL: .print_program_counter:
# CHECK:         cmplwi
# CHECK-NEXT:    bne    {{[0-9]}}, $+8