summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386-protos.h
Commit message (Collapse)AuthorAgeFilesLines
* 2006-10-29 Richard Guenther <rguenther@suse.de>rguenth2006-10-291-0/+1
| | | | | | | | | | | | | | | | | | * builtins.c (expand_builtin_mathfn): Expand nearbyint as rint in case -fno-trapping-math is enabled. * config/i386/i386-protos.h (ix86_expand_rint): Declare. * config/i386/i386.c (ix86_gen_TWO52): New static helper function. (ix86_expand_sse_fabs): Likewise. (ix86_expand_rint): New function expanding rint to x87 or SSE math. * config/i386/i386.md (rintdf2): Enable for SSE math if -fno-trapping-math is enabled, use ix86_expand_rint for expansion. (rintsf2): Likewise. * gcc.target/i386/math-torture/rint.c: New testcase. * gcc.target/i386/math-torture/nearbyint.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118144 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-10-29 Richard Guenther <rguenther@suse.de>rguenth2006-10-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * genopinit.c (optabs): Change lfloor_optab and lceil_optab to conversion optabs. * optabs.c (init_optabs): Initialize lfloor_optab and lceil_optab as conversion optab. * optabs.h (enum optab_index): Remove OTI_lfloor and OTI_lceil. (enum convert_optab_index): Add COI_lfloor and COI_lceil. (lfloor_optab, lceil_optab): Adjust defines. * builtins.c (expand_builtin_int_roundingfn): Adjust for lfloor and lceil optabs now being conversion optabs. * config/i386/i386-protos.h (ix86_expand_lfloorceil): Declare. * config/i386/i386.c (ix86_expand_sse_compare_and_jump): New static helper function. (ix86_expand_lfloorceil): New function to expand lfloor and lceil inline. * config/i386/i386.md (lfloor<mode>2): Split into ... (lfloorxf<mode>2): ... x87 variant (lfloor<mode>di2, lfloor<mode>si2): ... and SSE variants using ix86_expand_lfloorceil. (lceil<mode>2, lceilxf<mode>2, lceil<mode>di2, lceil<mode>si2): Likewise. * doc/md.texi (lfloorMN, lceilMN): Document. * gcc.target/i386/math-torture/lfloor.c: New testcase. * gcc.target/i386/math-torture/lceil.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118143 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-10-28 Richard Guenther <rguenther@suse.de>rguenth2006-10-281-0/+2
| | | | | | | | | | | | | | | | | | | | | | | PR target/28806 * builtins.c (expand_builtin_int_roundingfn_2): Expand BUILT_IN_LROUND and BUILT_IN_LLROUND from here. (expand_builtin): Adjust likewise. * genopinit.c (optabs[]): Add lround optab. * optabs.c (init_optabs): Initialize lround_optab. * optabs.h (enum convert_optab_index): Add COI_lround. (lround_optab): Define. * config/i386/i386-protos.h (ix86_expand_lround): Declare. * config/i386/i386.c (ix86_sse_copysign_to_positive): New static function. (ix86_expand_lround): New function. * config/i386/i386.md (lround<mode>di2, lround<mode>si2): New expanders. * doc/md.texi (lroundMN2): Document. * gcc.target/i386/math-torture/lround.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118105 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-06-29 Eric Christopher <echristo@apple.com>echristo2006-06-291-1/+2
| | | | | | | | | | | | | | | | | | | Evan Cheng <evan.cheng@apple.com> * predicates.md (vector_all_ones_operand): New. (nonimmediate_or_sse_const_operand): Ditto. * config/i386/i386-protos.h (standard_sse_constant_opcode): Declare. * config/i386/i386.c (standard_sse_constant_opcode): Define. (standard_sse_mode_p): Ditto. (standard_sse_constant_p): Add case for -1 vector. (ix86_expand_vector_move): Try to use. * sse.md (*mov<mode>_internal): Use nonimmediate_or_sse_const_operand. Call standard_sse_constant_opcode. (*movv4sf_internal): Ditto. (*movv2df_internal): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115077 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-08-08 Paolo Bonzini <bonzini@gnu.org>bonzini2006-04-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dale Johannesen <dalej@apple.com> PR target/19653 * regclass.c (struct reg_pref): Update documentation. (regclass): Set prefclass to NO_REGS if memory is the best option. (record_reg_classes): Cope with a prefclass set to NO_REGS. * reload.c (find_reloads): Take PREFERRED_OUTPUT_RELOAD_CLASS into account. For non-registers, equate an empty preferred reload class to a `!' in the constraint; move the if clause to do so after those that reject the insn. (push_reload): Allow PREFERRED_*_RELOAD_CLASS to liberally return NO_REGS. (find_dummy_reload): Likewise. * doc/tm.texi (Register Classes): Document what it means if PREFERRED_*_RELOAD_CLASS return NO_REGS. * config/i386/i386.c (ix86_preferred_reload_class): Force using SSE registers (and return NO_REGS for floating-point constants) if math is done with SSE. (ix86_preferred_output_reload_class): New. * config/i386/i386-protos.h (ix86_preferred_output_reload_class): New. * config/i386/i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): New. * config/i386/i386.md: Remove # register preferences. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112637 138bc75d-0d04-0410-961f-82ee72b054a4
* Introduce TLS descriptors for i386 and x86_64.aoliva2006-01-191-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.h (TARGET_GNU2_TLS): New macro. (TARGET_ANY_GNU_TLS): New macro. (enum tls_dialect): Added TLS_DIALECT_GNU2. (struct machine_function): Add tls_descriptor_call_expanded_p. (ix86_tls_descriptor_calls_expande_in_cfun): New macro. (ix86_current_function_calls_tls_descriptor): Likewise. * config/i386/i386.c (ix86_tls_dialect): Fix typo in comment. (override_options): Introduce gnu2 tls dialect. (ix86_frame_pointer_required): Functions containing TLSCALLs are not leaves. (ix86_select_alt_pic_regnum, ix86_compute_frame_layout): Likewise. (legitimize_tls_address): Adjust logic for GNU2 TLS. (ix86_init_machine_status): Initialize new field. (ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS. (ix86_tls_module_base): New. * config/i386/i386-protos.h (ix86_tls_module_base): Declare it. * config/i386/i386.md (UNSPEC_TLSDESC): New constant. (tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS. (tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise. (tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns. (*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise. (tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise. (*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise. * config/i386/predicates.md (tls_modbase_operand): New. (tp_or_register_operand): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109934 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc/config/i386/i386.md (set_got): Update.stuart2006-01-101-1/+1
| | | | | | | | | | | | | | | | | | | (set_got_labelled): New. (UNSPEC_LD_MPIC): New. (builtin_setjmp_receiver): Mach-O support. * gcc/config/i386/darwin.h (TARGET_ASM_FILE_END) Define. (GOT_SYMBOL_NAME): Define. (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New. (TARGET_DEEP_BRANCH_PREDICTION): Remove. * gcc/config/i386/i386.c (override_options): Revise for Darwin. (USE_HIDDEN_LINKONCE): Enable for Mach-O. (ix86_file_end): Mach-O support. (darwin_x86_file_end): New. (output_set_got): Add label parameter, revise for Mach-O. (x86_output_mi_thunk): Likewise. * gcc/config/i386/i386-protos.h (output_set_got): Likewise. * gcc/config/darwin.c (machopic_legitimize_pic_address): Update regs_ever_live[]. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109556 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/24428rth2005-10-191-47/+0
| | | | | | | | | | | | | | | | | | | | * config/i386/i386.c (legitimate_constant_p): Check SYMBOL_REF_TLS_MODEL directly. Don't fallthru to SYMBOL_REF if LABEL_REF. (legitimate_pic_operand_p): Test SYMBOL_REF_TLS_MODEL directly. (legitimate_pic_address_disp_p): Reorg CONST checking to make sure SYMBOL_REF_TLS_MODEL is tested. Test SYMBOL_REF_TLS_MODEL directly. (print_operand_address): Likewise. * config/i386/predicates.md (x86_64_immediate_operand): Test SYMBOL_REF_TLS_MODEL properly inside CONST. (x86_64_zext_immediate_operand): Likewise. (global_dynamic_symbolic_operand, local_dynamic_symbolic_operand, initial_exec_symbolic_operand, local_exec_symbolic_operand): Remove. * config/i386/i386-protos.h: Remove predicates.md entries. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105592 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/21275dannysmith2005-10-121-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR middle-end/21766 * target.h (struct gcc_target): Add valid_dllimport_attribute_p target hook. (struct cxx): Add adjust_class_at_definition target hook. * target-def.h: (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): New define, defaulting to hook_bool_tree_true. Add to TARGET_INITIALIZER (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): New define, defaulting to hook_void_tree. Add to TARGET_CXX. * tree.h (struct decl_with_vis): Rename non_addr_const_p field to dllimport_flag. (DECL_NON_ADDR_CONSTANT_P): Replace with DECL_DLLIMPORT_P macro. * tree.c (merge_dllimport_decl_attributes): Check DECL_DLLIMPORT_P instead of attribute. Check for dllexport override. Warn if inconsistent dll linkage. Don't lose old dllimport if decl has had address referenced. Tweak lookup of dllimport atribute. (handle_dll_attribute): Check targetm.valid_dllimport_attribute_p for target specific rules. Don't add dllimport attribute if DECL_DECLARED_INLINE_P. Set DECL_DLLIMPORT_P when adding dllimport attribute. (staticp): Replace DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P. * varasm.c (initializer_constant_valid_p): Replace DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P PR target/21801 PR target/23589 * config.gcc (i[34567]86-*-cygwin*): Add winnt-cxx.o to 'cxx_target_objs', winnt-stubs,o to 'extra_objs'. (i[34567]86-*-mingw32*): Likewise. * doc/tm.texi (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Document. (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Document. * config/i386/winnt.c (i386_pe_dllimport_p): Factor out C++-specific code. Change return value to bool. (i386_pe_dllimport_p): Likewise. (associated_type): Simplify and make language-independent (i386_pe_encode_section_info): Replace override of ambiguous dllimport symbol refs with a gcc_assert. (i386_pe_valid_dllimport_attribute_p): Define. * config/i386/winnt-cxx.c: New file. Define C++ versions of i386_pe_type_dllimport_p, i386_pe_type_dllexport_p, i386_pe_adjust_class_at_definition. * config/i386/winnt-stubs.c: New file. Define stub versions of lang-specific functions. * config/i386/i386-protos.h: Declare winnt-[cxx|stubs].c functions i386_pe_type_dllimport_p, i386_pe_type_dllexport_p, i386_pe_adjust_class_at_definition. (i386_pe_valid_dllimport_attribute_p): Declare. * config/i386/cygming.h (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Define. (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Define. * config/i386/t-cygming: Add rules for winnt-cxx.o, winnt-stubs.o. PR target/19704 * config/i386/i386.c (ix86_function_ok_for_sibcall): Replace test for dllimport attribute with test of DECL_DLLIMPORT_P. cp PR target/21801 PR target/23589 * class.c (finish_struct_1): Call targetm.cxx.adjust_class_at_definition. testsuite * gcc.dg/dll-2.c: Add tests for warnings. * gcc.dg/dll-3.c: Likewise. * gcc.dg/dll-4.c: Likewise. * g++.dg/ext/dllimport1.C: Adjust tests for warnings. * g++.dg/ext/dllimport2.C: Likewise. * g++.dg/ext/dllimport3.C: Likewise. * g++.dg/ext/dllimport7.C: Likewise. * g++.dg/ext/dllimport8.C: Likewise. * g++.dg/ext/dllimport9.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105332 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386-protos.h (asm_preferred_eh_data_format): Declare.hubicka2005-08-011-0/+1
| | | | | | | | | * i386.c: Include dwarf2.h (asm_preferred_eh_data_format): New. * i386.h (ASM_PREFERRED_EH_DATA_FORMAT): Move offline. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102638 138bc75d-0d04-0410-961f-82ee72b054a4
* * output.h (enum section_category): Export from varasm.chubicka2005-07-311-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (categorize_decl_for_section): Likewise. * varasm.c (enum section_category): Kill. (categorize_decl_for_section): Make global. * i386-protos.h (x86_output_aligned_bss, x86_elf_aligned_common): Declare. * i386.c (ix86_section_threshold): New static variable. (ix86_in_large_data_p, ix86_encode_section_info, x86_64_elf_unique_section, x86_64_elf_select_section): New functions. (TARGET_ENCODE_SECTION_INFO): Define (override_options): Enable medium model for PIC. (ix86_expand_prologue): Expand gen_set_got_rex64. (legitimate_constant_p): Handle new UNSPECs. (legitimate_pic_address_disp_p): Likewise. (legitimize_pic_address): Lower MEDIUM model addressing. * i386.h (PIC_OFFSET_TABLE_REGNUM): Set for medium model PIC. (enum cmodel): Add MEDIUM_PIC. (SYMBOL_REF_FAR_ADDR_P): New macro. (SYMBOL_FLAG_FAR_ADDR): New flag. * i386.md (movdi): Support medium model. (set_got_rex64): New pattern. * i386.opt (mlarge-data-threshold): New flag. * predicates.md (zext_operand/sext_operand): Deal with medium model. * x86-64.h (ASM_OUTPUT_ALIGNED_BSS): Use x86_output_aligned_bss. (ASM_OUTPUT_ALIGNED_COMMON, TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): New. * invoke.texi (-mlarge_data_threshold): Document git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102606 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/jbeulich2005-07-181-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 2005-07-18 Jan Beulich <jbeulich@novell.com> * config/i386/i386.c (ix86_expand_branch, ix86_expand_setcc, ix86_expand_carry_flag_compare, ix86_expand_int_movcc): Handle TImode in 64-bit mode the same as DImode in 32-bit mode. (ix86_expand_ashl_const, ix86_split_ashl, ix86_split_ashr, ix86_split_lshr): Likewise. Rename to no longer refer to a specific mode. Add new mode parameter. * config/i386/i386.h (CONST_OK_FOR_LETTER_P): Describe and handle 'O'. * config/i386/i386.md (cmpti, addti3, subti3, negti2, ashlti3, ashrti3, x86_64_shift_adj): New expanders. (*addti3_1, *subti3_1, *negti2_1, ashlti3_1, *ashlti3_2, ashrti3_1, *ashrti3_2, lshrti3_1, *lshrti3_2, x86_64_shld, x86_64_shrd): New insns. Respective new splitters. Use renamed shift splitter helpers in 32-bit DImode shift splitters. * config/i386/i386-protos.h (ix86_split_ashl, ix86_split_ashr, ix86_split_lshr): Renamed from ix86_split_[al]sh[rl]di. Added new mode parameter. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102129 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-07-14 Richard Guenther <rguenther@suse.de>rguenth2005-07-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | PR middle-end/22347 * config/i386/i386-protos.h (ix86_function_value): Change prototype to match new target hook. * config/i386/i386.c (ix86_value_regno): Change prototype to take extra type argument. (TARGET_FUNCTION_VALUE): Define. (ix86_function_ok_for_sibcall): Pass extra argument to ix86_value_regno, check return slot rtx for exact match. (ix86_function_value): Take extra parameter. Dispatch to ix86_value_regno with fndecl/fntype as provided. (ix86_value_regno): Handle extra type argument. * config/i386/i386.h (FUNCTION_VALUE): No longer define. * testsuite/gcc.target/i386/sseregparm-3.c: New testcase. * testsuite/gcc.target/i386/sseregparm-4.c: New testcase. * testsuite/gcc.target/i386/sseregparm-5.c: New testcase. * testsuite/gcc.target/i386/sseregparm-6.c: New testcase. * testsuite/gcc.target/i386/sseregparm-7.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102014 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_expand_int_vcond): Remove unsignedprth2005-06-291-1/+1
| | | | | | | | | | | | | | | | | | | argument. Simplify canonicalization of condition. Use unsigned saturating subtraction for QI and HImode unsigned compares. Use bit arithmetic tricks for SImode unsigned compares. * config/i386/i386-protos.h (ix86_expand_int_vcond): Update decl. * config/i386/sse.md (SSEMODE14): New. (umaxv8hi3): Use us_minus+plus to avoid vcond. (umaxv4si3): New. (smax<SSEMODE14>3): Rename from smaxv16qi3 and macroize. (smin<SSEMODE14>3): Similarly with sminv16qi3. (umin<SSEMODE24>3): Similarly with uminv8hi3. * lib/target-supports.exp (check_effective_target_vect_no_max): Remove i386 and x86_64. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101429 138bc75d-0d04-0410-961f-82ee72b054a4
* Update FSF address.kcook2005-06-251-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101314 138bc75d-0d04-0410-961f-82ee72b054a4
* * expr.c (store_constructor): Use store of 0 to indicate valuerth2005-06-181-0/+1
| | | | | | | | | | | | death instead of a clobber. * config/i386/i386.c (ix86_expand_reduc_v4sf): New. * config/i386/i386-protos.h (ix86_expand_reduc_v4sf): Declare. * config/i386/sse.md (reduc_plus_v4sf): New. (reduc_smax_v4sf, reduc_smin_v4sf): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101169 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/21889ebotcazou2005-06-081-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * target.h (gcc_target) <asm_out>: New field output_dwarf_dtprel. * target-def.h (TARGET_ASM_OUTPUT_DWARF_DTPREL): New macro. (TARGET_ASM_OUT): Add it. * doc/tm.texi (Debugging Info): Document it. * dwarf2out.c (output_loc_operands) <INTERNAL_DW_OP_tls_addr>: Test it instead of ASM_OUTPUT_DWARF_DTPREL. (loc_descriptor_from_tree_1) <VAR_DECL>: Likewise. * system.h: Poison ASM_OUTPUT_DWARF_DTPREL. * config/frv/frv-protos.h (frv_output_dwarf_dtprel): Delete. * config/frv/frv.c (frv_output_dwarf_dtprel): Make static and unused. (gen_inlined_tls_plt): Remove unused variable MEM. (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to frv_output_dwarf_dtprel. * config/frv/frv.h (ASM_OUTPUT_DWARF_DTPREL): Delete. * config/i386/i386-protos.h (i386_output_dwarf_dtprel): Delete. * config/i386/i386.c (i386_output_dwarf_dtprel): Make static and unused. (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to i386_output_dwarf_dtprel. * config/i386/i386.h (ASM_OUTPUT_DWARF_DTPREL): Delete. * config/ia64/ia64-protos.h (ia64_output_dwarf_dtprel): Delete. * config/ia64/ia64.c (ia64_output_dwarf_dtprel): Make static and unused. (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to ia64_output_dwarf_dtprel. * config/ia64/ia64.h (ASM_OUTPUT_DWARF_DTPREL): Delete. * config/rs6000/rs6000-protos.h (rs6000_output_dwarf_dtprel): Delete. * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Make static and unused. (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to rs6000_output_dwarf_dtprel * config/rs6000/rs6000.h (ASM_OUTPUT_DWARF_DTPREL): Delete. * config/s390/s390-protos.h (s390_output_dwarf_dtprel): Delete. * config/s390/s390.c (s390_output_dwarf_dtprel): Make static and unused. (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to s390_output_dwarf_dtprel. * config/s390/s390.h (ASM_OUTPUT_DWARF_DTPREL): Delete. * config/sparc/sol2-gas.h (TARGET_SUN_TLS): Define to 0. (TARGET_GNU_TLS): Define to 1. * config/sparc/sparc-protos.h (sparc_output_dwarf_dtprel): Delete. * config/sparc/sparc.c (sparc_output_dwarf_dtprel): Make static and unused. (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define to sparc_output_dwarf_dtprel if TARGET_GNU_TLS only. * config/sparc/sparc.h (ASM_OUTPUT_DWARF_DTPREL): Delete. * config.gcc (sparc64-*-solaris2*): Include tm-dwarf2.h last. (sparc-*-solaris2*): Likewise on Solaris 7 and up. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100742 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-06-07 Uros Bizjak <uros@kss-loka.si>sayle2005-06-071-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.h (enum ix86_entity): New. (enum ix86_stack_slot): New. (OPTIMIZE_MODE_SWITCHING): Redefine to use ix86_optimize_mode_switching[] array. (NUM_MODES_FOR_MODE_SWITCHING): Redefine for 4 entities. (MODE_NEEDED): Use ix86_mode_needed() function. (EMIT_MODE_SET): Redefine for changed emit_i387_cw_initialization () function. (struct machine_function): Use optimize_mode_switching[] array. * config/i386/i386.c (MAX_386_STACK_LOCALS): Remove. (ix86_mode_needed): New function. (emit_i387_cw_initialization): Cleanup. Use mode to calculate correct stack positions for stored control words. (assign_386_stack_local): Use enum ix86_stack_slot. Change assert. (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR]: Change constant to SLOT_TEMP. [IX86_BUILTIN_STMXCSR]: Same. * config/i386/i386-protos.h (assign_stack_local): Change prototype. (emit_i387_cw_initialization): Change prototype. (ix86_mode_needed): New prototype. * config/i386/i386.md (i387_cw attribute): Change order of elements. (truncdfsf2, truncxfsf2, truncxfdf2, fix_trunc<mode>_fisttp_i387_1) (*fix_trunc<mode>_i387_1, lrint<mode>2, *fist<mode>2_floor_1) (*fist<mode>2_ceil_1): Change constant in call to assign_386_stack_local to SLOT_TEMP. (*fix_trunc<mode>_i387_1): Change constant in call to assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC. Use new ix86_optimize_mode_switching[] array. (frndintxf2_floor, *fist<mode>2_floor_1): Change constants in call to assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_FLOOR. Use new ix86_optimize_mode_switching[] array. (frndintxf2_ceil, *fist<mode>2_ceil_1): Change constants in call to assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_CEIL. Use new ix86_optimize_mode_switching[] array. (frndintxf2_trunc): Change constants in call to assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_TRUNC. Use new ix86_optimize_mode_switching[] array. (frndintxf2_mask_pm): Change constants in call to assign_386_stack_local to SLOT_CW_STORED and SLOT_CW_MASK_PM. Use new ix86_optimize_mode_switching[] array. (define_peephole2): Change constant from 17 to FLAGS_REG; git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100732 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/21101rth2005-04-241-0/+2
| | | | | | | | | | * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Move guts to ... * config/i386/i386.c (ix86_cannot_change_mode_class): ... here. Deny modes smaller than 4 bytes. * config/i386/i386-protos.h: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98650 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_expand_sse_cmp): Split out from ...rth2005-04-141-0/+2
| | | | | | | | | | | | | | | | (ix86_expand_sse_movcc): ... here. Take cmp as a pre-computed register. (ix86_expand_fp_movcc): Update to match. (ix86_expand_fp_vcond, ix86_expand_int_vcond): New. * config/i386/i386-protos.h: Update. * config/i386/sse.md (vcondv4sf, vcondv2df): New. (vcond<SSEMODE124>, vcondu<SSEMODE12>): New. * lib/target-supports.exp (check_effective_target_vect_condition): Add ia64, i?86, and x86_64. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98146 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Split ...rth2005-04-131-1/+0
| | | | | | | | | | | | | | | | | (ix86_expand_sse_fp_minmax): ... from ... (ix86_expand_fp_movcc): ... here. (ix86_expand_sse_movcc): Rewrite from ix86_split_sse_movcc. * config/i386/i386-protos.h: Update. * config/i386/i386.md (UNSPEC_IEEE_MIN, UNSPEC_IEEE_MAX): New. (sse_setccsf, sse_setccdf): Allow before reload. (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): Remove. (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): Remove. (ieee_sminsf3, ieee_smaxsf3, ieee_smindf3, ieee_smaxdf3): New. * config/i386/sse.md (andsf3, nandsf3, iorsf3, xorsf3): New. (anddf3, nanddf3, iordf3, xordf3): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98068 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-04-05 Jakub Jelinek <jakub@redhat.com>jakub2005-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.c (init_cumulative_args): For -m32 -mfpmath=sse and local functions, set sse_nregs to 8 and float_in_sse. (function_arg_advance, function_arg): If float_in_sse, pass SFmode and DFmode arguments in SSE registers. * config/i386/i386.h (CUMULATIVE_ARGS): Add float_in_sse field. * config/i386/i386.c (ix86_value_regno): Only optimize local functions of -funit-at-a-time. 2005-04-05 Paolo Bonzini <bonzini@gnu.org> * config/i386/i386-protos.h (ix86_function_value): Accept two arguments, like the target macro. * config/i386/i386.h (FUNCTION_VALUE): Pass both arguments. * config/i386/i386.c (ix86_function_value): Accept the second argument of the target macro. (ix86_function_ok_for_sibcall): Pass a function pointer to ix86_function_value. (ix86_function_value, ix86_libcall_value) [!TARGET_64BIT]: Adjust call to ix86_value_regno). (ix86_value_regno): Add support for returning floating point values in SSE registers. 2005-04-05 Paolo Bonzini <bonzini@gnu.org> * gcc.dg/i386-ssefn-1.c: New test. * gcc.dg/i386-ssefn-2.c: New test. * gcc.dg/i386-ssefn-3.c: New test. * gcc.dg/i386-ssefn-4.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97654 138bc75d-0d04-0410-961f-82ee72b054a4
* PR debug/9963ian2005-04-051-1/+1
| | | | | | | | | | | | | | | * config/i386/cygming.h (ASM_OUTPUT_EXTERNAL): Pass DECL to i386_pe_record_external_function. (i386_pe_record_external_function): Update declaration. * config/i386/winnt.c (struct extern_list): Add decl field. (i386_pe_record_external_function): Add decl parameter. (i386_pe_file_end): Check TREE_ASM_WRITTEN on decl, not identifier. * config/i386/i386-protos.h (i386_pe_record_external_function): Update declaration. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97602 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Define,dannysmith2005-04-011-0/+1
| | | | | | | | | | | | | with entry for selectany attribute. * config/i386/i386-protos.h (ix86_handle_selectany_attribute): Declare. * config/i386/winnt.c (ix86_handle_selectany_attribute): Define. (i386_pe_asm_named_section): Handle sections generated by selectany attribute. * doc/extend.texi (selectany): Document attribute. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97377 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/18668uros2005-03-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.h (x86_fisttp): New. (TARGET_FISTTP): New macro. * config/i386/i386.c (x86_fisttp): Set for NOCONA. (output_fix_trunc): Add fisttp parameter. Generate fisttp x87 instruction when fisttp flag is set. * config/i386/i386-protos.h (output_fix_trunc): Change declaration. * config/i386/i386.md (type attribute): Add fisttp. (unit attribute): Set to i387 for fisttp type. (X87MODEF, X87MODEI, SSEMODEF, SSEMODEI24): New mode macros. (fix_truncxfdi2, fix_truncxfsi2): Generate fisttp patterns for TARGET_FISTTP. (fix_truncdfdi2, fix_truncsfdi2, fix_truncdfsi2, fix_truncsfsi2): Generate fisttp patterns for TARGET_FISTTP. Implement using mode macros. (fix_truncxfhi2, fix_truncdfhi2, fix_truncsfhi2): Generate fisttp patterns for TARGET_FISTTP. Enable patterns for (TARGET_FISTTP && !TARGET_SSE_MATH). Implement using mode macros. (fix_trunc<mode>_i387_fisttp_1, fix_trunc<mode>_i387_fisttp, fix_trunc<mode>_i387_fisttp_with_temp): New instruction patterns to implement fisttp x87 insn. (fix_trunc*_i387_fisttp splitters): New patterns. (*fix_truncdi_i387, *fix_truncsi_i387, *fix_trunchi_i387): Rename to *fix_trunc<mode>_i387_1. Implement using mode macros. Disable patterns for TARGET_FISTTP. Add comment about FLAGS_REG clobber. (fix_truncdi_memory, fix_truncdi_nomemory, fix_trunchi_nomemory): Rename to fix_trunc<mode>_i387 and fix_trunc<mode>_i387_with_temp. Implement using mode macros. Disable patterns for TARGET_FISTTP. (fix_truncsi_memory, fix_truncsi_nomemory, fix_trunchi_memory, fix_trunchi_nomemory): Rename to fix_trunc<mode>_i387 and fix_trunc<mode>_i387_with_temp. Implement using mode macros. Disable patterns for TARGET_FISTTP. (fix_trunc*_i387 splitters): Implement usign mode macros. (fix_truncdfdi_sse, fix_truncsfdi_sse, fix_truncdfsi_sse, fix_truncsfsi_sse): Disable for (TARGET_FISTTP && !TARGET_SSE_MATH). (fix_trunx*_sse peephole2s): Implement using mode macros. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96477 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/19680rth2005-02-021-1/+2
| | | | | | | | | | | * config/i386/i386.h (MODES_TIEABLE_P): Use ix86_modes_tieable_p. * config/i386/i386.c (ix86_hard_regno_mode_ok): Change return type to bool. (ix86_tieable_integer_mode_p, ix86_modes_tieable_p): New. * config/i386/i386-protos.h: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94575 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/19700rth2005-01-301-1/+3
| | | | | | | | | | | | | | | | | * config/i386/i386.c (ix86_expand_copysign): New. (ix86_split_copysign_const): New. (ix86_split_copysign_var): Rename from ix86_split_copysign, rearrange op1/nmask operands. * config/i386/i386-protos.h: Update. * config/i386/i386.md (copysignsf3): Use ix86_expand_copysign. (copysigndf3): Likewise. (copysignsf3_const, copysigndf3_const): New. (copysignsf3_var): Rename from copysignsf3, split out splitter and fix split predicate for X constraint. (copysigndf3_var): Similarly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94442 138bc75d-0d04-0410-961f-82ee72b054a4
* * builtins.c (expand_builtin_copysign): New.rth2005-01-281-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (expand_builtin): Call it. * genopinit.c (optabs): Add copysign_optab. * optabs.c (init_optabs): Initialize it. (expand_copysign): New. * optabs.h (OTI_copysign, copysign_optab): New. (expand_copysign): Declare. * config/alpha/alpha.md (UNSPEC_COPYSIGN): New. (copysignsf3, ncopysignsf3, copysigndf3, ncopysigndf3): New. * config/i386/i386.c (ix86_build_signbit_mask): Split from ... (ix86_expand_fp_absneg_operator): ... here. (ix86_split_copysign): New. * config/i386/i386-protos.h: Update. * config/i386/i386.md (UNSPEC_COPYSIGN): New. (copysignsf3, copysigndf3): New. * config/ia64/ia64.md (UNSPEC_COPYSIGN): New. (copysignsf3, ncopysignsf3): New. (copysigndf3, ncopysigndf3): New. (copysignxf3, ncopysignxf3): New. * config/ia64/ia64.c (rtx_needs_barrier): Handle UNSPEC_COPYSIGN. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94357 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_expand_push): New.rth2005-01-201-0/+1
| | | | | | | | | * config/i386/mmx.md (push<MMXMODE>1): New. * config/i386/sse.md (push<SSEMODE>1): New. * config/i386/i386-protos.h: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93970 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/darwin.c, config/darwin.h, config/freebsd-spec.h,kazu2005-01-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | config/alpha/alpha.c, config/arm/vfp.md, config/i386/emmintrin.h, config/i386/i386-modes.def, config/i386/i386-protos.h, config/i386/i386.h, config/i386/pmmintrin.h, config/i386/ppro.md, config/i386/predicates.md, config/i386/xmmintrin.h, config/i860/i860.c, config/ia64/ia64-modes.def, config/ia64/ia64-protos.h, config/ia64/ia64.h, config/ia64/ia64.md, config/ia64/itanium1.md, config/ia64/itanium2.md, config/ia64/predicates.md, config/iq2000/iq2000.h, config/mips/linux64.h, config/rs6000/aix41.h, config/rs6000/aix43.h, config/rs6000/aix52.h, config/rs6000/darwin-fallback.c, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/rs6000/spe.md, config/sh/sh.md, config/sparc/linux.h, config/sparc/linux64.h, config/sparc/litecoff.h, config/sparc/sp64-elf.h, config/sparc/sparc.c, config/sparc/sparc.h, config/sparc/sparc.md, config/sparc/sysv4-only.h: Update copyright. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93829 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/19099rth2005-01-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR target/19250 PR target/19252 * config/i386/i386.md (cmpdf, cmpsf, bunordered, bordered, buneq, bunge, bungt, bunle, bunlt, bltgt): Enable for TARGET_SSE_MATH, not just TARGET_SSE. (cmpfp_i_387): Rename from cmpfp_i. Move after sse patterns. (cmpfp_i_mixed): Rename from cmpfp_i_sse; use for TARGET_MIX_SSE_I387. (cmpfp_i_sse): Rename from cmpfp_i_sse_only; use for TARGET_SSE_MATH. (cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387): Similarly. (fp_jcc_1_mixed, fp_jcc_1_sse, fp_jcc_1_387): Similarly. (fp_jcc_2_mixed, fp_jcc_2_sse, fp_jcc_2_387): Similarly. (fp_jcc_3_387, fp_jcc_4_387, fp_jcc_5_387, fp_jcc_6_387, fp_jcc_7_387, fp_jcc_8_387): Rename from fp_jcc_N. (movdicc_c_rex64): Rename with '*'. (movsfcc, movdfcc): Add checks for 387 and sse math to condition. (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): New. (movsfcc_1_387): Rename from movsfcc_1. (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): New. (movdfcc_1, movdfcc_1_rex64): Add check for 387. (sminsf3, smaxsf3, smindf3, smaxdf3): New. (minsf3, minsf, minsf_nonieee, minsf_sse, mindf3, mindf, mindf_nonieee, mindf_sse, maxsf3, maxsf, maxsf_nonieee, maxsf_sse, maxdf3, maxdf, maxdf_nonieee, maxdf_sse, sse_movsfcc, sse_movsfcc_eq, sse_movdfcc, sse_movdfcc_eq, sse_movsfcc_const0_1, sse_movsfcc_const0_2, sse_movsfcc_const0_3, sse_movsfcc_const0_4, sse_movdfcc_const0_1, sse_movdfcc_const0_2, sse_movdfcc_const0_3, sse_movdfcc_const0_4): Remove. * config/i386/i386.c (ix86_expand_fp_movcc): For TARGET_SSE_MATH, recognize min/max early. Update for changed sse cmove patterns. (ix86_split_sse_movcc): New. * config/i386/i386-protos.h: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93620 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/13366rth2005-01-111-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.h (enum ix86_builtins): Move ... * config/i386/i386.c: ... here. (IX86_BUILTIN_MOVDDUP, IX86_BUILTIN_MMX_ZERO, IX86_BUILTIN_PEXTRW, IX86_BUILTIN_PINSRW, IX86_BUILTIN_LOADAPS, IX86_BUILTIN_LOADSS, IX86_BUILTIN_STORESS, IX86_BUILTIN_SSE_ZERO, IX86_BUILTIN_PEXTRW128, IX86_BUILTIN_PINSRW128, IX86_BUILTIN_LOADAPD, IX86_BUILTIN_LOADSD, IX86_BUILTIN_STOREAPD, IX86_BUILTIN_STORESD, IX86_BUILTIN_STOREHPD, IX86_BUILTIN_STORELPD, IX86_BUILTIN_SETPD1, IX86_BUILTIN_SETPD, IX86_BUILTIN_CLRPD, IX86_BUILTIN_LOADPD1, IX86_BUILTIN_LOADRPD, IX86_BUILTIN_STOREPD1, IX86_BUILTIN_STORERPD, IX86_BUILTIN_LOADDQA, IX86_BUILTIN_STOREDQA, IX86_BUILTIN_CLRTI, IX86_BUILTIN_LOADDDUP): Remove. (IX86_BUILTIN_VEC_INIT_V2SI, IX86_BUILTIN_VEC_INIT_V4HI, IX86_BUILTIN_VEC_INIT_V8QI, IX86_BUILTIN_VEC_EXT_V2DF, IX86_BUILTIN_VEC_EXT_V2DI, IX86_BUILTIN_VEC_EXT_V4SF, IX86_BUILTIN_VEC_EXT_V8HI, IX86_BUILTIN_VEC_EXT_V4HI, IX86_BUILTIN_VEC_SET_V8HI, IX86_BUILTIN_VEC_SET_V4HI): New. (ix86_init_builtins): Make static. (ix86_init_mmx_sse_builtins): Update for changed builtins. (ix86_expand_binop_builtin): Only use ix86_fixup_binary_operands if all the modes match. Otherwise, fake it. (get_element_number, ix86_expand_vec_init_builtin, ix86_expand_vec_ext_builtin, ix86_expand_vec_set_builtin): New. (ix86_expand_builtin): Make static. Update for changed builtins. (ix86_expand_vector_move_misalign): Use sse2_loadlpd with zero operand instead of sse2_loadsd. Cast sse1 fallback to V4SFmode. (ix86_expand_vector_init_duplicate): New. (ix86_expand_vector_init_low_nonzero): New. (ix86_expand_vector_init_one_var, ix86_expand_vector_init_general): Split out from ix86_expand_vector_init; handle integer modes. (ix86_expand_vector_init): Use them. (ix86_expand_vector_set, ix86_expand_vector_extract): New. * config/i386/i386-protos.h: Update. * config/i386/predicates.md (reg_or_0_operand): New. * config/i386/mmx.md (mov<MMXMODEI>_internal): Add 'r' variants. (movv2sf_internal): Likewise. And a splitter to match them all. (vec_dupv2sf, mmx_concatv2sf, vec_setv2sf, vec_extractv2sf, vec_initv2sf, vec_dupv4hi, vec_dupv2si, mmx_concatv2si, vec_setv2si, vec_extractv2si, vec_initv2si, vec_setv4hi, vec_extractv4hi, vec_initv4hi, vec_setv8qi, vec_extractv8qi, vec_initv8qi): New. (mmx_pinsrw): Fix operand ordering. * config/i386/sse.md (movv4sf splitter): Use direct pattern, rather than sse_loadss expander. (movv2df splitter): Similarly. (sse_loadss, sse_loadlss): Remove. (vec_dupv4sf, sse_concatv2sf, sse_concatv4sf, vec_extractv4sf_0): New. (vec_setv4sf, vec_setv2df): Use ix86_expand_vector_set. (vec_extractv4sf, vec_extractv2df): Use ix86_expand_vector_extract. (sse3_movddup): Rename with '*'. (sse3_movddup splitter): Use gen_rtx_REG instead of gen_lowpart. (sse2_loadsd): Remove. (vec_dupv2df_sse3): Rename from sse3_loadddup. (vec_dupv2df, vec_concatv2df_sse3, vec_concatv2df): New. (sse2_pinsrw): Fix argument ordering. (sse2_loadld, sse2_loadq): Add sse1 alternatives. (sse2_stored): Remove 'r' destination. (vec_dupv4si, vec_dupv2di, sse2_concatv2si, sse1_concatv2si, vec_concatv4si_1, vec_concatv2di, vec_setv2di, vec_extractv2di, vec_initv2di, vec_setv4si, vec_extractv4si, vec_initv4si, vec_setv8hi, vec_extractv8hi, vec_initv8hi, vec_setv16qi, vec_extractv16qi, vec_initv16qi): New. * config/i386/emmintrin.h (__m128i, __m128d): Use typedef, not define. (_mm_set_sd, _mm_set1_pd, _mm_setzero_pd, _mm_set_epi64x, _mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128): Use constructor form. (_mm_load_pd, _mm_store_pd): Use plain dereference. (_mm_load_si128, _mm_store_si128): Likewise. (_mm_load1_pd): Use _mm_set1_pd. (_mm_load_sd): Use _mm_set_sd. (_mm_store_sd, _mm_storeh_pd): Use __builtin_ia32_vec_ext_v2df. (_mm_store1_pd, _mm_storer_pd): Use _mm_store_pd. (_mm_set_epi64): Use _mm_set_epi64x. (_mm_set1_epi64x, _mm_set1_epi64, _mm_set1_epi32, _mm_set_epi16, _mm_set1_epi8, _mm_setr_epi64, _mm_setr_epi32, _mm_setr_epi16, _mm_setr_epi8): Use _mm_set_foo form. (_mm_loadl_epi64, _mm_movpi64_epi64, _mm_move_epi64): Use _mm_set_epi64. (_mm_storel_epi64, _mm_movepi64_pi64): Use __builtin_ia32_vec_ext_v2di. (_mm_extract_epi16): Use __builtin_ia32_vec_ext_v8hi. (_mm_insert_epi16): Use __builtin_ia32_vec_set_v8hi. * config/i386/mmintrin.h (_mm_setzero_si64): Use plain cast. (_mm_set_pi32): Use __builtin_ia32_vec_init_v2si. (_mm_set_pi16): Use __builtin_ia32_vec_init_v4hi. (_mm_set_pi8): Use __builtin_ia32_vec_init_v8qi. (_mm_set1_pi16, _mm_set1_pi8): Use _mm_set_piN variant. * config/i386/pmmintrin.h (_mm_loaddup_pd): Use _mm_load1_pd. (_mm_movedup_pd): Use _mm_shuffle_pd. * config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss, _mm_set1_ps, _mm_set_ps, _mm_setr_ps): Use constructor form. (_mm_cvtpi16_ps, _mm_cvtpu16_ps, _mm_cvtpi8_ps, _mm_cvtpu8_ps, _mm_cvtps_pi8, _mm_cvtpi32x2_ps): Avoid __builtin_ia32_mmx_zero; Use _mm_setzero_ps. (_mm_load_ss, _mm_load1_ps): Use _mm_set* form. (_mm_load_ps, _mm_loadr_ps): Use raw dereference. (_mm_store_ss): Use __builtin_ia32_vec_ext_v4sf. (_mm_store_ps): Use raw dereference. (_mm_store1_ps): Use _mm_storeu_ps. (_mm_storer_ps): Use _mm_store_ps. (_mm_extract_pi16): Use __builtin_ia32_vec_ext_v4hi. (_mm_insert_pi16): Use __builtin_ia32_vec_set_v4hi. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93199 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/emmintrin.h (_mm_cvtsi128_si32): Move earlier.rth2005-01-091-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (_mm_cvtsi128_si64x): Likewise. (_mm_srl_epi64, _mm_srl_epi32, _mm_srl_epi16, _mm_sra_epi32, _mm_sra_epi16, _mm_sll_epi64, _mm_sll_epi32, _mm_sll_epi16): Use the _mm_{srl,sll}i_foo counterpart, and _mm_cvtsi128_si32. * config/i386/i386-modes.def: Add V16HI, V32QI, V4DF, V8SF. * config/i386/i386-protos.h: Update. * config/i386/i386.c (print_operand): Add 'H'. (ix86_fixup_binary_operands): Split out from ... (ix86_expand_binary_operator): ... here. (ix86_fixup_binary_operands_no_copy): New. (ix86_expand_fp_absneg_operator): Handle vector mode results. (bdesc_2arg): Update names for sse{,2,3}_ prefixes. (ix86_init_mmx_sse_builtins): Remove *maskncmp* special cases. (safe_vector_operand): Use CONST0_RTX. (ix86_expand_binop_builtin): Use ix86_fixup_binary_operands. (ix86_expand_builtin): Merge CODE_FOR_sse2_maskmovdqu_rex64 and CODE_FOR_sse2_maskmovdqu. Special case SSE version of MASKMOVDQU expansion. Update names for sse{,2,3}_ prefixes. Remove *maskncmp* special cases. * config/i386/i386.h (IX86_BUILTIN_CMPNGTSS): New. (IX86_BUILTIN_CMPNGESS): New. * config/i386/i386.md (UNSPEC_FIX_NOTRUNC): New. (attr type): Add sselog1. (attr unit, attr memory): Handle it. (movti, movti_internal, movti_rex64): Move near other integer moves. (movtf, movtf_internal): Move near other fp moves. (SSEMODE, SSEMODEI, vec_setv2df, vec_extractv2df, vec_initv2df, vec_setv4sf, vec_extractv4sf, vec_initv4sf, movv4sf, movv4sf_internal, movv2df, movv2df_internal, mov<SSEMODEI>, mov<SSEMODEI>_internal, movmisalign<SSEMODE>, sse_movups_1, sse_movmskps, sse_movntv4sf, sse_movhlps, sse_movlhps, sse_storehps, sse_loadhps, sse_storelps, sse_loadlps, sse_loadss, sse_loadss_1, sse_movss, sse_storess, sse_shufps, addv4sf3, vmaddv4sf3, subv4sf3, vmsubv4sf3, negv4sf2, mulv4sf3, vmmulv4sf3, divv4sf3, vmdivv4sf3, rcpv4sf2, vmrcpv4sf2, rsqrtv4sf2, vmrsqrtv4sf2, sqrtv4sf2, vmsqrtv4sf2, sse_andv4sf3, sse_nandv4sf3, sse_iorv4sf3, sse_xorv4sf3, sse2_andv2df3, sse2_nandv2df3, sse2_iorv2df3, sse2_xorv2df3, sse2_andv2di3, sse2_nandv2di3, sse2_iorv2di3, sse2_xorv2di3, maskcmpv4sf3, vmmaskcmpv4sf3, sse_comi, sse_ucomi, sse_unpckhps, sse_unpcklps, smaxv4sf3, vmsmaxv4sf3, sminv4sf3, vmsminv4sf3, cvtpi2ps, cvtps2pi, cvttps2pi, cvtsi2ss, cvtsi2ssq, cvtss2si, cvtss2siq, cvttss2si, cvttss2siq, addv2df3, vmaddv2df3, subv2df3, vmsubv2df3, mulv2df3, vmmulv2df3, divv2df3, vmdivv2df3, smaxv2df3, vmsmaxv2df3, sminv2df3, vmsminv2df3, sqrtv2df2, vmsqrtv2df2, maskcmpv2df3, vmmaskcmpv2df3, sse2_comi, sse2_ucomi, sse2_movmskpd, sse2_pmovmskb, sse2_maskmovdqu, sse2_maskmovdqu_rex64, sse2_movntv2df, sse2_movntv2di, sse2_movntsi, cvtdq2ps, cvtps2dq, cvttps2dq, cvtdq2pd, cvtpd2dq, cvttpd2dq, cvtpd2pi, cvttpd2pi, cvtpi2pd, cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq, cvtsi2sd, cvtsi2sdq, cvtsd2ss, cvtss2sd, cvtpd2ps, cvtps2pd, addv16qi3, addv8hi3, addv4si3, addv2di3, ssaddv16qi3, ssaddv8hi3, usaddv16qi3, usaddv8hi3, subv16qi3, subv8hi3, subv4si3, subv2di3, sssubv16qi3, sssubv8hi3, ussubv16qi3, ussubv8hi3, mulv8hi3, smulv8hi3_highpart, umulv8hi3_highpart, sse2_umulsidi3, sse2_umulv2siv2di3, sse2_pmaddwd, sse2_uavgv16qi3, sse2_uavgv8hi3, sse2_psadbw, sse2_pinsrw, sse2_pextrw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw, eqv16qi3, eqv8hi3, eqv4si3, gtv16qi3, gtv8hi3, gtv4si3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3, ashrv8hi3, ashrv4si3, lshrv8hi3, lshrv4si3, lshrv2di3, ashlv8hi3, ashlv4si3, ashlv2di3, sse2_ashlti3, sse2_lshrti3, sse2_unpckhpd, sse2_unpcklpd, sse2_packsswb, sse2_packssdw, sse2_packuswb, sse2_punpckhbw, sse2_punpckhwd, sse2_punpckhdq, sse2_punpcklbw, sse2_punpcklwd, sse2_punpckldq, sse2_punpcklqdq, sse2_punpckhqdq, sse2_movupd, sse2_movdqu, sse2_movdq2q, sse2_movdq2q_rex64, sse2_movq2dq, sse2_movq2dq_rex64, sse2_loadd, sse2_stored, sse2_storehpd, sse2_loadhpd, sse2_storelpd, sse2_loadlpd, sse2_movsd, sse2_loadsd, sse2_loadsd_1, sse2_storesd, sse2_shufpd, sse2_clflush, sse2_mfence, mfence_insn, sse2_lfence, lfence_insn, mwait, monitor, addsubv4sf3, addsubv2df3, haddv4sf3, haddv2df3, hsubv4sf3, hsubv2df3, movshdup, movsldup, lddqu, loadddup, movddup): Move to sse.md. Any with non-optabs meanings renamed with an "sse{,2,3}_" prefix at the same time. (SSEPUSH, push<SSEPUSH>): Remove. (MMXPUSH, push<MMXPUSH>): Remove. (sse_movaps, sse_movaps_1, sse_movups): Remove. (sse2_movapd, sse2_movdqa, sse2_movq): Remove. (sse2_andti3, sse2_nandti3, sse2_iorti3, sse2_xorti3): Remove. (sse_clrv4sf, sse_clrv2df, sse2_clrti): Remove. (maskncmpv4sf3, vmmaskncmpv4sf3): Remove. (maskncmpv2df3, vmmaskncmpv2df3): Remove. (ashrv8hi3_ti, ashrv4si3_ti, lshrv8hi3_ti, lshrv4si3_ti): Remove. (lshrv2di3_ti, ashlv8hi3_ti, ashlv4si3_ti, ashlv2di3_ti): Remove. * config/i386/athlon.md (athlon_sselog_load): Handle sselog1. (athlon_sselog_load_k8, athlon_sselog, athlon_sselog_k8): Likewise. * config/i386/ppro.md (ppro_sse_div_V4SF_load): Fix memory attr. (ppro_sse_log_V4SF_load): Similarly. Handle sselog1. (ppro_sse_log_V4SF): Handle sselog1. * config/i386/predicates.md (const_0_to_1_operand): New. (const_0_to_255_mul_8_operand): New. (const_1_to_31_operand): Rename from const_int_1_31_operand. (const_2_to_3_operand, const_4_to_7_operand): New. * config/i386/sse.md: New file. (SSEMODE12, SSEMODE24, SSEMODE124, SSEMODE248, ssevecsize): New. (sse_movups): Rename from sse_movups_1. (sse_loadlss): Rename from sse_loadss_1. (andv4sf3, iorv4sf3, xorv4sf3, andv2df3): Remove the sse prefix from the name. (negv4sf2): Use ix86_expand_fp_absneg_operator. (absv4sf2, negv2df, absv2df): New. (addv4sf3): Add expander to call ix86_fixup_binary_operands_no_copy. (subv4sf3, mulv4sf3, divv4sf3, smaxv4sf3, sminv4sf3, andv4sf3, iorv4sf3, xorv4sf3, addv2df3, subv2df3, mulv2df3, divv2df3, smaxv2df3, sminv2df3, andv2df3, iorv2df3, xorv2df3, mulv8hi3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3): Likewise. (sse3_addsubv4sf3): Model correctly. sse3_haddv4sf3, sse3_hsubv4sf3, sse3_addsubv2df3, sse3_haddv2df3, sse3_hsubv2df3, sse2_ashlti3, sse2_lshrti3): Likewise. (sse_movhlps): Model with vec_select+vec_concat. (sse_movlhps, sse_unpckhps, sse_unpcklps, sse3_movshdup, sse3_movsldup, sse_shufps, sse_shufps_1, sse2_unpckhpd, sse3_movddup, sse2_unpcklpd, sse2_shufpd, sse2_shufpd_1, sse2_punpckhbw, sse2_punpcklbw, sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq, sse2_punpckhqdq, sse2_punpcklqdq, sse2_pshufd, sse2_pshufd_1, sse2_pshuflw, sse2_pshuflw_1, sse2_pshufhw, sse2_pshufhw_1): Likewise. (neg<SSEMODEI>2, one_cmpl<SSEMODEI>2): New. (add<SSEMODEI>3, sse2_ssadd<SSEMODE12>3, sse2_usadd<SSEMODE12>3, sub<SSEMODEI>3, sse2_sssub<SSEMODE12>3, sse2_ussub<SSEMODE12>3, ashr<SSEMODE24>3, lshr<SSEMODE248>3, sse2_eq<SSEMODE124>3, sse2_gt<SSEMODDE124>3, and<SSEMODEI>3, sse_nand<SSEMODEI>3, ior<SSEMODEI>3, xor<SSEMODEI>3): Macroize from existing patterns. (addv4sf3, sse_vmaddv4sf3, mulv4sf3, sse_vmmulv4sf3, smaxv4sf3, sse_vmsmaxv4sf3, sminv4sf3, sse_vmsminv4sf3, addv2df3, sse2_vmaddv2df3, mulv2df3, sse2_vmmulv2df3, smaxv2df3, sse2_vmsmaxv2df3, sminv2df3, sse2_vmsminv2df3, umaxv16qi3, smaxv8hi3, uminv16qi3 sminv8hi3): Mark commutative operands. Use ix86_binary_operator_ok. (sse_unpckhps, sse_unpcklps, sse2_packsswb, sse2_packssdw, sse2_packuswb, sse2_punpckhbw, sse2_punpcklbw, sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq, sse2_punpckhqdq, sse2_punpcklqdq): Allow operand2 in memory. (sse_movhlps, sse_movlhps, sse2_unpckhpd, sse2_unpcklpd sse2_movsd): Add memory alternatives. (sse_storelps): Turn expander into an insn; split after reload. (sse_storess, sse2_loadhpd, sse2_loadlpd): Add non-xmm inputs. (sse2_storehpd, sse2_storelpd): Add non-xmm outputs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93101 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (ix86_expand_vector_move): Tidy.rth2004-12-231-0/+1
| | | | | | | | | | | | | (ix86_expand_vector_move_misalign): New. (ix86_misaligned_mem_ok): Remove. (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. * config/i386/i386-protos.h: Update. * config/i386/i386.md (SSEMODEI): Rename from SSEINT16. (MMXMODEI): Rename from MMXINT8. (SSEMODE, MMXMODE, movmisalign<mode>): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92543 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/17990rth2004-12-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | * config/i386/i386.c (x86_use_bt): New. (ix86_expand_unary_operator): Use MEM_P. (ix86_expand_fp_absneg_operator): New. * config/i386/i386.h (x86_use_bt): Declare. (TARGET_USE_BT): New. * config/i386/i386-protos.h: Update. * config/i386/i386.md (negsf2): Use ix86_expand_fp_absneg_operator. (negdf2, negxf2, abssf2, absdf2, absxf2): Likewise. (negsf2_memory, negsf2_ifs, negsf2_if, negdf2_memory, negdf2_ifs, negdf2_ifs_rex64, negdf2_if, negdf2_if_rex64, negxf2_if, abssf2_memory, abssf2_ifs, abssf2_if, absdf2_memory, absdf2_ifs, absdf2_ifs_rex64, absdf2_if, absxf2_if): Remove. (absnegsf2_mixed, absnegsf2_sse, absnegsf2_i387, absnegdf2_mixed, absnegdf2_sse, absnegdf2_i387, absnegxf2_i387): New. Merge all neg and abs splitters. Handle DFmode in general regs in 64-bit mode. (negextendsfdf2, absextendsfdf2): Disable for non-mixed sse math. (btsq, btrq, btcq): New. Add peepholes as well. (movv4sf_internal splitter): Postpone til after reload. (movv2di_internal splitter): Likewise. * config/i386/predicates.md (const_0_to_63_operand): New. (absneg_operator): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92165 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386-protos.h (ix86_split_fp_branch): New rtxuros2004-12-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | argument. * config/i386/i386.c (output_fp_compare): Fix is_sse condition. Use EFLAGS_P only when fcomi insn should be used. Fix handling of eflags_p variable. Change alt table accordingly. For non-fcomi compare insn always use trailing fnstsw insn. Fix intmode calculation for ficom insn. (ix86_split_fp_branch): Add "rtx pushed" as new parameter. Call ix86_free_from_memory when "pushed" is specified. (ix86_expand_branch): Change call to ix86_split_fp_branch. * config/i386/i386.md (*cmpfp_0_sf, *cmpfp_0_df, *cmpfp_0_xf): Change eflags_p parameter in call to output_fp_compare. (*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf): Remove. (*cmpfp_2_sf_1, *cmpfp_2_df_1, *cmpfp_2_xf_1): Rename to *cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf. Change eflags_p parameter in call to output_fp_compare. (*cmpfp_2_u): Remove. (*cmpfp_2_u_1): Rename to *cmpfp_2_u. Change eflags_p parameter in call to output_fp_compare. (*ficom_1): Remove insn definition and corresponding define_split. (*cmpfp_si): New insn definition. (*fp_jcc_8): New insn definition. Add new splitters for "memory_operand" and "register_operand". (define_split): Add new parameter in call to ix86_split_fp_branch. config/i386/predicates.md (float_operator): New predicate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91856 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.h (ASM_OUTPUT_DWARF_ADDR_CONST): Remove.bje2004-11-241-1/+0
| | | | | | | | | * config/i386/i386.c (i386_dwarf_output_addr_const): Likewise. * config/i386/i386-protos.h (i386_dwarf_output_addr_const): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91255 138bc75d-0d04-0410-961f-82ee72b054a4
* * configure.ac: Check for COMDAT support. Robustify check formmitchel2004-09-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SHF_MERGE support. * configure: Regenerated. * config.in: Likewise. * langhooks-def.h (lhd_comdat_group): New function. (LANG_HOOKS_COMDAT_GROUP): New macro. (LANG_HOOKS_DECLS): Use it. * langhooks.c (lhd_comdat_group): Define. * langhooks.h (lang_hooks_for_decls): Add comdat_group. * output.h (named_section_flags): Make it a macro. (named_section_real): New function. (default_no_named_section): Add decl parameter. (default_elf_asm_named_section): Likewise. (default_coff_asm_named_section): Likewise. (default_pe_asm_named_section): Likewise. * target.h (gcc_target): Adjust type of named_section. * varasm.c (named_section_flags): Rename to named_section_real. Add decl parameter. (default_no_named_section): Add decl parameter. (default_elf_asm_named_section): Use COMDAT, if available. Deal with the case that ASM_COMMENT_START is "@". (default_coff_asm_named_section): Add decl parameter. (default_pe_asm_named_section): Likewise. * config/alpha/alpha.c (vms_asm_named_section): Add decl parameter. (unicosmk_asm_named_section): Likewise. * config/arm/arm.c (arm_elf_asm_named_section): Remove. * config/arm/elf.h (TARGET_ASM_NAMED_SECTION): Likewise. * config/c4x/c4x.c (c4x_asm_named_section): Add decl parameter. * config/cris/cris-protos.h (cris_target_asm_named_section): Likewise. * config/cris/cris.c (cris_target_asm_named_section): Likewise. * config/h8300/h8300.c (h8300_asm_named_section): Likewise. * config/i386/i386-protos.h (i386_pe_asm_named_section): Likewise. * config/i386/winnt.c (i386_pe_asm_named_section): Likewise. * config/m68k/m68k.c (m68k_coff_asm_named_section): Likewise. * config/mcore/mcore.c (mcore_asm_named_section): Likewise. * config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section): Likewise. * config/sparc/sparc.c (sparce_elf_asm_named_section): Likewise. * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define. * cp-tree.h (cxx_comdat_group): Declare. * decl.c (cxx_comdat_group): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87557 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-09-04 Uros Bizjak <uros@kss-loka.si>uros2004-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_RINT{,F,L} using rint_optab. (expand_builtin): Expand BUILT_IN_RINT{,F,L} using expand_builtin_mathfn. * genopinit.c (optabs): Rename trunc_optab to btrunc_optab. Use btrunc?f patterns for btrunc_optab. Implement rint_optab using rint?f patterns. * optabs.c (init_optabs): Initialize rint_optab. * optabs.h (enum optab_index): Rename OTI_trunc to OTI_btrunc. Add new OTI_rint. (btrunc_optab): Rename macro from trunc_optab. (rint_optab): Define corresponding macro. * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FRNDINT_FLOOR, UNSPEC_FRNDINT_CEIL, UNSPEC_FRNDINT_TRUNC, UNSPEC_FRNDINT_MASK_PM. * config/i386/i386-protos.h (emit_i387_cw_initialization): Change prototype. Add new int parameter. * config/i386/i386.c (emit_i387_cw_initialization): Handle new rounding modes. * config/i386/i386.h (enum fp_cw_mode): Delete. (MODE_NEEDED): Handle new rounding modes. (EMIT_MODE_SET): Change condition to handle new rounding modes. * config/i386/i386.md (UNSPEC_FRNDINT_FLOOR, UNSPEC_FRNDINT_CEIL, UNSPEC_FRNDINT_TRUNC, UNSPEC_FRNDINT_MASK_PM): New unspecs to represent different rounding modes of frndint insn. (type): Add frndint type. (i387, length, memory): Handle this type. (i387_cw): New attribute definition. (*fix_truncdi_1, fix_truncdi_nomemory, fix_truncdi_memory, *fix_truncsi_1, fix_truncsi_nomemory, fix_truncsi_memory, *fix_trunchi_1, fix_trunchi_nomemory, fix_trunchi_memory): Add "i387_cw" attribute defined to "trunc". (x86_fnstcw_1): Remove comment. (*frndintxf2): Rename insn definition to frndintxf2. Move insn definition near rint?f2 expanders. (rintdf2, rintsf2, rintxf2): New expanders to implement rint, rintf and rintl built-ins as inline x87 intrinsics. (frndintxf2_floor): New pattern to implement floor rounding mode with frndint x87 instruction. (floordf2, floorsf2, floorxf2): New expanders to implement floor, floorf and floorl built-ins as inline x87 intrinsics. (frndintxf2_ceil): New pattern to implement ceil rounding mode with frndint x87 instruction. (ceildf2, ceilsf2, ceilxf2): New expanders to implement ceil, ceilf and ceill built-ins as inline x87 intrinsics. (frndintxf2_trunc): New pattern to implement trunc rounding mode with frndint x87 instruction. (btruncdf2, btruncsf2, btruncxf2): New expanders to implement trunc, truncf and truncl built-ins as inline x87 intrinsics. (frndintxf2_mask_pm): New pattern to implement rounding mode with exceptions with frndint x87 instruction. (nearbyintdf2, nearbyintsf2, nearbyintxf2): New expanders to implement nearbyint, nearbyintf and nearbyintl built-ins as inline x87 intrinsics. * testsuite/gcc.dg/builtins-46.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87076 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (internal_label_prefix): Export.rth2004-08-131-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (internal_label_prefix_len, struct ix86_address, ix86_decompose_address, maybe_get_pool_constant, ix86_fp_compare_code_to_integer, ix86_fp_comparison_codes, memory_address_length): Export. (any_fp_register_operand, fp_register_operand, register_and_not_any_fp_reg_operand, register_and_not_fp_reg_operand, x86_64_general_operand, x86_64_szext_general_operand, x86_64_nonmemory_operand, x86_64_movabs_operand, x86_64_szext_nonmemory_operand, x86_64_immediate_operand, x86_64_zext_immediate_operand, const_int_1_31_operand, symbolic_operand, pic_symbolic_operand, local_symbolic_operand, tls_symbolic_operand, global_dynamic_symbolic_operand, local_dynamic_symbolic_operand, initial_exec_symbolic_operand, local_exec_symbolic_operand, call_insn_operand, sibcall_insn_operand, constant_call_address_operand, const0_operand, const1_operand, const248_operand, const_0_to_3_operand, const_0_to_7_operand, const_0_to_15_operand, const_0_to_255_operand, incdec_operand, shiftdi_operand, reg_no_sp_operand, mmx_reg_operand, general_no_elim_operand, nonmemory_no_elim_operand, index_register_operand, q_regs_operand, flags_reg_operand, non_q_regs_operand, zero_extended_scalar_load_operand, vector_move_operand, no_seg_address_operand, sse_comparison_operator, ix86_comparison_operator, ix86_carry_flag_operator, fcmov_comparison_operator, promotable_binary_operator, cmp_fp_expander_operand, ext_register_operand, binary_fp_operator, mult_operator, div_operator, arith_or_logical_operator, memory_displacement_operand, cmpsi_operand, long_memory_operand, aligned_operand): Move to predicates.md as define_predicates. (tls_symbolic_operand_1): Remove. (x86_64_sign_extended_value): Merge into x86_64_immediate_operand. (x86_64_zero_extended_value): Merge into x86_64_zext_immediate_operand. (legitimize_address): Merge tls_symbolic_operand contents. (ix86_expand_move): Likewise. * config/i386/i386-protos.h: Update for exports. * config/i386/i386.h (EXTRA_CONSTRAINT): Update for renames. (PREDICATE_CODES, SPECIAL_MODE_PREDICATES): Remove. * config/i386/i386.md: Include predicates.md. * config/i386/predicates.md: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85930 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree.c (handle_dll_attribute): Move here from i383/winnt.c.mmitchel2004-08-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace use of DECL_INLINE with DECL_DECLARED_INLINE_P. Set DECL_VISIBLITY. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * tree.h (handle_dll_attribute): Declare. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * c-common.h (c_determine_visibility): Declare. * c-common.c (c_determine_visibility): New function. * c-decl.c (finish_decl): Use it. (finish_function): Likewise. * defaults.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to zero, by default. Use #if, not #ifdef, to test it. * config/arm/arm.c (arm_attribute_table): Use handle_dll_attribute. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * config/arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1. * config/i386/cygming.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1. * config/i386/i386-protos.h (ix86_handle_dll_attribute): Remove. * config/i386/i386.c (ix86_attribute_table): Use handle_dll_attribute for dllimport/dllexport. Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if. * config/i386/winnt.c (ix86_handle_dll_attribute): Remove. * config/mcore/mcore.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to 1. * config/mcore/mcore.c (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Test it with #if. * config/sh/symbian-pre.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to 1. * doc/extend.texi (dllexport): Clarify and correct documentation. (dllimport): Likewise. * doc/tm.texi (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Mention handle_dll_attribute. * decl.c (start_preparsed_function): Move determine_visibility call. * decl2.c (determine_visibility): Incorporate dllexport testing. * g++.dg/ext/visibility/assign1.C: Use scan-hidden and dg-require-visiblity. * g++.dg/ext/visibility/fvisibility-inlines-hidden.C: Likewise. * g++.dg/ext/visibility/fvisibility.C: Likewise. * g++.dg/ext/visibility/memfuncts.C: Likewise. * g++.dg/ext/visibility/new1.C: Likewise. * g++.dg/ext/visibility/pragma.C: Likewise. * g++.dg/ext/visibility/staticmemfuncts.C: Likewise. * g++.dg/ext/visibility/virtual.C: Likewise. * g++/dg/ext/visibility/visibility-1.C: Likewise. * g++/dg/ext/visibility/visibility-2.C: Likewise. * g++/dg/ext/visibility/visibility-3.C: Likewise. * g++/dg/ext/visibility/visibility-4.C: Likewise. * g++/dg/ext/visibility/visibility-5.C: Likewise. * g++/dg/ext/visibility/visibility-6.C: Likewise. * g++/dg/ext/visibility/visibility-7.C: Likewise. * g++/dg/ext/visibility/visibility-8.C: New test. * gcc.c-torture/compile/dll.x: Remove. * gcc.dg/dll-2.c: Use dg-require-dll * gcc.dg/visibility-10.c: New test. * lib/gcc-dg.exp (dg-require-dll): Add Symbian to list of targets supporting DLLs. * testsuite/lib/scanasm.exp (scan_hidden): New function. (scan_not_hidden): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85621 138bc75d-0d04-0410-961f-82ee72b054a4
* * target.h (struct gcc_target): Add calls.pass_by_reference.rth2004-07-141-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * target-def.h (TARGET_PASS_BY_REFERENCE): New. * function.c (pass_by_reference): Use the hook. * system.h (FUNCTION_ARG_PASS_BY_REFERENCE): Poison. * targhooks.c, targhooks.h (hook_pass_by_reference_false): New. (hook_pass_by_reference_must_pass_in_stack): New. * config/alpha/alpha.c (function_arg): Don't query pass-by-ref. (alpha_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/alpha/alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/arc/arc.c (arc_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/arc/arc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/arm/arm-protos.h (arm_function_arg_pass_by_reference): Remove. * config/arm/arm.c (TARGET_PASS_BY_REFERENCE): New. (arm_pass_by_reference): Rename from arm_function_arg_pass_by_reference. * config/arm/arm.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/c4x/c4x.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/cris/cris.c (cris_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/cris/cris.h (FUNCTION_ARG): Don't query pass-by-ref. (FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE): Likewise. (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/fr30/fr30.c (TARGET_PASS_BY_REFERENCE): New. * config/fr30/fr30.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/frv/frv-protos.h (frv_function_arg_pass_by_reference): Kill. * config/frv/frv.c (TARGET_PASS_BY_REFERENCE): New. (frv_function_arg_pass_by_reference): Remove. * config/frv/frv.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/i386/i386-protos.h (function_arg_pass_by_reference): Remove. * config/i386/i386.c (TARGET_PASS_BY_REFERENCE): New. (ix86_pass_by_reference): Rename from function_arg_pass_by_reference. * config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/ia64/ia64-protos.h (ia64_function_arg_pass_by_reference): Kill. * config/ia64/ia64.c (TARGET_PASS_BY_REFERENCE): New. (ia64_pass_by_reference): Rename from ia64_function_arg_pass_by_reference. * config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/ip2k/ip2k.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/iq2000/iq2000-protos.h (function_arg_pass_by_reference): Kill. * config/iq2000/iq2000.c (TARGET_PASS_BY_REFERENCE): New. (iq2000_pass_by_reference): Rename from function_arg_pass_by_reference. * config/iq2000/iq2000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref. * config/m32r/m32r-protos.h (m32r_pass_by_reference): Remove. * config/m32r/m32r.c (TARGET_PASS_BY_REFERENCE): New. (m32r_pass_by_reference): Adjust prototype. Make static. Handle mode sizes correctly. * config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c (m68hc11_function_arg_pass_by_reference): Remove. * config/m68hc11/m68hc11.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref. * config/mcore/mcore.c (TARGET_PASS_BY_REFERENCE): New. * config/mcore/mcore.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/mips/mips-protos.h (function_arg_pass_by_reference): Remove. * config/mips/mips.c (TARGET_PASS_BY_REFERENCE): New. (mips_va_arg): Use pass_by_reference. (mips_pass_by_reference): Rename from function_arg_pass_by_reference. Handle mode sizes correctly. * config/mips/mips.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref. * config/mmix/mmix-protos.h (mmix_function_arg_pass_by_reference): Kill. * config/mmix/mmix.c (TARGET_PASS_BY_REFERENCE): New. (mmix_pass_by_reference): Rename from mmix_function_arg_pass_by_reference. * config/mmix/mmix.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/mn10300/mn10300.c (TARGET_PASS_BY_REFERENCE): New. (mn10300_pass_by_reference): New. * config/mn10300/mn10300.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/pa/pa.c (pa_pass_by_reference): New. (TARGET_PASS_BY_REFERENCE): New. * config/pa/pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * config/rs6000/rs6000-protos.h (function_arg_pass_by_reference): Kill. * config/rs6000/rs6000.c (TARGET_PASS_BY_REFERENCE): New. (rs6000_pass_by_reference): Rename from function_arg_pass_by_reference. * config/rs6000/rs6000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/s390/s390-protos.h (s390_function_arg_pass_by_reference): Kill. * config/s390/s390.c (TARGET_PASS_BY_REFERENCE): New. (s390_pass_by_reference): Rename from s390_function_arg_pass_by_reference. (s390_function_arg_advance): Don't query pass-by-ref. (s390_function_arg): Likewise. (s390_gimplify_va_arg): Use pass_by_reference. (s390_call_saved_register_used): Likewise. * config/s390/s390.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/sh/sh.c (TARGET_PASS_BY_REFERENCE): New. (shcompact_byref, sh_pass_by_reference): New. * config/sh/sh.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (SHCOMPACT_BYREF): Remove. * config/sparc/sparc-protos.h (function_arg_pass_by_reference): Kill. * config/sparc/sparc.c (TARGET_PASS_BY_REFERENCE): New. (sparc_pass_by_reference): Rename from function_arg_pass_by_reference. (sparc_gimplify_va_arg): Use pass_by_reference. * config/sparc/sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/stormy16/stormy16.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. * config/v850/v850.c (TARGET_PASS_BY_REFERENCE): New. (v850_pass_by_reference): New. * config/v850/v850.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove. (FUNCTION_ARG_CALLEE_COPIES): True. * doc/tm.texi (TARGET_PASS_BY_REFERENCE): Update from FUNCTION_ARG_PASS_BY_REFERENCE docs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84672 138bc75d-0d04-0410-961f-82ee72b054a4
* * target-def.h (TARGET_MUST_PASS_IN_STACK): New.rth2004-07-131-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * target.h (struct gcc_target): Add calls.must_pass_in_stack. * expr.h (MUST_PASS_IN_STACK): Remove. * system.h (MUST_PASS_IN_STACK): Poison. * tree.h (must_pass_in_stack_var_size): Declare. (must_pass_in_stack_var_size_or_pad): Declare. * calls.c (must_pass_in_stack_var_size): New. (must_pass_in_stack_var_size_or_pad): Rename from default_must_pass_in_stack. * config/alpha/alpha.c (unicosmk_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/alpha/unicosmk.h (MUST_PASS_IN_STACK): Remove. * config/fr30/fr30.c (fr30_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/fr30/fr30.h (MUST_PASS_IN_STACK): Remove. * config/frv/frv.c (frv_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/frv/frv.h (MUST_PASS_IN_STACK): Remove. * config/i386/i386-protos.h (ix86_must_pass_in_stack): Remove. * config/i386/i386.c (TARGET_MUST_PASS_IN_STACK): New. (ix86_must_pass_in_stack): Make static. * config/i386/i386.h (MUST_PASS_IN_STACK): Remove. * config/ia64/ia64.c (TARGET_MUST_PASS_IN_STACK): New. * config/ia64/ia64.h (MUST_PASS_IN_STACK): Remove. * config/m32r/m32r.c (TARGET_MUST_PASS_IN_STACK): New. * config/m32r/m32r.h (MUST_PASS_IN_STACK): Remove. * config/mcore/mcore-protos.h (mcore_must_pass_on_stack): Remove. * config/mcore/mcore.c (TARGET_MUST_PASS_IN_STACK): New. (mcore_must_pass_on_stack): Remove. * config/mcore/mcore.h (MUST_PASS_IN_STACK): Remove. * config/mips/mips.c (TARGET_MUST_PASS_IN_STACK): New. * config/mips/mips.h (MUST_PASS_IN_STACK): Remove. * config/pa/pa.c (TARGET_MUST_PASS_IN_STACK): New. * config/pa/pa.h (MUST_PASS_IN_STACK): Remove. * config/rs6000/aix.h (MUST_PASS_IN_STACK): Remove. * config/rs6000/linux64.h (MUST_PASS_IN_STACK): Remove. * config/rs6000/rs6000.c (rs6000_must_pass_in_stack): New. (TARGET_MUST_PASS_IN_STACK): New. * config/sh/sh.c (TARGET_MUST_PASS_IN_STACK): New. * config/sh/sh.h (MUST_PASS_IN_STACK): Remove. * config/sparc/sparc.c (TARGET_MUST_PASS_IN_STACK): New. * config/sparc/sparc.h (MUST_PASS_IN_STACK): Remove. * config/xtensa/xtensa.c (TARGET_MUST_PASS_IN_STACK): New. * config/xtensa/xtensa.h (MUST_PASS_IN_STACK): Remove. * doc/tm.texi (TARGET_MUST_PASS_IN_STACK): Update from MUST_PASS_IN_STACK. * calls.c, function.c, config/alpha/alpha.c, config/alpha/alpha.h, config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.c, config/cris/cris.h, config/fr30/fr30.c, config/fr30/fr30.h, config/frv/frv.c, config/i386/i386.c, config/iq2000/iq2000.c, config/mcore/mcore.c, config/mcore/mcore.h, config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h, config/rs6000/rs6000.c, config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c, config/xtensa/xtensa.c: Use target hook. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84606 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/ChangeLog:aoliva2004-07-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c: Rename movstr*, except for movstrict*, to movmem* and clrstr* to clrmem*. * expr.c: Likewise. * expr.h: Likewise. * genopinit.c: Likewise. * integrate.c: Likewise. * local-alloc.c: Likewise. * optabs.c: Likewise. * optabs.h: Likewise. * config/alpha/alpha.h: Likewise. * config/alpha/alpha.md: Likewise. * config/arm/arm-protos.h: Likewise. * config/arm/arm.c: Likewise. * config/arm/arm.md: Likewise. * config/avr/avr.md: Likewise. * config/c4x/c4x.c: Likewise. * config/c4x/c4x.md: Likewise. * config/frv/frv.md: Likewise. * config/i386/i386-protos.h: Likewise. * config/i386/i386.c: Likewise. * config/i386/i386.h: Likewise. * config/i386/i386.md: Likewise. * config/i860/i860.c: Likewise. * config/i860/i860.md: Likewise. * config/ip2k/ip2k.md: Likewise. * config/ip2k/libgcc.S: Likewise. * config/ip2k/t-ip2k: Likewise. * config/m32r/m32r.c: Likewise. * config/m32r/m32r.md: Likewise. * config/mcore/mcore.md: Likewise. * config/mips/mips.c: Likewise. * config/mips/mips.md: Likewise. * config/ns32k/ns32k.c: Likewise. * config/ns32k/ns32k.h: Likewise. * config/ns32k/ns32k.md: Likewise. * config/pa/pa.c: Likewise. * config/pa/pa.md: Likewise. * config/pdp11/pdp11.h: Likewise. * config/pdp11/pdp11.md: Likewise. * config/rs6000/rs6000.c: Likewise. * config/rs6000/rs6000.md: Likewise. * config/s390/s390-protos.h: Likewise. * config/s390/s390.c: Likewise. * config/s390/s390.md: Likewise. * config/sh/lib1funcs.asm: Likewise. * config/sh/sh.c: Likewise. * config/sh/sh.md: Likewise. * config/sh/t-sh: Likewise. * config/sparc/sparc.h: Likewise. * config/vax/vax.md: Likewise. * config/xtensa/xtensa.c: Likewise. * config/xtensa/xtensa.md: Likewise. * doc/invoke.texi: Likewise. * doc/md.texi: Likewise. * doc/rtl.texi: Likewise. gcc/testsuite/ChangeLog: * gcc.c-torture/execute/builtins/mempcpy-2.c: Rename movstr*, except for movstrict*, to movmem* and clrstr* to clrmem*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84222 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (legitimize_pic_address): Make static.rth2004-07-061-1/+0
| | | | | | | | | (legitimize_address): Handle CONST with TLS operand. (ix86_expand_move): Don't call legitimize_pic_address directly. * config/i386/i386-protos.h (legitimize_pic_address): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84173 138bc75d-0d04-0410-961f-82ee72b054a4
* * optabs.h (enum optab_index): Add new OTI_log1p.uros2004-05-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (log1p_optab): Define corresponding macro. * optabs.c (init_optabs): Initialize log1p_optab. * genopinit.c (optabs): Implement log1p_optab using log1p?f2 patterns. * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOG1P{,F,L} using log1p_optab. (expand_builtin): Expand BUILT_IN_LOG1P{,F,L} using expand_builtin_mathfn if flag_unsafe_math_optimizations is set. * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FYL2XP1. * config/i386/i386.c (ix86_emit_i387_log1p): New function. * config/i386/i386-protos.h (ix86_emit_i387_log1p): Prototype here. * config/i386/i386.md (UNSPEC_FYL2XP1): New unspec to represent x87's fyl2xp1 instruction. (*fyl2x_xf3): Rename insn definition to fyl2x_xf3. (fyl2xp1_xf3): New pattern to implement fyl2xp1 x87 instruction. (log1psf2, log1pdf2, log1pxf2): New expanders to implement log1pf, log1p and log1pl built-ins as inline x87 intrinsics. * testsuite/gcc.dg/builtins-33.c: Also check log1p*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81606 138bc75d-0d04-0410-961f-82ee72b054a4
* * optabs.h (enum optab_index): Add new OTI_fmod and OTI_drem.uros2004-05-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (fmod_optab): Define corresponding macros. * optabs.c (init_optabs): Initialize fmod_optab and drem_optab. * genopinit.c (optabs): Implement fmod_optab and drem_optab using fmod?f3 and drem?f3 patterns. * builtins.c (expand_builtin_mathfn_2): Handle BUILT_IN_FMOD{,F,L} using fmod_optab and BUILT_IN_DREM{,F,L} using drem_optab. (expand_builtin): Expand BUILT_IN_FMOD{,F,L} and BUILT_IN_DREM{,F,L} using expand_builtin_mathfn_2 if flag_unsafe_math_optimizations is set. * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FPREM_F, UNSPEC_FPREM_U, UNSPEC_FPREM1_F and UNSPEC_FPREM1_U. * config/i386/i386.c (ix86_emit_fp_unordered_jump): New function. * config/i386/i386-protos.h (ix86_emit_fp_unordered_jump): Prototype here. * config/i386/i386.md (UNSPEC_FPREM_F, UNSPEC_FPREM_U, UNSPEC_FPREM1_F, UNSPEC_FPREM1_U): New unspecs to represent x87's fprem and fprem1 instructions. (*x86_fnstsw_1): Change input parameter to (reg:CCFP 18). Rename insn definition to x86_fnstsw_1. (fpremxf4, fprem1xf4): New patterns to implement fprem and fprem1 x87 instructions. (fmodsf3, fmoddf3, fmodxf3): New expanders to implement fmodf, fmod and fmodl built-ins as inline x87 intrinsics. (dremsf3, dremdf3, dremxf3): New expanders to implement dremf, drem and dreml built-ins as inline x87 intrinsics. * testsuite/gcc.dg/builtins-40.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81555 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386.c (output_387_reg_move): New function.sayle2004-04-121-0/+1
| | | | | | | | | | | * config/i386/i386-protos.h (output_387_reg_move): Prototype here. * config/i386/i386.md (*movsf_1, *movsf1_nointerunit, *movdf_nointeger, *movdf_integer, *movxf_nointeger, *movxf_integer, *extendsfdf2_1, *extendsfxf2_1, *extenddfxf2_1, truncdfsf2_noop, truncxfsf2_noop, truncxfdf2_noop): Call output_387_reg_move. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80631 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386-protos.h: Add a prototype forkazu2004-03-161-0/+1
| | | | | | | | | | | | ix86_reverse_condition. * config/i386/i386.c (ix86_reverse_condition): New. * config/i386/i386.h (REVERSE_CONDITION): Use ix86_reverse_condition. * config/i386/i386.md: Use ix86_reverse_condition instead of REVERSE_CONDITION. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79556 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/i386-protos.h: Remove the prototype forkazu2004-01-311-2/+0
| | | | | | | | | | ix86_setup_incoming_varargs. * config/i386/i386.c (TARGET_SETUP_INCOMING_VARARGS): New. (ix86_setup_incoming_varargs): Make it static. * config/i386/i386.h (SETUP_INCOMING_VARARGS): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77046 138bc75d-0d04-0410-961f-82ee72b054a4