pru: Add builtins for HALT and LMBD
authorDimitar Dimitrov <dimitar@dinux.eu>
Sun, 1 Nov 2020 13:09:27 +0000 (15:09 +0200)
committerDimitar Dimitrov <dimitar@dinux.eu>
Thu, 19 Nov 2020 17:39:49 +0000 (19:39 +0200)
commit5ace1776b88d4b0fc371414d0b3983015e22fead
tree0185ff9ee4bdfc8940b18eee4e5c4eb4555a0f1e
parent0b0061f4d83cd8eb181f7114a077237b95a0c144
pru: Add builtins for HALT and LMBD

Add builtins for HALT and LMBD, per Texas Instruments document
SPRUHV7C.  Use the new LMBD pattern to define an expand for clz.

Binutils [1] and sim [2] support for LMBD instruction are merged now.

[1] https://sourceware.org/pipermail/binutils/2020-October/113901.html
[2] https://sourceware.org/pipermail/gdb-patches/2020-November/173141.html

gcc/ChangeLog:

* config/pru/alu-zext.md: Add lmbd patterns for zero_extend
variants.
* config/pru/pru.c (enum pru_builtin): Add HALT and LMBD.
(pru_init_builtins): Ditto.
(pru_builtin_decl): Ditto.
(pru_expand_builtin): Ditto.
* config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Define PRU
value for CLZ with zero value parameter.
* config/pru/pru.md: Add halt, lmbd and clz patterns.
* doc/extend.texi: Document PRU builtins.

gcc/testsuite/ChangeLog:

* gcc.target/pru/halt.c: New test.
* gcc.target/pru/lmbd.c: New test.
gcc/config/pru/alu-zext.md
gcc/config/pru/pru.c
gcc/config/pru/pru.h
gcc/config/pru/pru.md
gcc/doc/extend.texi
gcc/testsuite/gcc.target/pru/halt.c [new file with mode: 0644]
gcc/testsuite/gcc.target/pru/lmbd.c [new file with mode: 0644]