On 6/1/24 1:45 AM, Xiao Zeng wrote:
1 In the previous patch, the libcall for BF16 was implemented:
<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=8c7cee80eb50792e57d514be1418c453ddd1073e>

2 Riscv provides Zfbfmin extension, which completes the "Scalar BF16 Converts":
<https://github.com/riscv/riscv-bfloat16/blob/main/doc/riscv-bfloat16-zfbfmin.adoc>

3 Implemented replacing libcall with Zfbfmin extension instruction.

4 Reused previous testcases in:
<https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=8c7cee80eb50792e57d514be1418c453ddd1073e>
gcc/ChangeLog:

        * config/riscv/iterators.md: Add mode_iterator between
        floating-point modes and BFmode.
        * config/riscv/riscv.cc (riscv_output_move): Handle BFmode move
        for zfbfmin.
        * config/riscv/riscv.md (trunc<mode>bf2): New pattern for BFmode.
        (extendbfsf2): Dotto.
        (*movhf_hardfloat): Add BFmode.
        (*mov<mode>_hardfloat): Dotto.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/zfbfmin-bf16_arithmetic.c: New test.
        * gcc.target/riscv/zfbfmin-bf16_comparison.c: New test.
        * gcc.target/riscv/zfbfmin-bf16_float_libcall_convert.c: New test.
        * gcc.target/riscv/zfbfmin-bf16_integer_libcall_convert.c: New test.
OK for the trunk.  Thanks!

jeff

Reply via email to