blob: b5373ca8c0d6afd5802e9adb3a4f5e5c22e4a93d [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -mtune=generic" } */
/* { dg-additional-options "-mno-avx -msse2" { target { ! ia32 } } } */
/* { dg-additional-options "-mno-sse" { target ia32 } } */
extern char *dst, *src;
void
foo (void)
{
__builtin_memcpy (dst, src, 19);
}
/* { dg-final { scan-assembler-times "movdqu\[\\t \]+\\(%\[\^,\]+\\)," 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "movl\[\\t \]+15\\(%\[\^,\]+\\)," 1 { target { ! ia32 } } } } */
/* PIC gets one extra match in get_pc_thunk, and two extra matches to load
dst's and src's values after loading their addresses from the GOT. */
/* { dg-final { scan-assembler-times "movl\[\\t \]+\\(%\[\^,\]+\\)," 1 { target { ia32 && nonpic } } } } */
/* { dg-final { scan-assembler-times "movl\[\\t \]+\\(%\[\^,\]+\\)," 4 { target { ia32 && { ! nonpic } } } } } */
/* { dg-final { scan-assembler-times "movl\[\\t \]+4\\(%\[\^,\]+\\)," 1 { target ia32 } } } */
/* { dg-final { scan-assembler-times "movl\[\\t \]+8\\(%\[\^,\]+\\)," 1 { target ia32 } } } */
/* { dg-final { scan-assembler-times "movl\[\\t \]+12\\(%\[\^,\]+\\)," 1 { target ia32 } } } */
/* { dg-final { scan-assembler-times "movl\[\\t \]+15\\(%\[\^,\]+\\)," 1 { target ia32 } } } */