Richard Henderson wrote:

>   Fix typos in the names of vec_extract & vec_interleave tree codes.
>   Change vec_perm checking and expansion level.
>   Implement interleave via permutation.
>   spu: Remove vec_extract_even/odd and vec_interleave expanders.
>   rs6000: Remove some vec_extract_even/odd expanders.
>   i386: Delete the vec_extract_even/odd patterns.

This patch set causes a build failure on SPU:

/home/uweigand/fsf/gcc-head/libgfortran/generated/matmul_c4.c: In function 
'matmul_c4':
/home/uweigand/fsf/gcc-head/libgfortran/generated/matmul_c4.c:284:25: internal 
compiler error: in expand_vec_perm, at optabs.c:6998

  /* Multiply each element by its byte size.  */
  if (u == 2)
    sel = expand_simple_binop (mode, PLUS, sel, sel, sel, 0, OPTAB_DIRECT);
  else
    sel = expand_simple_binop (mode, ASHIFT, sel, GEN_INT (exact_log2 (u)),
                               sel, 0, OPTAB_DIRECT);
  gcc_assert (sel != NULL);


This fails since for u == 4 and mode == V4SFmode it attempts to expand
a V4SFmode shift, which is unsupported.

Shouldn't this be using the mode of the selector rather than the mode
of the result in any case?

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  ulrich.weig...@de.ibm.com

Reply via email to