https://gcc.gnu.org/g:062e46a813799684c6f900815fd22451d6294ae1

commit r15-2213-g062e46a813799684c6f900815fd22451d6294ae1
Author: Haochen Jiang <haochen.ji...@intel.com>
Date:   Mon Jul 22 14:06:18 2024 +0800

    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).

Diff:
---
 gcc/config/i386/i386.md                     | 2 +-
 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 90d3aa450f05..6207036a2a01 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -28004,7 +28004,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 80f25e70e8e3..03dfdc55e86c 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>

Reply via email to