mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 17:11:01 +08:00
[RS6000] PowerPC -mcpu=native support
The -mcpu=native support has bit-rotted a little, in particular the fallback when the native cpu couldn't be determined. This patch fixes the bit-rot and reorganizes ASM_CPU_SPEC so that it should be a little easier to keep the -mcpu=native data up to date. The patch also changes the fix for PR63177 (-mpower9-vector being passed by the user when the default is -mpower8) to also apply when -mcpu=powerpc64le and -mcpu=native is given. I'll note that the hack for PR63177 should probably be extended to lots of other options, if we're going to continue supporting all those sub-architecture options (-mpower9-vector, -mpower8-vector, -mcrypto, -mdirect-move, -mhtm, -mvsx and others) in the positive sense. I think those should have only been supported in their -mno- variants.. * config/rs6000/aix71.h (ASM_SPEC): Don't select default -maix64 cpu here. (ASM_CPU_SPEC): Do so here. Rewrite using if .. else if .. specs form. Error on missing -mcpu case. * config/rs6000/driver-rs6000.c (asm_names <_AIX>): Update NULL case. (asm_names <!_AIX>): Add missing cpus. Update NULL case. Apply PR63177 fix for -mcpu=power8 and -mcpu=powerpc64le. * config/rs6000/rs6000.h (ASM_CPU_SPEC): Rewrite using if .. else if .. specs form. Error on missing -mcpu case. Don't output duplicate -maltivec. Apply PR63177 fix for -mcpu=powerpc64le. From-SVN: r266502
This commit is contained in:
parent
3da39f52ff
commit
28a095763f
@ -1,3 +1,16 @@
|
||||
2018-11-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* config/rs6000/aix71.h (ASM_SPEC): Don't select default -maix64
|
||||
cpu here.
|
||||
(ASM_CPU_SPEC): Do so here. Rewrite using if .. else if .. specs
|
||||
form. Error on missing -mcpu case.
|
||||
* config/rs6000/driver-rs6000.c (asm_names <_AIX>): Update NULL case.
|
||||
(asm_names <!_AIX>): Add missing cpus. Update NULL case. Apply
|
||||
PR63177 fix for -mcpu=power8 and -mcpu=powerpc64le.
|
||||
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Rewrite using if ..
|
||||
else if .. specs form. Error on missing -mcpu case. Don't output
|
||||
duplicate -maltivec. Apply PR63177 fix for -mcpu=powerpc64le.
|
||||
|
||||
2018-11-26 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* dump-context.h (dump_context::dump_loc): Convert 1st param from
|
||||
|
@ -59,7 +59,7 @@ do { \
|
||||
} while (0)
|
||||
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC "-u %{maix64:-a64 %{!mcpu*:-mppc64}} %(asm_cpu)"
|
||||
#define ASM_SPEC "-u %{maix64:-a64} %(asm_cpu)"
|
||||
|
||||
/* Common ASM definitions used by ASM_SPEC amongst the various targets for
|
||||
handling -mcpu=xxx switches. There is a parallel list in driver-rs6000.c to
|
||||
@ -67,31 +67,29 @@ do { \
|
||||
you make changes here, make them there also. */
|
||||
#undef ASM_CPU_SPEC
|
||||
#define ASM_CPU_SPEC \
|
||||
"%{!mcpu*: %{!maix64: \
|
||||
%{mpowerpc64: -mppc64} \
|
||||
%{maltivec: -m970} \
|
||||
%{!maltivec: %{!mpowerpc64: %(asm_default)}}}} \
|
||||
%{mcpu=native: %(asm_cpu_native)} \
|
||||
%{mcpu=power3: -m620} \
|
||||
%{mcpu=power4: -mpwr4} \
|
||||
%{mcpu=power5: -mpwr5} \
|
||||
%{mcpu=power5+: -mpwr5x} \
|
||||
%{mcpu=power6: -mpwr6} \
|
||||
%{mcpu=power6x: -mpwr6} \
|
||||
%{mcpu=power7: -mpwr7} \
|
||||
%{mcpu=power8: -mpwr8} \
|
||||
%{mcpu=power9: -mpwr9} \
|
||||
%{mcpu=powerpc: -mppc} \
|
||||
%{mcpu=rs64a: -mppc} \
|
||||
%{mcpu=603: -m603} \
|
||||
%{mcpu=603e: -m603} \
|
||||
%{mcpu=604: -m604} \
|
||||
%{mcpu=604e: -m604} \
|
||||
%{mcpu=620: -m620} \
|
||||
%{mcpu=630: -m620} \
|
||||
%{mcpu=970: -m970} \
|
||||
%{mcpu=G5: -m970} \
|
||||
%{mvsx: %{!mcpu*: -mpwr6}} \
|
||||
"%{mcpu=native: %(asm_cpu_native); \
|
||||
mcpu=power9: -mpwr9; \
|
||||
mcpu=power8: -mpwr8; \
|
||||
mcpu=power7: -mpwr7; \
|
||||
mcpu=power6x|mcpu=power6: -mpwr6; \
|
||||
mcpu=power5+: -mpwr5x; \
|
||||
mcpu=power5: -mpwr5; \
|
||||
mcpu=power4: -mpwr4; \
|
||||
mcpu=power3: -m620; \
|
||||
mcpu=powerpc: -mppc; \
|
||||
mcpu=rs64a: -mppc; \
|
||||
mcpu=603: -m603; \
|
||||
mcpu=603e: -m603; \
|
||||
mcpu=604: -m604; \
|
||||
mcpu=604e: -m604; \
|
||||
mcpu=620: -m620; \
|
||||
mcpu=630: -m620; \
|
||||
mcpu=970|mcpu=G5: -m970; \
|
||||
!mcpu*: %{mvsx: -mpwr6; \
|
||||
maltivec: -m970; \
|
||||
maix64|mpowerpc64: -mppc64; \
|
||||
: %(asm_default)}; \
|
||||
:%eMissing -mcpu option in ASM_SPEC_CPU?\n} \
|
||||
-many"
|
||||
|
||||
#undef ASM_DEFAULT_SPEC
|
||||
|
@ -459,10 +459,10 @@ static const struct asm_name asm_names[] = {
|
||||
{ "970", "-m970" },
|
||||
{ "G5", "-m970" },
|
||||
{ NULL, "\
|
||||
%{!maix64: \
|
||||
%{mpowerpc64: -mppc64} \
|
||||
%{maltivec: -m970} \
|
||||
%{!maltivec: %{!mpowerpc64: %(asm_default)}}}" },
|
||||
%{mvsx: -mpwr6; \
|
||||
maltivec: -m970; \
|
||||
maix64|mpowerpc64: -mppc64; \
|
||||
: %(asm_default)}" },
|
||||
|
||||
#else
|
||||
{ "cell", "-mcell" },
|
||||
@ -470,12 +470,14 @@ static const struct asm_name asm_names[] = {
|
||||
{ "power4", "-mpower4" },
|
||||
{ "power5", "-mpower5" },
|
||||
{ "power5+", "-mpower5" },
|
||||
{ "power6", "-mpower6 -maltivec" },
|
||||
{ "power6x", "-mpower6 -maltivec" },
|
||||
{ "power6", "-mpower6 %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "power6x", "-mpower6 %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "power7", "-mpower7" },
|
||||
{ "power8", "-mpower8" },
|
||||
{ "power8", "%{mpower9-vector:-mpower9;:-mpower8}" },
|
||||
{ "power9", "-mpower9" },
|
||||
{ "a2", "-ma2" },
|
||||
{ "powerpc", "-mppc" },
|
||||
{ "powerpc64le", "%{mpower9-vector:-mpower9;:-mpower8}" },
|
||||
{ "rs64a", "-mppc64" },
|
||||
{ "401", "-mppc" },
|
||||
{ "403", "-m403" },
|
||||
@ -485,6 +487,8 @@ static const struct asm_name asm_names[] = {
|
||||
{ "440fp", "-m440" },
|
||||
{ "464", "-m440" },
|
||||
{ "464fp", "-m440" },
|
||||
{ "476", "-m476" },
|
||||
{ "476fp", "-m476" },
|
||||
{ "505", "-mppc" },
|
||||
{ "601", "-m601" },
|
||||
{ "602", "-mppc" },
|
||||
@ -498,23 +502,29 @@ static const struct asm_name asm_names[] = {
|
||||
{ "740", "-mppc" },
|
||||
{ "750", "-mppc" },
|
||||
{ "G3", "-mppc" },
|
||||
{ "7400", "-mppc -maltivec" },
|
||||
{ "7450", "-mppc -maltivec" },
|
||||
{ "G4", "-mppc -maltivec" },
|
||||
{ "7400", "-mppc %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "7450", "-mppc %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "G4", "-mppc %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "801", "-mppc" },
|
||||
{ "821", "-mppc" },
|
||||
{ "823", "-mppc" },
|
||||
{ "860", "-mppc" },
|
||||
{ "970", "-mpower4 -maltivec" },
|
||||
{ "G5", "-mpower4 -maltivec" },
|
||||
{ "970", "-mpower4 %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "G5", "-mpower4 %{!mvsx:%{!maltivec:-maltivec}}" },
|
||||
{ "8540", "-me500" },
|
||||
{ "8548", "-me500" },
|
||||
{ "e300c2", "-me300" },
|
||||
{ "e300c3", "-me300" },
|
||||
{ "e500mc", "-me500mc" },
|
||||
{ "e500mc64", "-me500mc64" },
|
||||
{ "e5500", "-me5500" },
|
||||
{ "e6500", "-me6500" },
|
||||
{ NULL, "\
|
||||
%{mpowerpc64*: -mppc64} \
|
||||
%{!mpowerpc64*: %(asm_default)}" },
|
||||
%{mpower9-vector: -mpower9; \
|
||||
mpower8-vector|mcrypto|mdirect-move|mhtm: -mpower8; \
|
||||
mvsx: -mpower7; \
|
||||
mpowerpc64: -mppc64; \
|
||||
: %(asm_default)}" },
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -76,68 +76,66 @@
|
||||
you make changes here, make them also there. PR63177: Do not pass -mpower8
|
||||
to the assembler if -mpower9-vector was also used. */
|
||||
#define ASM_CPU_SPEC \
|
||||
"%{!mcpu*: \
|
||||
%{mpowerpc64*: -mppc64} \
|
||||
%{!mpowerpc64*: %(asm_default)}} \
|
||||
%{mcpu=native: %(asm_cpu_native)} \
|
||||
%{mcpu=cell: -mcell} \
|
||||
%{mcpu=power3: -mppc64} \
|
||||
%{mcpu=power4: -mpower4} \
|
||||
%{mcpu=power5: -mpower5} \
|
||||
%{mcpu=power5+: -mpower5} \
|
||||
%{mcpu=power6: -mpower6 -maltivec} \
|
||||
%{mcpu=power6x: -mpower6 -maltivec} \
|
||||
%{mcpu=power7: -mpower7} \
|
||||
%{mcpu=power8: %{!mpower9-vector: -mpower8}} \
|
||||
%{mcpu=power9: -mpower9} \
|
||||
%{mcpu=a2: -ma2} \
|
||||
%{mcpu=powerpc: -mppc} \
|
||||
%{mcpu=powerpc64le: -mpower8} \
|
||||
%{mcpu=rs64a: -mppc64} \
|
||||
%{mcpu=401: -mppc} \
|
||||
%{mcpu=403: -m403} \
|
||||
%{mcpu=405: -m405} \
|
||||
%{mcpu=405fp: -m405} \
|
||||
%{mcpu=440: -m440} \
|
||||
%{mcpu=440fp: -m440} \
|
||||
%{mcpu=464: -m440} \
|
||||
%{mcpu=464fp: -m440} \
|
||||
%{mcpu=476: -m476} \
|
||||
%{mcpu=476fp: -m476} \
|
||||
%{mcpu=505: -mppc} \
|
||||
%{mcpu=601: -m601} \
|
||||
%{mcpu=602: -mppc} \
|
||||
%{mcpu=603: -mppc} \
|
||||
%{mcpu=603e: -mppc} \
|
||||
%{mcpu=ec603e: -mppc} \
|
||||
%{mcpu=604: -mppc} \
|
||||
%{mcpu=604e: -mppc} \
|
||||
%{mcpu=620: -mppc64} \
|
||||
%{mcpu=630: -mppc64} \
|
||||
%{mcpu=740: -mppc} \
|
||||
%{mcpu=750: -mppc} \
|
||||
%{mcpu=G3: -mppc} \
|
||||
%{mcpu=7400: -mppc -maltivec} \
|
||||
%{mcpu=7450: -mppc -maltivec} \
|
||||
%{mcpu=G4: -mppc -maltivec} \
|
||||
%{mcpu=801: -mppc} \
|
||||
%{mcpu=821: -mppc} \
|
||||
%{mcpu=823: -mppc} \
|
||||
%{mcpu=860: -mppc} \
|
||||
%{mcpu=970: -mpower4 -maltivec} \
|
||||
%{mcpu=G5: -mpower4 -maltivec} \
|
||||
%{mcpu=8540: -me500} \
|
||||
%{mcpu=8548: -me500} \
|
||||
%{mcpu=e300c2: -me300} \
|
||||
%{mcpu=e300c3: -me300} \
|
||||
%{mcpu=e500mc: -me500mc} \
|
||||
%{mcpu=e500mc64: -me500mc64} \
|
||||
%{mcpu=e5500: -me5500} \
|
||||
%{mcpu=e6500: -me6500} \
|
||||
%{maltivec: -maltivec} \
|
||||
%{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: -mpower7}} \
|
||||
%{mpower8-vector|mcrypto|mdirect-move|mhtm: %{!mcpu*: -mpower8}} \
|
||||
%{mpower9-vector: %{!mcpu*|mcpu=power8: -mpower9}} \
|
||||
"%{mcpu=native: %(asm_cpu_native); \
|
||||
mcpu=power9: -mpower9; \
|
||||
mcpu=power8|mcpu=powerpc64le: %{mpower9-vector: -mpower9;: -mpower8}; \
|
||||
mcpu=power7: -mpower7; \
|
||||
mcpu=power6x: -mpower6 %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=power6: -mpower6 %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=power5+: -mpower5; \
|
||||
mcpu=power5: -mpower5; \
|
||||
mcpu=power4: -mpower4; \
|
||||
mcpu=power3: -mppc64; \
|
||||
mcpu=powerpc: -mppc; \
|
||||
mcpu=a2: -ma2; \
|
||||
mcpu=cell: -mcell; \
|
||||
mcpu=rs64a: -mppc64; \
|
||||
mcpu=401: -mppc; \
|
||||
mcpu=403: -m403; \
|
||||
mcpu=405: -m405; \
|
||||
mcpu=405fp: -m405; \
|
||||
mcpu=440: -m440; \
|
||||
mcpu=440fp: -m440; \
|
||||
mcpu=464: -m440; \
|
||||
mcpu=464fp: -m440; \
|
||||
mcpu=476: -m476; \
|
||||
mcpu=476fp: -m476; \
|
||||
mcpu=505: -mppc; \
|
||||
mcpu=601: -m601; \
|
||||
mcpu=602: -mppc; \
|
||||
mcpu=603: -mppc; \
|
||||
mcpu=603e: -mppc; \
|
||||
mcpu=ec603e: -mppc; \
|
||||
mcpu=604: -mppc; \
|
||||
mcpu=604e: -mppc; \
|
||||
mcpu=620: -mppc64; \
|
||||
mcpu=630: -mppc64; \
|
||||
mcpu=740: -mppc; \
|
||||
mcpu=750: -mppc; \
|
||||
mcpu=G3: -mppc; \
|
||||
mcpu=7400: -mppc %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=7450: -mppc %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=G4: -mppc %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=801: -mppc; \
|
||||
mcpu=821: -mppc; \
|
||||
mcpu=823: -mppc; \
|
||||
mcpu=860: -mppc; \
|
||||
mcpu=970: -mpower4 %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=G5: -mpower4 %{!mvsx:%{!maltivec:-maltivec}}; \
|
||||
mcpu=8540: -me500; \
|
||||
mcpu=8548: -me500; \
|
||||
mcpu=e300c2: -me300; \
|
||||
mcpu=e300c3: -me300; \
|
||||
mcpu=e500mc: -me500mc; \
|
||||
mcpu=e500mc64: -me500mc64; \
|
||||
mcpu=e5500: -me5500; \
|
||||
mcpu=e6500: -me6500; \
|
||||
!mcpu*: %{mpower9-vector: -mpower9; \
|
||||
mpower8-vector|mcrypto|mdirect-move|mhtm: -mpower8; \
|
||||
mvsx: -mpower7; \
|
||||
mpowerpc64: -mppc64;: %(asm_default)}; \
|
||||
:%eMissing -mcpu option in ASM_SPEC_CPU?\n} \
|
||||
%{mvsx: -mvsx -maltivec; maltivec: -maltivec} \
|
||||
-many"
|
||||
|
||||
#define CPP_DEFAULT_SPEC ""
|
||||
|
Loading…
x
Reference in New Issue
Block a user