]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
x86: Update gcc.target/i386/pr108938-3.c
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 19 Feb 2026 00:03:35 +0000 (08:03 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 19 Feb 2026 00:16:05 +0000 (08:16 +0800)
commit 4b71cafc8447e09ee41aff02acb5b26e8b112466
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Tue Feb 17 11:43:43 2026 +0100

    bswap: Handle VEC_PACK_TRUNC_EXPR [PR120233]

compiles

void
foo2 (char* a, short* __restrict b)
{
  a[0] = b[0] >> 8;
  a[1] = b[0];
  a[2] = b[1] >> 8;
  a[3] = b[1];
}

into

movl (%rsi), %eax
bswap %eax
roll $16, %eax
movl %eax, (%rdi)
ret

instead of

movzwl (%rsi), %eax
movzwl 2(%rsi), %edx
movl %eax, %ecx
sall $16, %eax
sarw $8, %cx
movzwl %cx, %ecx
orl %ecx, %eax
movd %eax, %xmm0
movl %edx, %eax
sall $16, %edx
sarw $8, %ax
movdqa %xmm0, %xmm2
movzwl %ax, %eax
orl %eax, %edx
movd %edx, %xmm1
punpcklbw %xmm1, %xmm2
punpcklbw %xmm1, %xmm0
pshufd $65, %xmm2, %xmm2
punpcklbw %xmm2, %xmm0
movd %xmm0, (%rdi)
ret

Update gcc.target/i386/pr108938-3.c to also scan 3 bswaps for x86-64.

PR target/120233
* gcc.target/i386/pr108938-3.c: Also scan 3 bswaps for x86-64.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
gcc/testsuite/gcc.target/i386/pr108938-3.c

index 47293d49bb9ea63215538017fb91f4b9174453bf..cd87314e57f6f0a8b3627665634bd843c5a6df5c 100644 (file)
@@ -1,7 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftree-vectorize -mno-movbe -msse2 -mno-avx" } */
-/* { dg-final { scan-assembler-times "bswap\[\t ]+" 2 { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler-times "bswap\[\t ]+" 3 { target ia32 } } } */
+/* { dg-final { scan-assembler-times "bswap\[\t ]+" 3 } } */
 
 void
 foo1 (char* a, unsigned int* __restrict b)