Add extended mnemonics for bctar. Fix setting of 'at' branch hints.

opcodes/
	PR gas/24349
	* ppc-opc.c (valid_bo_pre_v2): Add comments.
	(valid_bo_post_v2): Add support for 'at' branch hints.
	(insert_bo): Only error on branch on ctr.
	(get_bo_hint_mask): New function.
	(insert_boe): Add new 'branch_taken' formal argument.  Add support
	for inserting 'at' branch hints.
	(extract_boe): Add new 'branch_taken' formal argument.  Add support
	for extracting 'at' branch hints.
	(insert_bom, extract_bom, insert_bop, extract_bop): New functions.
	(BOE): Delete operand.
	(BOM, BOP): New operands.
	(RM): Update value.
	(XLYLK, XLYLK_MASK, XLYBB_MASK): Delete.
	(powerpc_opcodes) <bc-, bcl-, bca-, bcla-, bclr-, bclrl-, bcctr-,
	bcctrl-, bctar-, bctarl->: Replace BOE with BOM.
	(powerpc_opcodes) <bc+, bcl+, bca+, bcla+, bclr+, bclrl+, bcctr+,
	bcctrl+, bctar+, bctarl+>: Replace BOE with BOP.
	<bdnztar, bdnztarl, bdztar, bdztarl, btar, btarl, bdnztar-, bdnztarl-,
	bdnztar+, bdnztarl+, bdztar-, bdztarl-, bdztar+, bdztarl+, bgetar,
	bnltar, bgetarl, bnltarl, bletar, bngtar, bletarl, bngtarl, bnetar,
	bnetarl, bnstar, bnutar, bnstarl, bnutarl, bgetar-, bnltar-, bgetarl-,
	bnltarl-, bletar-, bngtar-, bletarl-, bngtarl-, bnetar-, bnetarl-,
	bnstar-, bnutar-, bnstarl-, bnutarl-, bgetar+, bnltar+, bgetarl+,
	bnltarl+, bletar+, bngtar+, bletarl+, bngtarl+, bnetar+, bnetarl+,
	bnstar+, bnutar+, bnstarl+, bnutarl+, blttar, blttarl, bgttar, bgttarl,
	beqtar, beqtarl, bsotar, buntar, bsotarl, buntarl, blttar-, blttarl-,
	bgttar-, bgttarl-, beqtar-, beqtarl-, bsotar-, buntar-, bsotarl-,
	buntarl-, blttar+, blttarl+, bgttar+, bgttarl+, beqtar+, beqtarl+,
	bsotar+, buntar+, bsotarl+, buntarl+, bdnzftar, bdnzftarl, bdzftar,
	bdzftarl, bftar, bftarl, bftar-, bftarl-, bftar+, bftarl+, bdnzttar,
	bdnzttarl, bdzttar, bdzttarl, bttar, bttarl, bttar-, bttarl-, bttar+,
	bttarl+>: New extended mnemonics.

gas/
	PR gas/24349
	* testsuite/gas/ppc/power8.s: (bdnztar, bdnztarl, bdztar, bdztarl,
	btar, btarl, bdnztar-, bdnztarl-, bdnztar+, bdnztarl+, bdztar-,
	bdztarl-, bdztar+, bdztarl+, bgetar, bnltar, bgetarl, bnltarl,
	bletar, bngtar, bletarl, bngtarl, bnetar, bnetarl, bnstar, bnutar,
	bnstarl, bnutarl, bgetar-, bnltar-, bgetarl-, bnltarl-, bletar-,
	bngtar-, bletarl-, bngtarl-, bnetar-, bnetarl-, bnstar-, bnutar-,
	bnstarl-, bnutarl-, bgetar+, bnltar+, bgetarl+, bnltarl+, bletar+,
	bngtar+, bletarl+, bngtarl+, bnetar+, bnetarl+, bnstar+, bnutar+,
	bnstarl+, bnutarl+, blttar, blttarl, bgttar, bgttarl, beqtar,
	beqtarl, bsotar, buntar, bsotarl, buntarl, blttar-, blttarl-,
	bgttar-, bgttarl-, beqtar-, beqtarl-, bsotar-, buntar-, bsotarl-,
	buntarl-, blttar+, blttarl+, bgttar+, bgttarl+, beqtar+, beqtarl+,
	bsotar+, buntar+, bsotarl+, buntarl+, bdnzftar, bdnzftarl, bdzftar,
	bdzftarl, bftar, bftarl, bftar-, bftarl-, bftar+, bftarl+, bdnzttar,
	bdnzttarl, bdzttar, bdzttarl, bttar, bttarl, bttar-, bttarl-, bttar+,
	bttarl+): Add tests of extended mnemonics.
	* testsuite/gas/ppc/power8.d: Likewise.  Update previous bctar tests
	to expect new extended mnemonics.
	* testsuite/gas/ppc/a2.s: <bc, bc-, bc+, bcl, bcl-, bcl+>: Update test
	to not use illegal BO value.  Use a more convenient BI value.
	* testsuite/gas/ppc/a2.d: Update tests for new expect output.
This commit is contained in:
Peter Bergner 2019-04-04 09:00:29 -05:00
parent e9f8e3f109
commit aae9718e4d
7 changed files with 584 additions and 73 deletions

View File

@ -1,3 +1,28 @@
2019-04-04 Peter Bergner <bergner@linux.ibm.com>
PR gas/24349
* testsuite/gas/ppc/power8.s: (bdnztar, bdnztarl, bdztar, bdztarl,
btar, btarl, bdnztar-, bdnztarl-, bdnztar+, bdnztarl+, bdztar-,
bdztarl-, bdztar+, bdztarl+, bgetar, bnltar, bgetarl, bnltarl,
bletar, bngtar, bletarl, bngtarl, bnetar, bnetarl, bnstar, bnutar,
bnstarl, bnutarl, bgetar-, bnltar-, bgetarl-, bnltarl-, bletar-,
bngtar-, bletarl-, bngtarl-, bnetar-, bnetarl-, bnstar-, bnutar-,
bnstarl-, bnutarl-, bgetar+, bnltar+, bgetarl+, bnltarl+, bletar+,
bngtar+, bletarl+, bngtarl+, bnetar+, bnetarl+, bnstar+, bnutar+,
bnstarl+, bnutarl+, blttar, blttarl, bgttar, bgttarl, beqtar,
beqtarl, bsotar, buntar, bsotarl, buntarl, blttar-, blttarl-,
bgttar-, bgttarl-, beqtar-, beqtarl-, bsotar-, buntar-, bsotarl-,
buntarl-, blttar+, blttarl+, bgttar+, bgttarl+, beqtar+, beqtarl+,
bsotar+, buntar+, bsotarl+, buntarl+, bdnzftar, bdnzftarl, bdzftar,
bdzftarl, bftar, bftarl, bftar-, bftarl-, bftar+, bftarl+, bdnzttar,
bdnzttarl, bdzttar, bdzttarl, bttar, bttarl, bttar-, bttarl-, bttar+,
bttarl+): Add tests of extended mnemonics.
* testsuite/gas/ppc/power8.d: Likewise. Update previous bctar tests
to expect new extended mnemonics.
* testsuite/gas/ppc/a2.s: <bc, bc-, bc+, bcl, bcl-, bcl+>: Update test
to not use illegal BO value. Use a more convenient BI value.
* testsuite/gas/ppc/a2.d: Update tests for new expect output.
2019-04-03 Max Filippov <jcmvbkbc@gmail.com>
* config/tc-xtensa.c (convert_frag_immed): Drop

View File

@ -46,11 +46,11 @@ Disassembly of section \.text:
88: (00 00 02 00|00 02 00 00) attn
8c: (48 00 00 02|02 00 00 48) ba 0 <start>
8c: R_PPC(|64)_ADDR24 label_abs
90: (40 01 00 00|00 00 01 40) bdnzf gt,90 <start\+0x90>
90: (40 8a 00 00|00 00 8a 40) bne cr2,90 <start\+0x90>
90: R_PPC(|64)_REL14 foo
94: (40 01 00 00|00 00 01 40) bdnzf gt,94 <start\+0x94>
94: (40 ca 00 00|00 00 ca 40) bne- cr2,94 <start\+0x94>
94: R_PPC(|64)_REL14 foo
98: (40 01 00 00|00 00 01 40) bdnzf gt,98 <start\+0x98>
98: (40 ea 00 00|00 00 ea 40) bne\+ cr2,98 <start\+0x98>
98: R_PPC(|64)_REL14 foo
9c: (40 85 00 02|02 00 85 40) blea cr1,0 <start>
9c: R_PPC(|64)_ADDR14 foo_abs
@ -59,16 +59,16 @@ Disassembly of section \.text:
a4: (40 e5 00 02|02 00 e5 40) blea\+ cr1,0 <start>
a4: R_PPC(|64)_ADDR14 foo_abs
a8: (4c 86 0c 20|20 0c 86 4c) bcctr 4,4\*cr1\+eq,1
ac: (4c 86 04 20|20 04 86 4c) bnectr cr1
b0: (4c a6 04 20|20 04 a6 4c) bcctr\+ 4,4\*cr1\+eq
ac: (4c c6 04 20|20 04 c6 4c) bnectr- cr1
b0: (4c e6 04 20|20 04 e6 4c) bnectr\+ cr1
b4: (4c 86 0c 21|21 0c 86 4c) bcctrl 4,4\*cr1\+eq,1
b8: (4c 86 04 21|21 04 86 4c) bnectrl cr1
bc: (4c a6 04 21|21 04 a6 4c) bcctrl\+ 4,4\*cr1\+eq
c0: (40 01 00 01|01 00 01 40) bdnzfl gt,c0 <start\+0xc0>
b8: (4c c6 04 21|21 04 c6 4c) bnectrl- cr1
bc: (4c e6 04 21|21 04 e6 4c) bnectrl\+ cr1
c0: (40 8a 00 01|01 00 8a 40) bnel cr2,c0 <start\+0xc0>
c0: R_PPC(|64)_REL14 foo
c4: (40 01 00 01|01 00 01 40) bdnzfl gt,c4 <start\+0xc4>
c4: (40 ca 00 01|01 00 ca 40) bnel- cr2,c4 <start\+0xc4>
c4: R_PPC(|64)_REL14 foo
c8: (40 01 00 01|01 00 01 40) bdnzfl gt,c8 <start\+0xc8>
c8: (40 ea 00 01|01 00 ea 40) bnel\+ cr2,c8 <start\+0xc8>
c8: R_PPC(|64)_REL14 foo
cc: (40 85 00 03|03 00 85 40) blela cr1,0 <start>
cc: R_PPC(|64)_ADDR14 foo_abs
@ -77,11 +77,11 @@ Disassembly of section \.text:
d4: (40 e5 00 03|03 00 e5 40) blela\+ cr1,0 <start>
d4: R_PPC(|64)_ADDR14 foo_abs
d8: (4c 86 08 20|20 08 86 4c) bclr 4,4\*cr1\+eq,1
dc: (4c 86 00 20|20 00 86 4c) bnelr cr1
e0: (4c a6 00 20|20 00 a6 4c) bclr\+ 4,4\*cr1\+eq
dc: (4c c6 00 20|20 00 c6 4c) bnelr- cr1
e0: (4c e6 00 20|20 00 e6 4c) bnelr\+ cr1
e4: (4c 86 08 21|21 08 86 4c) bclrl 4,4\*cr1\+eq,1
e8: (4c 86 00 21|21 00 86 4c) bnelrl cr1
ec: (4c a6 00 21|21 00 a6 4c) bclrl\+ 4,4\*cr1\+eq
e8: (4c c6 00 21|21 00 c6 4c) bnelrl- cr1
ec: (4c e6 00 21|21 00 e6 4c) bnelrl\+ cr1
f0: (48 00 00 00|00 00 00 48) b f0 <start\+0xf0>
f0: R_PPC(|64)_REL24 label
f4: (48 00 00 03|03 00 00 48) bla 0 <start>
@ -582,3 +582,4 @@ Disassembly of section \.text:
8a8: (7d 6a 62 78|78 62 6a 7d) xor r10,r11,r12
8ac: (69 6a 10 00|00 10 6a 69) xori r10,r11,4096
8b0: (6d 6a 10 00|00 10 6a 6d) xoris r10,r11,4096
#pass

View File

@ -36,9 +36,9 @@ start:
andis. 4,5,6
attn
ba label_abs
bc 0,1,foo
bc- 0,1,foo
bc+ 0,1,foo
bc 4,10,foo
bc- 4,10,foo
bc+ 4,10,foo
bca 4,5,foo_abs
bca- 4,5,foo_abs
bca+ 4,5,foo_abs
@ -48,9 +48,9 @@ start:
bcctrl 4,6,1
bcctrl- 4,6
bcctrl+ 4,6
bcl 0,1,foo
bcl- 0,1,foo
bcl+ 0,1,foo
bcl 4,10,foo
bcl- 4,10,foo
bcl+ 4,10,foo
bcla 4,5,foo_abs
bcla- 4,5,foo_abs
bcla+ 4,5,foo_abs

View File

@ -30,10 +30,10 @@ Disassembly of section \.text:
50: (4c 00 01 24|24 01 00 4c) rfebb 0
54: (4c 00 09 24|24 09 00 4c) rfebb
58: (4c 00 09 24|24 09 00 4c) rfebb
5c: (4d 95 04 60|60 04 95 4d) bctar- 12,4\*cr5\+gt
60: (4c 87 04 61|61 04 87 4c) bctarl- 4,4\*cr1\+so
64: (4d ac 04 60|60 04 ac 4d) bctar\+ 12,4\*cr3\+lt
68: (4c a2 04 61|61 04 a2 4c) bctarl\+ 4,eq
5c: (4d d5 04 60|60 04 d5 4d) bgttar- cr5
60: (4c c7 04 61|61 04 c7 4c) bnstarl- cr1
64: (4d ec 04 60|60 04 ec 4d) blttar\+ cr3
68: (4c e2 04 61|61 04 e2 4c) bnetarl\+
6c: (4c 88 0c 60|60 0c 88 4c) bctar 4,4\*cr2\+lt,1
70: (4c 87 14 61|61 14 87 4c) bctarl 4,4\*cr1\+so,2
74: (7c 00 00 3c|3c 00 00 7c) waitasec
@ -192,4 +192,122 @@ Disassembly of section \.text:
.*: (7d 81 49 2d|2d 49 81 7d) stwcx\. r12,r1,r9
.*: (7d a0 51 ad|ad 51 a0 7d) stdcx\. r13,0,r10
.*: (7d a1 51 ad|ad 51 a1 7d) stdcx\. r13,r1,r10
.*: (4e 80 04 60|60 04 80 4e) btar
.*: (4e 80 04 60|60 04 80 4e) btar
.*: (4e 00 04 60|60 04 00 4e) bdnztar
.*: (4e 00 04 61|61 04 00 4e) bdnztarl
.*: (4e 40 04 60|60 04 40 4e) bdztar
.*: (4e 40 04 61|61 04 40 4e) bdztarl
.*: (4e 80 04 60|60 04 80 4e) btar
.*: (4e 80 04 61|61 04 80 4e) btarl
.*: (4f 00 04 60|60 04 00 4f) bdnztar-
.*: (4f 00 04 61|61 04 00 4f) bdnztarl-
.*: (4f 20 04 60|60 04 20 4f) bdnztar\+
.*: (4f 20 04 61|61 04 20 4f) bdnztarl\+
.*: (4f 40 04 60|60 04 40 4f) bdztar-
.*: (4f 40 04 61|61 04 40 4f) bdztarl-
.*: (4f 60 04 60|60 04 60 4f) bdztar\+
.*: (4f 60 04 61|61 04 60 4f) bdztarl\+
.*: (4c 90 04 60|60 04 90 4c) bgetar cr4
.*: (4c 90 04 60|60 04 90 4c) bgetar cr4
.*: (4c 90 04 61|61 04 90 4c) bgetarl cr4
.*: (4c 90 04 61|61 04 90 4c) bgetarl cr4
.*: (4c 91 04 60|60 04 91 4c) bletar cr4
.*: (4c 91 04 60|60 04 91 4c) bletar cr4
.*: (4c 91 04 61|61 04 91 4c) bletarl cr4
.*: (4c 91 04 61|61 04 91 4c) bletarl cr4
.*: (4c 92 04 60|60 04 92 4c) bnetar cr4
.*: (4c 92 04 61|61 04 92 4c) bnetarl cr4
.*: (4c 93 04 60|60 04 93 4c) bnstar cr4
.*: (4c 93 04 60|60 04 93 4c) bnstar cr4
.*: (4c 93 04 61|61 04 93 4c) bnstarl cr4
.*: (4c 93 04 61|61 04 93 4c) bnstarl cr4
.*: (4c d0 04 60|60 04 d0 4c) bgetar- cr4
.*: (4c d0 04 60|60 04 d0 4c) bgetar- cr4
.*: (4c d0 04 61|61 04 d0 4c) bgetarl- cr4
.*: (4c d0 04 61|61 04 d0 4c) bgetarl- cr4
.*: (4c d1 04 60|60 04 d1 4c) bletar- cr4
.*: (4c d1 04 60|60 04 d1 4c) bletar- cr4
.*: (4c d1 04 61|61 04 d1 4c) bletarl- cr4
.*: (4c d1 04 61|61 04 d1 4c) bletarl- cr4
.*: (4c d2 04 60|60 04 d2 4c) bnetar- cr4
.*: (4c d2 04 61|61 04 d2 4c) bnetarl- cr4
.*: (4c d3 04 60|60 04 d3 4c) bnstar- cr4
.*: (4c d3 04 60|60 04 d3 4c) bnstar- cr4
.*: (4c d3 04 61|61 04 d3 4c) bnstarl- cr4
.*: (4c d3 04 61|61 04 d3 4c) bnstarl- cr4
.*: (4c f0 04 60|60 04 f0 4c) bgetar\+ cr4
.*: (4c f0 04 60|60 04 f0 4c) bgetar\+ cr4
.*: (4c f0 04 61|61 04 f0 4c) bgetarl\+ cr4
.*: (4c f0 04 61|61 04 f0 4c) bgetarl\+ cr4
.*: (4c f1 04 60|60 04 f1 4c) bletar\+ cr4
.*: (4c f1 04 60|60 04 f1 4c) bletar\+ cr4
.*: (4c f1 04 61|61 04 f1 4c) bletarl\+ cr4
.*: (4c f1 04 61|61 04 f1 4c) bletarl\+ cr4
.*: (4c f2 04 60|60 04 f2 4c) bnetar\+ cr4
.*: (4c f2 04 61|61 04 f2 4c) bnetarl\+ cr4
.*: (4c f3 04 60|60 04 f3 4c) bnstar\+ cr4
.*: (4c f3 04 60|60 04 f3 4c) bnstar\+ cr4
.*: (4c f3 04 61|61 04 f3 4c) bnstarl\+ cr4
.*: (4c f3 04 61|61 04 f3 4c) bnstarl\+ cr4
.*: (4d 90 04 60|60 04 90 4d) blttar cr4
.*: (4d 90 04 61|61 04 90 4d) blttarl cr4
.*: (4d 91 04 60|60 04 91 4d) bgttar cr4
.*: (4d 91 04 61|61 04 91 4d) bgttarl cr4
.*: (4d 92 04 60|60 04 92 4d) beqtar cr4
.*: (4d 92 04 61|61 04 92 4d) beqtarl cr4
.*: (4d 93 04 60|60 04 93 4d) bsotar cr4
.*: (4d 93 04 60|60 04 93 4d) bsotar cr4
.*: (4d 93 04 61|61 04 93 4d) bsotarl cr4
.*: (4d 93 04 61|61 04 93 4d) bsotarl cr4
.*: (4d d0 04 60|60 04 d0 4d) blttar- cr4
.*: (4d d0 04 61|61 04 d0 4d) blttarl- cr4
.*: (4d d1 04 60|60 04 d1 4d) bgttar- cr4
.*: (4d d1 04 61|61 04 d1 4d) bgttarl- cr4
.*: (4d d2 04 60|60 04 d2 4d) beqtar- cr4
.*: (4d d2 04 61|61 04 d2 4d) beqtarl- cr4
.*: (4d d3 04 60|60 04 d3 4d) bsotar- cr4
.*: (4d d3 04 60|60 04 d3 4d) bsotar- cr4
.*: (4d d3 04 61|61 04 d3 4d) bsotarl- cr4
.*: (4d d3 04 61|61 04 d3 4d) bsotarl- cr4
.*: (4d f0 04 60|60 04 f0 4d) blttar\+ cr4
.*: (4d f0 04 61|61 04 f0 4d) blttarl\+ cr4
.*: (4d f1 04 60|60 04 f1 4d) bgttar\+ cr4
.*: (4d f1 04 61|61 04 f1 4d) bgttarl\+ cr4
.*: (4d f2 04 60|60 04 f2 4d) beqtar\+ cr4
.*: (4d f2 04 61|61 04 f2 4d) beqtarl\+ cr4
.*: (4d f3 04 60|60 04 f3 4d) bsotar\+ cr4
.*: (4d f3 04 60|60 04 f3 4d) bsotar\+ cr4
.*: (4d f3 04 61|61 04 f3 4d) bsotarl\+ cr4
.*: (4d f3 04 61|61 04 f3 4d) bsotarl\+ cr4
.*: (4c 08 04 60|60 04 08 4c) bdnzftar 4\*cr2\+lt
.*: (4c 08 04 61|61 04 08 4c) bdnzftarl 4\*cr2\+lt
.*: (4c 48 04 60|60 04 48 4c) bdzftar 4\*cr2\+lt
.*: (4c 48 04 61|61 04 48 4c) bdzftarl 4\*cr2\+lt
.*: (4c 88 04 60|60 04 88 4c) bgetar cr2
.*: (4c 88 04 61|61 04 88 4c) bgetarl cr2
.*: (4c c8 04 60|60 04 c8 4c) bgetar- cr2
.*: (4c c8 04 61|61 04 c8 4c) bgetarl- cr2
.*: (4c e8 04 60|60 04 e8 4c) bgetar\+ cr2
.*: (4c e8 04 61|61 04 e8 4c) bgetarl\+ cr2
.*: (4d 08 04 60|60 04 08 4d) bdnzttar 4\*cr2\+lt
.*: (4d 08 04 61|61 04 08 4d) bdnzttarl 4\*cr2\+lt
.*: (4d 48 04 60|60 04 48 4d) bdzttar 4\*cr2\+lt
.*: (4d 48 04 61|61 04 48 4d) bdzttarl 4\*cr2\+lt
.*: (4d 88 04 60|60 04 88 4d) blttar cr2
.*: (4d 88 04 61|61 04 88 4d) blttarl cr2
.*: (4d c8 04 60|60 04 c8 4d) blttar- cr2
.*: (4d c8 04 61|61 04 c8 4d) blttarl- cr2
.*: (4d e8 04 60|60 04 e8 4d) blttar\+ cr2
.*: (4d e8 04 61|61 04 e8 4d) blttarl\+ cr2
.*: (4d ca 04 60|60 04 ca 4d) beqtar- cr2
.*: (4d ca 04 61|61 04 ca 4d) beqtarl- cr2
.*: (4d ea 04 60|60 04 ea 4d) beqtar\+ cr2
.*: (4d ea 04 61|61 04 ea 4d) beqtarl\+ cr2
.*: (4d 89 04 60|60 04 89 4d) bgttar cr2
.*: (4d 89 04 60|60 04 89 4d) bgttar cr2
.*: (4d 89 1c 60|60 1c 89 4d) bctar 12,4\*cr2\+gt,3
.*: (4d 89 04 61|61 04 89 4d) bgttarl cr2
.*: (4d 89 04 61|61 04 89 4d) bgttarl cr2
.*: (4d 89 1c 61|61 1c 89 4d) bctarl 12,4\*cr2\+gt,3
#pass

View File

@ -184,3 +184,121 @@ power8:
stwcx. 12,1,9
stdcx. 13,0,10
stdcx. 13,1,10
bctar 0b10100,lt
btar
bdnztar
bdnztarl
bdztar
bdztarl
btar
btarl
bdnztar-
bdnztarl-
bdnztar+
bdnztarl+
bdztar-
bdztarl-
bdztar+
bdztarl+
bgetar cr4
bnltar cr4
bgetarl cr4
bnltarl cr4
bletar cr4
bngtar cr4
bletarl cr4
bngtarl cr4
bnetar cr4
bnetarl cr4
bnstar cr4
bnutar cr4
bnstarl cr4
bnutarl cr4
bgetar- cr4
bnltar- cr4
bgetarl- cr4
bnltarl- cr4
bletar- cr4
bngtar- cr4
bletarl- cr4
bngtarl- cr4
bnetar- cr4
bnetarl- cr4
bnstar- cr4
bnutar- cr4
bnstarl- cr4
bnutarl- cr4
bgetar+ cr4
bnltar+ cr4
bgetarl+ cr4
bnltarl+ cr4
bletar+ cr4
bngtar+ cr4
bletarl+ cr4
bngtarl+ cr4
bnetar+ cr4
bnetarl+ cr4
bnstar+ cr4
bnutar+ cr4
bnstarl+ cr4
bnutarl+ cr4
blttar cr4
blttarl cr4
bgttar cr4
bgttarl cr4
beqtar cr4
beqtarl cr4
bsotar cr4
buntar cr4
bsotarl cr4
buntarl cr4
blttar- cr4
blttarl- cr4
bgttar- cr4
bgttarl- cr4
beqtar- cr4
beqtarl- cr4
bsotar- cr4
buntar- cr4
bsotarl- cr4
buntarl- cr4
blttar+ cr4
blttarl+ cr4
bgttar+ cr4
bgttarl+ cr4
beqtar+ cr4
beqtarl+ cr4
bsotar+ cr4
buntar+ cr4
bsotarl+ cr4
buntarl+ cr4
bdnzftar 4*cr2+lt
bdnzftarl 4*cr2+lt
bdzftar 4*cr2+lt
bdzftarl 4*cr2+lt
bftar 4*cr2+lt
bftarl 4*cr2+lt
bftar- 4*cr2+lt
bftarl- 4*cr2+lt
bftar+ 4*cr2+lt
bftarl+ 4*cr2+lt
bdnzttar 4*cr2+lt
bdnzttarl 4*cr2+lt
bdzttar 4*cr2+lt
bdzttarl 4*cr2+lt
bttar 4*cr2+lt
bttarl 4*cr2+lt
bttar- 4*cr2+lt
bttarl- 4*cr2+lt
bttar+ 4*cr2+lt
bttarl+ 4*cr2+lt
bctar- 0b01100,4*cr2+eq
bctarl- 0b01100,4*cr2+eq
bctar+ 0b01100,4*cr2+eq
bctarl+ 0b01100,4*cr2+eq
bctar 0b01100,4*cr2+gt
bctar 0b01100,4*cr2+gt,0
bctar 0b01100,4*cr2+gt,3
bctarl 0b01100,4*cr2+gt
bctarl 0b01100,4*cr2+gt,0
bctarl 0b01100,4*cr2+gt,3

View File

@ -1,3 +1,39 @@
2019-04-04 Peter Bergner <bergner@linux.ibm.com>
PR gas/24349
* ppc-opc.c (valid_bo_pre_v2): Add comments.
(valid_bo_post_v2): Add support for 'at' branch hints.
(insert_bo): Only error on branch on ctr.
(get_bo_hint_mask): New function.
(insert_boe): Add new 'branch_taken' formal argument. Add support
for inserting 'at' branch hints.
(extract_boe): Add new 'branch_taken' formal argument. Add support
for extracting 'at' branch hints.
(insert_bom, extract_bom, insert_bop, extract_bop): New functions.
(BOE): Delete operand.
(BOM, BOP): New operands.
(RM): Update value.
(XLYLK, XLYLK_MASK, XLYBB_MASK): Delete.
(powerpc_opcodes) <bc-, bcl-, bca-, bcla-, bclr-, bclrl-, bcctr-,
bcctrl-, bctar-, bctarl->: Replace BOE with BOM.
(powerpc_opcodes) <bc+, bcl+, bca+, bcla+, bclr+, bclrl+, bcctr+,
bcctrl+, bctar+, bctarl+>: Replace BOE with BOP.
<bdnztar, bdnztarl, bdztar, bdztarl, btar, btarl, bdnztar-, bdnztarl-,
bdnztar+, bdnztarl+, bdztar-, bdztarl-, bdztar+, bdztarl+, bgetar,
bnltar, bgetarl, bnltarl, bletar, bngtar, bletarl, bngtarl, bnetar,
bnetarl, bnstar, bnutar, bnstarl, bnutarl, bgetar-, bnltar-, bgetarl-,
bnltarl-, bletar-, bngtar-, bletarl-, bngtarl-, bnetar-, bnetarl-,
bnstar-, bnutar-, bnstarl-, bnutarl-, bgetar+, bnltar+, bgetarl+,
bnltarl+, bletar+, bngtar+, bletarl+, bngtarl+, bnetar+, bnetarl+,
bnstar+, bnutar+, bnstarl+, bnutarl+, blttar, blttarl, bgttar, bgttarl,
beqtar, beqtarl, bsotar, buntar, bsotarl, buntarl, blttar-, blttarl-,
bgttar-, bgttarl-, beqtar-, beqtarl-, bsotar-, buntar-, bsotarl-,
buntarl-, blttar+, blttarl+, bgttar+, bgttarl+, beqtar+, beqtarl+,
bsotar+, buntar+, bsotarl+, buntarl+, bdnzftar, bdnzftarl, bdzftar,
bdzftarl, bftar, bftarl, bftar-, bftarl-, bftar+, bftarl+, bdnzttar,
bdnzttarl, bdzttar, bdzttarl, bttar, bttarl, bttar-, bttarl-, bttar+,
bttarl+>: New extended mnemonics.
2019-03-28 Alan Modra <amodra@gmail.com>
PR 24390

View File

@ -321,12 +321,16 @@ valid_bo_pre_v2 (int64_t value)
1z1zz
*/
if ((value & 0x14) == 0)
/* BO: 0000y, 0001y, 0100y, 0101y. */
return 1;
else if ((value & 0x14) == 0x4)
/* BO: 001zy, 011zy. */
return (value & 0x2) == 0;
else if ((value & 0x14) == 0x10)
/* BO: 1z00y, 1z01y. */
return (value & 0x8) == 0;
else
/* BO: 1z1zz. */
return value == 0x14;
}
@ -346,9 +350,17 @@ valid_bo_post_v2 (int64_t value)
1z1zz
*/
if ((value & 0x14) == 0)
/* BO: 0000z, 0001z, 0100z, 0101z. */
return (value & 0x1) == 0;
else if ((value & 0x14) == 0x14)
/* BO: 1z1zz. */
return value == 0x14;
else if ((value & 0x14) == 0x4)
/* BO: 001at, 011at, with "at" == 0b01 being reserved. */
return (value & 0x3) != 1;
else if ((value & 0x14) == 0x10)
/* BO: 1a00t, 1a01t, with "at" == 0b01 being reserved. */
return (value & 0x9) != 1;
else
return 1;
}
@ -382,7 +394,8 @@ insert_bo (uint64_t insn,
{
if (!valid_bo (value, dialect, 0))
*errmsg = _("invalid conditional option");
else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
else if (PPC_OP (insn) == 19
&& (((insn >> 1) & 0x3ff) == 528) && ! (value & 4))
*errmsg = _("invalid counter access");
return insn | ((value & 0x1f) << 21);
}
@ -398,35 +411,128 @@ extract_bo (uint64_t insn,
return value;
}
/* The BO field in a B form instruction when the + or - modifier is
used. This is like the BO field, but it must be even. When
extracting it, we force it to be even. */
/* For the given BO value, return a bit mask detailing which bits
define the branch hints. */
static int64_t
get_bo_hint_mask (int64_t bo, ppc_cpu_t dialect)
{
if ((dialect & ISA_V2) == 0)
{
if ((bo & 0x14) != 0x14)
/* BO: 0000y, 0001y, 001zy, 0100y, 0101y, 011zy, 1z00y, 1z01y . */
return 1;
else
/* BO: 1z1zz. */
return 0;
}
else
{
if ((bo & 0x14) == 0x4)
/* BO: 001at, 011at. */
return 0x3;
else if ((bo & 0x14) == 0x10)
/* BO: 1a00t, 1a01t. */
return 0x9;
else
/* BO: 0000z, 0001z, 0100z, 0101z, 1z1zz. */
return 0;
}
}
/* The BO field in a B form instruction when the + or - modifier is used. */
static uint64_t
insert_boe (uint64_t insn,
int64_t value,
ppc_cpu_t dialect,
const char **errmsg)
const char **errmsg,
int branch_taken)
{
if (!valid_bo (value, dialect, 0))
*errmsg = _("invalid conditional option");
else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4))
*errmsg = _("invalid counter access");
else if ((value & 1) != 0)
*errmsg = _("attempt to set y bit when using + or - modifier");
int64_t implied_hint;
int64_t hint_mask = get_bo_hint_mask (value, dialect);
return insn | ((value & 0x1f) << 21);
if (branch_taken)
implied_hint = hint_mask;
else
implied_hint = hint_mask & ~1;
/* The branch hint bit(s) in the BO field must either be zero or exactly
match the branch hint bits implied by the '+' or '-' modifier. */
if (implied_hint == 0)
*errmsg = _("BO value implies no branch hint, when using + or - modifier");
else if ((value & hint_mask) != 0
&& (value & hint_mask) != implied_hint)
{
if ((dialect & ISA_V2) == 0)
*errmsg = _("attempt to set y bit when using + or - modifier");
else
*errmsg = _("attempt to set 'at' bits when using + or - modifier");
}
value |= implied_hint;
return insert_bo (insn, value, dialect, errmsg);
}
static int64_t
extract_boe (uint64_t insn,
ppc_cpu_t dialect,
int *invalid)
int *invalid,
int branch_taken)
{
int64_t value = (insn >> 21) & 0x1f;
if (!valid_bo (value, dialect, 1))
int64_t implied_hint;
int64_t hint_mask = get_bo_hint_mask (value, dialect);
if (branch_taken)
implied_hint = hint_mask;
else
implied_hint = hint_mask & ~1;
if (!valid_bo (value, dialect, 1)
|| implied_hint == 0
|| (value & hint_mask) != implied_hint)
*invalid = 1;
return value & 0x1e;
return value;
}
/* The BO field in a B form instruction when the - modifier is used. */
static uint64_t
insert_bom (uint64_t insn,
int64_t value,
ppc_cpu_t dialect,
const char **errmsg)
{
return insert_boe (insn, value, dialect, errmsg, 0);
}
static int64_t
extract_bom (uint64_t insn,
ppc_cpu_t dialect,
int *invalid)
{
return extract_boe (insn, dialect, invalid, 0);
}
/* The BO field in a B form instruction when the + modifier is used. */
static uint64_t
insert_bop (uint64_t insn,
int64_t value,
ppc_cpu_t dialect,
const char **errmsg)
{
return insert_boe (insn, value, dialect, errmsg, 1);
}
static int64_t
extract_bop (uint64_t insn,
ppc_cpu_t dialect,
int *invalid)
{
return extract_boe (insn, dialect, invalid, 1);
}
/* The DCMX field in a X form instruction when the field is split
@ -1820,13 +1926,16 @@ const struct powerpc_operand powerpc_operands[] =
#define BO_MASK (0x1f << 21)
{ 0x1f, 21, insert_bo, extract_bo, 0 },
/* The BO field in a B form instruction when the + or - modifier is
used. This is like the BO field, but it must be even. */
#define BOE BO + 1
{ 0x1e, 21, insert_boe, extract_boe, 0 },
/* The BO field in a B form instruction when the - modifier is used. */
#define BOM BO + 1
{ 0x1f, 21, insert_bom, extract_bom, 0 },
/* The BO field in a B form instruction when the + modifier is used. */
#define BOP BOM + 1
{ 0x1f, 21, insert_bop, extract_bop, 0 },
/* The RM field in an X form instruction. */
#define RM BOE + 1
#define RM BOP + 1
#define DD RM
{ 0x3, 11, NULL, NULL, 0 },
@ -3259,22 +3368,14 @@ const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
(XLLK ((op), (xop), (lk)) | ((((uint64_t)(bo)) & 0x1f) << 21))
#define XLO_MASK (XL_MASK | BO_MASK)
/* An XL form instruction which explicitly sets the y bit of the BO
field. */
#define XLYLK(op, xop, y, lk) \
(XLLK ((op), (xop), (lk)) \
| ((((uint64_t)(y)) & 1) << 21))
#define XLYLK_MASK (XL_MASK | Y_MASK)
/* An XL form instruction which sets the BO field and the condition
bits of the BI field. */
#define XLOCB(op, bo, cb, xop, lk) \
(XLO ((op), (bo), (xop), (lk)) | ((((uint64_t)(cb)) & 3) << 16))
#define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
/* An XL_MASK or XLYLK_MASK or XLOCB_MASK with the BB field fixed. */
/* An XL_MASK or XLOCB_MASK with the BB field fixed. */
#define XLBB_MASK (XL_MASK | BB_MASK)
#define XLYBB_MASK (XLYLK_MASK | BB_MASK)
#define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
/* A mask for branch instructions using the BH field. */
@ -4689,17 +4790,17 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}},
{"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}},
{"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}},
{"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}},
{"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDM}},
{"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDP}},
{"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}},
{"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}},
{"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}},
{"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDM}},
{"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDP}},
{"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}},
{"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}},
{"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}},
{"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDMA}},
{"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDPA}},
{"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
{"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}},
{"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}},
{"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOM, BI, BDMA}},
{"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOP, BI, BDPA}},
{"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}},
{"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}},
@ -4935,10 +5036,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
{"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
{"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bclr-", XLLK(19,16,0), XLBB_MASK, PPCCOM, PPCVLE, {BOM, BI}},
{"bclrl-", XLLK(19,16,1), XLBB_MASK, PPCCOM, PPCVLE, {BOM, BI}},
{"bclr+", XLLK(19,16,0), XLBB_MASK, PPCCOM, PPCVLE, {BOP, BI}},
{"bclrl+", XLLK(19,16,1), XLBB_MASK, PPCCOM, PPCVLE, {BOP, BI}},
{"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
{"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
{"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
@ -5140,19 +5241,131 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
{"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}},
{"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}},
{"bcctr-", XLLK(19,528,0), XLBB_MASK, PPCCOM, PPCVLE, {BOM, BI}},
{"bcctrl-", XLLK(19,528,1), XLBB_MASK, PPCCOM, PPCVLE, {BOM, BI}},
{"bcctr+", XLLK(19,528,0), XLBB_MASK, PPCCOM, PPCVLE, {BOP, BI}},
{"bcctrl+", XLLK(19,528,1), XLBB_MASK, PPCCOM, PPCVLE, {BOP, BI}},
{"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
{"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
{"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}},
{"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}},
{"bctar-", XLYLK(19,560,0,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
{"bctarl-", XLYLK(19,560,0,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
{"bctar+", XLYLK(19,560,1,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
{"bctarl+", XLYLK(19,560,1,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}},
{"bdnztar", XLO(19,BODNZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdnztarl", XLO(19,BODNZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdztar", XLO(19,BODZ,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdztarl", XLO(19,BODZ,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"btar", XLO(19,BOU,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"btarl", XLO(19,BOU,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdnztar-", XLO(19,BODNZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdnztarl-", XLO(19,BODNZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdnztar+", XLO(19,BODNZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdnztarl+", XLO(19,BODNZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdztar-", XLO(19,BODZM4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdztarl-", XLO(19,BODZM4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdztar+", XLO(19,BODZP4,560,0), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bdztarl+", XLO(19,BODZP4,560,1), XLBOBIBB_MASK, POWER8, PPCVLE, {0}},
{"bgetar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnltar", XLOCB(19,BOF,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgetarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnltarl", XLOCB(19,BOF,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bletar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bngtar", XLOCB(19,BOF,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bletarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bngtarl", XLOCB(19,BOF,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnetar", XLOCB(19,BOF,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnetarl", XLOCB(19,BOF,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnstar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnutar", XLOCB(19,BOF,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnstarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnutarl", XLOCB(19,BOF,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgetar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnltar-", XLOCB(19,BOFM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgetarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnltarl-",XLOCB(19,BOFM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bletar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bngtar-", XLOCB(19,BOFM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bletarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bngtarl-",XLOCB(19,BOFM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnetar-", XLOCB(19,BOFM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnetarl-",XLOCB(19,BOFM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnstar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnutar-", XLOCB(19,BOFM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnstarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnutarl-",XLOCB(19,BOFM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgetar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnltar+", XLOCB(19,BOFP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgetarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnltarl+",XLOCB(19,BOFP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bletar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bngtar+", XLOCB(19,BOFP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bletarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bngtarl+",XLOCB(19,BOFP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnetar+", XLOCB(19,BOFP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnetarl+",XLOCB(19,BOFP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnstar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnutar+", XLOCB(19,BOFP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnstarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bnutarl+",XLOCB(19,BOFP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"blttar", XLOCB(19,BOT,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"blttarl", XLOCB(19,BOT,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgttar", XLOCB(19,BOT,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgttarl", XLOCB(19,BOT,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"beqtar", XLOCB(19,BOT,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"beqtarl", XLOCB(19,BOT,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bsotar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"buntar", XLOCB(19,BOT,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bsotarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"buntarl", XLOCB(19,BOT,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"blttar-", XLOCB(19,BOTM4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"blttarl-",XLOCB(19,BOTM4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgttar-", XLOCB(19,BOTM4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgttarl-",XLOCB(19,BOTM4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"beqtar-", XLOCB(19,BOTM4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"beqtarl-",XLOCB(19,BOTM4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bsotar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"buntar-", XLOCB(19,BOTM4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bsotarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"buntarl-",XLOCB(19,BOTM4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"blttar+", XLOCB(19,BOTP4,CBLT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"blttarl+",XLOCB(19,BOTP4,CBLT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgttar+", XLOCB(19,BOTP4,CBGT,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bgttarl+",XLOCB(19,BOTP4,CBGT,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"beqtar+", XLOCB(19,BOTP4,CBEQ,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"beqtarl+",XLOCB(19,BOTP4,CBEQ,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bsotar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"buntar+", XLOCB(19,BOTP4,CBSO,560,0), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bsotarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"buntarl+",XLOCB(19,BOTP4,CBSO,560,1), XLBOCBBB_MASK, POWER8, PPCVLE, {CR}},
{"bdnzftar", XLO(19,BODNZF,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdnzftarl", XLO(19,BODNZF,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdzftar", XLO(19,BODZF,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdzftarl", XLO(19,BODZF,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bftar", XLO(19,BOF,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bftarl", XLO(19,BOF,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bftar-", XLO(19,BOFM4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bftarl-", XLO(19,BOFM4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bftar+", XLO(19,BOFP4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bftarl+", XLO(19,BOFP4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdnzttar", XLO(19,BODNZT,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdnzttarl", XLO(19,BODNZT,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdzttar", XLO(19,BODZT,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bdzttarl", XLO(19,BODZT,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bttar", XLO(19,BOT,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bttarl", XLO(19,BOT,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bttar-", XLO(19,BOTM4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bttarl-", XLO(19,BOTM4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bttar+", XLO(19,BOTP4,560,0), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bttarl+", XLO(19,BOTP4,560,1), XLBOBB_MASK, POWER8, PPCVLE, {BI}},
{"bctar-", XLLK(19,560,0), XLBB_MASK, POWER8, PPCVLE, {BOM, BI}},
{"bctarl-", XLLK(19,560,1), XLBB_MASK, POWER8, PPCVLE, {BOM, BI}},
{"bctar+", XLLK(19,560,0), XLBB_MASK, POWER8, PPCVLE, {BOP, BI}},
{"bctarl+", XLLK(19,560,1), XLBB_MASK, POWER8, PPCVLE, {BOP, BI}},
{"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},
{"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}},