On Fri, Jul 14, 2023 at 11:44 AM Jan Beulich <jbeul...@suse.com> 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. > (*extendhf<mode>2): 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 "*extendhf<mode>2" > +(define_insn "<extendhf>extendhf<mode>2" > [(set (match_operand:MODEF 0 "register_operand" "=v") > (float_extend:MODEF > (match_operand:HF 1 "nonimmediate_operand" "vm")))]