Remove unnecessary power9 group terminating nop

Power9 doesn't have a group terminating nop, so we may as well emit a
normal nop for power9.  Not that it matters a great deal, I believe
ori 2,2,0 will be treated exactly as ori 0,0,0 by the hardware.

	* config/tc-ppc.c (ppc_handle_align): Don't emit a group
	terminating nop for power9.
This commit is contained in:
Alan Modra 2018-03-08 10:17:41 +10:30
parent 6d4f21f6ee
commit 3fea0c3b3f
2 changed files with 13 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2018-03-08 Alan Modra <amodra@gmail.com>
* config/tc-ppc.c (ppc_handle_align): Don't emit a group
terminating nop for power9.
2018-03-07 H.J. Lu <hongjiu.lu@intel.com>
PR gas/22874

View File

@ -6550,14 +6550,13 @@ ppc_handle_align (struct frag *fragP)
if ((ppc_cpu & PPC_OPCODE_POWER6) != 0
|| (ppc_cpu & PPC_OPCODE_POWER7) != 0
|| (ppc_cpu & PPC_OPCODE_POWER8) != 0
|| (ppc_cpu & PPC_OPCODE_POWER9) != 0)
|| (ppc_cpu & PPC_OPCODE_POWER8) != 0)
{
/* For power6, power7, power8 and power9, we want the last nop to be
a group terminating one. Do this by inserting an rs_fill frag
immediately after this one, with its address set to the last nop
location. This will automatically reduce the number of nops in
the current frag by one. */
/* For power6, power7, and power8, we want the last nop to
be a group terminating one. Do this by inserting an
rs_fill frag immediately after this one, with its address
set to the last nop location. This will automatically
reduce the number of nops in the current frag by one. */
if (count > 4)
{
struct frag *group_nop = xmalloc (SIZEOF_STRUCT_FRAG + 4);
@ -6572,14 +6571,13 @@ ppc_handle_align (struct frag *fragP)
}
if ((ppc_cpu & PPC_OPCODE_POWER7) != 0
|| (ppc_cpu & PPC_OPCODE_POWER8) != 0
|| (ppc_cpu & PPC_OPCODE_POWER9) != 0)
|| (ppc_cpu & PPC_OPCODE_POWER8) != 0)
{
if (ppc_cpu & PPC_OPCODE_E500MC)
/* e500mc group terminating nop: "ori 0,0,0". */
md_number_to_chars (dest, 0x60000000, 4);
else
/* power7/power8/power9 group terminating nop: "ori 2,2,0". */
/* power7/power8 group terminating nop: "ori 2,2,0". */
md_number_to_chars (dest, 0x60420000, 4);
}
else