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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|X86_64                      |x86_64-*-*
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue is that

  vector(8) int _5;
  _6 = _5 < { 0, 0, 0, 0, 0, 0, 0, 0 };

isn't supported with just AVX.  It's probably a bug in vector lowering,

(define_expand "vcond<V_256:mode><VF_256:mode>"
  [(set (match_operand:V_256 0 "register_operand")
        (if_then_else:V_256
          (match_operator 3 ""
            [(match_operand:VF_256 4 "nonimmediate_operand")
             (match_operand:VF_256 5 "nonimmediate_operand")])
          (match_operand:V_256 1 "general_operand")
          (match_operand:V_256 2 "general_operand")))]
  "TARGET_AVX
   && (GET_MODE_NUNITS (<V_256:MODE>mode)
       == GET_MODE_NUNITS (<VF_256:MODE>mode))"

should have been used here.  I will have a look.

Reply via email to