Re: Re: [PATCH][v2] RISC-V: Add avail interface into function_group_info
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
> 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-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
> @@ -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-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):