Viewing file: pr47564.c (1.01 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR target/47564 */ /* { dg-do compile } */ /* { dg-options "-O2 -msse2 -std=gnu89" } */
static inline unsigned long long foo (const unsigned char *p) { return 1; }
__attribute__ ((__target__ ("sse4"))) void bar (unsigned long long *x, const void *b, long long m) { const unsigned char *p = (const unsigned char *) b; const unsigned char *e = p + m; unsigned int l = *x; unsigned long long n = l;
if ((e - p) >= 8192) { while ((e - p) >= 128) { n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); } }
while ((e - p) >= 16) { n = __builtin_ia32_crc32di (n, foo (p)); n = __builtin_ia32_crc32di (n, foo (p)); } l = n; *x = l; }
|