[PowerPC] Add t/f branch mnemonics to asm parser

This adds the bt/bf/bd(n)zt/bd(n)zf mnemonics as aliases for the
asm parser, resolving to the generic conditional patterns.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184725 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ulrich Weigand 2013-06-24 12:49:20 +00:00
parent bc7c58d2b1
commit 48473a8de5
2 changed files with 126 additions and 80 deletions

View File

@ -2270,6 +2270,26 @@ def : InstAlias<"bclrl $bo, $bi", (gBCLRL u5imm:$bo, crbitrc:$bi, 0)>;
def : InstAlias<"bcctr $bo, $bi", (gBCCTR u5imm:$bo, crbitrc:$bi, 0)>;
def : InstAlias<"bcctrl $bo, $bi", (gBCCTRL u5imm:$bo, crbitrc:$bi, 0)>;
multiclass BranchSimpleMnemonic1<string name, int bo> {
def : InstAlias<"b"#name#" $bi, $dst", (gBC bo, crbitrc:$bi, condbrtarget:$dst)>;
def : InstAlias<"b"#name#"a $bi, $dst", (gBCA bo, crbitrc:$bi, abscondbrtarget:$dst)>;
def : InstAlias<"b"#name#"lr $bi", (gBCLR bo, crbitrc:$bi, 0)>;
def : InstAlias<"b"#name#"l $bi, $dst", (gBCL bo, crbitrc:$bi, condbrtarget:$dst)>;
def : InstAlias<"b"#name#"la $bi, $dst", (gBCLA bo, crbitrc:$bi, abscondbrtarget:$dst)>;
def : InstAlias<"b"#name#"lrl $bi", (gBCLRL bo, crbitrc:$bi, 0)>;
}
multiclass BranchSimpleMnemonic2<string name, int bo>
: BranchSimpleMnemonic1<name, bo> {
def : InstAlias<"b"#name#"ctr $bi", (gBCCTR bo, crbitrc:$bi, 0)>;
def : InstAlias<"b"#name#"ctrl $bi", (gBCCTRL bo, crbitrc:$bi, 0)>;
}
defm : BranchSimpleMnemonic2<"t", 12>;
defm : BranchSimpleMnemonic2<"f", 4>;
defm : BranchSimpleMnemonic1<"dnzt", 8>;
defm : BranchSimpleMnemonic1<"dnzf", 0>;
defm : BranchSimpleMnemonic1<"dzt", 10>;
defm : BranchSimpleMnemonic1<"dzf", 2>;
multiclass BranchExtendedMnemonic<string name, int bibo> {
def : InstAlias<"b"#name#" $cc, $dst",
(BCC bibo, crrc:$cc, condbrtarget:$dst)>;

View File

@ -14,39 +14,47 @@
# CHECK: bctrl # encoding: [0x4e,0x80,0x04,0x21]
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
# CHECK: bc 12, 2, target # encoding: [0x41,0x82,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bt 2, target
# CHECK: bca 12, 2, target # encoding: [0x41,0x82,A,0bAAAAAA10]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bta 2, target
# CHECK: bclr 12, 2, 0 # encoding: [0x4d,0x82,0x00,0x20]
btlr 2
# CHECK: bcctr 12, 2, 0 # encoding: [0x4d,0x82,0x04,0x20]
btctr 2
# CHECK: bcl 12, 2, target # encoding: [0x41,0x82,A,0bAAAAAA01]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
btl 2, target
# CHECK: bcla 12, 2, target # encoding: [0x41,0x82,A,0bAAAAAA11]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
btla 2, target
# CHECK: bclrl 12, 2, 0 # encoding: [0x4d,0x82,0x00,0x21]
btlrl 2
# CHECK: bcctrl 12, 2, 0 # encoding: [0x4d,0x82,0x04,0x21]
btctrl 2
# 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: bc 4, 2, target # encoding: [0x40,0x82,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bf 2, target
# CHECK: bca 4, 2, target # encoding: [0x40,0x82,A,0bAAAAAA10]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bfa 2, target
# CHECK: bclr 4, 2, 0 # encoding: [0x4c,0x82,0x00,0x20]
bflr 2
# CHECK: bcctr 4, 2, 0 # encoding: [0x4c,0x82,0x04,0x20]
bfctr 2
# CHECK: bcl 4, 2, target # encoding: [0x40,0x82,A,0bAAAAAA01]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bfl 2, target
# CHECK: bcla 4, 2, target # encoding: [0x40,0x82,A,0bAAAAAA11]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bfla 2, target
# CHECK: bclrl 4, 2, 0 # encoding: [0x4c,0x82,0x00,0x21]
bflrl 2
# CHECK: bcctrl 4, 2, 0 # encoding: [0x4c,0x82,0x04,0x21]
bfctrl 2
# CHECK: bdnz target # encoding: [0x42,0x00,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
@ -65,30 +73,39 @@
# CHECK: bdnzlrl # encoding: [0x4e,0x00,0x00,0x21]
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: bc 8, 2, target # encoding: [0x41,0x02,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdnzt 2, target
# CHECK: bca 8, 2, target # encoding: [0x41,0x02,A,0bAAAAAA10]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdnzta 2, target
# CHECK: bclr 8, 2, 0 # encoding: [0x4d,0x02,0x00,0x20]
bdnztlr 2
# CHECK: bcl 8, 2, target # encoding: [0x41,0x02,A,0bAAAAAA01]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdnztl 2, target
# CHECK: bcla 8, 2, target # encoding: [0x41,0x02,A,0bAAAAAA11]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdnztla 2, target
# CHECK: bclrl 8, 2, 0 # encoding: [0x4d,0x02,0x00,0x21]
bdnztlrl 2
# CHECK: bc 0, 2, target # encoding: [0x40,0x02,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdnzf 2, target
# CHECK: bca 0, 2, target # encoding: [0x40,0x02,A,0bAAAAAA10]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdnzfa 2, target
# CHECK: bclr 0, 2, 0 # encoding: [0x4c,0x02,0x00,0x20]
bdnzflr 2
# CHECK: bcl 0, 2, target # encoding: [0x40,0x02,A,0bAAAAAA01]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdnzfl 2, target
# CHECK: bcla 0, 2, target # encoding: [0x40,0x02,A,0bAAAAAA11]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdnzfla 2, target
# CHECK: bclrl 0, 2, 0 # encoding: [0x4c,0x02,0x00,0x21]
bdnzflrl 2
# CHECK: bdz target # encoding: [0x42,0x40,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
@ -107,30 +124,39 @@
# CHECK: bdzlrl # encoding: [0x4e,0x40,0x00,0x21]
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: bc 10, 2, target # encoding: [0x41,0x42,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdzt 2, target
# CHECK: bca 10, 2, target # encoding: [0x41,0x42,A,0bAAAAAA10]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdzta 2, target
# CHECK: bclr 10, 2, 0 # encoding: [0x4d,0x42,0x00,0x20]
bdztlr 2
# CHECK: bcl 10, 2, target # encoding: [0x41,0x42,A,0bAAAAAA01]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdztl 2, target
# CHECK: bcla 10, 2, target # encoding: [0x41,0x42,A,0bAAAAAA11]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdztla 2, target
# CHECK: bclrl 10, 2, 0 # encoding: [0x4d,0x42,0x00,0x21]
bdztlrl 2
# CHECK: bc 2, 2, target # encoding: [0x40,0x42,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdzf 2, target
# CHECK: bca 2, 2, target # encoding: [0x40,0x42,A,0bAAAAAA10]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdzfa 2, target
# CHECK: bclr 2, 2, 0 # encoding: [0x4c,0x42,0x00,0x20]
bdzflr 2
# CHECK: bcl 2, 2, target # encoding: [0x40,0x42,A,0bAAAAAA01]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14
bdzfl 2, target
# CHECK: bcla 2, 2, target # encoding: [0x40,0x42,A,0bAAAAAA11]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs
bdzfla 2, target
# CHECK: bclrl 2, 2, 0 # encoding: [0x4c,0x42,0x00,0x21]
bdzflrl 2
# CHECK: blt 2, target # encoding: [0x41,0x88,A,0bAAAAAA00]
# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14