Index: lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp =================================================================== --- lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp +++ lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp @@ -437,6 +437,10 @@ // The linux and AIX assembler does not take register prefixes. if (!isDarwinSyntax()) RegName = stripRegisterPrefix(RegName); + + if (FullRegNames && !isDarwinSyntax() && + Op.getReg() != PPC::ZERO && Op.getReg() < PPC::ZERO8) + O << '%'; O << RegName; return; Index: test/CodeGen/PowerPC/reg-names.ll =================================================================== --- test/CodeGen/PowerPC/reg-names.ll +++ test/CodeGen/PowerPC/reg-names.ll @@ -9,7 +9,21 @@ ret i64 %b ; CHECK: mr 3, 4 -; CHECK-FN: mr r3, r4 +; CHECK-FN: mr %r3, %r4 + +; CHECK: blr +; CHECK-FN: blr +} + +define i64 @test2(i64 %a, i64 %b) { +; CHECK-LABEL: @test2 +; CHECK-FN-LABEL: @test2 + +entry: + ret i64 0 + +; CHECK: li 3, 0 +; CHECK-FN: li %r3, 0 ; CHECK: blr ; CHECK-FN: blr