PR binutils/23013: Assembler not recognizing 3-opt dcbt instruction form on Power systems
Peter Bergner
bergner@vnet.ibm.com
Thu Mar 29 19:56:00 GMT 2018
The 3 operand dcbt instruction was added to the Power (server) ISA in the
power4 time frame. The problem is that gas defaults to assembling for an
older cpu than power4, so you need to pass -mpower4 (or newer) to assemble
the 3 operand form of dcbt.
That said, Michael was trying to assemble on a 64-bit LE system and those
system's minimum support cpu is power8, therefore, gas really should default
to power8 when we're targeting powerpc64le-*. The following patch accomplishes
that with no testsuite regressions.
Alan, does this look reasonable to you?
Peter
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index ff76221..e3d5d84 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1403,7 +1403,14 @@ ppc_set_cpu (void)
if ((ppc_cpu & ~(ppc_cpu_t) PPC_OPCODE_ANY) == 0)
{
if (ppc_obj64)
- ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_64;
+ if (target_big_endian)
+ ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_64;
+ else
+ /* The minimum supported cpu for 64-bit little-endian is power8. */
+ ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64
+ | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6
+ | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8
+ | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX;
else if (strncmp (default_os, "aix", 3) == 0
&& default_os[3] >= '4' && default_os[3] <= '9')
ppc_cpu |= PPC_OPCODE_COMMON;
More information about the Binutils
mailing list