Re: Re: [PATCH][v2] RISC-V: Add avail interface into function_group_info

2023-12-07 Thread Feng Wang
2023-12-08 11:35 Kito Cheng  wrote:



>> Without comma, there is a warning "warning: ISO C++11 requires at least one 
>> argument for the "..." in a variadic macro".
>> So I add the comma.
>
>Oh, thanks, I wasn't aware that, maybe take one more argument to '...'
>
>#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, ...)
>
>Anyway my intention is to reduce unnecessary diff as possible.

Hi Kito, I understand. 
So I tried to many ways want to minimize this modification, I have also tried 
the method you mentioned,there is still a warning.
But just a warning won't affect the functionality.If you think it's okay, then 
there's no need to modify the original definition.

Re: Re: [PATCH][v2] RISC-V: Add avail interface into function_group_info

2023-12-07 Thread Kito Cheng
> Without comma, there is a warning "warning: ISO C++11 requires at least one 
> argument for the "..." in a variadic macro".
> So I add the comma.

Oh, thanks, I wasn't aware that, maybe take one more argument to '...'

#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, ...)

Anyway my intention is to reduce unnecessary diff as possible.


Re: Re: [PATCH][v2] RISC-V: Add avail interface into function_group_info

2023-12-07 Thread Feng Wang
2023-12-08 11:18 Kito Cheng  wrote:



>> @@ -31,624 +31,627 @@ along with GCC; see the file COPYING3. If not see



>>   - OPS_INFO describes all information of return type and each



>> argument type.



>>



>> + - AVAIL this argument is the optional for AVAIL.Determin the enable



>> +   of the intrinsic function.



>> +



>>  */



>>  #ifndef DEF_RVV_FUNCTION



>> -#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)



>> +#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)



>



>



>#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...)



>



>>  #endif



>>



>>  /* Internal helper functions for gimple fold use.  */



>> -DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)



>> -DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)



>> +DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, )



>> +DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, )



>



>And keep this unchanged, you don't need extra comma.



>

Without comma, there is a warning "warning: ISO C++11 requires at least one 
argument for the "..." in a variadic macro".
So I add the comma.

>DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)



>DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)



>



>>



>>  /* 6. Configuration-Setting Instructions.  */



>>



>> -DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)



>> -DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)



>> +DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops, )



>> +DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops, )



>>



>>  /* 7. Vector Loads and Stores. */



>>



>>  // 7.4. Vector Unit-Stride Instructions



>> -DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)



>> -DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)



>> -DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)



>> -DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)



>> +DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops, )



>> +DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops, )



>> +DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops, )



>> +DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops, )



>>



>>  // 7.5. Vector Strided Instructions



>> -DEF_RVV_FUNCTION (vlse, loadstore, full_preds, 
>> all_v_scalar_const_ptr_ptrdiff_ops)



>> -DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, 
>> all_v_scalar_ptr_ptrdiff_ops)



>> +DEF_RVV_FUNCTION (vlse, loadstore, full_preds, 
>> all_v_scalar_const_ptr_ptrdiff_ops, )



>> +DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, 
>> all_v_scalar_ptr_ptrdiff_ops, )



>>



>>  // 7.6. Vector Indexed Instructions



>> -DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew8_index_ops)



>> -DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew16_index_ops)



>> -DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew32_index_ops)



>> -DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew64_index_ops)



>> -DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew8_index_ops)



>> -DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew16_index_ops)



>> -DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew32_index_ops)



>> -DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew64_index_ops)



>> -DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew8_index_ops)



>> -DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew16_index_ops)



>> -DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew32_index_ops)



>> -DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew64_index_ops)



>> -DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew8_index_ops)



>> -DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew16_index_ops)



>> -DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew32_index_ops)



>> -DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, 
>> all_v_scalar_ptr_eew64_index_ops)



>> +DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew8_index_ops, )



>> +DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew16_index_ops, )



>> +DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, 
>> all_v_scalar_const_ptr_eew32_index_ops, )



>> +DEF_RVV_FUNCTION (vluxei64, 

Re: [PATCH][v2] RISC-V: Add avail interface into function_group_info

2023-12-07 Thread Kito Cheng
> @@ -31,624 +31,627 @@ along with GCC; see the file COPYING3. If not see
>   - OPS_INFO describes all information of return type and each
> argument type.
>
> + - AVAIL this argument is the optional for AVAIL.Determin the enable
> +   of the intrinsic function.
> +
>  */
>  #ifndef DEF_RVV_FUNCTION
> -#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
> +#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)


#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...)

>  #endif
>
>  /* Internal helper functions for gimple fold use.  */
> -DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
> -DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
> +DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, )
> +DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, )

And keep this unchanged, you don't need extra comma.

DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)

>
>  /* 6. Configuration-Setting Instructions.  */
>
> -DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
> -DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
> +DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops, )
> +DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops, )
>
>  /* 7. Vector Loads and Stores. */
>
>  // 7.4. Vector Unit-Stride Instructions
> -DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
> -DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)
> -DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)
> -DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)
> +DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops, )
> +DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops, )
> +DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops, )
> +DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops, )
>
>  // 7.5. Vector Strided Instructions
> -DEF_RVV_FUNCTION (vlse, loadstore, full_preds, 
> all_v_scalar_const_ptr_ptrdiff_ops)
> -DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, 
> all_v_scalar_ptr_ptrdiff_ops)
> +DEF_RVV_FUNCTION (vlse, loadstore, full_preds, 
> all_v_scalar_const_ptr_ptrdiff_ops, )
> +DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, 
> all_v_scalar_ptr_ptrdiff_ops, )
>
>  // 7.6. Vector Indexed Instructions
> -DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew8_index_ops)
> -DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew16_index_ops)
> -DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew32_index_ops)
> -DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew64_index_ops)
> -DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew8_index_ops)
> -DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew16_index_ops)
> -DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew32_index_ops)
> -DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew64_index_ops)
> -DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew8_index_ops)
> -DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew16_index_ops)
> -DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew32_index_ops)
> -DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew64_index_ops)
> -DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew8_index_ops)
> -DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew16_index_ops)
> -DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew32_index_ops)
> -DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, 
> all_v_scalar_ptr_eew64_index_ops)
> +DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew8_index_ops, )
> +DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew16_index_ops, )
> +DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew32_index_ops, )
> +DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew64_index_ops, )
> +DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew8_index_ops, )
> +DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew16_index_ops, )
> +DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew32_index_ops, )
> +DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, 
> all_v_scalar_const_ptr_eew64_index_ops, )
> 

Re: [PATCH][v2] RISC-V: Add avail interface into function_group_info

2023-12-07 Thread Feng Wang
2023-12-08 10:44 Feng Wang  wrote:

Have run all the vector api-testing.

>Patch v2: Using variadic macro and add the dependency into t-riscv



>



>In order to add other extension about vector,this patch add



>unsigned int (*avail) (void) into function_group_info to determine



>whether to register the intrinsic based on ISA info.



>



>gcc/ChangeLog:



>



>   * config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION):



>   Add AVAIL argument.



>   (read_vl): Using AVAIL argument default value.



>   (vlenb): Ditto.



>   (vsetvl): Ditto.



>   (vsetvlmax): Ditto.



>   (vle): Ditto.



>   (vse): Ditto.



>   (vlm): Ditto.



>   (vsm): Ditto.



>   (vlse): Ditto.



>   (vsse): Ditto.



>   (vluxei8): Ditto.



>   (vluxei16): Ditto.



>   (vluxei32): Ditto.



>   (vluxei64): Ditto.



>   (vloxei8): Ditto.



>   (vloxei16): Ditto.



>   (vloxei32): Ditto.



>   (vloxei64): Ditto.



>   (vsuxei8): Ditto.



>   (vsuxei16): Ditto.



>   (vsuxei32): Ditto.



>   (vsuxei64): Ditto.



>   (vsoxei8): Ditto.



>   (vsoxei16): Ditto.



>   (vsoxei32): Ditto.



>   (vsoxei64): Ditto.



>   (vleff): Ditto.



>   (vadd): Ditto.



>   (vsub): Ditto.



>   (vrsub): Ditto.



>   (vneg): Ditto.



>   (vwaddu): Ditto.



>   (vwsubu): Ditto.



>   (vwadd): Ditto.



>   (vwsub): Ditto.



>   (vwcvt_x): Ditto.



>   (vwcvtu_x): Ditto.



>   (vzext): Ditto.



>   (vsext): Ditto.



>   (vadc): Ditto.



>   (vmadc): Ditto.



>   (vsbc): Ditto.



>   (vmsbc): Ditto.



>   (vand): Ditto.



>   (vor): Ditto.



>   (vxor): Ditto.



>   (vnot): Ditto.



>   (vsll): Ditto.



>   (vsra): Ditto.



>   (vsrl): Ditto.



>   (vnsrl): Ditto.



>   (vnsra): Ditto.



>   (vncvt_x): Ditto.



>   (vmseq): Ditto.



>   (vmsne): Ditto.



>   (vmsltu): Ditto.



>   (vmslt): Ditto.



>   (vmsleu): Ditto.



>   (vmsle): Ditto.



>   (vmsgtu): Ditto.



>   (vmsgt): Ditto.



>   (vmsgeu): Ditto.



>   (vmsge): Ditto.



>   (vminu): Ditto.



>   (vmin): Ditto.



>   (vmaxu): Ditto.



>   (vmax): Ditto.



>   (vmul): Ditto.



>   (vmulh): Ditto.



>   (vmulhu): Ditto.



>   (vmulhsu): Ditto.



>   (vdivu): Ditto.



>   (vdiv): Ditto.



>   (vremu): Ditto.



>   (vrem): Ditto.



>   (vwmul): Ditto.



>   (vwmulu): Ditto.



>   (vwmulsu): Ditto.



>   (vmacc): Ditto.



>   (vnmsac): Ditto.



>   (vmadd): Ditto.



>   (vnmsub): Ditto.



>   (vwmaccu): Ditto.



>   (vwmacc): Ditto.



>   (vwmaccsu): Ditto.



>   (vwmaccus): Ditto.



>   (vmerge): Ditto.



>   (vmv_v): Ditto.



>   (vsaddu): Ditto.



>   (vsadd): Ditto.



>   (vssubu): Ditto.



>   (vssub): Ditto.



>   (vaaddu): Ditto.



>   (vaadd): Ditto.



>   (vasubu): Ditto.



>   (vasub): Ditto.



>   (vsmul): Ditto.



>   (vssrl): Ditto.



>   (vssra): Ditto.



>   (vnclipu): Ditto.



>   (vnclip): Ditto.



>   (vfadd): Ditto.



>   (vfsub): Ditto.



>   (vfrsub): Ditto.



>   (vfadd_frm): Ditto.



>   (vfsub_frm): Ditto.



>   (vfrsub_frm): Ditto.



>   (vfwadd): Ditto.



>   (vfwsub): Ditto.



>   (vfwadd_frm): Ditto.



>   (vfwsub_frm): Ditto.



>   (vfmul): Ditto.



>   (vfdiv): Ditto.



>   (vfrdiv): Ditto.



>   (vfmul_frm): Ditto.



>   (vfdiv_frm): Ditto.



>   (vfrdiv_frm): Ditto.



>   (vfwmul): Ditto.



>   (vfwmul_frm): Ditto.



>   (vfmacc): Ditto.



>   (vfnmsac): Ditto.



>   (vfmadd): Ditto.



>   (vfnmsub): Ditto.



>   (vfnmacc): Ditto.



>   (vfmsac): Ditto.



>   (vfnmadd): Ditto.



>   (vfmsub): Ditto.



>   (vfmacc_frm): Ditto.



>   (vfnmacc_frm): Ditto.



>   (vfmsac_frm): Ditto.



>   (vfnmsac_frm): Ditto.



>   (vfmadd_frm): Ditto.



>   (vfnmadd_frm): Ditto.



>   (vfmsub_frm): Ditto.



>   (vfnmsub_frm): Ditto.



>   (vfwmacc): Ditto.



>   (vfwnmacc): Ditto.



>   (vfwmsac): Ditto.



>   (vfwnmsac): Ditto.



>   (vfwmacc_frm): Ditto.



>   (vfwnmacc_frm): Ditto.



>   (vfwmsac_frm): Ditto.



>   (vfwnmsac_frm): Ditto.



>   (vfsqrt): Ditto.



>   (vfsqrt_frm): Ditto.



>   (vfrsqrt7): Ditto.



>   (vfrec7): Ditto.



>   (vfrec7_frm): Ditto.



>   (vfmin): Ditto.



>   (vfmax): Ditto.



>   (vfsgnj): Ditto.



>   (vfsgnjn): Ditto.



>   (vfsgnjx): Ditto.



>   (vfneg): Ditto.



>   (vfabs): Ditto.



>   (vmfeq): Ditto.



>   (vmfne):