On Wed, Jul 2, 2014 at 5:06 PM, Segher Boessenkool <seg...@kernel.crashing.org> wrote: > Firstly, it adds back the split conditions that I accidentally removed. > Without it the dot insns are never generated, or rather, always split > back to a separate compare instruction. > > Secondly, the shift amount should be SI always, not GPR, or GCC will > insert a zero-extend at expand time that it cannot get rid of later.
Ugh. > The test tests whether dot-form instructions are generated for both > "dot" and "dot2" cases, that is, with just a CC output or also a GPR > output; for all four basic shifts, with a register amount or an > immediate amount. It also tests for superfluous zero-extends. This > also tests if combine "simplifies" the rotates to right-rotates, which > it shouldn't do anymore. > > Bootstrapped and tested as usual. Okay to commit? > > > Segher > > > 2014-07-02 Segher Boessenkool <seg...@kernel.crashing.org> > > gcc/ > * config/rs6000/rs6000.md (rotl<mode>3, ashl<mode>3, lshr<mode>3, > ashr<mode>3): Correct mode of operands[2]. > (rotl<mode>3_dot, rotl<mode>3_dot2, ashl<mode>3_dot, ashl<mode>3_dot2, > lshr<mode>3_dot, lshr<mode>3_dot2, ashr<mode>3_dot, ashr<mode>3_dot2): > Correct mode of operands[2]. Fix split condition. > > gcc/testsuite/ > * gcc.target/powerpc/shift-dot.c: New test. Okay. Thanks, David