On Thu, Nov 12, 2020 at 02:18:13PM +0100, Andreas Krebbel wrote:
> On 12.11.20 13:21, Stefan Schulze Frielinghaus wrote:
> > Bootstrapped and regtested on IBM Z. Ok for master?
> >
> > gcc/ChangeLog:
> >
> > * config/s390/vector.md ("vec_vfees"): New insn pattern.
> > ---
> > gcc/config/s390/vector.md | 26 ++
> > 1 file changed, 26 insertions(+)
> >
> > diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md
> > index 31d323930b2..4333a2191ae 100644
> > --- a/gcc/config/s390/vector.md
> > +++ b/gcc/config/s390/vector.md
> > @@ -1798,6 +1798,32 @@
> >"vll\t%v0,%1,%2"
> >[(set_attr "op_type" "VRS")])
> >
> > +; vfeebs, vfeehs, vfeefs
> > +; vfeezbs, vfeezhs, vfeezfs
> > +(define_insn "vec_vfees"
> > + [(set (match_operand:VI_HW_QHS 0 "register_operand" "=v")
> > + (unspec:VI_HW_QHS [(match_operand:VI_HW_QHS 1 "register_operand" "v")
> > + (match_operand:VI_HW_QHS 2 "register_operand" "v")
> > + (match_operand:QI 3 "const_mask_operand" "C")]
> > + UNSPEC_VEC_VFEE))
> > + (set (reg:CCRAW CC_REGNUM)
> > + (unspec:CCRAW [(match_dup 1)
> > + (match_dup 2)
> > + (match_dup 3)]
> > + UNSPEC_VEC_VFEECC))]
> > + "TARGET_VX"
> > +{
> > + unsigned HOST_WIDE_INT flags = UINTVAL (operands[3]);
> > +
> > + gcc_assert (!(flags & ~(VSTRING_FLAG_ZS | VSTRING_FLAG_CS)));
> > + flags &= ~VSTRING_FLAG_CS;
> > +
> > + if (flags == VSTRING_FLAG_ZS)
> > +return "vfeezs\t%v0,%v1,%v2";
> > + return "vfees\t%v0,%v1,%v2";
> > +}
> > + [(set_attr "op_type" "VRR")])
> > +
> > ; vfenebs, vfenehs, vfenefs
> > ; vfenezbs, vfenezhs, vfenezfs
> > (define_insn "vec_vfenes"
> >
>
> Since this is mostly a copy of the pattern in vx-builtins.md I think we
> should remove the other
> version then.
>
> I also would prefer this to be committed together with the code making use of
> the expander. So far
> this would be dead code - right?
Ok, I will remove the dead code and commit this change in conjunction
with the user in a different patch.
Thanks,
Stefan