* config/i386/i386.c (struct_builtin_description)
[IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
[IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
[IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
[IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
[IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
[IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
[IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
[IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
From-SVN: r135047
PR target/35714
* config/i386/mmx.md (mmx_subv2sf3): New expander.
(*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
(*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
(mmx_eqv2sf3): New expander. Use ix86_fixup_binary_operands_no_copy
to handle nonimmediate operands.
(*mmx_paddwd): Rename from mmx_paddwd insn pattern.
(mmx_paddwd): New expander. Use ix86_fixup_binary_operands_no_copy
to handle nonimmediate operands.
(*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
(mmx_pmulhrwv4hi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
(sse2_umulv1siv1di3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
(mmx_eq<mode>3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
(mmx_uavgv8qi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
(mmx_uavgv4hi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
* config/i386/sse.md
(*sse_movhlps): Rename from sse_movhlps insn pattern.
(sse_movhlps): New expander. Use ix86_fixup_binary_operands
to handle nonimmediate operands.
(*sse_movlhps): Rename from sse_movlhps insn pattern.
(sse_movlhps): New expander. Use ix86_fixup_binary_operands
to handle nonimmediate operands.
(*sse_loadhps): Rename from sse_loadhps insn pattern.
(sse_loadhps): New expander. Use ix86_fixup_binary_operands
to handle nonimmediate operands.
(*sse_loadlps): Rename from sse_loadlps insn pattern.
(sse_loadlps): New expander. Use ix86_fixup_binary_operands
to handle nonimmediate operands.
(*sse2_unpckhpd): Rename from sse2_unpckhpd insn pattern.
(sse2_unpckhpd): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_unpcklpd): Rename from sse2_unpcklpd insn pattern.
(sse2_unpcklpd): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse_loadhpd): Rename from sse_loadhpd insn pattern.
(sse_loadhpd): New expander. Use ix86_fixup_binary_operands
to handle nonimmediate operands.
(*sse_loadlpd): Rename from sse_loadlpd insn pattern.
(sse_loadlpd): New expander. Use ix86_fixup_binary_operands
to handle nonimmediate operands.
(*sse2_<plusminus_insn><mode>3): Rename from
sse2_<plusminus_insn><mode>3 insn pattern.
(sse2_<plusminus_insn><mode>3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
(sse2_umulv2siv2di3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
(sse4_1_mulv2siv2di3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
(sse2_pmaddwd): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
(sse2_eq<mode>3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
(sse4_1_eqv2di3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
(sse2_uavgv16qi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
(sse2_uavgv16qi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
(sse2_uavgv8hi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
(ssse3_pmulhrswv8hi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
(ssse3_pmulhrswv4hi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
(<sse>_vmmul<mode>3): Ditto.
(divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
(divv2df3): Ditto.
(ssse3_pmaddubsw128): Use register_operand for operand 1.
(ssse3_pmaddubsw): Ditto.
* config/i386/sse.md (ix86_fixup_binary_operands): Assert that src1
and src2 must have the same mode when swapped.
(ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
and ix86_binary_operator_ok. Do not force operands in registers
when optimizing.
testsuite/ChangeLog:
PR target/35714
* gcc.target/i386/pr35714.c: New test.
From-SVN: r135041
2008-05-07 Johannes Singler <singler@ira.uka.de>
* include/parallel/quicksort.h:
(parallel_sort_qs_conquer) Explicitly request number of threads
in the parallel clause.
(parallel_sort_qs) Remove setting the number of threads globally.
From-SVN: r135038
PR middle-end/36137
* fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
* gcc.c-torture/execute/20080506-1.c: New test.
From-SVN: r135028
PR middle-end/36106
* omp-low.c (expand_omp_atomic_pipeline): Load value using the
integral type rather than floating point, then VIEW_CONVERT_EXPR
to the floating point type.
* testsuite/libgomp.c/atomic-5.c: New test.
* testsuite/libgomp.c/atomic-6.c: New test.
* testsuite/libgomp.c/autopar-1.c: New test.
From-SVN: r135027
2008-05-06 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/36130
* include/bits/c++config: Namespace macros and setup only in C++.
* testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: New.
From-SVN: r134995
gcc/testsuite
PR preprocessor/35313, PR preprocessor/36088:
* gcc.dg/cpp/pr35313.c: New file.
* gcc.dg/cpp/if-oppr.c: Remove test for ',' in a conditional
expression.
* gcc.dg/cpp/if-oppr2.c: New file.
libcpp
PR preprocessor/35313, PR preprocessor/36088:
* expr.c (optab) <QUERY, COMMA>: Set precedence to 4.
(reduce) <case CPP_QUERY>: Special case CPP_COMMA and CPP_COLON.
From-SVN: r134989
2008-05-06 H.J. Lu <hongjiu.lu@intel.com>
PR target/35657
* config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed
to ...
(contains_aligned_value_p): This. Handle _Decimal128.
(ix86_function_arg_boundary): Only align _Decimal128 to its
natural boundary and handle it properly.
From-SVN: r134987
2008-05-06 Martin Jambor <mjambor@suse.cz>
* ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
(ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
(ipcp_method_set_orig_node): Removed.
(ipcp_cval_get_cvalue_type): Removed.
(ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
(ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
(ipcp_cval_set_cvalue_type): Removed.
(ipcp_cval_get_cvalue): Removed.
(ipcp_cval_set_cvalue): Removed.
(ipcp_type_is_const): Renamed to ipcp_lat_is_const.
(ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
(ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
(ipcp_cval_meet): Renamed to ipa_lattice_meet
(ipcp_cval_changed): Changed to use ipcp_lat_is_const
(ipcp_method_cval): Renamed to ipcp_get_ith_lattice
(ipcp_get_ith_lattice): Changed parameters.
(ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
(ipcp_lattice_from_jfunc): Changed parameters.
(ipcp_redirect): Local lattice pointer instead of lattice type variable.
(ipcp_method_cval_print): Added temporary variable info.
(ipcp_redirect): Removed already unused local variable caller.
(ipcp_redirect): New temporary variable orig_callee_info
(ipcp_redirect): Removed newly unused local variable callee.
(ipcp_redirect): Removed (a bit confusing) local variable type.
(ipcp_insert_stage): Added local variable info.
(ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
renamed too
(ipcp_formal_create): Removed.
(ipcp_method_cval_set): Removed.
(ipcp_propagate_stage): Renamed lattice variables.
(ipcp_method_cval_set_cvalue_type): Removed.
(ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
(ipcp_print_all_lattices): Changed printed strings to refer to
lattices rather than cvals.
(ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
(ipcp_propagate_const): Changed formal parameters.
(build_const_val): Changed formal parameters.
(ipcp_insert_stage): Removed useless variable cvalue
(build_const_val): Changed formal parameters.
(ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
(ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
(ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
(ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
(ipcp_print_func_profile_counts): Changed string from "method" to
"function"
(ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
(ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
(ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
(ipcp_structures_print): Renamed to ipcp_print_all_structures
(ipcp_profile_print): Renamed to ipcp_print_profile_data
(ipcp_lat_is_const): Changed parameters and made inline.
(ipcp_replace_map_create): Renamed to ipcp_create_replace_map
(ipcp_redirect): Renamed to ipcp_need_redirect_p
(ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
the predicate condition directly
(ipcp_propagate_stage): Added local variable args. Removed local
variable callee. (Both are mere code simplifications.)
(ipcp_method_dont_insert_const): Renamed to
ipcp_node_not_modifiable_p.
(ipcp_node_not_modifiable_p): Made inline.
(ipcp_cloned_create): Renamed to ipcp_init_cloned_node
(ipcp_propagate_const): Renamed to ipcp_propagate_one_const
(ipcp_print_all_lattices): Removed variable cvalue
(ipcp_method_scale_print): Renamed to ipcp_function_scale_print
Updated comments.
From-SVN: r134984
2008-05-06 Kai Tietz <kai.tietz@onevision.com>
* config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
by using 'q' specifier for instruction.
(ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
From-SVN: r134981
* config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
Change mode of zero_extract from QImode to HImode.
(sign bit tests peepholes): (Ditto.).
From-SVN: r134979
* include/parallel/multiway_merge.h:
(multiway_merge_*_unguarded):
Pass sentinel directly, to allow correct determination.
(multiway_merge_loser_tree_unguarded):
Remove over-cautious assertion.
(calls to multiway_merge_*_splitting):
Parametrize with type that is correct in all cases.
* include/parallel/losertree.h:
(delete_min_insert (in many classes)):
Correct and standardize assertions.
From-SVN: r134977
* config/i386/mmx.md: Remove double backslashes from asm templates.
(*addv2sf3): Rename from mmx_addv2sf3 insn pattern.
(mmx_addv2sf3): New expander. Use ix86_fixup_binary_operands_no_copy
to handle nonimmediate operands.
(*mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
(mmx_mulv2sf3): New expander. Use ix86_fixup_binary_operands_no_copy
to handle nonimmediate operands.
(*<code>v2sf3_finite): New insn pattern.
(*<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
(mmx_<code>v2sf3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(mmx_<plusminus_insn><mode>3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*<plusminus_insn><mode>3): New insn pattern.
(mmx_add<mode>3): Removed.
(mmx_ssadd<mode>3): Ditto.
(mmx_usadd<mode>3): Ditto.
(mmx_sub<mode>3): Ditto.
(mmx_sssub<mode>3): Ditto.
(mmx_ussub<mode>3): Ditto.
(*mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
(mmx_mulv4hi3): New expander. Use ix86_fixup_binary_operands_no_copy
to handle nonimmediate operands.
(*smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
insn pattern.
(mmx_smulv4hi3_highpart): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
insn pattern.
(mmx_umulv4hi3_highpart): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
(mmx_<code>v4hi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
(mmx_<code>v8qi3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
(*<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
(mmx_<code><mode>3): New expander. Use
ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
From-SVN: r134976
* lib/target_supports.exp (check_effective_target_4byte_wchar_t):
New proc.
* gcc.dg/utf16-4.c: Use it.
* gcc.dg/utf32-4.c: Use it.
* g++.dg/ext/utf16-4.C: Use it.
* gcc.dg/ext/utf32-4.C: Use it.
From-SVN: r134971
2008-05-05 Andrew Pinski <Andrew.Pinski@playstation.sony.com>
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have the
same size types for the indirect reference on the rhs, then create a VCE.
2008-05-05 Andrew Pinski <andrew.pinski@playstation.sony.com>
* gcc.dg/tree-ssa/forwprop-5.c: New testcase.
* gcc.dg/tree-ssa/forwprop-6.c: New testcase.
* gcc.dg/tree-ssa/forwprop-7.c: New testcase.
* gcc.dg/tree-ssa/forwprop-8.c: New testcase.
* gcc.dg/tree-ssa/forwprop-9.c: New testcase.
From-SVN: r134947
(*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
one insn template instead of template series.
(*xordi_1_rex64): Ditto.
(*xordi_2_rex64): Ditto.
From-SVN: r134946