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
[email protected]