1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mavx512f" } */
3 
4 long long *D;
5 int *S;
6 short *H;
7 char *Q;
8 
foo_unpack_1(int low,int high,int ind)9 long long foo_unpack_1 (int low, int high, int ind)
10 {
11   int i;
12 
13   for (i = low; i <= high; i++)
14     D[i] *= S[i];
15 
16   return D[ind];
17 }
18 
foo_unpack_2(int low,int high,int ind)19 long long foo_unpack_2 (int low, int high, int ind)
20 {
21   int i;
22 
23   for (i = low; i <= high; i++)
24     D[i] *= H[i];
25 
26   return D[ind];
27 }
28 
foo_unpack_3(int low,int high,int ind)29 long long foo_unpack_3 (int low, int high, int ind)
30 {
31   int i;
32 
33   for (i = low; i <= high; i++)
34     D[i] *= Q[i];
35 
36   return D[ind];
37 }
38 
foo_unpack_4(int low,int high,int ind)39 int foo_unpack_4 (int low, int high, int ind)
40 {
41   int i;
42 
43   for (i = low; i <= high; i++)
44     S[i] *= H[i];
45 
46   return S[ind];
47 }
48 
foo_unpack_5(int low,int high,int ind)49 int foo_unpack_5 (int low, int high, int ind)
50 {
51   int i;
52 
53   for (i = low; i <= high; i++)
54     S[i] *= Q[i];
55 
56   return S[ind];
57 }
58 
foo_unpack_6(int low,int high,int ind)59 short foo_unpack_6 (int low, int high, int ind)
60 {
61   int i;
62 
63   for (i = low; i <= high; i++)
64     H[i] *= Q[i];
65 
66   return H[ind];
67 }
68 
foo_expand_1(int low,int high,int ind)69 int foo_expand_1 (int low, int high, int ind)
70 {
71   int i;
72 
73   for (i = low; i <= high; i++)
74     S[i] *= D[i];
75 
76   return S[ind];
77 }
78 
foo_expand_2(int low,int high,int ind)79 short foo_expand_2 (int low, int high, int ind)
80 {
81   int i;
82 
83   for (i = low; i <= high; i++)
84     H[i] *= D[i];
85 
86   return H[ind];
87 }
88 
foo_expand_3(int low,int high,int ind)89 char foo_expand_3 (int low, int high, int ind)
90 {
91   int i;
92 
93   for (i = low; i <= high; i++)
94     Q[i] *= D[i];
95 
96   return Q[ind];
97 }
98 
foo_expand_4(int low,int high,int ind)99 short foo_expand_4 (int low, int high, int ind)
100 {
101   int i;
102 
103   for (i = low; i <= high; i++)
104     H[i] *= S[i];
105 
106   return H[ind];
107 }
108 
foo_expand_5(int low,int high,int ind)109 char foo_expand_5 (int low, int high, int ind)
110 {
111   int i;
112 
113   for (i = low; i <= high; i++)
114     Q[i] *= S[i];
115 
116   return Q[ind];
117 }
118 
foo_expand_6(int low,int high,int ind)119 char foo_expand_6 (int low, int high, int ind)
120 {
121   int i;
122 
123   for (i = low; i <= high; i++)
124     Q[i] *= H[i];
125 
126   return Q[ind];
127 }
128