re PR tree-optimization/51581 (Integer division by constant is not vectorized)
authorJakub Jelinek <jakub@redhat.com>
Fri, 15 Jun 2012 11:07:47 +0000 (13:07 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 15 Jun 2012 11:07:47 +0000 (13:07 +0200)
commit079c527f5e7593f8563e3415ad04cf1f0e5d9269
tree5c72c952d5e64996ab124de5c892988b2985f3d4
parentc55224dc4d22bbb0536f2386371f362fe066527e
re PR tree-optimization/51581 (Integer division by constant is not vectorized)

PR tree-optimization/51581
* expr.h (choose_multiplier): New prototype.
* expmed.c (choose_multiplier): No longer static.
Change multiplier_ptr from rtx * to UHWI *.
(expand_divmod): Adjust callers.
* tree-vect-patterns.c (vect_recog_sdivmod_pow2_pattern):
Renamed to...
(vect_recog_divmod_pattern): ... this.  Pass bb_vinfo as last
argument to new_stmt_vec_info.  Attempt to optimize also divisions
by non-pow2 constants if integer vector division isn't supported.
* tree-vect-stmts.c (vect_analyze_stmt): If node != NULL,
don't look at pattern stmts and sequences.

* gcc.c-torture/execute/pr51581-1.c: New test.
* gcc.c-torture/execute/pr51581-2.c: New test.
* gcc.dg/vect/pr51581-1.c: New test.
* gcc.dg/vect/pr51581-2.c: New test.
* gcc.dg/vect/pr51581-3.c: New test.
* gcc.target/i386/avx-pr51581-1.c: New test.
* gcc.target/i386/avx-pr51581-2.c: New test.
* gcc.target/i386/avx2-pr51581-1.c: New test.
* gcc.target/i386/avx2-pr51581-2.c: New test.
* gcc.dg/vect/slp-26.c (main1): Divide by 0x8031 instead of 3.

From-SVN: r188656
16 files changed:
gcc/ChangeLog
gcc/expmed.c
gcc/expr.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr51581-1.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/pr51581-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr51581-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr51581-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/pr51581-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-26.c
gcc/testsuite/gcc.target/i386/avx-pr51581-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-pr51581-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx2-pr51581-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx2-pr51581-2.c [new file with mode: 0644]
gcc/tree-vect-patterns.c
gcc/tree-vect-stmts.c