]> git.ipfire.org Git - thirdparty/gcc.git/commit
pru: Optimize the extzv and insv patterns
authorDimitar Dimitrov <dimitar@dinux.eu>
Sun, 19 Nov 2023 10:20:08 +0000 (12:20 +0200)
committerDimitar Dimitrov <dimitar@dinux.eu>
Tue, 7 May 2024 07:17:27 +0000 (10:17 +0300)
commit47b757cf31fffb2ae5fdb93f9f031890080504a8
treeec44b2c0228b6ff7b84c529d92dc1d985c1705f2
parentca7d6d729183685279a0d9dcd39aed11021f1dfa
pru: Optimize the extzv and insv patterns

Optimize the generated code for the bit-field extract and insert
patterns:
  - Use bit-set and bit-clear instructions for 1-bit fields.
  - Expand to SImode operations instead of relying on the default
    expansion to word (QI) mode.

gcc/ChangeLog:

* config/pru/pru.md (extzv<mode>): Make it an expand pattern,
handle efficiently zero-positioned bit-fields.
(insv<mode>): New expand pattern.

gcc/testsuite/ChangeLog:

* gcc.target/pru/ashiftrt.c: Minor update due to new (but
equivalent) generated code sequence.
* gcc.target/pru/extzv-1.c: New test.
* gcc.target/pru/extzv-2.c: New test.
* gcc.target/pru/extzv-3.c: New test.
* gcc.target/pru/insv-1.c: New test.
* gcc.target/pru/insv-2.c: New test.
* gcc.target/pru/insv-3.c: New test.
* gcc.target/pru/insv-4.c: New test.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
gcc/config/pru/pru.md
gcc/testsuite/gcc.target/pru/ashiftrt.c
gcc/testsuite/gcc.target/pru/extzv-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/extzv-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/extzv-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/insv-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/insv-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/insv-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/insv-4.c [new file with mode: 0644]