[PowerPC] Support branch mnemonics with implied CR0

The extended branch mnemonics are supposed to use an implied CR0
if there is no explicit condition register specified.  This patch
adds extra variants of the mnemonics to this effect.

Problem reported by Joerg Sonnenberger.

llvm-svn: 183686
diff --git a/llvm/test/MC/PowerPC/ppc64-encoding-ext.s b/llvm/test/MC/PowerPC/ppc64-encoding-ext.s
index 4395b19..cac76ba 100644
--- a/llvm/test/MC/PowerPC/ppc64-encoding-ext.s
+++ b/llvm/test/MC/PowerPC/ppc64-encoding-ext.s
@@ -14,22 +14,38 @@
          bctrl
 
 # FIXME: bt 2, target
+# FIXME: bt target
 # FIXME: bta 2, target
+# FIXME: bta target
 # FIXME: btlr 2
+# FIXME: btlr
 # FIXME: btctr 2
+# FIXME: btctr
 # FIXME: btl 2, target
+# FIXME: btl target
 # FIXME: btla 2, target
+# FIXME: btla target
 # FIXME: btlrl 2
+# FIXME: btlrl
 # FIXME: btctrl 2
+# FIXME: btctrl
 
 # FIXME: bf 2, target
+# FIXME: bf target
 # FIXME: bfa 2, target
+# FIXME: bfa target
 # FIXME: bflr 2
+# FIXME: bflr
 # FIXME: bfctr 2
+# FIXME: bfctr
 # FIXME: bfl 2, target
+# FIXME: bfl target
 # FIXME: bfla 2, target
+# FIXME: bfla target
 # FIXME: bflrl 2
+# FIXME: bflrl
 # FIXME: bfctrl 2
+# FIXME: bfctrl
 
 # CHECK: bdnz target                     # encoding: [0x42,0x00,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
@@ -42,17 +58,29 @@
 # FIXME: bdnzlrl
 
 # FIXME: bdnzt 2, target
+# FIXME: bdnzt target
 # FIXME: bdnzta 2, target
+# FIXME: bdnzta target
 # FIXME: bdnztlr 2
+# FIXME: bdnztlr
 # FIXME: bdnztl 2, target
+# FIXME: bdnztl target
 # FIXME: bdnztla 2, target
+# FIXME: bdnztla target
 # FIXME: bdnztlrl 2
+# FIXME: bdnztlrl
 # FIXME: bdnzf 2, target
+# FIXME: bdnzf target
 # FIXME: bdnzfa 2, target
+# FIXME: bdnzfa target
 # FIXME: bdnzflr 2
+# FIXME: bdnzflr
 # FIXME: bdnzfl 2, target
+# FIXME: bdnzfl target
 # FIXME: bdnzfla 2, target
+# FIXME: bdnzfla target
 # FIXME: bdnzflrl 2
+# FIXME: bdnzflrl
 
 # CHECK: bdz target                      # encoding: [0x42,0x40,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
@@ -62,188 +90,356 @@
          bdzlr
 # FIXME: bdzl target
 # FIXME: bdzla target
-
 # FIXME: bdzlrl
+
 # FIXME: bdzt 2, target
+# FIXME: bdzt target
 # FIXME: bdzta 2, target
+# FIXME: bdzta target
 # FIXME: bdztlr 2
+# FIXME: bdztlr
 # FIXME: bdztl 2, target
+# FIXME: bdztl target
 # FIXME: bdztla 2, target
+# FIXME: bdztla target
 # FIXME: bdztlrl 2
+# FIXME: bdztlrl
 # FIXME: bdzf 2, target
+# FIXME: bdzf target
 # FIXME: bdzfa 2, target
+# FIXME: bdzfa target
 # FIXME: bdzflr 2
+# FIXME: bdzflr
 # FIXME: bdzfl 2, target
+# FIXME: bdzfl target
 # FIXME: bdzfla 2, target
+# FIXME: bdzfla target
 # FIXME: bdzflrl 2
+# FIXME: bdzflrl
 
 # CHECK: blt 2, target                   # encoding: [0x41,0x88,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          blt 2, target
+# CHECK: blt 0, target                   # encoding: [0x41,0x80,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         blt target
 # FIXME: blta 2, target
+# FIXME: blta target
 # CHECK: bltlr 2                         # encoding: [0x4d,0x88,0x00,0x20]
          bltlr 2
+# CHECK: bltlr 0                         # encoding: [0x4d,0x80,0x00,0x20]
+         bltlr
 # CHECK: bltctr 2                        # encoding: [0x4d,0x88,0x04,0x20]
          bltctr 2
+# CHECK: bltctr 0                        # encoding: [0x4d,0x80,0x04,0x20]
+         bltctr
 # FIXME: bltl 2, target
+# FIXME: bltl target
 # FIXME: bltla 2, target
+# FIXME: bltla target
 # FIXME: bltlrl 2
+# FIXME: bltlrl
 # CHECK: bltctrl 2                       # encoding: [0x4d,0x88,0x04,0x21]
          bltctrl 2
+# CHECK: bltctrl 0                       # encoding: [0x4d,0x80,0x04,0x21]
+         bltctrl
 
 # CHECK: ble 2, target                   # encoding: [0x40,0x89,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          ble 2, target
+# CHECK: ble 0, target                   # encoding: [0x40,0x81,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         ble target
 # FIXME: blea 2, target
+# FIXME: blea target
 # CHECK: blelr 2                         # encoding: [0x4c,0x89,0x00,0x20]
          blelr 2
+# CHECK: blelr 0                         # encoding: [0x4c,0x81,0x00,0x20]
+         blelr
 # CHECK: blectr 2                        # encoding: [0x4c,0x89,0x04,0x20]
          blectr 2
+# CHECK: blectr 0                        # encoding: [0x4c,0x81,0x04,0x20]
+         blectr
 # FIXME: blel 2, target
+# FIXME: blel target
 # FIXME: blela 2, target
+# FIXME: blela target
 # FIXME: blelrl 2
+# FIXME: blelrl
 # CHECK: blectrl 2                       # encoding: [0x4c,0x89,0x04,0x21]
          blectrl 2
+# CHECK: blectrl 0                       # encoding: [0x4c,0x81,0x04,0x21]
+         blectrl
 
 # CHECK: beq 2, target                   # encoding: [0x41,0x8a,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          beq 2, target
+# CHECK: beq 0, target                   # encoding: [0x41,0x82,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         beq target
 # FIXME: beqa 2, target
+# FIXME: beqa target
 # CHECK: beqlr 2                         # encoding: [0x4d,0x8a,0x00,0x20]
          beqlr 2
+# CHECK: beqlr 0                         # encoding: [0x4d,0x82,0x00,0x20]
+         beqlr
 # CHECK: beqctr 2                        # encoding: [0x4d,0x8a,0x04,0x20]
          beqctr 2
+# CHECK: beqctr 0                        # encoding: [0x4d,0x82,0x04,0x20]
+         beqctr
 # FIXME: beql 2, target
+# FIXME: beql target
 # FIXME: beqla 2, target
+# FIXME: beqla target
 # FIXME: beqlrl 2
+# FIXME: beqlrl
 # CHECK: beqctrl 2                       # encoding: [0x4d,0x8a,0x04,0x21]
          beqctrl 2
+# CHECK: beqctrl 0                       # encoding: [0x4d,0x82,0x04,0x21]
+         beqctrl
 
 # CHECK: bge 2, target                   # encoding: [0x40,0x88,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bge 2, target
+# CHECK: bge 0, target                   # encoding: [0x40,0x80,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bge target
 # FIXME: bgea 2, target
+# FIXME: bgea target
 # CHECK: bgelr 2                         # encoding: [0x4c,0x88,0x00,0x20]
          bgelr 2
+# CHECK: bgelr 0                         # encoding: [0x4c,0x80,0x00,0x20]
+         bgelr
 # CHECK: bgectr 2                        # encoding: [0x4c,0x88,0x04,0x20]
          bgectr 2
+# CHECK: bgectr 0                        # encoding: [0x4c,0x80,0x04,0x20]
+         bgectr
 # FIXME: bgel 2, target
+# FIXME: bgel target
 # FIXME: bgela 2, target
+# FIXME: bgela target
 # FIXME: bgelrl 2
+# FIXME: bgelrl
 # CHECK: bgectrl 2                       # encoding: [0x4c,0x88,0x04,0x21]
          bgectrl 2
+# CHECK: bgectrl 0                       # encoding: [0x4c,0x80,0x04,0x21]
+         bgectrl
 
 # CHECK: bgt 2, target                   # encoding: [0x41,0x89,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bgt 2, target
+# CHECK: bgt 0, target                   # encoding: [0x41,0x81,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bgt target
 # FIXME: bgta 2, target
+# FIXME: bgta target
 # CHECK: bgtlr 2                         # encoding: [0x4d,0x89,0x00,0x20]
          bgtlr 2
+# CHECK: bgtlr 0                         # encoding: [0x4d,0x81,0x00,0x20]
+         bgtlr
 # CHECK: bgtctr 2                        # encoding: [0x4d,0x89,0x04,0x20]
          bgtctr 2
+# CHECK: bgtctr 0                        # encoding: [0x4d,0x81,0x04,0x20]
+         bgtctr
 # FIXME: bgtl 2, target
+# FIXME: bgtl target
 # FIXME: bgtla 2, target
+# FIXME: bgtla target
 # FIXME: bgtlrl 2
+# FIXME: bgtlrl
 # CHECK: bgtctrl 2                       # encoding: [0x4d,0x89,0x04,0x21]
          bgtctrl 2
+# CHECK: bgtctrl 0                       # encoding: [0x4d,0x81,0x04,0x21]
+         bgtctrl
 
 # CHECK: bge 2, target                   # encoding: [0x40,0x88,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bnl 2, target
+# CHECK: bge 0, target                   # encoding: [0x40,0x80,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bnl target
 # FIXME: bnla 2, target
+# FIXME: bnla target
 # CHECK: bgelr 2                         # encoding: [0x4c,0x88,0x00,0x20]
          bnllr 2
+# CHECK: bgelr 0                         # encoding: [0x4c,0x80,0x00,0x20]
+         bnllr
 # CHECK: bgectr 2                        # encoding: [0x4c,0x88,0x04,0x20]
          bnlctr 2
+# CHECK: bgectr 0                        # encoding: [0x4c,0x80,0x04,0x20]
+         bnlctr
 # FIXME: bnll 2, target
+# FIXME: bnll target
 # FIXME: bnlla 2, target
+# FIXME: bnlla target
 # FIXME: bnllrl 2
+# FIXME: bnllrl
 # CHECK: bgectrl 2                       # encoding: [0x4c,0x88,0x04,0x21]
          bnlctrl 2
+# CHECK: bgectrl 0                       # encoding: [0x4c,0x80,0x04,0x21]
+         bnlctrl
 
 # CHECK: bne 2, target                   # encoding: [0x40,0x8a,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bne 2, target
+# CHECK: bne 0, target                   # encoding: [0x40,0x82,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bne target
 # FIXME: bnea 2, target
+# FIXME: bnea target
 # CHECK: bnelr 2                         # encoding: [0x4c,0x8a,0x00,0x20]
          bnelr 2
+# CHECK: bnelr 0                         # encoding: [0x4c,0x82,0x00,0x20]
+         bnelr
 # CHECK: bnectr 2                        # encoding: [0x4c,0x8a,0x04,0x20]
          bnectr 2
+# CHECK: bnectr 0                        # encoding: [0x4c,0x82,0x04,0x20]
+         bnectr
 # FIXME: bnel 2, target
+# FIXME: bnel target
 # FIXME: bnela 2, target
+# FIXME: bnela target
 # FIXME: bnelrl 2
+# FIXME: bnelrl
 # CHECK: bnectrl 2                       # encoding: [0x4c,0x8a,0x04,0x21]
          bnectrl 2
+# CHECK: bnectrl 0                       # encoding: [0x4c,0x82,0x04,0x21]
+         bnectrl
 
 # CHECK: ble 2, target                   # encoding: [0x40,0x89,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bng 2, target
+# CHECK: ble 0, target                   # encoding: [0x40,0x81,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bng target
 # FIXME: bnga 2, target
+# FIXME: bnga target
 # CHECK: blelr 2                         # encoding: [0x4c,0x89,0x00,0x20]
          bnglr 2
+# CHECK: blelr 0                         # encoding: [0x4c,0x81,0x00,0x20]
+         bnglr
 # CHECK: blectr 2                        # encoding: [0x4c,0x89,0x04,0x20]
          bngctr 2
+# CHECK: blectr 0                        # encoding: [0x4c,0x81,0x04,0x20]
+         bngctr
 # FIXME: bngl 2, target
+# FIXME: bngl target
 # FIXME: bngla 2, target
+# FIXME: bngla target
 # FIXME: bnglrl 2
+# FIXME: bnglrl
 # CHECK: blectrl 2                       # encoding: [0x4c,0x89,0x04,0x21]
          bngctrl 2
+# CHECK: blectrl 0                       # encoding: [0x4c,0x81,0x04,0x21]
+         bngctrl
 
 # CHECK: bun 2, target                   # encoding: [0x41,0x8b,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bso 2, target
+# CHECK: bun 0, target                   # encoding: [0x41,0x83,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bso target
 # FIXME: bsoa 2, target
+# FIXME: bsoa target
 # CHECK: bunlr 2                         # encoding: [0x4d,0x8b,0x00,0x20]
          bsolr 2
+# CHECK: bunlr 0                         # encoding: [0x4d,0x83,0x00,0x20]
+         bsolr
 # CHECK: bunctr 2                        # encoding: [0x4d,0x8b,0x04,0x20]
          bsoctr 2
+# CHECK: bunctr 0                        # encoding: [0x4d,0x83,0x04,0x20]
+         bsoctr
 # FIXME: bsol 2, target
+# FIXME: bsol target
 # FIXME: bsola 2, target
+# FIXME: bsola target
 # FIXME: bsolrl 2
+# FIXME: bsolrl
 # CHECK: bunctrl 2                       # encoding: [0x4d,0x8b,0x04,0x21]
          bsoctrl 2
+# CHECK: bunctrl 0                       # encoding: [0x4d,0x83,0x04,0x21]
+         bsoctrl
 
 # CHECK: bnu 2, target                   # encoding: [0x40,0x8b,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bns 2, target
+# CHECK: bnu 0, target                   # encoding: [0x40,0x83,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bns target
 # FIXME: bnsa 2, target
+# FIXME: bnsa target
 # CHECK: bnulr 2                         # encoding: [0x4c,0x8b,0x00,0x20]
          bnslr 2
+# CHECK: bnulr 0                         # encoding: [0x4c,0x83,0x00,0x20]
+         bnslr
 # CHECK: bnuctr 2                        # encoding: [0x4c,0x8b,0x04,0x20]
          bnsctr 2
+# CHECK: bnuctr 0                        # encoding: [0x4c,0x83,0x04,0x20]
+         bnsctr
 # FIXME: bnsl 2, target
+# FIXME: bnsl target
 # FIXME: bnsla 2, target
+# FIXME: bnsla target
 # FIXME: bnslrl 2
+# FIXME: bnslrl
 # CHECK: bnuctrl 2                       # encoding: [0x4c,0x8b,0x04,0x21]
          bnsctrl 2
+# CHECK: bnuctrl 0                       # encoding: [0x4c,0x83,0x04,0x21]
+         bnsctrl
 
 # CHECK: bun 2, target                   # encoding: [0x41,0x8b,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bun 2, target
+# CHECK: bun 0, target                   # encoding: [0x41,0x83,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bun target
 # FIXME: buna 2, target
+# FIXME: buna target
 # CHECK: bunlr 2                         # encoding: [0x4d,0x8b,0x00,0x20]
          bunlr 2
+# CHECK: bunlr 0                         # encoding: [0x4d,0x83,0x00,0x20]
+         bunlr
 # CHECK: bunctr 2                        # encoding: [0x4d,0x8b,0x04,0x20]
          bunctr 2
+# CHECK: bunctr 0                        # encoding: [0x4d,0x83,0x04,0x20]
+         bunctr
 # FIXME: bunl 2, target
+# FIXME: bunl target
 # FIXME: bunla 2, target
+# FIXME: bunla target
 # FIXME: bunlrl 2
+# FIXME: bunlrl
 # CHECK: bunctrl 2                       # encoding: [0x4d,0x8b,0x04,0x21]
          bunctrl 2
+# CHECK: bunctrl 0                       # encoding: [0x4d,0x83,0x04,0x21]
+         bunctrl
 
 # CHECK: bnu 2, target                   # encoding: [0x40,0x8b,A,0bAAAAAA00]
 # CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
          bnu 2, target
+# CHECK: bnu 0, target                   # encoding: [0x40,0x83,A,0bAAAAAA00]
+# CHECK-NEXT:                            #   fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
+         bnu target
 # FIXME: bnua 2, target
+# FIXME: bnua target
 # CHECK: bnulr 2                         # encoding: [0x4c,0x8b,0x00,0x20]
          bnulr 2
+# CHECK: bnulr 0                         # encoding: [0x4c,0x83,0x00,0x20]
+         bnulr
 # CHECK: bnuctr 2                        # encoding: [0x4c,0x8b,0x04,0x20]
          bnuctr 2
+# CHECK: bnuctr 0                        # encoding: [0x4c,0x83,0x04,0x20]
+         bnuctr
 # FIXME: bnul 2, target
+# FIXME: bnul target
 # FIXME: bnula 2, target
+# FIXME: bnula target
 # FIXME: bnulrl 2
+# FIXME: bnulrl
 # CHECK: bnuctrl 2                       # encoding: [0x4c,0x8b,0x04,0x21]
          bnuctrl 2
+# CHECK: bnuctrl 0                       # encoding: [0x4c,0x83,0x04,0x21]
+         bnuctrl
 
 # FIXME: Condition register logical mnemonics