"Kewen.Lin" <li...@linux.ibm.com> writes: > Hi, > > When I am working on IFNs for vector with length, I noticed that the > current optab support query for mask_load/mask_store looks unexpected. > The mask_load/mask_store requires two modes for convert_optab query, > but the macros direct_mask_{load,store}_optab_supported_p uses > direct_optab_supported_p which asserts type pair should have the same mode. > > I'm not sure whether we have some special reason here or just a typo, > since everything goes well now, mask_{load,store} optab check is mainly > handled by can_vec_mask_load_store_p. > > But if we have some codes as below (eg: one checking for all IFNs finally) > > tree_pair types = direct_internal_fn_types (ifn, call); > if(direct_internal_fn_supported_p (ifn, types, OPTIMIZE_FOR_SPEED) ... > > It will cause ICE. > > Does it make sense to fix it? > > Thanks in advance! > > BR, > Kewen > ----- > gcc/ChangeLog: > > * internal-fn.c (direct_mask_load_optab_supported_p): Use > convert_optab_supported_p instead of direct_optab_supported_p. > (direct_mask_store_optab_supported_p): Likewise.
OK, thanks. I keep meaning to experiment with dropping the second mode from these optabs, since it should be uniquely determined by the first. That would make things slightly simpler and more consistent with the other load/store IFNs. But as usual I've never found the time. Richard