Age | Commit message (Collapse) | Author | Files | Lines |
|
* 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
|
|
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
|
|
* 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
|
|
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
|
|
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-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
|
|
From-SVN: r142609
|
|
From-SVN: r142576
|
|
!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
|
|
* config/rs6000/linux-unwind.h (frob_update_context): Check for
NULL lr.
From-SVN: r142473
|
|
* 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
|
|
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
|
|
From-SVN: r141626
|
|
* config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
description.
From-SVN: r141625
|
|
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
|
|
* config/rs6000/rs6000.c (rs6000_file_start): Output gnu
attribute for struct return convention.
From-SVN: r141510
|
|
From-SVN: r141509
|
|
* 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
|
|
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-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
|
|
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
|
|
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
|
|
From-SVN: r141103
|
|
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
|
|
* 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
|
|
From-SVN: r141066
|
|
* 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-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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-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-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
|
|
* 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
|
|
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-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-30 Andrew Pinski <andrew_pinski@playstation.sony.com>
* config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
From-SVN: r140785
|
|
* 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-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
|
|
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
|
|
From-SVN: r140646
|
|
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-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
|
|
* 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
|
|
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
|
|
on Power)
PR tree-optimization/35642
* config/rs6000/altivec.md (mulv8hi3): Implement.
Co-Authored-By: Ira Rosen <irar@il.ibm.com>
From-SVN: r140083
|
|
From-SVN: r140020
|
|
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
|