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

Roger Sayle <roger at nextmovesoftware dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |roger at nextmovesoftware dot 
com

--- Comment #2 from Roger Sayle <roger at nextmovesoftware dot com> ---
Conceptually, we'd like this VIEW_CONVERT_EXPR to be converted to the
equivalent:
v2df bar(_Complex double x)
{
    return (v2df){ __real__ x, __imag__ x };
}

which compiles to:
bar:unpcklpd        xmm0, xmm1
        ret
I'm investigating doing this in the middle-end's expr.cc at RTL expansion time,
using vec_init_optab to eventually call gen_vec_initv2dfdf, but thought I'd
mention the above form in case the tree-ssa folks would prefer this to be
caught earlier (perhaps in match.pd) so that SSA sees:

v2df bar (complex double x)
{
  double _1;
  double _2;
  v2df _4;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  _1 = REALPART_EXPR <x_3(D)>;
  _2 = IMAGPART_EXPR <x_3(D)>;
  _4 = {_1, _2};
  return _4;

}

Reply via email to