On 9/11/23 19:28, Tsukasa OI wrote:
From: Tsukasa OI <research_tra...@irq.a4lg.com>

For bit manipulation operations, input(s) and the manipulated output are
better to be unsigned like other target-independent builtins like
__builtin_bswap32 and __builtin_popcount.

Although this is not completely compatible as before (as the type changes),
most code will run normally, even without warnings (with -Wall -Wextra).

To make consistent to the LLVM commit 599421ae36c3 ("[RISCV] Use unsigned
instead of signed types for Zk* and Zb* builtins."), round numbers and
shift amount on the scalar crypto instructions are also changed
to unsigned.

gcc/ChangeLog:

        * config/riscv/riscv-builtins.cc (RISCV_ATYPE_UQI): New for
        uint8_t.  (RISCV_ATYPE_UHI): New for uint16_t.
        (RISCV_ATYPE_QI, RISCV_ATYPE_HI, RISCV_ATYPE_SI, RISCV_ATYPE_DI):
        Removed as no longer used.
        (RISCV_ATYPE_UDI): New for uint64_t.
        * config/riscv/riscv-cmo.def: Make types unsigned for not working
        "zicbop_cbo_prefetchi" and working bit manipulation clmul builtin
        argument/return types.
        * config/riscv/riscv-ftypes.def: Make bit manipulation, round
        number and shift amount types unsigned.
        * config/riscv/riscv-scalar-crypto.def: Ditto.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/zbc32.c: Make signed type to unsigned.
        * gcc.target/riscv/zbc64.c: Ditto.
        * gcc.target/riscv/zbkb32.c: Ditto.
        * gcc.target/riscv/zbkb64.c: Ditto.
        * gcc.target/riscv/zbkc32.c: Ditto.
        * gcc.target/riscv/zbkc64.c: Ditto.
        * gcc.target/riscv/zbkx32.c: Ditto.
        * gcc.target/riscv/zbkx64.c: Ditto.
        * gcc.target/riscv/zknd32.c: Ditto.
        * gcc.target/riscv/zknd64.c: Ditto.
        * gcc.target/riscv/zkne32.c: Ditto.
        * gcc.target/riscv/zkne64.c: Ditto.
        * gcc.target/riscv/zknh-sha256.c: Ditto.
        * gcc.target/riscv/zknh-sha512-32.c: Ditto.
        * gcc.target/riscv/zknh-sha512-64.c: Ditto.
        * gcc.target/riscv/zksed32.c: Ditto.
        * gcc.target/riscv/zksed64.c: Ditto.
        * gcc.target/riscv/zksh32.c: Ditto.
        * gcc.target/riscv/zksh64.c: Ditto.
OK
Jeff
---

Reply via email to