aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaochen Jiang <haochen.jiang@intel.com>2024-07-22 14:06:18 +0800
committerHaochen Jiang <haochen.jiang@intel.com>2024-07-23 13:51:49 +0800
commitdec571e95cf47e21a1a60ed337e68e3474f57f7d (patch)
treef83ea0d7e9efa4d811b27cce320baa73c3d7853a
parente504184f9175204bc66bf5a95a400bc4685f8ffc (diff)
downloadgcc-dec571e95cf47e21a1a60ed337e68e3474f57f7d.zip
gcc-dec571e95cf47e21a1a60ed337e68e3474f57f7d.tar.gz
gcc-dec571e95cf47e21a1a60ed337e68e3474f57f7d.tar.bz2
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).
-rw-r--r--gcc/config/i386/i386.md2
-rw-r--r--gcc/testsuite/gcc.target/i386/prefetchi-1.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index b4b3986..a224c9f 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -24291,7 +24291,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]);
diff --git a/gcc/testsuite/gcc.target/i386/prefetchi-1.c b/gcc/testsuite/gcc.target/i386/prefetchi-1.c
index 80f25e7..03dfdc5 100644
--- a/gcc/testsuite/gcc.target/i386/prefetchi-1.c
+++ b/gcc/testsuite/gcc.target/i386/prefetchi-1.c
@@ -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>