https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95256

UroŇ° Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |95125
                 CC|                            |crazylht at gmail dot com

--- Comment #3 from UroŇ° Bizjak <ubizjak at gmail dot com> ---
This PR and PR95211 will be fixed by the  for PR95125. Here, the offending
pattern should be renamed to something like

avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>

and an expander should be added:

(define_expand "fix<fixunssuffix>_truncv2sfv2di2"
  [(set (match_operand:V2DI 0 "register_operand")
        (any_fix:V2DI
          (match_operand:V2SF 1 "nonimmediate_operand")))]
  "TARGET_AVX512DQ && TARGET_AVX512VL"
{
  if (!MEM_P (operands[1]))
    {
      operands[1] = simplify_gen_subreg (V4SFmode, operands[1], V2SFmode, 0);
      emit_insn (gen_avx512dq_fix<fixunssuffix>_truncv2sfv2di2 (operands[0],
operands[1]));
      DONE;
    }
})


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95125
[Bug 95125] Unoptimal code for vectorized conversions

Reply via email to