Thanks for your review! I'll ask Hongtao to check-in the patch for me.

Uros Bizjak <ubiz...@gmail.com> 于2020年10月29日周四 下午4:08写道:
>
> On Thu, Oct 29, 2020 at 7:52 AM Hongyu Wang <wwwhhhyyy...@gmail.com> wrote:
> >
> > Hi Uros,
> >
> > > is there a reason to introduce all these (with corresponding changes)?
> > > SSE options live in ISA bitmap, so it is kind of strange you need to
> > > handle them in ISA2 bitmap. Option handling is not exactly my area,
> > > please ask HJ to comment and review this part.
> >
> > As Hongtao said, this part is needed for new non-avx512 ISAs in ISA2 bitmap.
> > Keylocker is the first one, and we do similar thing in AVX-VNNI.
>
> Thanks for the explanation, LGTM for this part.
>
> > > +      pat = gen_rtx_EQ (QImode, gen_rtx_REG (CCZmode, FLAGS_REG),
> > > +            const0_rtx);
> > > +      emit_move_insn (target, pat);
> > >
> > > emit_insn (gen_rtx_SET (target, pat));
> > >
> >
> > Changed.
> >
> > > +    op1 = copy_to_suggested_reg (op1,
> > > +                     gen_rtx_REG (V2DImode,
> > > +                          GET_SSE_REGNO (0)),
> > > +                     V2DImode);
> > > +
> > > +    xmm_regs[0] = op1;
> > >
> > > this is no better than:
> > >
> > > reg = gen_rtx_REG (V2DImode, GET_SSE_REGNO (0));
> > > emit_move_insn (reg, op1)
> >
> > Changed.
> >
> > > +    xmm_regs[0] = op1;
> > > +    for (i = 1; i < 3; i++)
> > > +      xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
> > >
> > > The first line is dead code, copy_to_suggested reg generated (reg
> > > xmm0) RTX for op1. Just use:
> > >
> > >     for (i = 0; i < 3; i++)
> > >       xmm_regs[i] = gen_rtx_REG (V2DImode, GET_SSE_REGNO (i));
> > >
> > > Similar comments for:
> >
> > All changed.
> >
> > > +  for (i = 0; i < 4; i++)
> > > +    {
> > > +      tmp_unspec
> > > +    = gen_rtx_UNSPEC_VOLATILE (V2DImode,
> > > +                   gen_rtvec (1, const0_rtx),
> > > +                   UNSPECV_ENCODEKEY256U32);
> > >
> > > Please move the above out of the loop.
> > Sorry for such code. Changed.
> >
> > > Here lies the reason to use hard registers. "sse_reg_operand" is not
> > > enough for register allocator. We have no constraint for first SSE
> > > reg, so again
> > > use hard registers here instead of operands 2 and 3: (reg:V2DI
> > > XMM0_REG) and (reg:V2DI XMM1_REG).
> >
> > Changed for encodekey128u32, encodekey256u32 expander and
> > patterns, adjust corresponding function call in i386-expand.c.
> >
> > Thanks for all the the helpful comments. Updated patch.
>
> The patch is OK for mainline.
>
> (There are some cleanup opportunities, I'll commit them as a
> no-functional-change patch in stage3.)
>
> Thanks,
> Uros.

-- 
Regards,

Hongyu, Wang

Reply via email to