diff options
| author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2013-06-24 11:03:33 +0000 |
|---|---|---|
| committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2013-06-24 11:03:33 +0000 |
| commit | b6a30d159e3e2e322a422c4c31c6d379ff299811 (patch) | |
| tree | 3622a99b1197a25061448cdefcf64352028a4bd7 /llvm/test | |
| parent | 5b9d591ad108653cb4d696da2bda023ddbb51501 (diff) | |
| download | bcm5719-llvm-b6a30d159e3e2e322a422c4c31c6d379ff299811.tar.gz bcm5719-llvm-b6a30d159e3e2e322a422c4c31c6d379ff299811.zip | |
[PowerPC] Support absolute branches
There is currently only limited support for the "absolute" variants
of branch instructions. This patch adds support for the absolute
variants of all branches that are currently otherwise supported.
This requires adding new fixup types so that the correct variant
of relocation type can be selected by the object writer.
While the compiler will continue to usually choose the relative
branch variants, this will allow the asm parser to fully support
the absolute branches, with either immediate (numerical) or
symbolic target addresses.
No change in code generation intended.
llvm-svn: 184721
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/MC/PowerPC/ppc64-encoding-ext.s | 208 | ||||
| -rw-r--r-- | llvm/test/MC/PowerPC/ppc64-encoding.s | 8 | ||||
| -rw-r--r-- | llvm/test/MC/PowerPC/ppc64-fixups.s | 20 | ||||
| -rw-r--r-- | llvm/test/MC/PowerPC/ppc64-operands.s | 15 |
4 files changed, 197 insertions, 54 deletions
diff --git a/llvm/test/MC/PowerPC/ppc64-encoding-ext.s b/llvm/test/MC/PowerPC/ppc64-encoding-ext.s index 9ca8199de9d..09fdd458ab8 100644 --- a/llvm/test/MC/PowerPC/ppc64-encoding-ext.s +++ b/llvm/test/MC/PowerPC/ppc64-encoding-ext.s @@ -51,13 +51,17 @@ # CHECK: bdnz target # encoding: [0x42,0x00,A,0bAAAAAA00] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bdnz target -# FIXME: bdnza target +# CHECK: bdnza target # encoding: [0x42,0x00,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bdnza target # CHECK: bdnzlr # encoding: [0x4e,0x00,0x00,0x20] bdnzlr # CHECK: bdnzl target # encoding: [0x42,0x00,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bdnzl target -# FIXME: bdnzla target +# CHECK: bdnzla target # encoding: [0x42,0x00,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bdnzla target # CHECK: bdnzlrl # encoding: [0x4e,0x00,0x00,0x21] bdnzlrl @@ -89,13 +93,17 @@ # CHECK: bdz target # encoding: [0x42,0x40,A,0bAAAAAA00] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bdz target -# FIXME: bdza target +# CHECK: bdza target # encoding: [0x42,0x40,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bdza target # CHECK: bdzlr # encoding: [0x4e,0x40,0x00,0x20] bdzlr # CHECK: bdzl target # encoding: [0x42,0x40,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bdzl target -# FIXME: bdzla target +# CHECK: bdzla target # encoding: [0x42,0x40,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bdzla target # CHECK: bdzlrl # encoding: [0x4e,0x40,0x00,0x21] bdzlrl @@ -130,8 +138,12 @@ # 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: blta 2, target # encoding: [0x41,0x88,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + blta 2, target +# CHECK: blta 0, target # encoding: [0x41,0x80,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + blta target # CHECK: bltlr 2 # encoding: [0x4d,0x88,0x00,0x20] bltlr 2 # CHECK: bltlr 0 # encoding: [0x4d,0x80,0x00,0x20] @@ -146,8 +158,12 @@ # CHECK: bltl 0, target # encoding: [0x41,0x80,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bltl target -# FIXME: bltla 2, target -# FIXME: bltla target +# CHECK: bltla 2, target # encoding: [0x41,0x88,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bltla 2, target +# CHECK: bltla 0, target # encoding: [0x41,0x80,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bltla target # CHECK: bltlrl 2 # encoding: [0x4d,0x88,0x00,0x21] bltlrl 2 # CHECK: bltlrl 0 # encoding: [0x4d,0x80,0x00,0x21] @@ -163,8 +179,12 @@ # 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: blea 2, target # encoding: [0x40,0x89,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + blea 2, target +# CHECK: blea 0, target # encoding: [0x40,0x81,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + blea target # CHECK: blelr 2 # encoding: [0x4c,0x89,0x00,0x20] blelr 2 # CHECK: blelr 0 # encoding: [0x4c,0x81,0x00,0x20] @@ -179,8 +199,12 @@ # CHECK: blel 0, target # encoding: [0x40,0x81,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 blel target -# FIXME: blela 2, target -# FIXME: blela target +# CHECK: blela 2, target # encoding: [0x40,0x89,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + blela 2, target +# CHECK: blela 0, target # encoding: [0x40,0x81,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + blela target # CHECK: blelrl 2 # encoding: [0x4c,0x89,0x00,0x21] blelrl 2 # CHECK: blelrl 0 # encoding: [0x4c,0x81,0x00,0x21] @@ -196,8 +220,12 @@ # 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: beqa 2, target # encoding: [0x41,0x8a,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + beqa 2, target +# CHECK: beqa 0, target # encoding: [0x41,0x82,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + beqa target # CHECK: beqlr 2 # encoding: [0x4d,0x8a,0x00,0x20] beqlr 2 # CHECK: beqlr 0 # encoding: [0x4d,0x82,0x00,0x20] @@ -212,8 +240,12 @@ # CHECK: beql 0, target # encoding: [0x41,0x82,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 beql target -# FIXME: beqla 2, target -# FIXME: beqla target +# CHECK: beqla 2, target # encoding: [0x41,0x8a,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + beqla 2, target +# CHECK: beqla 0, target # encoding: [0x41,0x82,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + beqla target # CHECK: beqlrl 2 # encoding: [0x4d,0x8a,0x00,0x21] beqlrl 2 # CHECK: beqlrl 0 # encoding: [0x4d,0x82,0x00,0x21] @@ -229,8 +261,12 @@ # 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: bgea 2, target # encoding: [0x40,0x88,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgea 2, target +# CHECK: bgea 0, target # encoding: [0x40,0x80,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgea target # CHECK: bgelr 2 # encoding: [0x4c,0x88,0x00,0x20] bgelr 2 # CHECK: bgelr 0 # encoding: [0x4c,0x80,0x00,0x20] @@ -245,8 +281,12 @@ # CHECK: bgel 0, target # encoding: [0x40,0x80,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bgel target -# FIXME: bgela 2, target -# FIXME: bgela target +# CHECK: bgela 2, target # encoding: [0x40,0x88,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgela 2, target +# CHECK: bgela 0, target # encoding: [0x40,0x80,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgela target # CHECK: bgelrl 2 # encoding: [0x4c,0x88,0x00,0x21] bgelrl 2 # CHECK: bgelrl 0 # encoding: [0x4c,0x80,0x00,0x21] @@ -262,8 +302,12 @@ # 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: bgta 2, target # encoding: [0x41,0x89,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgta 2, target +# CHECK: bgta 0, target # encoding: [0x41,0x81,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgta target # CHECK: bgtlr 2 # encoding: [0x4d,0x89,0x00,0x20] bgtlr 2 # CHECK: bgtlr 0 # encoding: [0x4d,0x81,0x00,0x20] @@ -278,8 +322,12 @@ # CHECK: bgtl 0, target # encoding: [0x41,0x81,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bgtl target -# FIXME: bgtla 2, target -# FIXME: bgtla target +# CHECK: bgtla 2, target # encoding: [0x41,0x89,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgtla 2, target +# CHECK: bgtla 0, target # encoding: [0x41,0x81,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bgtla target # CHECK: bgtlrl 2 # encoding: [0x4d,0x89,0x00,0x21] bgtlrl 2 # CHECK: bgtlrl 0 # encoding: [0x4d,0x81,0x00,0x21] @@ -295,8 +343,12 @@ # 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: bgea 2, target # encoding: [0x40,0x88,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnla 2, target +# CHECK: bgea 0, target # encoding: [0x40,0x80,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnla target # CHECK: bgelr 2 # encoding: [0x4c,0x88,0x00,0x20] bnllr 2 # CHECK: bgelr 0 # encoding: [0x4c,0x80,0x00,0x20] @@ -311,8 +363,12 @@ # CHECK: bgel 0, target # encoding: [0x40,0x80,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bnll target -# FIXME: bnlla 2, target -# FIXME: bnlla target +# CHECK: bgela 2, target # encoding: [0x40,0x88,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnlla 2, target +# CHECK: bgela 0, target # encoding: [0x40,0x80,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnlla target # CHECK: bgelrl 2 # encoding: [0x4c,0x88,0x00,0x21] bnllrl 2 # CHECK: bgelrl 0 # encoding: [0x4c,0x80,0x00,0x21] @@ -328,8 +384,12 @@ # 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: bnea 2, target # encoding: [0x40,0x8a,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnea 2, target +# CHECK: bnea 0, target # encoding: [0x40,0x82,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnea target # CHECK: bnelr 2 # encoding: [0x4c,0x8a,0x00,0x20] bnelr 2 # CHECK: bnelr 0 # encoding: [0x4c,0x82,0x00,0x20] @@ -344,8 +404,12 @@ # CHECK: bnel 0, target # encoding: [0x40,0x82,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bnel target -# FIXME: bnela 2, target -# FIXME: bnela target +# CHECK: bnela 2, target # encoding: [0x40,0x8a,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnela 2, target +# CHECK: bnela 0, target # encoding: [0x40,0x82,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnela target # CHECK: bnelrl 2 # encoding: [0x4c,0x8a,0x00,0x21] bnelrl 2 # CHECK: bnelrl 0 # encoding: [0x4c,0x82,0x00,0x21] @@ -361,8 +425,12 @@ # 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: blea 2, target # encoding: [0x40,0x89,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnga 2, target +# CHECK: blea 0, target # encoding: [0x40,0x81,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnga target # CHECK: blelr 2 # encoding: [0x4c,0x89,0x00,0x20] bnglr 2 # CHECK: blelr 0 # encoding: [0x4c,0x81,0x00,0x20] @@ -377,8 +445,12 @@ # CHECK: blel 0, target # encoding: [0x40,0x81,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bngl target -# FIXME: bngla 2, target -# FIXME: bngla target +# CHECK: blela 2, target # encoding: [0x40,0x89,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bngla 2, target +# CHECK: blela 0, target # encoding: [0x40,0x81,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bngla target # CHECK: blelrl 2 # encoding: [0x4c,0x89,0x00,0x21] bnglrl 2 # CHECK: blelrl 0 # encoding: [0x4c,0x81,0x00,0x21] @@ -394,8 +466,12 @@ # 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: buna 2, target # encoding: [0x41,0x8b,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bsoa 2, target +# CHECK: buna 0, target # encoding: [0x41,0x83,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bsoa target # CHECK: bunlr 2 # encoding: [0x4d,0x8b,0x00,0x20] bsolr 2 # CHECK: bunlr 0 # encoding: [0x4d,0x83,0x00,0x20] @@ -410,8 +486,12 @@ # CHECK: bunl 0, target # encoding: [0x41,0x83,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bsol target -# FIXME: bsola 2, target -# FIXME: bsola target +# CHECK: bunla 2, target # encoding: [0x41,0x8b,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bsola 2, target +# CHECK: bunla 0, target # encoding: [0x41,0x83,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bsola target # CHECK: bunlrl 2 # encoding: [0x4d,0x8b,0x00,0x21] bsolrl 2 # CHECK: bunlrl 0 # encoding: [0x4d,0x83,0x00,0x21] @@ -427,8 +507,12 @@ # 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: bnua 2, target # encoding: [0x40,0x8b,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnsa 2, target +# CHECK: bnua 0, target # encoding: [0x40,0x83,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnsa target # CHECK: bnulr 2 # encoding: [0x4c,0x8b,0x00,0x20] bnslr 2 # CHECK: bnulr 0 # encoding: [0x4c,0x83,0x00,0x20] @@ -443,8 +527,12 @@ # CHECK: bnul 0, target # encoding: [0x40,0x83,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bnsl target -# FIXME: bnsla 2, target -# FIXME: bnsla target +# CHECK: bnula 2, target # encoding: [0x40,0x8b,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnsla 2, target +# CHECK: bnula 0, target # encoding: [0x40,0x83,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnsla target # CHECK: bnulrl 2 # encoding: [0x4c,0x8b,0x00,0x21] bnslrl 2 # CHECK: bnulrl 0 # encoding: [0x4c,0x83,0x00,0x21] @@ -460,8 +548,12 @@ # 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: buna 2, target # encoding: [0x41,0x8b,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + buna 2, target +# CHECK: buna 0, target # encoding: [0x41,0x83,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + buna target # CHECK: bunlr 2 # encoding: [0x4d,0x8b,0x00,0x20] bunlr 2 # CHECK: bunlr 0 # encoding: [0x4d,0x83,0x00,0x20] @@ -476,8 +568,12 @@ # CHECK: bunl 0, target # encoding: [0x41,0x83,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bunl target -# FIXME: bunla 2, target -# FIXME: bunla target +# CHECK: bunla 2, target # encoding: [0x41,0x8b,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bunla 2, target +# CHECK: bunla 0, target # encoding: [0x41,0x83,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bunla target # CHECK: bunlrl 2 # encoding: [0x4d,0x8b,0x00,0x21] bunlrl 2 # CHECK: bunlrl 0 # encoding: [0x4d,0x83,0x00,0x21] @@ -493,8 +589,12 @@ # 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: bnua 2, target # encoding: [0x40,0x8b,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnua 2, target +# CHECK: bnua 0, target # encoding: [0x40,0x83,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnua target # CHECK: bnulr 2 # encoding: [0x4c,0x8b,0x00,0x20] bnulr 2 # CHECK: bnulr 0 # encoding: [0x4c,0x83,0x00,0x20] @@ -509,8 +609,12 @@ # CHECK: bnul 0, target # encoding: [0x40,0x83,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 bnul target -# FIXME: bnula 2, target -# FIXME: bnula target +# CHECK: bnula 2, target # encoding: [0x40,0x8b,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnula 2, target +# CHECK: bnula 0, target # encoding: [0x40,0x83,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs + bnula target # CHECK: bnulrl 2 # encoding: [0x4c,0x8b,0x00,0x21] bnulrl 2 # CHECK: bnulrl 0 # encoding: [0x4c,0x83,0x00,0x21] diff --git a/llvm/test/MC/PowerPC/ppc64-encoding.s b/llvm/test/MC/PowerPC/ppc64-encoding.s index d11ad4f61a1..cf6f7847d98 100644 --- a/llvm/test/MC/PowerPC/ppc64-encoding.s +++ b/llvm/test/MC/PowerPC/ppc64-encoding.s @@ -8,11 +8,15 @@ # CHECK: b target # encoding: [0b010010AA,A,A,0bAAAAAA00] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_br24 b target -# FIXME: ba target +# CHECK: ba target # encoding: [0b010010AA,A,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_br24abs + ba target # CHECK: bl target # encoding: [0b010010AA,A,A,0bAAAAAA01] # CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_br24 bl target -# FIXME: bla target +# CHECK: bla target # encoding: [0b010010AA,A,A,0bAAAAAA11] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_br24abs + bla target # FIXME: bc 4, 10, target # FIXME: bca 4, 10, target diff --git a/llvm/test/MC/PowerPC/ppc64-fixups.s b/llvm/test/MC/PowerPC/ppc64-fixups.s index b99bc6202fa..767ff697a64 100644 --- a/llvm/test/MC/PowerPC/ppc64-fixups.s +++ b/llvm/test/MC/PowerPC/ppc64-fixups.s @@ -4,6 +4,26 @@ # RUN: llvm-mc -triple powerpc64-unknown-unknown -filetype=obj %s | \ # RUN: llvm-readobj -r | FileCheck %s -check-prefix=REL +# CHECK: b target # encoding: [0b010010AA,A,A,0bAAAAAA00] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_br24 +# CHECK-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_REL24 target 0x0 + b target + +# CHECK: ba target # encoding: [0b010010AA,A,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_br24abs +# CHECK-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_ADDR24 target 0x0 + ba target + +# CHECK: beq 0, target # encoding: [0x41,0x82,A,0bAAAAAA00] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14 +# CHECK-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_REL14 target 0x0 + beq target + +# CHECK: beqa 0, target # encoding: [0x41,0x82,A,0bAAAAAA10] +# CHECK-NEXT: # fixup A - offset: 0, value: target, kind: fixup_ppc_brcond14abs +# CHECK-REL: 0x{{[0-9A-F]*[048C]}} R_PPC64_ADDR14 target 0x0 + beqa target + # FIXME: .TOC.@tocbase diff --git a/llvm/test/MC/PowerPC/ppc64-operands.s b/llvm/test/MC/PowerPC/ppc64-operands.s index de5fcb0e8d2..5cc6a3c648f 100644 --- a/llvm/test/MC/PowerPC/ppc64-operands.s +++ b/llvm/test/MC/PowerPC/ppc64-operands.s @@ -85,3 +85,18 @@ # CHECK: ld 1, -4(2) # encoding: [0xe8,0x22,0xff,0xfc] ld 1, -4(2) + +# Immediate branch operands + +# CHECK: b .+1024 # encoding: [0x48,0x00,0x04,0x00] + b 1024 + +# CHECK: ba 1024 # encoding: [0x48,0x00,0x04,0x02] + ba 1024 + +# CHECK: beq 0, .+1024 # encoding: [0x41,0x82,0x04,0x00] + beq 1024 + +# CHECK: beqa 0, 1024 # encoding: [0x41,0x82,0x04,0x02] + beqa 1024 + |

