re PR c/7344 (performance regression on huge case statements)
authorJan Hubicka <jh@suse.cz>
Tue, 15 Oct 2002 08:24:36 +0000 (10:24 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 15 Oct 2002 08:24:36 +0000 (08:24 +0000)
commit1877be457e46e1f22414e7c215805e9e51c93cea
tree2926a21bf98ecf1245514d8ae40ece750b02bc54
parent0aab899b147fdb4d232e55bb9307777d07f7ebe4
re PR c/7344 (performance regression on huge case statements)

* i386.md (movv2di_internal): New pattern.
(movv2df_internal, movv8hi_internal, movv16qi_internal): Fix predicate.
(movv2di): New expander.
* i386.c (ix86_preferred_reload_class): Return NO_REGS for vector operands.

* i386.c (ix86_expand_timode_binop_builtin): Delete.
(builtin_description): Add SSE1 logicals; rename SSE2 logicals.
(ix86_init_mmx_sse_builtins): Kill SSE1 logicals.
(ix86_expand_builtin): Likewise.
* i386.h (sse_andti4_df_1, sse_andti3_df_2, sse_andti3_sf_1, sse_andti3_sf_2,
        sse_andti3,
sse_andnti4_df_1, sse_andti3_df_2, sse_andti3_sf_1, sse_andti3_sf_2,
        sse_andnti3,
sse_orti4_df_1, sse_orti3_df_2, sse_orti3_sf_1, sse_orti3_sf_2,
        sse_orti3,
sse_xorti4_df_1, sse_xorti3_df_2, sse_xorti3_sf_1, sse_xorti3_sf_2,
        sse_xorti3): Kill.
(sse_andv4sf3, sse_andnv4sf3, sse_orv2df3, sse_xorv2df3, sse_andv2df3,
 sse_andnv2df3, sse_orv2df3, sse_xorv2df3): New expanders.
(*sse_andv4sf3, *sse_andnv2df3, *sse_orv4sf3, *sse_xorv4sf3, *sse_andv2df3,
 *sse_andnv2df3, *sse_orv2df3, *sse_xorv2df3): New patterns.
(*sse_andsf3, *sse_andndf3, *sse_ordf3, *sse_xordf3, *sse_anddf3,
 *sse_andndf3, *sse_orv2df3, *sse_xorv2df3): New patterns.

* xmmintrin.h (__m128i): Define as __v2di.

PR c/7344
* predict.c (can_predict_insn_p): New function.
(estimate_probability): Avoid unnecesary work.
(process_note_prediction): Likewise.
* toplev.c (rest_of_compilation): Account early branch prediction pass
as TV_BRANCH_PROB.

PR c++/6419
(expand_expr): Use DECL_RTL_SET_P.

From-SVN: r58156
12 files changed:
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/i386/xmmintrin.h
gcc/expr.c
gcc/final.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/i386-ssetype-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/i386-ssetype-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/i386-ssetype-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/i386-ssetype-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/i386-ssetype-5.c [new file with mode: 0644]