On 9/5/23 15:15, Christoph Muellner wrote:
From: Christoph Müllner <christoph.muell...@vrull.eu>

Some constants can be built up using LI+RORI instructions.
The current implementation requires one of the upper 32-bits
to be a zero bit, which is not neccesary.
Let's drop this requirement in order to be able to synthesize
a constant like 0xffffffff00ffffffL.

The tests for LI+RORI are made more strict to detect regression
in the calculation of the LI constant and the rotation amount.

Signed-off-by: Christoph Müllner <christoph.muell...@vrull.eu>

gcc/ChangeLog:

        * config/riscv/riscv.cc (riscv_build_integer_1): Don't
        require one zero bit in the upper 32 bits for LI+RORI synthesis.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/xtheadbb-li-rotr.c: New tests.
        * gcc.target/riscv/zbb-li-rotr.c: Likewise.
OK
jeff

Reply via email to