[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #7 from ubizjak at gmail dot com 2010-08-01 10:01 --- (In reply to comment #6) - (set_attr mode SF)]) + (set_attr mode SF,SF,*)]) SI? No, this belongs to movss insns from vec_setmode_0 pattern. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #8 from uros at gcc dot gnu dot org 2010-08-01 10:42 --- Subject: Bug 45142 Author: uros Date: Sun Aug 1 10:41:57 2010 New Revision: 162797 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=162797 Log: PR target/45142 * config/i386/sse.md (vec_setmode_0): Do not set mode attribute for alternative 2. (vec_setmoode_0 splitter): Use SSEMODE4S mode iterator to also split V4SI operands. Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/sse.md -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #9 from ubizjak at gmail dot com 2010-08-01 10:43 --- Fixed. -- ubizjak at gmail dot com changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #3 from ubizjak at gmail dot com 2010-07-31 10:54 --- Created an attachment (id=21363) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21363action=view) Untested patch which only allows V4SF mode. It probably should be macroized to use SSEMODE4S. Yes, it should handle all modes of vec_setmode_0 insn. Attached patch fixes this oversight and fixes the failure. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #4 from ubizjak at gmail dot com 2010-07-31 11:02 --- BTW: Even with the fix, the testcase fails with -O2 -mavx: pr45142.c: In function main: pr45142.c:6:5: error: invalid conversion in gimple call vector(4) int vector(16) char # VUSE .MEM_38 i2.1_4 = __builtin_ia32_pshufb128 ({ 0, 3, 2, 1 }, mask.4); pr45142.c:6:5: internal compiler error: verify_stmts failed -- ubizjak at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2010-07-31 11:02:57 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #5 from rguenther at suse dot de 2010-07-31 11:17 --- Subject: Re: split for *vec_setmode_0_sse2 incomplete On Sat, 31 Jul 2010, ubizjak at gmail dot com wrote: --- Comment #4 from ubizjak at gmail dot com 2010-07-31 11:02 --- BTW: Even with the fix, the testcase fails with -O2 -mavx: pr45142.c: In function ?main?: pr45142.c:6:5: error: invalid conversion in gimple call vector(4) int vector(16) char # VUSE .MEM_38 i2.1_4 = __builtin_ia32_pshufb128 ({ 0, 3, 2, 1 }, mask.4); pr45142.c:6:5: internal compiler error: verify_stmts failed Yes, that's a known issue with that version of the patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #6 from rguenth at gcc dot gnu dot org 2010-07-31 12:06 --- - (set_attr mode SF)]) + (set_attr mode SF,SF,*)]) SI? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #1 from rth at gcc dot gnu dot org 2010-07-30 14:17 --- Test case? -- rth at gcc dot gnu dot org changed: What|Removed |Added CC||rth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142
[Bug target/45142] split for *vec_setmode_0_sse2 incomplete
--- Comment #2 from rguenth at gcc dot gnu dot org 2010-07-30 14:24 --- Created an attachment (id=21360) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21360action=view) required patch Together with attached patch (from the vector-enhancement GSoC project). #define vector(elcount, type) \ __attribute__((vector_size((elcount)*sizeof(type type #define vidx(type, vec, idx) (*(((type *) (vec)) + idx)) int main (int argc, char **argv) { vector (4, int) i0 = {argc, 1,2,3}; vector(4,int) i2; vector (4, int) imask = {0,3,2,1}; int a, b, c; if (argc 4) __builtin_abort (); i2 = __builtin_shuffle (imask, i0); b = 0; if (vidx (int,imask,b) == vidx (int, i2, b)) __builtin_abort (); return 0; } ICEs at -O2 on x86_64. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45142