Fix the shift patterns, and add test
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. 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. From-SVN: r212267
Showing
- gcc/ChangeLog 8 additions, 0 deletionsgcc/ChangeLog
- gcc/config/rs6000/rs6000.md 21 additions, 21 deletionsgcc/config/rs6000/rs6000.md
- gcc/testsuite/ChangeLog 4 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gcc.target/powerpc/shift-dot.c 49 additions, 0 deletionsgcc/testsuite/gcc.target/powerpc/shift-dot.c
Loading
Please register or sign in to comment