2016-12-21 Vladimir Makarov <vmakarov@redhat.com>
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512dq-vpextr-1.c
blob3c6abafc28f9b07f8f178fad9c1c9b7616dd8d23
1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -mavx512vl -mavx512dq" } */
4 typedef int v4si __attribute__((vector_size (16)));
5 typedef long long v2di __attribute__((vector_size (16)));
7 unsigned int
8 f1 (v4si a)
10 register v4si c __asm ("xmm16") = a;
11 asm volatile ("" : "+v" (c));
12 v4si d = c;
13 return ((unsigned int *) &d)[3];
16 unsigned long long
17 f2 (v2di a)
19 register v2di c __asm ("xmm16") = a;
20 asm volatile ("" : "+v" (c));
21 v2di d = c;
22 return ((unsigned long long *) &d)[1];
25 unsigned long long
26 f3 (v4si a)
28 register v4si c __asm ("xmm16") = a;
29 asm volatile ("" : "+v" (c));
30 v4si d = c;
31 return ((unsigned int *) &d)[3];
34 void
35 f4 (v4si a, unsigned int *p)
37 register v4si c __asm ("xmm16") = a;
38 asm volatile ("" : "+v" (c));
39 v4si d = c;
40 *p = ((unsigned int *) &d)[3];
43 void
44 f5 (v2di a, unsigned long long *p)
46 register v2di c __asm ("xmm16") = a;
47 asm volatile ("" : "+v" (c));
48 v2di d = c;
49 *p = ((unsigned long long *) &d)[1];
52 /* { dg-final { scan-assembler-times "vpextrd\[^\n\r]*xmm16" 3 } } */
53 /* { dg-final { scan-assembler-times "vpextrq\[^\n\r]*xmm16" 2 } } */