-
- Downloads
Add ALTIVEC_REGS as pressure class.
Code that has heavy register pressure on Altivec registers can suffer from over-aggressive scheduling during sched1, which then leads to increased register spill. This is due to the fact that registers that prefer ALTIVEC_REGS are currently assigned an allocno class of VSX_REGS. This then misleads the scheduler to think there are 64 regs available, when in reality there are only 32 Altivec regs. This patch fixes the problem by assigning an allocno class of ALTIVEC_REGS and adding ALTIVEC_REGS as a pressure class. 2021-05-10 Pat Haugen <pthaugen@linux.ibm.com> gcc/ChangeLog: * config/rs6000/rs6000.c (rs6000_ira_change_pseudo_allocno_class): Return ALTIVEC_REGS if that is best_class. (rs6000_compute_pressure_classes): Add ALTIVEC_REGS. gcc/testsuite/ChangeLog: * gcc.target/powerpc/fold-vec-insert-float-p9.c: Adjust counts. * gcc.target/powerpc/vec-rlmi-rlnm.c: Likewise.
Showing
- gcc/config/rs6000/rs6000.c 7 additions, 4 deletionsgcc/config/rs6000/rs6000.c
- gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c 2 additions, 2 deletionsgcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c
- gcc/testsuite/gcc.target/powerpc/vec-rlmi-rlnm.c 1 addition, 1 deletiongcc/testsuite/gcc.target/powerpc/vec-rlmi-rlnm.c
Loading
Please register or sign in to comment