* gcc.target/i386/pr70021.c: Add -mtune=skylake.
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr69052.c
blob6f491e9ab5391eb411cd057654c2e14ee4120d08
1 /* { dg-do compile } */
2 /* { dg-require-effective-target pie } */
3 /* { dg-options "-O2 -fPIE -pie" } */
5 int look_nbits[256], loop_sym[256];
6 const int ind[] = {
7 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
8 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
9 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
10 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
12 int out[256];
13 extern void bar (int *, int *);
14 void foo (int *l1, int *l2, int *v, int *v1, int *m1, int i)
16 int L = i + 1, b = 20;
17 int result, k;
19 for (k = 1; k < 64; k++)
21 int look = (((L >> (b - 8))) & ((1 << 8) - 1));
22 int nb = l1[look];
23 int code;
24 int r;
26 if (nb)
28 b -= nb;
29 result = l2[look];
31 else
33 nb = 9;
34 code = (((L >> (b -= nb))) & ((1 << nb) - 1));
35 result = v[(code + v1[nb])];
37 r = result >> 4;
38 result &= 15;
39 if (result)
41 k += r;
42 r = (((L >> (b -= result))) & ((1 << result) - 1));
43 if (r < (1 << (result - 1)))
44 result = r + (((-1) << result) + 1);
45 else
46 result = r;
48 out[ind[k]] = result;
50 bar (&L, &b);
54 /* { dg-final { scan-assembler-not "leal\[ \t\]ind@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */