| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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/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.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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101314 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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/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/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/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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(_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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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-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.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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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-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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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
|