[PATHC][x86] Scalar mask and round RTL templates
Kirill Yukhin
kirill.yukhin@gmail.com
Wed Jul 5 16:45:00 GMT 2017
On 05 Jul 13:51, Peryt, Sebastian wrote:
> Tests were added. I also updated Changelog and set the max line length to be equal to 79 characters.
Thanks!
>
> Is it ok for trunk?
Your changes are OK for trunk. I've committed the patch.
--
Thanks, K
>
> Thanks,
> Sebastian
>
> -----Original Message-----
> From: Kirill Yukhin [mailto:kirill.yukhin@gmail.com]
> Sent: Wednesday, July 5, 2017 12:36 PM
> To: Peryt, Sebastian <sebastian.peryt@intel.com>
> Cc: gcc-patches@gcc.gnu.org
> Subject: Re: [PATHC][x86] Scalar mask and round RTL templates
>
> On 05 Jul 06:38, Peryt, Sebastian wrote:
> > Hi Kirill,
> >
> > Sorry for this confusion. I meant to write MDs for intrinsics. Those
> > intrinsics are all masked ones for ADD[SD,SS], SUB[SD,SS], MUL[SD,SS], DIV[SD,SS], MIN[SD,SS] and MAX[SD,SS]. What I found is that for mask equal 0 they were producing wrong results when old mask meta-template was used.
> What you're talking about looks like a bug. Could you pls add a regession test to your patch?
>
> > Modified changelog below.
> >
> > 2017-07-05 Sebastian Peryt <sebastian.peryt@intel.com>
> >
> > gcc/
> > * config/i386/subst.md (mask_scalar, round_scalar, round_saeonly_scalar): New meta-templates.
> > (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
> > round_scalar_mask_operand3, round_scalar_mask_op3,
> > round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
> > round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
> > round_saeonly_scalar_constraint, round_saeonly_scalar_prefix): New subst attribute.
> > * config/i386/sse.md
> > (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
> > <sse>_vm<plusminus_insn><mode>3<mask_scalar_name><round_scalar_name> ... this.
> > (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
> > <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name><round_scalar_name> ... this.
> > (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
> > <sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name> ... this.
> > (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
> > %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
> > v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
> > %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
> > (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
> > %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
> > v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
> > %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
> > (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
> > %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
> > v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
> > %0<mask_scalar_operand3>, %1, %<iptr>2<round_saeonly_scalar_mask_op3>} ... this.
> Max line length is 79 characters I suppose.
>
> --
> Thanks, K
> >
> > Is it ok for trunk?
> >
> > Thanks,
> > Sebastian
> >
> > -----Original Message-----
> > From: Kirill Yukhin [mailto:kirill.yukhin@gmail.com]
> > Sent: Tuesday, July 4, 2017 7:45 PM
> > To: Peryt, Sebastian <sebastian.peryt@intel.com>
> > Cc: gcc-patches@gcc.gnu.org; Uros Bizjak <ubizjak@gmail.com>
> > Subject: Re: [PATHC][x86] Scalar mask and round RTL templates
> >
> > Hello Sebastian,
> > On 23 Jun 09:00, Peryt, Sebastian wrote:
> > > Hi,
> > >
> > > This patch adds three extra RTL meta-templates for scalar round and mask. Additionally fixes errors caused by previous mask and round usage in some of the intrinsics that I found.
> > Could you pls point which intrinsics did you fixed (or which errors)?
> > I see only MD changes in your patch.
> >
> > >
> > > 2017-06-23 Sebastian Peryt <sebastian.peryt@intel.com>
> > >
> > > gcc/
> > > * config/i386/subst.md (mask_scalar, round_scalar, round_saeonly_scalar): New templates.
> > I'd call it meta-templates.
> > > (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
> > > round_scalar_mask_operand3, round_scalar_mask_op3,
> > > round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
> > > round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
> > > round_saeonly_scalar_constraint, round_saeonly_scalar_prefix): New subst attribute.
> > > * config/i386/sse.md
> > > (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
> > > <sse>_vm<plusminus_insn><mode>3<mask_scalar_name><round_scalar_name> ... this.
> > > (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
> > > <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name><round_scalar_name> ... this.
> > > (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
> > > <sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name> ... this.
> > > (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
> > > v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
> > > (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
> > > v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
> > > (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
> > > v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1, %<iptr>2<round_saeonly_scalar_mask_op3>} ... this.
> > We need to obey conventions. Pls break long lines here.
> >
> > --
> > Thanks, K
> > >
> > > Is it ok for trunk?
> > >
> > > Thanks,
> > > Sebastian
> >
> >
More information about the Gcc-patches
mailing list