mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
rs6000: Fix .machine cpu selection w/ altivec [PR97367]
There are various non-IBM CPUs with altivec, so we cannot use that flag to determine which .machine cpu to use, so ignore it. Emit an additional ".machine altivec" if Altivec is enabled so that the assembler doesn't require an explicit -maltivec option to assemble any Altivec instructions for those targets where the ".machine cpu" is insufficient to enable Altivec. For example, -mcpu=G5 emits a ".machine power4". 2024-07-18 René Rebe <rene@exactcode.de> Peter Bergner <bergner@linux.ibm.com> gcc/ PR target/97367 * config/rs6000/rs6000.cc (rs6000_machine_from_flags): Do not consider OPTION_MASK_ALTIVEC. (emit_asm_machine): For Altivec compiles, emit a ".machine altivec". gcc/testsuite/ PR target/97367 * gcc.target/powerpc/pr97367.c: New test. Signed-off-by: René Rebe <rene@exactcode.de>
This commit is contained in:
parent
c19237614b
commit
6962835bca
@ -5896,7 +5896,8 @@ rs6000_machine_from_flags (void)
|
||||
HOST_WIDE_INT flags = rs6000_isa_flags;
|
||||
|
||||
/* Disable the flags that should never influence the .machine selection. */
|
||||
flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ISEL);
|
||||
flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ISEL
|
||||
| OPTION_MASK_ALTIVEC);
|
||||
|
||||
if ((flags & (ISA_3_1_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) != 0)
|
||||
return "power10";
|
||||
@ -5921,6 +5922,8 @@ void
|
||||
emit_asm_machine (void)
|
||||
{
|
||||
fprintf (asm_out_file, "\t.machine %s\n", rs6000_machine);
|
||||
if (TARGET_ALTIVEC)
|
||||
fprintf (asm_out_file, "\t.machine altivec\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
13
gcc/testsuite/gcc.target/powerpc/pr97367.c
Normal file
13
gcc/testsuite/gcc.target/powerpc/pr97367.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* PR target/97367 */
|
||||
/* { dg-options "-mdejagnu-cpu=G5" } */
|
||||
|
||||
/* Verify we emit a ".machine power4" and ".machine altivec" rather
|
||||
than a ".machine power7". */
|
||||
|
||||
int dummy (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler {\.machine power4\M} } } */
|
||||
/* { dg-final { scan-assembler {\.machine altivec\M} } } */
|
Loading…
Reference in New Issue
Block a user