aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sinput-c.ads
diff options
context:
space:
mode:
authorXionghu Luo <luoxhu@linux.ibm.com>2021-12-12 23:17:13 -0600
committerXionghu Luo <luoxhu@linux.ibm.com>2022-01-11 03:20:43 -0600
commit19d81fda48f30c4fc11c8912749351acd9159c17 (patch)
tree3715827fd18e96c63b6f582684880e9a7de4d183 /gcc/ada/sinput-c.ads
parent8e86086bd33134467cc9c2a75327d1238dc71df9 (diff)
downloadgcc-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