Disallow 3-operand cmp[l][i] for ppc64
authorAlan Modra <amodra@gmail.com>
Thu, 29 Sep 2016 05:42:47 +0000 (15:12 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 29 Sep 2016 05:42:47 +0000 (15:12 +0930)
commita5721ba270ddf860e0e5a45bba456214e8eac2be
treed859bdad489788b9173c41728cc490f7ffcd20b5
parentb82317dd347991288e4cca4772e951c672fca8cc
Disallow 3-operand cmp[l][i] for ppc64

cmp[l][o] get an optional L field only when generating 32-bit code.
dcbf, tlbie and tlbiel keep their optional L field, ditto for R field
of tbegin.  cmprb, tsr., wlcr[all] and mtsle all change to a
compulsory L field.

L field of dcbf and wclr is 2 bits.

PR 20641
include/
* opcode/ppc.h (PPC_OPERAND_OPTIONAL32): Define.
opcodes/
* ppc-opc.c (L): Make compulsory.
(LOPT): New, optional form of L.
(HTM_R): Define as LOPT.
(L0, L1): Delete.
(L32OPT): New, optional for 32-bit L.
(L2OPT): New, 2-bit L for dcbf.
(SVC_LEC): Update.
(L2): Define.
(insert_l0, extract_l0, insert_l1, extract_l2): Delete.
(powerpc_opcodes <cmpli, cmpi, cmpl, cmp>): Use L32OPT.
<dcbf>: Use L2OPT.
<tlbiel, tlbie>: Use LOPT.
<wclr, wclrall>: Use L2.
gas/
* config/tc-ppc.c (md_assemble): Handle PPC_OPERAND_OPTIONAL32.
* testsuite/gas/ppc/power8.s: Provide tbegin. operand.
* testsuite/gas/ppc/power9.d: Update cmprb disassembly.
gas/ChangeLog
gas/config/tc-ppc.c
gas/testsuite/gas/ppc/power8.s
gas/testsuite/gas/ppc/power9.d
include/ChangeLog
include/opcode/ppc.h
opcodes/ChangeLog
opcodes/ppc-opc.c