annotate gcc/testsuite/c-c++-common/rotate-5.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-options "-O2" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 extern
kono
parents:
diff changeset
5 #ifdef __cplusplus
kono
parents:
diff changeset
6 "C"
kono
parents:
diff changeset
7 #endif
kono
parents:
diff changeset
8 void abort (void);
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 #if __CHAR_BIT__ * __SIZEOF_LONG_LONG__ == 64
kono
parents:
diff changeset
11 __attribute__((noinline, noclone))
kono
parents:
diff changeset
12 unsigned long long
kono
parents:
diff changeset
13 f1 (unsigned long long x, unsigned int y)
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 return (x << y) | (x >> ((-y) & 63));
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 __attribute__((noinline, noclone))
kono
parents:
diff changeset
19 unsigned long long
kono
parents:
diff changeset
20 f2 (unsigned long long x, unsigned int y)
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 return (x << y) + (x >> ((-y) & 63));
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 __attribute__((noinline, noclone))
kono
parents:
diff changeset
26 unsigned long long
kono
parents:
diff changeset
27 f3 (unsigned long long x, unsigned int y)
kono
parents:
diff changeset
28 {
kono
parents:
diff changeset
29 return (x << y) ^ (x >> ((-y) & 63));
kono
parents:
diff changeset
30 }
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 #if __CHAR_BIT__ * __SIZEOF_INT128__ == 128
kono
parents:
diff changeset
33 __attribute__((noinline, noclone))
kono
parents:
diff changeset
34 unsigned __int128
kono
parents:
diff changeset
35 f4 (unsigned __int128 x, unsigned int y)
kono
parents:
diff changeset
36 {
kono
parents:
diff changeset
37 return (x << y) | (x >> ((-y) & 127));
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 __attribute__((noinline, noclone))
kono
parents:
diff changeset
41 unsigned __int128
kono
parents:
diff changeset
42 f5 (unsigned __int128 x, unsigned int y)
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 return (x << y) + (x >> ((-y) & 127));
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 __attribute__((noinline, noclone))
kono
parents:
diff changeset
48 unsigned __int128
kono
parents:
diff changeset
49 f6 (unsigned __int128 x, unsigned int y)
kono
parents:
diff changeset
50 {
kono
parents:
diff changeset
51 return (x << y) ^ (x >> ((-y) & 127));
kono
parents:
diff changeset
52 }
kono
parents:
diff changeset
53 #endif
kono
parents:
diff changeset
54 #endif
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 int
kono
parents:
diff changeset
57 main ()
kono
parents:
diff changeset
58 {
kono
parents:
diff changeset
59 #if __CHAR_BIT__ * __SIZEOF_LONG_LONG__ == 64
kono
parents:
diff changeset
60 if (f1 (0x123456789abcdef0ULL, 0) != 0x123456789abcdef0ULL)
kono
parents:
diff changeset
61 abort ();
kono
parents:
diff changeset
62 if (f2 (0x123456789abcdef0ULL, 0) != 0x2468acf13579bde0ULL)
kono
parents:
diff changeset
63 abort ();
kono
parents:
diff changeset
64 if (f3 (0x123456789abcdef0ULL, 0) != 0)
kono
parents:
diff changeset
65 abort ();
kono
parents:
diff changeset
66 if (f1 (0x123456789abcdef0ULL, 1) != 0x2468acf13579bde0ULL)
kono
parents:
diff changeset
67 abort ();
kono
parents:
diff changeset
68 if (f2 (0x123456789abcdef0ULL, 1) != 0x2468acf13579bde0ULL)
kono
parents:
diff changeset
69 abort ();
kono
parents:
diff changeset
70 if (f3 (0x123456789abcdef0ULL, 1) != 0x2468acf13579bde0ULL)
kono
parents:
diff changeset
71 abort ();
kono
parents:
diff changeset
72 #if __CHAR_BIT__ * __SIZEOF_INT128__ == 128
kono
parents:
diff changeset
73 if (f4 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
74 | 0x0fedcba987654321ULL, 0)
kono
parents:
diff changeset
75 != ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
76 | 0x0fedcba987654321ULL))
kono
parents:
diff changeset
77 abort ();
kono
parents:
diff changeset
78 if (f5 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
79 | 0x0fedcba987654321ULL, 0)
kono
parents:
diff changeset
80 != ((((unsigned __int128) 0x2468acf13579bde0ULL) << 64)
kono
parents:
diff changeset
81 | 0x1fdb97530eca8642ULL))
kono
parents:
diff changeset
82 abort ();
kono
parents:
diff changeset
83 if (f6 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
84 | 0x0fedcba987654321ULL, 0) != 0)
kono
parents:
diff changeset
85 abort ();
kono
parents:
diff changeset
86 if (f4 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
87 | 0x0fedcba987654321ULL, 1)
kono
parents:
diff changeset
88 != ((((unsigned __int128) 0x2468acf13579bde0ULL) << 64)
kono
parents:
diff changeset
89 | 0x1fdb97530eca8642ULL))
kono
parents:
diff changeset
90 abort ();
kono
parents:
diff changeset
91 if (f5 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
92 | 0x0fedcba987654321ULL, 1)
kono
parents:
diff changeset
93 != ((((unsigned __int128) 0x2468acf13579bde0ULL) << 64)
kono
parents:
diff changeset
94 | 0x1fdb97530eca8642ULL))
kono
parents:
diff changeset
95 abort ();
kono
parents:
diff changeset
96 if (f6 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
kono
parents:
diff changeset
97 | 0x0fedcba987654321ULL, 1)
kono
parents:
diff changeset
98 != ((((unsigned __int128) 0x2468acf13579bde0ULL) << 64)
kono
parents:
diff changeset
99 | 0x1fdb97530eca8642ULL))
kono
parents:
diff changeset
100 abort ();
kono
parents:
diff changeset
101 #endif
kono
parents:
diff changeset
102 #endif
kono
parents:
diff changeset
103 return 0;
kono
parents:
diff changeset
104 }