Hi Jeff, As you mentioned, CI testing is flagging errors on xandesperf-2.c. I tried to reproduce the failure under the same conditions as CI, but all multilib variants for both newlib and Linux passed on my end. I’m unable to determine why the test case fails in CI. It’s possible that a different cost model is generating a reversed condition, so I’ve updated the expected result in patch2 accordingly.
Hi Kito, I've update the new version of bf16 conversion intrinsics in Andes. The version support 'vl' and frm in the intrinsic prototype. Changes since v3: [PATCH 2/7] Modify the expected test result. [PATCH 4/7] Add 'vl' support for nds_vfwcvtbf16 and nds_vfncvtbf16 in XAndesvbfhcvt. Add FRM support for nds_vfncvtbf16. Add new test cases for nds_vfwcvtbf16 and nds_vfncvtbf16. Thanks for your review. Kuan-Lin Chen (7): RISC-V: Add basic XAndes vendor extension support. RISC-V: Add support for the XAndesperf ISA extension. RISC-V: Add support for the XAndesbfhcvt ISA extension. RISC-V: Add support for the XAndesvbfhcvt ISA extension. RISC-V: Add support for the XAndesvsintload ISA extension. RISC-V: Add support for the XAndesvpackfph ISA extension. RISC-V: Add support for the XAndesvdot ISA extension. gcc/common/config/riscv/riscv-common.cc | 3 + gcc/config.gcc | 4 +- .../riscv/andes-vector-builtins-bases.cc | 183 ++++++++ .../riscv/andes-vector-builtins-bases.h | 43 ++ .../riscv/andes-vector-builtins-functions.def | 66 +++ gcc/config/riscv/andes-vector.md | 180 ++++++++ gcc/config/riscv/andes.def | 14 + gcc/config/riscv/andes.md | 429 ++++++++++++++++++ gcc/config/riscv/andes_vector.h | 32 ++ gcc/config/riscv/constraints.md | 10 + gcc/config/riscv/generic-vector-ooo.md | 3 +- gcc/config/riscv/genrvv-type-indexer.cc | 6 +- gcc/config/riscv/iterators.md | 15 + gcc/config/riscv/predicates.md | 42 ++ gcc/config/riscv/riscv-builtins.cc | 9 + gcc/config/riscv/riscv-ext-andes.def | 100 ++++ gcc/config/riscv/riscv-ext.def | 1 + gcc/config/riscv/riscv-ext.opt | 15 + gcc/config/riscv/riscv-ftypes.def | 3 + .../riscv/riscv-vector-builtins-shapes.cc | 2 +- .../riscv/riscv-vector-builtins-types.def | 44 ++ gcc/config/riscv/riscv-vector-builtins.cc | 103 +++++ gcc/config/riscv/riscv-vector-builtins.def | 3 + gcc/config/riscv/riscv-vector-builtins.h | 20 + gcc/config/riscv/riscv.cc | 32 ++ gcc/config/riscv/riscv.md | 39 +- gcc/config/riscv/t-riscv | 18 +- gcc/config/riscv/vector-iterators.md | 38 +- gcc/config/riscv/vector.md | 19 +- gcc/doc/riscv-ext.texi | 24 + gcc/testsuite/gcc.target/riscv/riscv.exp | 2 + gcc/testsuite/gcc.target/riscv/rvv/rvv.exp | 12 + .../non-policy/non-overloaded/nds_vd4dots.c | 132 ++++++ .../non-policy/non-overloaded/nds_vd4dotsu.c | 132 ++++++ .../non-policy/non-overloaded/nds_vd4dotu.c | 132 ++++++ .../non-overloaded/nds_vfncvtbf16s.c | 46 ++ .../non-policy/non-overloaded/nds_vfpmadb.c | 103 +++++ .../non-policy/non-overloaded/nds_vfpmadt.c | 103 +++++ .../non-overloaded/nds_vfwcvtsbf16.c | 26 ++ .../non-policy/non-overloaded/nds_vln8.c | 62 +++ .../non-policy/overloaded/nds_vd4dots.c | 132 ++++++ .../non-policy/overloaded/nds_vd4dotsu.c | 132 ++++++ .../non-policy/overloaded/nds_vd4dotu.c | 132 ++++++ .../non-policy/overloaded/nds_vfncvtbf16s.c | 46 ++ .../non-policy/overloaded/nds_vfpmadb.c | 103 +++++ .../non-policy/overloaded/nds_vfpmadt.c | 103 +++++ .../non-policy/overloaded/nds_vfwcvtsbf16.c | 26 ++ .../non-policy/overloaded/nds_vln8.c | 34 ++ .../policy/non-overloaded/nds_vd4dots.c | 258 +++++++++++ .../policy/non-overloaded/nds_vd4dotsu.c | 258 +++++++++++ .../policy/non-overloaded/nds_vd4dotu.c | 258 +++++++++++ .../policy/non-overloaded/nds_vfncvtbf16s.c | 46 ++ .../policy/non-overloaded/nds_vfpmadb.c | 199 ++++++++ .../policy/non-overloaded/nds_vfpmadt.c | 199 ++++++++ .../policy/non-overloaded/nds_vfwcvtsbf16.c | 26 ++ .../policy/non-overloaded/nds_vln8.c | 118 +++++ .../policy/overloaded/nds_vd4dots.c | 258 +++++++++++ .../policy/overloaded/nds_vd4dotsu.c | 258 +++++++++++ .../policy/overloaded/nds_vd4dotu.c | 258 +++++++++++ .../policy/overloaded/nds_vfncvtbf16s.c | 46 ++ .../policy/overloaded/nds_vfpmadb.c | 199 ++++++++ .../policy/overloaded/nds_vfpmadt.c | 199 ++++++++ .../policy/overloaded/nds_vfwcvtsbf16.c | 26 ++ .../xandesvector/policy/overloaded/nds_vln8.c | 118 +++++ .../gcc.target/riscv/xandes/xandes-predef-1.c | 14 + .../gcc.target/riscv/xandes/xandes-predef-2.c | 14 + .../gcc.target/riscv/xandes/xandes-predef-3.c | 14 + .../gcc.target/riscv/xandes/xandes-predef-4.c | 14 + .../gcc.target/riscv/xandes/xandes-predef-5.c | 14 + .../gcc.target/riscv/xandes/xandes-predef-6.c | 14 + .../gcc.target/riscv/xandes/xandesbfhcvt-1.c | 11 + .../gcc.target/riscv/xandes/xandesbfhcvt-2.c | 11 + .../gcc.target/riscv/xandes/xandesperf-1.c | 13 + .../gcc.target/riscv/xandes/xandesperf-10.c | 32 ++ .../gcc.target/riscv/xandes/xandesperf-11.c | 32 ++ .../gcc.target/riscv/xandes/xandesperf-2.c | 13 + .../gcc.target/riscv/xandes/xandesperf-3.c | 11 + .../gcc.target/riscv/xandes/xandesperf-4.c | 11 + .../gcc.target/riscv/xandes/xandesperf-5.c | 11 + .../gcc.target/riscv/xandes/xandesperf-6.c | 18 + .../gcc.target/riscv/xandes/xandesperf-7.c | 22 + .../gcc.target/riscv/xandes/xandesperf-8.c | 26 ++ .../gcc.target/riscv/xandes/xandesperf-9.c | 31 ++ 83 files changed, 5981 insertions(+), 27 deletions(-) create mode 100644 gcc/config/riscv/andes-vector-builtins-bases.cc create mode 100644 gcc/config/riscv/andes-vector-builtins-bases.h create mode 100644 gcc/config/riscv/andes-vector-builtins-functions.def create mode 100644 gcc/config/riscv/andes-vector.md create mode 100644 gcc/config/riscv/andes.def create mode 100644 gcc/config/riscv/andes.md create mode 100644 gcc/config/riscv/andes_vector.h create mode 100644 gcc/config/riscv/riscv-ext-andes.def create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandes-predef-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandes-predef-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandes-predef-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandes-predef-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandes-predef-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandes-predef-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesbfhcvt-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesbfhcvt-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-10.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-11.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-8.c create mode 100644 gcc/testsuite/gcc.target/riscv/xandes/xandesperf-9.c -- 2.34.1