Re: [PATCH] x86: replace "extendhfdf2" expander
On 14.07.2023 12:10, Uros Bizjak wrote: > On Fri, Jul 14, 2023 at 11:44 AM Jan Beulich wrote: >> >> The corresponding insn serves this purpose quite fine, and leads to >> slightly less (generated) code. All we need is the insn to not have a >> leading * in its name, while retaining that * for "extendhfsf2". >> Introduce a mode attribute in exchange to achieve that. >> >> gcc/ >> >> * config/i386/i386.md (extendhfdf2): Delete expander. >> (extendhf): New mode attribute. >> (*extendhf2): Use it. > > No, please leave the expander, it is there due to extendhfsf2 that > prevents effective macroization. Well, okay then. > FYI, there is no less generated code when the named pattern is used, > the same code is generated from the named pattern as from the > expander. Source code can be shrinked, but in this particular case, > forced macroization complicates things more. Hmm, I'm pretty sure I checked and found some reduction. Jan
Re: [PATCH] x86: replace "extendhfdf2" expander
On Fri, Jul 14, 2023 at 11:44 AM Jan Beulich wrote: > > The corresponding insn serves this purpose quite fine, and leads to > slightly less (generated) code. All we need is the insn to not have a > leading * in its name, while retaining that * for "extendhfsf2". > Introduce a mode attribute in exchange to achieve that. > > gcc/ > > * config/i386/i386.md (extendhfdf2): Delete expander. > (extendhf): New mode attribute. > (*extendhf2): Use it. No, please leave the expander, it is there due to extendhfsf2 that prevents effective macroization. FYI, there is no less generated code when the named pattern is used, the same code is generated from the named pattern as from the expander. Source code can be shrinked, but in this particular case, forced macroization complicates things more. Uros. > --- > Of course the mode attribute could as well supply the full names. > > --- a/gcc/config/i386/i386.md > +++ b/gcc/config/i386/i386.md > @@ -5221,13 +5221,9 @@ > } > }) > > -(define_expand "extendhfdf2" > - [(set (match_operand:DF 0 "register_operand") > - (float_extend:DF > - (match_operand:HF 1 "nonimmediate_operand")))] > - "TARGET_AVX512FP16") > +(define_mode_attr extendhf [(SF "*") (DF "")]) > > -(define_insn "*extendhf2" > +(define_insn "extendhf2" >[(set (match_operand:MODEF 0 "register_operand" "=v") > (float_extend:MODEF > (match_operand:HF 1 "nonimmediate_operand" "vm")))]
[PATCH] x86: replace "extendhfdf2" expander
The corresponding insn serves this purpose quite fine, and leads to slightly less (generated) code. All we need is the insn to not have a leading * in its name, while retaining that * for "extendhfsf2". Introduce a mode attribute in exchange to achieve that. gcc/ * config/i386/i386.md (extendhfdf2): Delete expander. (extendhf): New mode attribute. (*extendhf2): Use it. --- Of course the mode attribute could as well supply the full names. --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5221,13 +5221,9 @@ } }) -(define_expand "extendhfdf2" - [(set (match_operand:DF 0 "register_operand") - (float_extend:DF - (match_operand:HF 1 "nonimmediate_operand")))] - "TARGET_AVX512FP16") +(define_mode_attr extendhf [(SF "*") (DF "")]) -(define_insn "*extendhf2" +(define_insn "extendhf2" [(set (match_operand:MODEF 0 "register_operand" "=v") (float_extend:MODEF (match_operand:HF 1 "nonimmediate_operand" "vm")))]