https://gcc.gnu.org/g:d55b88505c7eace3b5476d021af52b996407cae3

commit r17-3039-gd55b88505c7eace3b5476d021af52b996407cae3
Author: Uros Bizjak <[email protected]>
Date:   Thu Aug 6 16:12:38 2026 +0200

    i386: Use %w operand modifier for ROLW bswaphisi2_lowpart alternative 
[PR126685]
    
            PR target/126685
    
    gcc/ChangeLog:
    
            * config/i386/i386.md (bswaphisi2_lowpart): Use %w operand
            modifier to emit HImode register name for ROLW alternative.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.target/i386/pr126685.c: New test.

Diff:
---
 gcc/config/i386/i386.md                  | 2 +-
 gcc/testsuite/gcc.target/i386/pr126685.c | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 0bfe52c08fa6..3b0f8b2cccd3 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -23720,7 +23720,7 @@
   ""
   "@
     xchg{b}\t{%h0, %b0|%b0, %h0}
-    rol{w}\t{$8, %0|%0, 8}"
+    rol{w}\t{$8, %w0|%w0, 8}"
   [(set_attr "type" "imov,rotate1")
    (set_attr "pent_pair" "np,*")
    (set_attr "athlon_decode" "vector,*")
diff --git a/gcc/testsuite/gcc.target/i386/pr126685.c 
b/gcc/testsuite/gcc.target/i386/pr126685.c
new file mode 100644
index 000000000000..2aa23b2ccedb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr126685.c
@@ -0,0 +1,9 @@
+/* PR target/126685 */
+/* { dg-do assemble { target ia32 } } */
+/* { dg-options "-march=i386" } */
+
+unsigned long long
+foo (unsigned long long x)
+{
+  return __builtin_bswap64 (x);
+}

Reply via email to