| /* PR rtl-optimization/100342 */ |
| /* { dg-do run { target int128 } } */ |
| /* { dg-options "-O2 -fno-dse -fno-forward-propagate -Wno-psabi -mno-sse2" } */ |
| |
| #define SHL(x, y) ((x) << ((y) & (sizeof(x) * 8 - 1))) |
| #define SHR(x, y) ((x) >> ((y) & (sizeof(x) * 8 - 1))) |
| #define ROR(x, y) (SHR(x, y)) | (SHL(x, (sizeof(x) * 8 - (y)))) |
| #define SHLV(x, y) ((x) << ((y) & (sizeof((x)[0]) * 8 - 1))) |
| #define SHLSV(x, y) ((x) << ((y) & (sizeof((y)[0]) * 8 - 1))) |
| typedef unsigned char A; |
| typedef unsigned char __attribute__((__vector_size__ (8))) B; |
| typedef unsigned char __attribute__((__vector_size__ (16))) C; |
| typedef unsigned char __attribute__((__vector_size__ (32))) D; |
| typedef unsigned char __attribute__((__vector_size__ (64))) E; |
| typedef unsigned short F; |
| typedef unsigned short __attribute__((__vector_size__ (16))) G; |
| typedef unsigned int H; |
| typedef unsigned int __attribute__((__vector_size__ (32))) I; |
| typedef unsigned long long J; |
| typedef unsigned long long __attribute__((__vector_size__ (8))) K; |
| typedef unsigned long long __attribute__((__vector_size__ (32))) L; |
| typedef unsigned long long __attribute__((__vector_size__ (64))) M; |
| typedef unsigned __int128 N; |
| typedef unsigned __int128 __attribute__((__vector_size__ (16))) O; |
| typedef unsigned __int128 __attribute__((__vector_size__ (32))) P; |
| typedef unsigned __int128 __attribute__((__vector_size__ (64))) Q; |
| B v1; |
| D v2; |
| L v3; |
| K v4; |
| I v5; |
| O v6; |
| |
| B |
| foo (A a, C b, E c, F d, G e, H f, J g, M h, N i, P j, Q k) |
| { |
| b &= (A) f; |
| k += a; |
| G l = e; |
| D m = v2 >= (A) (J) v1; |
| J r = a + g; |
| L n = v3 <= f; |
| k -= i / f; |
| l -= (A) g; |
| c |= (A) d; |
| b -= (A) i; |
| J o = ROR (__builtin_clz (r), a); |
| K p = v4 | f, q = v4 <= f; |
| P s = SHLV (SHLSV (__builtin_bswap64 (i), (P) (0 < j)) <= 0, j); |
| n += a <= r; |
| M t = (M) (a / SHLV (c, 0)) != __builtin_bswap64 (i); |
| I u = f - v5; |
| E v = (E) h + (E) t + (E) k; |
| D w = (union { D b[2]; }) { }.b[0] + ((union { E b; }) v).b[1] + m + (D) u + (D) n + (D) s; |
| C x = ((union { D b; }) w).b[1] + b + (C) l + (C) v6; |
| B y = ((union { C a; B b; }) x).b + ((union { C a; B b[2]; }) x).b[1] + (B) p + (B) q; |
| J z = i + o; |
| F z2 = z; |
| A z3 = z2; |
| return y + z3; |
| } |
| |
| int |
| main () |
| { |
| B x = foo (0, (C) { }, (E) { }, 10, (G) { }, 4, 2, (M) { }, 123842323652213865LL, (P) { 1 }, (Q) { }); |
| if ((J) x != 0x2e2c2e2c2e2c2e30ULL) |
| __builtin_abort(); |
| return 0; |
| } |