2011-09-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/27460
PR middle-end/29269
* doc/md.texi (vcond): Document.
* genopinit.c (optabs): Turn vcond{,u}_optab into a conversion
optab with two modes.
* optabs.h (enum convert_optab_index): Add COI_vcond, COI_vcondu.
(enum direct_optab_index): Remove DOI_vcond, DOI_vcondu.
(vcond_optab): Adjust.
(vcondu_optab): Likewise.
(expand_vec_cond_expr_p): Adjust prototype.
* optabs.c (get_vcond_icode): Adjust.
(expand_vec_cond_expr_p): Likewise.
(expand_vec_cond_expr): Likewise.
* tree-vect-stmts.c (vect_is_simple_cond): Return the comparison
vector type.
(vectorizable_condition): Allow differing types for comparison
and result.
* config/i386/i386.c (ix86_expand_sse_cmp): Use proper mode
for the comparison.
* config/i386/sse.md (vcond<mode>): Split to
vcond<V_256:mode><VF_256:mode>, vcond<V_128:mode><VF_128:mode>,
vcond<V_128:mode><VI124_128:mode> and
vcondu<V_128:mode><VI124_128:mode>.
(vcondv2di): Change to vcond<VI8F_128:mode>v2di.
(vconduv2di): Likewise.
* config/arm/neon.md (vcond<mode>): Change to vcond*<mode><mode>.
(vcondu<mode>): Likewise.
* config/ia64/vect.md (vcond<mode>): Likewise.
(vcondu<mode>): Likewise.
(vcondv2sf): Likewise.
* config/mips/mips-ps-3d.md (vcondv2sf): Likewise.
* config/rs6000/paired.md (vcondv2sf): Likewise.
* config/rs6000/vector.md (vcond<mode>): Likewise.
(vcondu<mode>): Likewise.
* config/spu/spu.md (vcond<mode>): Likewise.
(vcondu<mode>): Likewise.
* gcc.dg/vect/vect-cond-7.c: New testcase.
From-SVN: r178480
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| ammintrin.h | Loading commit data... | |
| athlon.md | Loading commit data... | |
| atom.md | Loading commit data... | |
| att.h | Loading commit data... | |
| avx2intrin.h | Loading commit data... | |
| avxintrin.h | Loading commit data... | |
| avxmath.h | Loading commit data... | |
| bdver1.md | Loading commit data... | |
| biarch64.h | Loading commit data... | |
| bmi2intrin.h | Loading commit data... | |
| bmiintrin.h | Loading commit data... | |
| bmmintrin.h | Loading commit data... | |
| bsd.h | Loading commit data... | |
| constraints.md | Loading commit data... | |
| core2.md | Loading commit data... | |
| cpuid.h | Loading commit data... | |
| cross-stdarg.h | Loading commit data... | |
| crtdll.h | Loading commit data... | |
| cygming-crtbegin.c | Loading commit data... | |
| cygming-crtend.c | Loading commit data... | |
| cygming.h | Loading commit data... | |
| cygming.opt | Loading commit data... | |
| cygwin-stdint.h | Loading commit data... | |
| cygwin.asm | Loading commit data... | |
| cygwin.h | Loading commit data... | |
| darwin-libgcc.10.4.ver | Loading commit data... | |
| darwin-libgcc.10.5.ver | Loading commit data... | |
| darwin.h | Loading commit data... | |
| darwin64.h | Loading commit data... | |
| djgpp-stdint.h | Loading commit data... | |
| djgpp.h | Loading commit data... | |
| djgpp.opt | Loading commit data... | |
| driver-i386.c | Loading commit data... | |
| emmintrin.h | Loading commit data... | |
| fma4intrin.h | Loading commit data... | |
| fmaintrin.h | Loading commit data... | |
| freebsd.h | Loading commit data... | |
| freebsd64.h | Loading commit data... | |
| gas.h | Loading commit data... | |
| geode.md | Loading commit data... | |
| gmm_malloc.h | Loading commit data... | |
| gnu-user.h | Loading commit data... | |
| gnu-user64.h | Loading commit data... | |
| gnu.h | Loading commit data... | |
| gstabs.h | Loading commit data... | |
| gthr-win32.c | Loading commit data... | |
| host-cygwin.c | Loading commit data... | |
| host-i386-darwin.c | Loading commit data... | |
| host-mingw32.c | Loading commit data... | |
| i386-builtin-types.awk | Loading commit data... | |
| i386-builtin-types.def | Loading commit data... | |
| i386-c.c | Loading commit data... | |
| i386-interix.h | Loading commit data... | |
| i386-interix3.h | Loading commit data... | |
| i386-modes.def | Loading commit data... | |
| i386-opts.h | Loading commit data... | |
| i386-protos.h | Loading commit data... | |
| i386.c | Loading commit data... | |
| i386.h | Loading commit data... | |
| i386.md | Loading commit data... | |
| i386.opt | Loading commit data... | |
| i386elf.h | Loading commit data... | |
| ia32intrin.h | Loading commit data... | |
| immintrin.h | Loading commit data... | |
| k6.md | Loading commit data... | |
| kfreebsd-gnu.h | Loading commit data... | |
| kfreebsd-gnu64.h | Loading commit data... | |
| knetbsd-gnu.h | Loading commit data... | |
| kopensolaris-gnu.h | Loading commit data... | |
| libgcc-glibc.ver | Loading commit data... | |
| linux.h | Loading commit data... | |
| linux64.h | Loading commit data... | |
| lwpintrin.h | Loading commit data... | |
| lynx.h | Loading commit data... | |
| lzcntintrin.h | Loading commit data... | |
| mingw-pthread.h | Loading commit data... | |
| mingw-stdint.h | Loading commit data... | |
| mingw-w64.h | Loading commit data... | |
| mingw-w64.opt | Loading commit data... | |
| mingw.opt | Loading commit data... | |
| mingw32.h | Loading commit data... | |
| mm3dnow.h | Loading commit data... | |
| mmintrin.h | Loading commit data... | |
| mmx.md | Loading commit data... | |
| msformat-c.c | Loading commit data... | |
| netbsd-elf.h | Loading commit data... | |
| netbsd64.h | Loading commit data... | |
| nmmintrin.h | Loading commit data... | |
| nto.h | Loading commit data... | |
| nto.opt | Loading commit data... | |
| openbsd.h | Loading commit data... | |
| openbsdelf.h | Loading commit data... | |
| pentium.md | Loading commit data... | |
| pmm_malloc.h | Loading commit data... | |
| pmmintrin.h | Loading commit data... | |
| popcntintrin.h | Loading commit data... | |
| ppro.md | Loading commit data... | |
| predicates.md | Loading commit data... | |
| rtemself.h | Loading commit data... | |
| smmintrin.h | Loading commit data... | |
| sol2-bi.h | Loading commit data... | |
| sol2.h | Loading commit data... | |
| sse.md | Loading commit data... | |
| ssemath.h | Loading commit data... | |
| sync.md | Loading commit data... | |
| sysv4.h | Loading commit data... | |
| t-crtstuff | Loading commit data... | |
| t-cygming | Loading commit data... | |
| t-cygwin | Loading commit data... | |
| t-darwin | Loading commit data... | |
| t-darwin64 | Loading commit data... | |
| t-djgpp | Loading commit data... | |
| t-dlldir | Loading commit data... | |
| t-dlldir-x | Loading commit data... | |
| t-dw2-eh | Loading commit data... | |
| t-gmm_malloc | Loading commit data... | |
| t-gthr-win32 | Loading commit data... | |
| t-i386 | Loading commit data... | |
| t-i386elf | Loading commit data... | |
| t-interix | Loading commit data... | |
| t-linux | Loading commit data... | |
| t-linux64 | Loading commit data... | |
| t-mingw-pthread | Loading commit data... | |
| t-mingw-w32 | Loading commit data... | |
| t-mingw-w64 | Loading commit data... | |
| t-mingw32 | Loading commit data... | |
| t-nto | Loading commit data... | |
| t-openbsd | Loading commit data... | |
| t-pmm_malloc | Loading commit data... | |
| t-rtems | Loading commit data... | |
| t-sjlj-eh | Loading commit data... | |
| t-sol2-64 | Loading commit data... | |
| t-vxworks | Loading commit data... | |
| t-vxworksae | Loading commit data... | |
| tbmintrin.h | Loading commit data... | |
| tmmintrin.h | Loading commit data... | |
| unix.h | Loading commit data... | |
| vx-common.h | Loading commit data... | |
| vxworks.h | Loading commit data... | |
| vxworksae.h | Loading commit data... | |
| winnt-cxx.c | Loading commit data... | |
| winnt-stubs.c | Loading commit data... | |
| winnt.c | Loading commit data... | |
| wmmintrin.h | Loading commit data... | |
| x-cygwin | Loading commit data... | |
| x-darwin | Loading commit data... | |
| x-i386 | Loading commit data... | |
| x-mingw32 | Loading commit data... | |
| x86-64.h | Loading commit data... | |
| x86intrin.h | Loading commit data... | |
| xm-cygwin.h | Loading commit data... | |
| xm-djgpp.h | Loading commit data... | |
| xm-mingw32.h | Loading commit data... | |
| xmmintrin.h | Loading commit data... | |
| xopintrin.h | Loading commit data... |