123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- From ca2c3a7d3db7a699c358d3408f820396dd536fc8 Mon Sep 17 00:00:00 2001
- From: Segher Boessenkool <segher@kernel.crashing.org>
- Date: Tue, 1 Mar 2022 17:04:29 +0000
- Subject: [PATCH] rs6000: Improve .machine
- This adds more correct .machine for most older CPUs. It should be
- conservative in the sense that everything we handled before we handle at
- least as well now. This does not yet revamp the server CPU handling, it
- is too risky at this point in time.
- Tested on powerpc64-linux {-m32,-m64}. Also manually tested with all
- -mcpu=, and the output of that passed through the GNU assembler.
- 2022-03-04 Segher Boessenkool <segher@kernel.crashing.org>
- * config/rs6000/rs6000.c (rs6000_machine_from_flags): Restructure a
- bit. Handle most older CPUs.
- (cherry picked from commit 77eccbf39ed55297802bb66dff5f62507a7239e3)
- (cherry picked from commit fc7e603edc67c66a14f893f3b5a0a34e7d26f77c)
- Signed-off-by: Romain Naour <romain.naour@gmail.com>
- ---
- gcc/config/rs6000/rs6000.c | 81 +++++++++++++++++++++++++-------------
- 1 file changed, 54 insertions(+), 27 deletions(-)
- diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
- index 0421dc7adb3..0a55c979c36 100644
- --- a/gcc/config/rs6000/rs6000.c
- +++ b/gcc/config/rs6000/rs6000.c
- @@ -5742,33 +5742,60 @@ const char *rs6000_machine;
- const char *
- rs6000_machine_from_flags (void)
- {
- - /* For some CPUs, the machine cannot be determined by ISA flags. We have to
- - check them first. */
- - switch (rs6000_cpu)
- - {
- - case PROCESSOR_PPC8540:
- - case PROCESSOR_PPC8548:
- - return "e500";
- -
- - case PROCESSOR_PPCE300C2:
- - case PROCESSOR_PPCE300C3:
- - return "e300";
- -
- - case PROCESSOR_PPCE500MC:
- - return "e500mc";
- -
- - case PROCESSOR_PPCE500MC64:
- - return "e500mc64";
- -
- - case PROCESSOR_PPCE5500:
- - return "e5500";
- -
- - case PROCESSOR_PPCE6500:
- - return "e6500";
- -
- - default:
- - break;
- - }
- + /* e300 and e500 */
- + if (rs6000_cpu == PROCESSOR_PPCE300C2 || rs6000_cpu == PROCESSOR_PPCE300C3)
- + return "e300";
- + if (rs6000_cpu == PROCESSOR_PPC8540 || rs6000_cpu == PROCESSOR_PPC8548)
- + return "e500";
- + if (rs6000_cpu == PROCESSOR_PPCE500MC)
- + return "e500mc";
- + if (rs6000_cpu == PROCESSOR_PPCE500MC64)
- + return "e500mc64";
- + if (rs6000_cpu == PROCESSOR_PPCE5500)
- + return "e5500";
- + if (rs6000_cpu == PROCESSOR_PPCE6500)
- + return "e6500";
- +
- + /* 400 series */
- + if (rs6000_cpu == PROCESSOR_PPC403)
- + return "\"403\"";
- + if (rs6000_cpu == PROCESSOR_PPC405)
- + return "\"405\"";
- + if (rs6000_cpu == PROCESSOR_PPC440)
- + return "\"440\"";
- + if (rs6000_cpu == PROCESSOR_PPC476)
- + return "\"476\"";
- +
- + /* A2 */
- + if (rs6000_cpu == PROCESSOR_PPCA2)
- + return "a2";
- +
- + /* Cell BE */
- + if (rs6000_cpu == PROCESSOR_CELL)
- + return "cell";
- +
- + /* Titan */
- + if (rs6000_cpu == PROCESSOR_TITAN)
- + return "titan";
- +
- + /* 500 series and 800 series */
- + if (rs6000_cpu == PROCESSOR_MPCCORE)
- + return "\"821\"";
- +
- + /* 600 series and 700 series, "classic" */
- + if (rs6000_cpu == PROCESSOR_PPC601 || rs6000_cpu == PROCESSOR_PPC603
- + || rs6000_cpu == PROCESSOR_PPC604 || rs6000_cpu == PROCESSOR_PPC604e
- + || rs6000_cpu == PROCESSOR_PPC750 || rs6000_cpu == PROCESSOR_POWERPC)
- + return "ppc";
- +
- + /* Classic with AltiVec, "G4" */
- + if (rs6000_cpu == PROCESSOR_PPC7400 || rs6000_cpu == PROCESSOR_PPC7450)
- + return "\"7450\"";
- +
- + /* The older 64-bit CPUs */
- + if (rs6000_cpu == PROCESSOR_PPC620 || rs6000_cpu == PROCESSOR_PPC630
- + || rs6000_cpu == PROCESSOR_RS64A || rs6000_cpu == PROCESSOR_POWERPC64)
- + return "ppc64";
-
- HOST_WIDE_INT flags = rs6000_isa_flags;
-
- --
- 2.34.3
|