On 7/20/23 18:59, HAO CHEN GUI wrote:
Hi Jeff,

在 2023/7/21 5:27, Jeff Law 写道:
Wouldn't it make more sense to just try rotate/mask in the original mode before 
trying a shift in a widened mode?  I'm not sure why we need a target hook here.

There is no change to try rotate/mask with the original mode when
expensive_optimizations is set. The subst widens the shift mode.
But we can add it before the attempt in the wider mode.


       if (flag_expensive_optimizations)
         {
           /* Pass pc_rtx so no substitutions are done, just
              simplifications.  */
           if (i1)
             {
               subst_low_luid = DF_INSN_LUID (i1);
               i1src = subst (i1src, pc_rtx, pc_rtx, 0, 0, 0);
             }

           subst_low_luid = DF_INSN_LUID (i2);
           i2src = subst (i2src, pc_rtx, pc_rtx, 0, 0, 0);
         }

I don't know if the wider mode is helpful to other targets, so
I added the target hook.
In this scenario we're often better off relying on rtx_costs (even with all its warts) rather than adding yet another target hook.

I'd love to hear from Segher here to see if he's got other ideas.

jeff

Reply via email to