| /* { dg-options "-O2" } */ | |
| /* PR85160 */ | |
| /* Originally, the "x >> 14" are CSEd away (eventually becoming a srawi | |
| instruction), and the two ANDs remain separate instructions because | |
| combine cannot deal with this. | |
| Now that combine knows how to combine two RTL insns into two, it manages | |
| to make this just the sum of two rlwinm instructions. */ | |
| int f(int x) | |
| { | |
| return ((x >> 14) & 6) + ((x >> 14) & 4); | |
| } | |
| /* { dg-final { scan-assembler-not {\msrawi\M} } } */ |