1 /* PR tree-optimization/86401 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fdump-tree-optimized" } */
4 /* { dg-final { scan-tree-dump-not " \\+ 64" "optimized" } } */
5 /* { dg-final { scan-tree-dump-not "64 - " "optimized" } } */
6 /* { dg-final { scan-tree-dump-not " \\+ 4294967232" "optimized" } } */
7 /* { dg-final { scan-tree-dump-not " & 319" "optimized" } } */
8 /* { dg-final { scan-tree-dump-not " \\| 4294967168" "optimized" } } */
9 /* { dg-final { scan-tree-dump-not " \\^ 4294966912" "optimized" } } */
10 
f1(unsigned x)11 unsigned f1 (unsigned x) { unsigned m = 64; return (m + x) & (m - 1); }
f2(unsigned x)12 unsigned f2 (unsigned x) { return (64 + x) & 63; }
f3(unsigned x)13 unsigned f3 (unsigned x) { unsigned m = 64; return (x + m) & (m - 1); }
f4(unsigned x)14 unsigned f4 (unsigned x) { return (x + 64) & 63; }
f5(unsigned x)15 unsigned f5 (unsigned x) { unsigned m = 64; return (m - x) & (m - 1); }
f6(unsigned x)16 unsigned f6 (unsigned x) { return (64 - x) & 63; }
f7(unsigned x)17 unsigned f7 (unsigned x) { unsigned m = 64; return (x - m) & (m - 1); }
f8(unsigned x)18 unsigned f8 (unsigned x) { return (x - 64) & 63; }
f9(unsigned x,unsigned y)19 unsigned f9 (unsigned x, unsigned y) { unsigned m = 64, n = 256 | (m - 1); return ((x & n) + y) & (m - 1); }
f10(unsigned x,unsigned y)20 unsigned f10 (unsigned x, unsigned y) { return ((x & 319) + y) & 63; }
f11(unsigned x,unsigned y)21 unsigned f11 (unsigned x, unsigned y) { unsigned m = 64, n = -128; return ((x | n) + y) & (m - 1); }
f12(unsigned x,unsigned y)22 unsigned f12 (unsigned x, unsigned y) { return ((x | -128) + y) & 63; }
f13(unsigned x,unsigned y)23 unsigned f13 (unsigned x, unsigned y) { unsigned m = 64, n = -384; return ((x ^ n) + y) & (m - 1); }
f14(unsigned x,unsigned y)24 unsigned f14 (unsigned x, unsigned y) { return ((x ^ -384) + y) & 63; }
f15(unsigned x,unsigned y)25 unsigned f15 (unsigned x, unsigned y) { unsigned m = 64, n = 256 | (m - 1); return (y + (x & n)) & (m - 1); }
f16(unsigned x,unsigned y)26 unsigned f16 (unsigned x, unsigned y) { return (y + (x & 319)) & 63; }
f17(unsigned x,unsigned y)27 unsigned f17 (unsigned x, unsigned y) { unsigned m = 64, n = -128; return (y + (x | n)) & (m - 1); }
f18(unsigned x,unsigned y)28 unsigned f18 (unsigned x, unsigned y) { return (y + (x | -128)) & 63; }
f19(unsigned x,unsigned y)29 unsigned f19 (unsigned x, unsigned y) { unsigned m = 64, n = -384; return (y + (x ^ n)) & (m - 1); }
f20(unsigned x,unsigned y)30 unsigned f20 (unsigned x, unsigned y) { return (y + (x ^ -384)) & 63; }
f21(unsigned x,unsigned y)31 unsigned f21 (unsigned x, unsigned y) { unsigned m = 64, n = 256 | (m - 1); return ((x & n) - y) & (m - 1); }
f22(unsigned x,unsigned y)32 unsigned f22 (unsigned x, unsigned y) { return ((x & 319) - y) & 63; }
f23(unsigned x,unsigned y)33 unsigned f23 (unsigned x, unsigned y) { unsigned m = 64, n = -128; return ((x | n) - y) & (m - 1); }
f24(unsigned x,unsigned y)34 unsigned f24 (unsigned x, unsigned y) { return ((x | -128) - y) & 63; }
f25(unsigned x,unsigned y)35 unsigned f25 (unsigned x, unsigned y) { unsigned m = 64, n = -384; return ((x ^ n) - y) & (m - 1); }
f26(unsigned x,unsigned y)36 unsigned f26 (unsigned x, unsigned y) { return ((x ^ -384) - y) & 63; }
f27(unsigned x,unsigned y)37 unsigned f27 (unsigned x, unsigned y) { unsigned m = 64, n = 256 | (m - 1); return (y - (x & n)) & (m - 1); }
f28(unsigned x,unsigned y)38 unsigned f28 (unsigned x, unsigned y) { return (y - (x & 319)) & 63; }
f29(unsigned x,unsigned y)39 unsigned f29 (unsigned x, unsigned y) { unsigned m = 64, n = -128; return (y - (x | n)) & (m - 1); }
f30(unsigned x,unsigned y)40 unsigned f30 (unsigned x, unsigned y) { return (y - (x | -128)) & 63; }
f31(unsigned x,unsigned y)41 unsigned f31 (unsigned x, unsigned y) { unsigned m = 64, n = -384; return (y - (x ^ n)) & (m - 1); }
f32(unsigned x,unsigned y)42 unsigned f32 (unsigned x, unsigned y) { return (y - (x ^ -384)) & 63; }
f33(unsigned x)43 unsigned f33 (unsigned x) { unsigned m = 64, n = 256 | (m - 1); return (-(x & n)) & (m - 1); }
f34(unsigned x)44 unsigned f34 (unsigned x) { return (-(x & 319)) & 63; }
f35(unsigned x)45 unsigned f35 (unsigned x) { unsigned m = 64, n = -128; return (-(x | n)) & (m - 1); }
f36(unsigned x)46 unsigned f36 (unsigned x) { return (-(x | -128)) & 63; }
f37(unsigned x)47 unsigned f37 (unsigned x) { unsigned m = 64, n = -384; return (-(x ^ n)) & (m - 1); }
f38(unsigned x)48 unsigned f38 (unsigned x) { return (-(x ^ -384)) & 63; }
49