aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000
AgeCommit message (Collapse)AuthorFilesLines
2009-01-28invoke.texi (avoid-indexed-addresses): Document new option.Pat Haugen4-19/+81
* doc/invoke.texi (avoid-indexed-addresses): Document new option. * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare. * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option. * config/rs6000/rs6000.c (rs6000_override_options): Default avoid-indexed-addresses on for Power6, off for everything else. (avoiding_indexed_address_p): New function. (rs6000_legitimize_address): Use it. (rs6000_legitimate_address): Likewise. * config/rs6000/rs6000.md (movXX_updateX): Likewise * gcc.target/powerpc/avoid-indexed-addresses.c: New test. From-SVN: r143742
2009-01-07rs6000.c (rs6000_legitimize_address): Check for non-word-aligned REG+CONST ↵Nathan Froyd1-1/+4
addressing. gcc/ * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for non-word-aligned REG+CONST addressing. gcc/testsuite/ * gcc.c-torture/compile/20090107-1.c: New test. Co-Authored-By: Alan Modra <amodra@bigpond.net.au> From-SVN: r143171
2009-01-04s390.md (UNSPEC_MB): Rename from UNSPECV_MB.Uros Bizjak1-3/+3
* config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB. (memory_barrier): Expand as unspec instead of unspec_volatile. Remove mem:BLK from insn operands. Use Pmode scratch register. (*memory_barrier): Define as unspec instead of unspec_volatile. Use (match_dup 0) as input operand. * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR. * config/sparc/sync.md (memory_barrier): Expand as unspec instead of unspec_volatile. Remove mem:BLK from insn operands. Use Pmode scratch register. Remove operand 1. (*stbar): Define as unspec instead of unspec_volatile. Use (match_dup 0) as input operand, remove (const_int 8). (*membar): Define as unspec instead of unspec_volatile. Use (match_dup 0) as input operand, remove input operand 2. * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW. (memory_barrier): Expand as unspec instead of unspec_volatile. Remove mem:BLK from insn operands. Use Pmode scratch register. (*memory_barrier): Define as unspec instead of unspec_volatile. Use (match_dup 0) as input operand. * config/ia64/sync.md (memory_barrier): Redefine as expander pattern. Remove mem:BLK from insn operands. Use Pmode scratch register. Set volatile flag on operand 0. (*memory_barrier): New insn pattern. * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from insn operands. (*memory_barrier): Use (match_dup 0) as input operand. * config/mips/sync.md (memory_barrier): Redefine as expander pattern. Remove mem:BLK from insn operands. Use Pmode scratch register. Set volatile flag on operand 0. (*memory_barrier): New insn pattern. * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal. From-SVN: r143047
2008-12-19re PR bootstrap/37739 (bootstrap broken with core gcc > gcc-4.2.x)Jakub Jelinek1-0/+2
PR bootstrap/37739 * config.host: For powerpc*-*-linux* host with 32-bit GCC, use rs6000/x-linux-relax snippet if ld is new enough, otherwise use rs6000/x-linux-O1. * config/rs6000/x-linux-relax: New file. * config/x-cflags-O1: New file. From-SVN: r142833
2008-12-18rs6000.c (rs6000_generate_compare): Condition choice of e500 comparison ↵Joseph Myers3-33/+45
instructions on flag_finite_math_only &&... * config/rs6000/rs6000.c (rs6000_generate_compare): Condition choice of e500 comparison instructions on flag_finite_math_only && !flag_trapping_math, not flag_unsafe_math_optimizations. * config/rs6000/rs6000.md (abstf2): Condition choice of e500 instructions on flag_finite_math_only && !flag_trapping_math, not flag_unsafe_math_optimizations. (bltgt, sltgt): Disable for TARGET_HARD_FLOAT && !TARGET_FPRS. * config/rs6000/spe.md (cmpsfeq_gpr, tstsfeq_gpr, cmpsfgt_gpr, tstsfgt_gpr, cmpsflt_gpr, tstsflt_gpr, cmpdfeq_gpr, tstdfeq_gpr, cmpdfgt_gpr, tstdfgt_gpr, cmpdflt_gpr, tstdflt_gpr, cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr): Condition choice of comparison instructions on flag_finite_math_only && !flag_trapping_math, not flag_unsafe_math_optimizations. From-SVN: r142822
2008-12-12re PR target/24779 (Python miscompilation - TOC reload)Andrew Pinski1-28/+109
2008-12-12 Andrew Pinski <andrew_pinskia@playstation.sony.com> Peter Bergner <bergner@vnet.ibm.com> PR target/24779 * config/rs6000/rs6000.md (call_indirect_aix32): Move the load of the TOC into the call pattern. (call_indirect_aix64): Likewise. (call_value_indirect_aix32): Likewise. (call_value_indirect_aix64): Likewise. (call_indirect_nonlocal_aix32_internal): New insn and split patterns to split off the load of the TOC. (call_indirect_nonlocal_aix32): Enable only after reload. (call_indirect_nonlocal_aix64_internal): New insn and split patterns to split off the load of the TOC. (call_indirect_nonlocal_aix64): Enable only after reload. (call_value_indirect_nonlocal_aix32_internal): New insn and split patterns to split off the load of the TOC. (call_value_indirect_nonlocal_aix32): Enable only after reload. (call_value_indirect_nonlocal_aix64_internal): New insn and split patterns to split off the load of the TOC. (call_value_indirect_nonlocal_aix64): Enable only after reload. Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com> From-SVN: r142727
2008-12-10* config/rs6000/linux-unwind.h (get_regs): Constify casts.Ben Elliston1-5/+5
From-SVN: r142609
2008-12-09* config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.Ben Elliston1-1/+1
From-SVN: r142576
2008-12-05rs6000.md (move_from_CR_gt_bit): Enable for TARGET_HARD_FLOAT && ↵Joseph Myers2-2/+2
!TARGET_FPRS, not TARGET_E500. * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500. * config/rs6000/spe.md (e500_cr_ior_compare): Likewise. testsuite: * gcc.target/powerpc/20081204-1.c: New test. From-SVN: r142477
2008-12-05linux-unwind.h (frob_update_context): Check for NULL lr.Andreas Schwab1-1/+1
* config/rs6000/linux-unwind.h (frob_update_context): Check for NULL lr. From-SVN: r142473
2008-11-29rs6000.c (rs6000_emit_sync): Remove support for operand wrapped in NOT.David Edelsohn2-49/+41
* config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for operand wrapped in NOT. Emit NAND as (ior (not X) (not Y)). (rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)). * config/rs6000/sync.md (sync_nand<mode>): Represent NAND in RTL. Call rs6000_emit_sync with CODE=NOT and unmodified operands. Ignore sub-word case for now. (sync_nand<mode>_internal): Represent NAND in RTL. (sync_old_nand<mode): Same. (sync_old_name<mode>_internal): Same. (sync_new_nand<mode>): Same. (sync_new_nand<mode>_internal): Same. (sync_boolcshort_internal): Expect NAND. From-SVN: r142285
2008-11-06re PR target/26397 (Program crashes when rethrowing exception)David Edelsohn1-0/+3
PR target/26397 * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define. cp/ * g++spec.c (LIBSTDCXX_STATIC): New. (lang_spec_driver): Use LIBSTDCXX_STATIC when not shared_libgcc. From-SVN: r141646
2008-11-06* config/rs6000/rs6000.c (rs6000_override_options): Comment fix.Ben Elliston1-1/+1
From-SVN: r141626
2008-11-06rs6000.opt (mwarn-cell-microcode): Improve option description.Ben Elliston1-1/+1
* config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option description. From-SVN: r141625
2008-11-03Revert:Nathan Froyd3-27/+26
2008-10-31 Nathan Froyd <froydnj@codesourcery.com> * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence problem. (rs6000_emit_prologue): Invert logic. * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit (reg:P 11) instead of match_operand. (*save_fpregs_<mode>): Likewise. (*restore_gpregs_<mode>): Likewise. (*return_and_restore_gpregs_<mode>): Likewise. (*return_and_restore_fpregs_<mode>): Likewise. * config/rs6000/spe.md (*save_gpregs_spe): Use explicit (reg:P 11) insted of match_operand. (*restore_gpregs_spe): Likewise. (*return_and_restore_gpregs_spe): Likewise. From-SVN: r141554
2008-11-01rs6000.c (rs6000_file_start): Output gnu attribute for struct return convention.Nathan Froyd1-0/+3
* config/rs6000/rs6000.c (rs6000_file_start): Output gnu attribute for struct return convention. From-SVN: r141510
2008-11-01* config/rs6000/crtsavres.asm: Really, really delete.Nathan Froyd1-306/+0
From-SVN: r141509
2008-11-01rs6000.c (no_global_regs_above): Fix precedence problem.Nathan Froyd3-26/+27
* config/rs6000/rs6000.c (no_global_regs_above): Fix precedence problem. (rs6000_emit_prologue): Invert logic. * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit (reg:P 11) instead of match_operand. (*save_fpregs_<mode>): Likewise. (*restore_gpregs_<mode>): Likewise. (*return_and_restore_gpregs_<mode>): Likewise. (*return_and_restore_fpregs_<mode>): Likewise. * config/rs6000/spe.md (*save_gpregs_spe): Use explicit (reg:P 11) insted of match_operand. (*restore_gpregs_spe): Likewise. (*return_and_restore_gpregs_spe): Likewise. From-SVN: r141508
2008-10-29re PR target/37878 (PPC64 ldu command generated with invalid offset)David Edelsohn1-5/+17
PR target/37878 * config/rs6000/predicates.md (word_offset_memref_operand): Restructure code and look inside auto-inc/dec addresses. From-SVN: r141450
2008-10-21config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.Sandra Loosemore1-3/+3
2008-10-21 Sandra Loosemore <sandra@codesourcery.com> gcc/ * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h. * config/svr4.h (SVR4_ASM_SPEC): New. (ASM_SPEC): Inherit from SVR4_ASM_SPEC. * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC. * doc/invoke.texi (Option Summary): Add -T to linker options. (Link Options): Document -T. From-SVN: r141267
2008-10-16re PR c++/35483 (GCC on AIX doesn't support dollar in symbols name.)David Edelsohn3-4/+6
gcc/ PR target/35483 * Makefile.in (coverage.o): Depend on $(TM_P_H). * coverage.c: Include tm_p.h. * config/rs6000/x-aix (jc1): Override LDFLAGS. * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip dollar signs from PREFIX. * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME instead of manual strip_name_encoding. java/ PR target/35483 * Make-lang.in (class.o): Depend on $(TM_P_H). (expr.o): Same. * class.c: Include tm_p.h. * expr.c: Include tm_p.h. From-SVN: r141170
2008-10-15re PR c++/35483 (GCC on AIX doesn't support dollar in symbols name.)David Edelsohn7-10/+107
PR target/35483 Based on patches by Laurent Vivier. * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore. * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare. * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate dollar sign to underscore. (ASM_OUTPUT_EXTERNAL): Same. (ASM_OUTPUT_LABELREF): New. * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New. * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define. * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define. * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define. * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define. From-SVN: r141134
2008-10-14* config/rs6000/rs6000.md (cell_micro): Fix formatting.Ben Elliston1-4/+3
From-SVN: r141103
2008-10-13invoke.texi (-mgen-cell-microcode): Document.Andrew Pinski6-138/+323
2008-10-13 Andrew Pinski <andrew_pinski@playstation.sony.com> Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com> Trevor Smigiel <Trevor_Smigiel@playstation.sony.com> Grace Cao <grace_cao@playstation.sony.com> * doc/invoke.texi (-mgen-cell-microcode): Document. (-mwarn-cell-microcode): Document. * cfglayout.c (locator_location): Export. * rtl.h (locator_location): Define prototype. * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): New predicate. * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype. * config/rs6000/rs6000.opt (mgen-cell-microcode): New option. (mwarn-cell-microcode): New option. * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable. (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for cell and not already set. Turn off string instructions if not generating cell microcode. (rs6000_final_prescan_insn): New function that warns about microcoded instructions. * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define. * config/rs6000/rs6000.md Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if the instruction would have been microcoded on the Cell. Set cell_micro to always on unnamed patterns for the string instructions. (cell_micro): Update definition, remove load/store conditional microcoded. (sign_extend:DI): Define new pattern for non microcoded version. (sign_extend:SI): Likewise. (compare (div:P)): Set cell_micro to not. (andsi3): Define as an expand. (andsi3_mc): New pattern. (andsi3_nomc): New pattern. (andsi3_internal0_nomc): New pattern. (andsi3_internal2): Rename to ... (andsi3_internal2_mc): this and enable iff generating microcode. (andsi3_internal3): Rename to ... (andsi3_internal3_mc): this and enable iff generating microcode. (andsi3_internal4): Enable iif generating microcode. (andsi3_internal5): Rename to .. (andsi3_internal5_mc): this and enable iff generating microcode. (andsi3_internal5_nomc): New pattern. (extzvdi_internal1): Enable iff generating microcode. (extzvdi_internal2): Likewise. (rotlsi3_internal7): Set cell_micro to always if non immediate form. (anddi3): Change to expand. (anddi3_mc): Rename from anddi3. (anddi3_no_mc): New pattern. (anddi3_internal2): Rename to .. (anddi3_internal2_mc): this and enable iff generating microcode. (anddi3_internal2_nomc): New pattern. (anddi3_internal3): Rename to .. (anddi3_internal3_mc): this and enable iff generating microcode. (anddi3_internal3_nomc): New pattern. (movti_string): Set cell_micro to always if TARGET_STRING. (stmsi8): Set cell_micro to always. (stmsi7): Likewise. (stmsi6): Likewise. (stmsi5): Likewise. (stmsi4): Likewise. (stmsi3): Likewise. (stmsi8_power): Likewise. (stmsi7_power): Likewise. (stmsi6_power): Likewise. (stmsi5_power): Likewise. (stmsi4_power): Likewise. (stmsi3_power): Likewise. (movsi_update2): Enable iff generating microcode. (movhi_update3): Likewise. (lmw): Set cell_micro to always. Co-Authored-By: Grace Cao <grace_cao@playstation.sony.com> Co-Authored-By: Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com> Co-Authored-By: Trevor Smigiel <Trevor_Smigiel@playstation.sony.com> From-SVN: r141094
2008-10-13install.texi (powerpc-*-*): Require binutils 2.15.Nathan Froyd20-342/+356
* doc/install.texi (powerpc-*-*): Require binutils 2.15. (powerpc*-*-linux-gnu*): Describe. * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro. * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm, config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm, config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm, config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm, config/rs6000/e500crtres64gprctr.asm, config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm, config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm, config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm, config/rs6000/e500crtsav64gprctr.asm, config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm, config/rs6000/e500crtsavg64gprctr.asm: Use it. * config/rs6000/crtsavres.asm: Really remove. From-SVN: r141090
2008-10-11Really commit rs6000.optDavid Edelsohn1-0/+10
From-SVN: r141066
2008-10-11rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.David Edelsohn1-38/+27
* config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT. (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT and fp_type. (divdf3): Reformat long line. From-SVN: r141062
2008-10-11rs6000.c (rs6000_parse_fpu_option): Interpret -mfpu options.Michael J. Eager6-36/+289
2008-10-11 Michael J. Eager <eager@eagercon.com> * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret -mfpu options. (rs6000_handle_option): Process -mfpu options. * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New. (enum fpu_type_t): New. * config/rs6000/rs6000.md (attr fp_type): New. Include xfpu.md. (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set fp_type. (floatsisf2): Remove TARGET_SINGLE_FPU condition. (floatdidf2): Add TARGET_SINGLE_FPU condition. * config/rs6000/rs6000.opt (-mfpu): New. (-mxilinx-fpu): New. * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New. * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU. * config/rs6000/xfpu.md: New. Define Xilinx pipeline. * gcc/config.gcc: powerpc-xilinx-eabi target: New. * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option. From-SVN: r141059
2008-10-11re PR target/35760 (ICE with complex types and -static on PPC darwin)Jakub Jelinek1-0/+1
PR target/35760 * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create LO_SUM on Darwin if mode has just one unit. * gcc.c-torture/compile/pr35760.c: New test. From-SVN: r141055
2008-10-06rs6000-c.c (altivec_resolve_overloaded_builtin): Update calls to ↵Andrew Pinski1-4/+4
build_unary_op and build_indirect_ref for location changes. 2008-10-06 Andrew Pinski <andrew_pinski@playstation.sony.com> * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Update calls to build_unary_op and build_indirect_ref for location changes. From-SVN: r140915
2008-10-06rs6000-protos.h (rs6000_find_base_term): Declare.Richard Sandiford3-0/+24
gcc/ * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare. * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro. * config/rs6000/rs6000.c (rs6000_find_base_term): New function. From-SVN: r140912
2008-10-06darwin-protos.h (machopic_function_base_name): Delete.Richard Sandiford2-12/+16
gcc/ * config/darwin-protos.h (machopic_function_base_name): Delete. (machopic_function_base_sym): Likewise. (machopic_gen_offset): Declare. * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro. (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant. * config/darwin.c (machopic_function_base_name): Delete. (machopic_function_base_sym): Likewise. (gen_pic_offset): Rename to... (machopic_gen_offset): ...this and remove the pic_base argument. Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset is needed. Create an UNSPEC_MACHOPIC_OFFSET if so, and set crtl->uses_pic_offset_table. (machopic_indirect_data_reference): Use new machopic_gen_offset interface. (machopic_legitimize_pic_address): Likewise. (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET. * config/i386/darwin.h (GOT_SYMBOL_NAME): Use MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name. * config/i386/i386.c (output_set_got): Likewise. (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET instead of a MINUS. (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET. (legitimate_address_p): Likewise. (output_pic_addr_const): Likewise. (output_addr_const_extra): Likewise. (ix86_delegitimize_address): Expect darwin_local_data_pic to match an UNSPEC rather than a MINUS. * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define. (builtin_setjmp_receiver): Use machopic_gen_offset. * config/i386/predicates.md (pic_symbolic_operand): Handle UNSPEC_MACHOPIC_OFFSET. * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Use machopic_gen_offset and machopic_operand_p. (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET. (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME. * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define. (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME. Set crtl->uses_pic_offset_table. From-SVN: r140911
2008-10-06rs6000-protos.h (rs6000_output_addr_const_extra): Declare.Richard Sandiford4-81/+49
gcc/ * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra): Declare. * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro. * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant. * config/rs6000/rs6000.c (constant_pool_expr_1): Delete. (constant_pool_expr_p): Use split_const and check the base. (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL instead of a MINUS. (legitimate_constant_pool_address_p): Check toc_relative_p instead of constant_pool_expr_p. (print_operand_address): Always use output_addr_const for constant pool addresses. (rs6000_output_addr_const_extra): New function. (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS. From-SVN: r140910
2008-10-04rs6000.c (rs6000_emit_sync): Use gen_lwsync().Anton Blanchard1-4/+4
2008-10-04 Anton Blanchard <anton@samba.org> * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync(). (rs6000_split_atomic_op): Same. (rs6000_split_compare_and_swap): Same. (rs6000_split_compare_and_swapqhi): Same. From-SVN: r140869
2008-10-03rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT condition.Andrew Pinski1-2/+2
2008-10-03 Andrew Pinski <andrew_pinski@playstation.sony.com> * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT condition. (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT". From-SVN: r140862
2008-10-02rs6000.c (USE_FP_FOR_ARG_P): Revert TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.David Edelsohn1-14/+9
* config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. Revert SCALAR_FLOAT_MODE_P condition. (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. From-SVN: r140838
2008-10-01rs6000-c.c (altivec_resolve_overloaded_builtin): Handle ↵Andrew Pinski4-2/+209
ALTIVEC_BUILTIN_VEC_SPLATS... 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE, ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially, they translate to non builtins. * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable opaque_ftype_opaque. Define builtins __builtin_vec_splats, __builtin_vec_promote, __builtin_vec_extract, and __builtin_vec_insert. * config/rs6000/rs6000.h (enum rs6000_builtins): Add ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE, ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS. * config/rs6000/altivec.h (vec_extract): Define (vec_insert): Define. (vec_splats): Define. (vec_promote): Define. 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> * gcc.target/powerpc/altivec-cell-1.c: New test. * gcc.target/powerpc/altivec-cell-2.c: New test. * gcc.target/powerpc/altivec-cell-3.c: New test. * gcc.target/powerpc/altivec-cell-4.c: New test. * gcc.target/powerpc/altivec-cell-5.c: New test. * g++.dg/ext/altivec-cell-1.C: New test. * g++.dg/ext/altivec-cell-2.C: New test. * g++.dg/ext/altivec-cell-3.C: New test. * g++.dg/ext/altivec-cell-4.C: New test. * g++.dg/ext/altivec-cell-5.C: New test. 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> * tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue. From-SVN: r140821
2008-10-01rs6000-c.c (altivec_overloaded_builtins): Add Cell Altivec intrinsics.Andrew Pinski5-11/+449
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> Yukishige Shibata <shibata@rd.scei.sony.co.jp> Trevor Smigiel <Trevor_Smigiel@playstation.sony.com> * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell Altivec intrinsics. * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete prototype. Add new parameter, blk. Use BLKmode for the MEM if blk is true. (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and ALTIVEC_BUILTIN_STVRXL. Update usage of altivec_expand_lv_builtin. Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL. (altivec_init_builtins): If compiling for the Cell, also define the cell VMX builtins. * config/rs6000/rs6000.h (rs6000_builtins): Define ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX, ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL, ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL, ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL, ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL, ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL. * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX, UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL, UNSPEC_STVRX, and UNSPEC_STVRXL. (altivec_lvlx): New pattern. (altivec_lvlxl): New pattern. (altivec_lvrx): New pattern. (altivec_lvrxl): New pattern. (altivec_stvlx): New pattern. (altivec_stvlxl): New pattern. (altivec_stvrx): New pattern. (altivec_stvrxl): New pattern. * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined. (vec_lvlxl): Likewise. (vec_lvrx): Define if PPU is defined. (vec_lvrxl): Likewise. (vec_stvlx): Define if PPU is defined. (vec_stvlxl): Likewise. (vec_stvrx): Define if PPU is defined. (vec_stvrxl): Likewise. 2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com> * gcc.target/powerpc/altivec_check.h (altivec_cell_check): New function. * gcc.target/powerpc/altivec-cell-6.c: New test. * gcc.target/powerpc/altivec-cell-7.c: New test. * gcc.target/powerpc/altivec-cell-8.c: New test. From-SVN: r140820
2008-09-30rs6000.md (fnmadds combiner): Revert typo.Andrew Pinski1-1/+1
2008-09-30 Andrew Pinski <andrew_pinski@playstation.sony.com> * config/rs6000/rs6000.md (fnmadds combiner): Revert typo. From-SVN: r140785
2008-09-29predicates.md (easy_fp_constant): Single FP consts are easy.Michael J. Eager6-157/+291
* config/rs6000/predicates.md (easy_fp_constant): Single FP consts are easy. * config/rs6000/rs6000.c (rs6000_override_options): Move rs6000_init_hard_regno_mode_ok after all options changed. Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT. (rs6000_handle_option): Process -msingle-float, -mdouble-float, -msimple-fpu flags. Add warning messages if single FP not configured. (rs6000_file_start): Output gnu_attribute for single-float. (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT. (rs6000_legitimize_address): Likewise. (rs6000_legitimize_reload_address): Likewise. (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (function_arg_advance): Likewise (partial conversion). (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT. (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT. (rs6000_emit_prologue): Likewise. (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (rs6000_libcall_value): Likewise. * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1. (TARGET_DOUBLE_FLOAT): New default to 1 (TARGET_SIMPLE_FPU): New default to 0 (TARGET_SINGLE_FPU): New default to 0 (TARGET_SINGLE_FLOAT_MODE): New. (TARGET_DOUBLE_FLOAT_MODE): New. * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT, TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU, UNITS_PER_FP_WORD * config/rs6000/rs6000.md (define_mode_iterator): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr, copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr, nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3, muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3, movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal, floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2, *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt, fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64, floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32, movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs, extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper, abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1, cmptf_internal1, *cmptf_internal2): Condition on TARGET_DOUBLE_FLOAT. (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3, mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc, *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2, btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1, floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs, *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on TARGET_SINGLE_FLOAT. (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU. * config/rs6000/rs6000.opt (-msingle-float): New. (-mdouble-float): New. (-msimple-fpu): New. * doc/invoke.texi (RS/6000 and PowerPC Options): Add -msingle-float, -mdouble-float, -msimple-fpu options. * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set _SOFT_DOUBLE for -msingle-float. * config.gcc: New config for target=powerpc-xilinx-eabi. From-SVN: r140757
2008-09-28re PR target/37640 (__sync_lock_test_and_set on PPC64 causes ICE)Andrew Pinski1-1/+2
2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com> PR target/37640 * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force address to a register before taking the lower part. 2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com> PR target/37640 * gcc.c-torture/compile/sync-3.c: New testcase to check that addresses of non zero offset works. From-SVN: r140740
2008-09-26rs6000.c (rs6000_emit_allocate_stack): Use correct alias set on MEM when ↵Pat Haugen2-4/+36
saving stack pointer. 2008-09-26 Pat Haugen <pthaugen@us.ibm.com> * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct alias set on MEM when saving stack pointer. * config/rs6000/rs6000.md (allocate_stack): Likewise From-SVN: r140693
2008-09-24Revert rs6000 change.David Edelsohn6-299/+161
From-SVN: r140646
2008-09-24predicates.md (easy_fp_constant): Single FP consts are easy.Michael J. Eager7-161/+339
2008-09-24 Michael J. Eager <eager@eagercon.com> * config/rs6000/predicates.md (easy_fp_constant): Single FP consts are easy. * config/rs6000/rs6000.c (rs6000_override_options): Move rs6000_init_hard_regno_mode_ok after all options changed. Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT. (rs6000_handle_option): Process -msingle-float, -mdouble-float, -msimple-fpu flags. Add warning messages if single FP not configured. (rs6000_file_start): Output gnu_attribute for single-float. (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT. (rs6000_legitimize_address): Likewise. (rs6000_legitimize_reload_address): Likewise. (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (function_arg_advance): Likewise. (function_arg): Likewise. (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT. (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT. (rs6000_emit_prologue): Likewise. (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (rs6000_libcall_value): Likewise. * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1. (TARGET_DOUBLE_FLOAT): New default to 1 (TARGET_SIMPLE_FPU): New default to 0 (TARGET_SINGLE_FPU): New default to 0 (TARGET_SINGLE_FLOAT_MODE): New. (TARGET_DOUBLE_FLOAT_MODE): New. * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT, TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU, UNITS_PER_FP_WORD * config/rs6000/rs6000.md (define_mode_iterator): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT. (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr, copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr, nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3, muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3, movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal, floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2, *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt, fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64, floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32, movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs, extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper, abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1, cmptf_internal1, *cmptf_internal2): Condition on TARGET_DOUBLE_FLOAT. (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3, mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc, *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2, btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1, floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs, *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on TARGET_SINGLE_FLOAT. (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU. * config/rs6000/rs6000.opt (-msingle-float): New. (-mdouble-float): New. (-msimple-fpu): New. * doc/invoke.texi (RS/6000 and PowerPC Options): Add -msingle-float, -mdouble-float, -msimple-fpu options. * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set _SOFT_DOUBLE for -msingle-float. * config.gcc: New config for target=powerpc-xilinx-eabi. From-SVN: r140632
2008-09-15rs6000.md (floatsidf2): Rewrite PowerPC64 case to use gen_floatdidf2 directly.Andrew Pinski1-56/+4
2008-09-15 Andrew Pinski <andrew_pinski@playstation.sony.com> * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to use gen_floatdidf2 directly. (floatunssidf2): Likewise. (floatsidf_ppc64_mfpgpr): Remove. (floatsidf_ppc64): Remove. (floatunssidf_ppc64): Remove. From-SVN: r140381
2008-09-14config.host: Add x-aix to host_xmake_file.David Edelsohn2-3/+3
* config.host: Add x-aix to host_xmake_file. * config/rs6000/t-aix52: Do not override LDFLAGS. * config/rs6000/x-aix: New file. From-SVN: r140361
2008-09-10re PR target/36904 (vector context sensitive keyword vs macros)Jakub Jelinek1-14/+25
PR target/36904 * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL instead of tok->val.node if not expanding to something else. Handle intervening CPP_PADDING tokens. (altivec_categorize_keyword): Remove unneeded comparisons. * gcc.target/powerpc/altivec-27.c: New test. From-SVN: r140247
2008-09-07re PR tree-optimization/35642 (short * short multiplication not vectorized ↵Dorit Nuzman1-0/+22
on Power) PR tree-optimization/35642 * config/rs6000/altivec.md (mulv8hi3): Implement. Co-Authored-By: Ira Rosen <irar@il.ibm.com> From-SVN: r140083
2008-09-05* config/rs6000/t-rs6000: Remove target gt-rs6000.h.Janis Johnson1-2/+0
From-SVN: r140020
2008-09-04re PR other/32783 (gcc-4_3-trunk/libiberty/configure - for ac_func ↵Samuel Tardieu1-5/+2
gettimeofday ... gettimeofday - tests twice) 2008-09-04 Samuel Tardieu <sam@rfc1149.net> PR target/32783 * config/rs6000/rs6000.c (optimization_options): Remove check of flag_toplevel_order. From-SVN: r140013