diff options
author | Xionghu Luo <luoxhu@linux.ibm.com> | 2021-12-12 23:17:13 -0600 |
---|---|---|
committer | Xionghu Luo <luoxhu@linux.ibm.com> | 2022-01-11 03:20:43 -0600 |
commit | 19d81fda48f30c4fc11c8912749351acd9159c17 (patch) | |
tree | 3715827fd18e96c63b6f582684880e9a7de4d183 /gcc/ada/sinput-c.ads | |
parent | 8e86086bd33134467cc9c2a75327d1238dc71df9 (diff) | |
download | gcc-19d81fda48f30c4fc11c8912749351acd9159c17.zip gcc-19d81fda48f30c4fc11c8912749351acd9159c17.tar.gz gcc-19d81fda48f30c4fc11c8912749351acd9159c17.tar.bz2 |
rs6000: powerpc suboptimal boolean test of contiguous bits [PR102239]
Add specialized version to combine two instructions from
9: {r123:CC=cmp(r124:DI&0x600000000,0);clobber scratch;}
REG_DEAD r124:DI
10: pc={(r123:CC==0)?L15:pc}
REG_DEAD r123:CC
to:
10: {pc={(r123:DI&0x600000000==0)?L15:pc};clobber scratch;clobber %0:CC;}
then split2 will split it to one rotate dot instruction (to save one
rotate back instruction) as shifted result doesn't matter when comparing
to 0 in CCEQmode.
Bootstrapped and regression tested pass on Power 8/9/10.
gcc/ChangeLog:
PR target/102239
* config/rs6000/rs6000-protos.h (rs6000_is_valid_rotate_dot_mask): New
declare.
* config/rs6000/rs6000.c (rs6000_is_valid_rotate_dot_mask): New
function.
* config/rs6000/rs6000.md (*branch_anddi3_dot): New.
gcc/testsuite/ChangeLog:
PR target/102239
* gcc.target/powerpc/pr102239.c: New test.
Diffstat (limited to 'gcc/ada/sinput-c.ads')
0 files changed, 0 insertions, 0 deletions