i386: Change prefetchi output template
For prefetchi instructions, RIP-relative address is explicitly mentioned for operand and assembler obeys that rule strictly. This makes instruction like: prefetchit0 bar got illegal for assembler, which should be a broad usage for prefetchi. Change to %a to explicitly add (%rip) after function label to make it legal in assembler so that it could pass to linker to get the real address. gcc/ChangeLog: * config/i386/i386.md (prefetchi): Change to %a. gcc/testsuite/ChangeLog: * gcc.target/i386/prefetchi-1.c: Check (%rip).
This commit is contained in:
parent
109b389a0b
commit
81f356f9f7
2 changed files with 3 additions and 3 deletions
|
@ -27142,7 +27142,7 @@
|
|||
"TARGET_PREFETCHI && TARGET_64BIT"
|
||||
{
|
||||
static const char * const patterns[2] = {
|
||||
"prefetchit1\t%0", "prefetchit0\t%0"
|
||||
"prefetchit1\t%a0", "prefetchit0\t%a0"
|
||||
};
|
||||
|
||||
int locality = INTVAL (operands[1]);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* { dg-do compile { target { ! ia32 } } } */
|
||||
/* { dg-options "-mprefetchi -O2" } */
|
||||
/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+bar\\(%rip\\)" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+bar\\(%rip\\)" 2 } } */
|
||||
|
||||
#include <x86intrin.h>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue