David:
>
> Hi, Carl
>
> I thought that vector.md was a transfer vector for the patterns and
> instructions were defined in vsx.md. Why are the new insn patterns
> defined in vector.md?
I am a bit of a newbie here. I wasn't aware of any specific guide
lines on the vector instructions. I put them in vector.md since they
are vector instructions. Made sense to me. I can move them to vsx.md
if that is the prefered place, no problem.
>
> > +(define_insn "div<mode>3"
> > + [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
> > + (div:VIlong (match_operand:VIlong 1 "vsx_register_operand"
> > "v")
> > + (match_operand:VIlong 2 "vsx_register_operand"
> > "v")))]
> > + "TARGET_POWER10"
> > + "vdivs<VIlong_char> %0,%1,%2"
> > + [(set_attr "type" "vecsimple")])
> > +
> > +(define_insn "udiv<mode>3"
> > + [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
> > + (udiv:VIlong (match_operand:VIlong 1 "vsx_register_operand"
> > "v")
> > + (match_operand:VIlong 2 "vsx_register_operand"
> > "v")))]
> > + "TARGET_POWER10"
> > + "vdivu<VIlong_char> %0,%1,%2"
> > + [(set_attr "type" "vecsimple")])
> > +
> > +(define_insn "vdivs_<mode>"
> > + [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
> > + (div:VIlong (match_operand:VIlong 1 "vsx_register_operand"
> > "v")
> > + (match_operand:VIlong 2 "vsx_register_operand"
> > "v")))]
> > + "TARGET_POWER10"
> > + "vdivs<VIlong_char> %0,%1,%2"
> > + [(set_attr "type" "vecsimple")])
> > +
> > +(define_insn "vdivu_<mode>"
> > + [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
> > + (udiv:VIlong (match_operand:VIlong 1 "vsx_register_operand"
> > "v")
> > + (match_operand:VIlong 2 "vsx_register_operand"
> > "v")))]
> > + "TARGET_POWER10"
> > + "vdivu<VIlong_char> %0,%1,%2"
> > + [(set_attr "type" "vecsimple")])
>
> Also, what is the reason to define div<mode>3 and udiv<mode>3, then
> repeat the patterns for vdivs_<mode> and vdivu_<mode>? Is there a
> difference between the two patterns that I'm missing? The new
> builtins should be able to invoke the new named standard
> patterns. Or
> we really want an additional set of patterns that match the builtin
> names?
>
> The div<mode>3 and udiv<mode>3 patterns do not seem to be listed in
> the ChangeLog.
I originally added the vector multiply and divide instructions as
vmult_<mode>, vdivs_<mode>, etc. I couldn't get GCC to generate the
instructions. Bill pointed out that I hadn't used the default names
div<mode>3. I thought I changed the original mult and div names to the
default names. Looks like I didn't get the div stuff all updated in
the patch. So, yea there should just be the div<mode>3 and udiv<mode>3
definitions. My bad, sorry.
I will update the patch, retest and repost. Thanks for the input.
Carl