aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.cc
diff options
context:
space:
mode:
authorHaochen Gui <guihaoc@gcc.gnu.org>2023-08-16 14:21:09 +0800
committerHaochen Gui <guihaoc@gcc.gnu.org>2023-08-16 14:23:38 +0800
commita79cf858b39e01c80537bc5d47a5e9004418c267 (patch)
treeb831f5e5d727b83ada81f701e382e30bda7ac9ce /gcc/fold-const.cc
parentfe5788862ba8d5ac4551658d842f2d038bd8d363 (diff)
downloadgcc-a79cf858b39e01c80537bc5d47a5e9004418c267.zip
gcc-a79cf858b39e01c80537bc5d47a5e9004418c267.tar.gz
gcc-a79cf858b39e01c80537bc5d47a5e9004418c267.tar.bz2
rs6000: Generate mfvsrwz for all platforms and remove redundant zero extend
mfvsrwz has lower latency than xxextractuw or vextuw[lr]x. So it should be generated even with p9 vector enabled. Also the instruction is already zero extended. A combine pattern is needed to eliminate redundant zero extend instructions. gcc/ PR target/106769 * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only for V8HI and V16QI. (vsx_extract_v4si): New expand for V4SI extraction. (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on word 1 from BE order. (*mfvsrwz): New insn pattern for mfvsrwz. (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on word 1 from BE order. (*vsx_extract_si): Remove. (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2, 3 from BE order. gcc/testsuite/ PR target/106769 * gcc.target/powerpc/pr106769.h: New. * gcc.target/powerpc/pr106769-p8.c: New. * gcc.target/powerpc/pr106769-p9.c: New.
Diffstat (limited to 'gcc/fold-const.cc')
0 files changed, 0 insertions, 0 deletions