diff options
author | Haochen Jiang <haochen.jiang@intel.com> | 2024-07-22 14:06:18 +0800 |
---|---|---|
committer | Haochen Jiang <haochen.jiang@intel.com> | 2024-07-23 13:51:49 +0800 |
commit | dec571e95cf47e21a1a60ed337e68e3474f57f7d (patch) | |
tree | f83ea0d7e9efa4d811b27cce320baa73c3d7853a | |
parent | e504184f9175204bc66bf5a95a400bc4685f8ffc (diff) | |
download | gcc-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.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/prefetchi-1.c | 4 |
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> |