[pushed] i386: Use %w operand modifier for ROLW bswaphisi2_lowpart alternative [PR126685]
Uros Bizjak <[email protected]> Thu, 6 Aug 2026 16:33:20 +0200
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <CAFULd4YxYL74LD_6QjsfBD6_DnWv5gM4vxS1xv2trKJsEE9jbA@mail.gmail.com> |
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.
Bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}.
Uros.
p.diff.txt
(text/plain, 855 B)
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 0bfe52c08fa..3b0f8b2cccd 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -23720,7 +23720,7 @@ (define_insn "bswaphisi2_lowpart"
""
"@
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 00000000000..2aa23b2cced
--- /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);
+}