On 9/2/25 1:01 AM, Kuan-Lin Chen wrote:
This extension defines vector instructions to calculae of the signed/unsigned
dot product of four SEW/4-bit data and accumulate the result into a SEWbit
element for all elements in a vector register.

gcc/ChangeLog:

        * config/riscv/andes-vector-builtins-bases.cc (nds_vd4dot): New class.
        (class nds_vd4dotsu): New class.
        * config/riscv/andes-vector-builtins-bases.h: New def.
        * config/riscv/andes-vector-builtins-functions.def (nds_vd4dots): Ditto.
        (nds_vd4dotsu): Ditto.
        (nds_vd4dotu): Ditto.
        * config/riscv/andes-vector.md
        (@pred_nds_vd4dot<su><mode>): New pattern.
        (@pred_nds_vd4dotsu<mode>): New pattern.
        * config/riscv/genrvv-type-indexer.cc (main): Modify sew of QUAD_FIX,
        QUAD_FIX_SIGNED and QUAD_FIX_UNSIGNED.
        * config/riscv/riscv-vector-builtins.cc
        (qexti_vvvv_ops): New operand information.
        (qexti_su_vvvv_ops): New operand information.
        (qextu_vvvv_ops): New operand information.
        * config/riscv/riscv-vector-builtins.h (XANDESVDOT_EXT): New def.
        (required_ext_to_isa_name): Add case XANDESVDOT_EXT.
        (required_extensions_specified): Ditto.
        (struct function_group_info): Ditto.
        * config/riscv/vector-iterators.md (NDS_QUAD_FIX): New iterator.

gcc/testsuite/ChangeLog:

        * 
gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c: New 
test.
        * 
gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c: New 
test.
        * 
gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c: New 
test.
        * 
gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c: New test.
        * 
gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c: New 
test.
        * 
gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c: New test.
        * 
gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c: New test.
        * 
gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c: New 
test.
        * 
gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c: New test.
        * gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c: 
New test.
        * gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c: 
New test.
        * gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c: 
New test.
Thanks.  I've pushed this to the trunk.
jeff

Reply via email to