On 8/12/24 7:25 AM, Jin Ma wrote:
When compiling an interface for rounding of type 'vfloat16*' without using zvfh
or zvfhmin, it is not enough to use FLOAT_MODE_P because the type does not 
support
it. Although the subsequent riscv_validate_vector_type checks will still fail
and throw exceptions, I don't think we should have ICE here.

internal compiler error: in check, at 
config/riscv/riscv-vector-builtins-shapes.cc:444
    10 |   return __riscv_vfadd_vv_f16m1_rm (vs2, vs1, 0, vl);
       |   ^~~~~~
0x4191794 internal_error(char const*, ...)
         /iothome/jin.ma/code/master/gcc/gcc/diagnostic-global-context.cc:491
0x416ebf5 fancy_abort(char const*, int, char const*)
         /iothome/jin.ma/code/master/gcc/gcc/diagnostic.cc:1772
0x220aae6 riscv_vector::build_frm_base::check(riscv_vector::function_checker&) 
const
         
/iothome/jin.ma/code/master/gcc/gcc/config/riscv/riscv-vector-builtins-shapes.cc:444
0x2205323 riscv_vector::function_checker::check()
         
/iothome/jin.ma/code/master/gcc/gcc/config/riscv/riscv-vector-builtins.cc:4414

gcc/ChangeLog:

        * config/riscv/riscv-protos.h (riscv_vector_float_type_p): New.
        * config/riscv/riscv-vector-builtins.cc 
(function_instance::any_type_float_p):
        Use riscv_vector_float_type_p instead of FLOAT_MODE_P for judgment.
        * config/riscv/riscv.cc (riscv_vector_int_type_p): Change static to 
extern.

gcc/testsuite/ChangeLog:

        * gcc.target/riscv/rvv/base/bug-9.c: New test.
Thanks.  I've pushed this to the trunk.

jeff

Reply via email to