https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112943
--- Comment #6 from Hongyu Wang <hongyuw at gcc dot gnu.org> --- (In reply to Hongtao Liu from comment #3) > (In reply to Jakub Jelinek from comment #1) > > Why does ix86_expand_binary_operator have the use_ndd argument at all? > > Shouldn't it always act as if the argument is TARGET_APX_NDD? > > Or, any particular reason why it isn't done in ashl<mode>3 (but in other > > shifts/rotates)? > By the time we support apx_ndd, the use_ndd is introduced to enable ndd > pattern by pattern so that avoid other patterns crash, and now that we've > completed the ndd patch, I think we can try to remove it. We need to make > sure that there is no pattern under TARGET_APX_NDD but force a call to > ix86_expand_binary_operator with use_ndd as false. The ix86_expand_binary_operator and other binary fixup stuffs are not only applied to legacy insns, they are also be used in sse/mmx patterns. If we drop the parameter we need to maintain those vector patterns that could potential calls the fixup functions at post-reload stage. So from design perspective, it is better to just involve insns related to NDD, do not mess up with vector insns.