summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/sync.md
Commit message (Collapse)AuthorAgeFilesLines
* * config/rs6000/sync.md (AINT mode_iterator): Move definition.pthaugen2014-04-281-15/+90
| | | | | | | | | | | (loadsync_<mode>): Change mode. (load_quadpti, store_quadpti): New. (atomic_load<mode>, atomic_store<mode>): Add support for TI mode. * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209873 138bc75d-0d04-0410-961f-82ee72b054a4
* Revertdje2014-04-091-90/+15
| | | | | | | | | | | | | | 2014-04-08 Pat Haugen <pthaugen@us.ibm.com> * config/rs6000/sync.md (AINT mode_iterator): Move definition. (loadsync_<mode>): Change mode. (load_quadpti, store_quadpti): New. (atomic_load<mode>, atomic_store<mode>): Add support for TI mode. * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ. * config/rs6000/predicates.md (quad_memory_operand): !TARGET_SYNC_TI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209253 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/sync.md (AINT mode_iterator): Move definition.pthaugen2014-04-081-15/+90
| | | | | | | | | | | | | (loadsync_<mode>): Change mode. (load_quadpti, store_quadpti): New. (atomic_load<mode>, atomic_store<mode>): Add support for TI mode. * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ. * gcc.target/powerpc/atomic_load_store-p8.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209225 138bc75d-0d04-0410-961f-82ee72b054a4
* [gcc]meissner2014-01-241-16/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2014-01-23 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/59909 * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mquad-memory-atomic. Update -mquad-memory documentation to say it is only used for non-atomic loads/stores. * config/rs6000/predicates.md (quad_int_reg_operand): Allow either -mquad-memory or -mquad-memory-atomic switches. * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Add -mquad-memory-atomic to ISA 2.07 support. * config/rs6000/rs6000.opt (-mquad-memory-atomic): Add new switch to separate support of normal quad word memory operations (ldq, stq) from the atomic quad word memory operations. * config/rs6000/rs6000.c (rs6000_option_override_internal): Add support to separate non-atomic quad word operations from atomic quad word operations. Disable non-atomic quad word operations in little endian mode so that we don't have to swap words after the load and before the store. (quad_load_store_p): Add comment about atomic quad word support. (rs6000_opt_masks): Add -mquad-memory-atomic to the list of options printed with -mdebug=reg. * config/rs6000/rs6000.h (TARGET_SYNC_TI): Use -mquad-memory-atomic as the test for whether we have quad word atomic instructions. (TARGET_SYNC_HI_QI): If either -mquad-memory-atomic, -mquad-memory, or -mp8-vector are used, allow byte/half-word atomic operations. * config/rs6000/sync.md (load_lockedti): Insure that the address is a proper indexed or indirect address for the lqarx instruction. On little endian systems, swap the hi/lo registers after the lqarx instruction. (load_lockedpti): Use indexed_or_indirect_operand predicate to insure the address is valid for the lqarx instruction. (store_conditionalti): Insure that the address is a proper indexed or indirect address for the stqcrx. instruction. On little endian systems, swap the hi/lo registers before doing the stqcrx. instruction. (store_conditionalpti): Use indexed_or_indirect_operand predicate to insure the address is valid for the stqcrx. instruction. * gcc/config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define __QUAD_MEMORY__ and __QUAD_MEMORY_ATOMIC__ based on what type of quad memory support is available. [gcc/testsuite] 2014-01-23 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/59909 * gcc.target/powerpc/quad-atomic.c: New file to test power8 quad word atomic functions at runtime. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207020 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years in gcc/rsandifo2014-01-021-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206289 138bc75d-0d04-0410-961f-82ee72b054a4
* [gcc]meissner2013-06-121-46/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2013-06-12 Michael Meissner <meissner@linux.vnet.ibm.com> Pat Haugen <pthaugen@us.ibm.com> Peter Bergner <bergner@vnet.ibm.com> * config/rs6000/rs6000.c (emit_load_locked): Add support for power8 byte, half-word, and quad-word atomic instructions. (emit_store_conditional): Likewise. (rs6000_expand_atomic_compare_and_swap): Likewise. (rs6000_expand_atomic_op): Likewise. * config/rs6000/sync.md (larx): Add new modes for power8. (stcx): Likewise. (AINT): New mode iterator to include TImode as well as normal integer modes on power8. (fetchop_pred): Use int_reg_operand instead of gpc_reg_operand so that VSX registers are not considered. Use AINT mode iterator instead of INT1 to allow inclusion of quad word atomic operations on power8. (load_locked<mode>): Likewise. (store_conditional<mode>): Likewise. (atomic_compare_and_swap<mode>): Likewise. (atomic_exchange<mode>): Likewise. (atomic_nand<mode>): Likewise. (atomic_fetch_<fetchop_name><mode>): Likewise. (atomic_nand_fetch<mode>): Likewise. (mem_thread_fence): Use gen_loadsync_<mode> instead of enumerating each type. (ATOMIC): On power8, add QImode, HImode modes. (load_locked<QHI:mode>_si): Varients of load_locked for QI/HI modes that promote to SImode. (load_lockedti): Convert TImode arguments to PTImode, so that we get a guaranteed even/odd register pair. (load_lockedpti): Likewise. (store_conditionalti): Likewise. (store_conditionalpti): Likewise. * config/rs6000/rs6000.md (QHI): New mode iterator for power8 atomic load/store instructions. (HSI): Likewise. [gcc/testsuite] 2013-06-12 Michael Meissner <meissner@linux.vnet.ibm.com> Pat Haugen <pthaugen@us.ibm.com> Peter Bergner <bergner@vnet.ibm.com> * gcc.target/powerpc/atomic-p7.c: New file, add tests for atomic load/store instructions on power7, power8. * gcc.target/powerpc/atomic-p8.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200044 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years in gcc/rsandifo2013-01-101-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195098 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/segher2012-10-261-1/+1
| | | | | | | * config/rs6000/sync.md (ATOMIC): Correct DI condition. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192863 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/segher2012-10-181-3/+12
| | | | | | | | | | | | | | | | | | | | | | * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Add mode. (altivec_vsumsws_nomode): Delete. (reduc_splus_<mode>, reduc_uplus_<mode>): Call gen_altivec_vsumsws instead of gen_altivec_vsumsws_nomode. (altivec_lvlx, altivec_lvlxl, altivec_lvrx, altivec_lvrxl): Add mode. * config/rs6000/rs6000.md (probe_stack): Rename to... (probe_stack_<mode>): ... this. Add mode. Change pattern to use std instead of stw when appropriate. (probe_stack): New expander. (move_from_CR_ov_bit): Add mode. (splitter for compare_plus_ne0_<mode>, splitter for compare_plus_ne0_<mode>_1): Remove constraints. * config/rs6000/sync.md (loadsync): Rename to... (loadsync_<mode>): ... this. Add mode. (atomic_load<mode>): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192568 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>segher2012-08-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * config/rs6000/aix43.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS. (RS6000_CALL_GLUE): Adjust for single assembler syntax. * config/rs6000/aix51.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto. * config/rs6000/aix52.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto. * config/rs6000/aix53.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto. * config/rs6000/aix61.h (TARGET_DEFAULT, RS6000_CALL_GLUE): Ditto. * config/rs6000/darwin.h (TARGET_DEFAULT): Ditto. * config/rs6000/darwin.md (whole file): Adjust to single assembler syntax. * config/rs6000/darwin64.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS. * config/rs6000/default64.h (TARGET_DEFAULT): Ditto. * config/rs6000/dfp.md: (whole file): Adjust to single assembler syntax. * config/rs6000/eabi.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS. * config/rs6000/eabialtivec.h (TARGET_DEFAULT): Ditto. * config/rs6000/eabispe.h (TARGET_DEFAULT): Ditto. * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Ditto. * config/rs6000/linuxspe.h (TARGET_DEFAULT): Ditto. * config/rs6000/rs6000-cpus.def (whole file): Delete POWERPC_BASE_MASK. * config/rs6000/rs6000-tables.opt: Regenerate. * config/rs6000/rs6000.c (POWERPC_BASE_MASK): Delete. (num_insns_constant_wide): Adjust comments. (whole file): Adjust to single assembler syntax. (output_cbranch): Adjust comment. * config/rs6000/rs6000.h (ASSEMBLER_DIALECT): Delete. * config/rs6000/rs6000.md: (whole file): Adjust to single assembler syntax. * config/rs6000/rs6000.opt (mnew-mnemonics): Delete. (mold-mnemonics): Delete. * config/rs6000/spe.md: (whole file): Adjust to single assembler syntax. * config/rs6000/sync.md: (whole file): Adjust to single assembler syntax. * config/rs6000/sysv4.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS. (ASM_OUTPUT_REG_PUSH): Adjust. (ASM_OUTPUT_REG_POP): Adjust. * config/rs6000/sysv4le.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS. * config/rs6000/vsx.md: (whole file): Adjust to single assembler syntax. * config/rs6000/vxworks.h (TARGET_DEFAULT): Delete MASK_NEW_MNEMONICS. * doc/invoke.texi: Adjust documentation to reflect the removal of -mnew-mnemonics and -mold-mnemonics. libgcc/ * longlong.h: (whole file, powerpc): Adjust to single assembler syntax. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190432 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-08-15 Segher Boessenkool <segher@kernel.crashing.org>segher2012-08-161-12/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Delete handling for -mno-powerpc and -mpowerpc. * config/rs6000/aix43.h (ASM_CPU_SPEC): Similar. (ASM_DEFAULT_SPEC): Use -mppc instead of -mcom. * config/rs6000/aix51.h (ASM_CPU_SPEC, ASM_DEFAULT_SPEC): Ditto. * config/rs6000/aix52.h (TARGET_DEFAULT): Delete MASK_POWERPC. * config/rs6000/aix53.h (TARGET_DEFAULT): Ditto. * config/rs6000/aix61.h (TARGET_DEFAULT): Ditto. * config/rs6000/darwin.h (TARGET_DEFAULT): Ditto. * config/rs6000/darwin64.h (TARGET_DEFAULT): Ditto. * config/rs6000/default64.h (TARGET_DEFAULT): Ditto. * config/rs6000/driver-rs6000.c (asm_names): Delete handling for -mcpu=common and -mpowerpc. * config/rs6000/eabi.h (TARGET_DEFAULT): Delete MASK_POWERPC. * config/rs6000/eabialtivec.h (TARGET_DEFAULT): Ditto. * config/rs6000/eabispe.h (TARGET_DEFAULT): Ditto. * config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Ditto. * config/rs6000/linuxspe.h (TARGET_DEFAULT): Ditto. * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_CFSTRING): Use RS6000_BTM_ALWAYS instead of RS6000_BTM_POWERPC. * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust. (rs6000_cpu_cpp_builtins): Adjust. * config/rs6000/rs6000.c (POWERPC_BASE_MASK): Delete MASK_POWERPC. (rs6000_builtin_mask_calculate): Adjust. (rs6000_emit_move): Delete code for ! TARGET_POWERPC. (rs6000_init_libfuncs): Ditto. (rs6000_output_function_prologue): Ditto. (rs6000_opt_masks): Delete MASK_POWERPC. (rs6000_builtin_mask_names): Delete RS6000_BTM_POWERPC. * config/rs6000/rs6000.h (ASM_CPU_SPEC): Delete handling for -mpowerpc. (RS6000_BTM_POWERPC): Delete. (RS6000_BTM_COMMON): Delete RS6000_BTM_POWERPC. * config/rs6000/rs6000.md (extendqisi2 patterns): Adjust for TARGET_POWERPC always on. (extendqihi2 patterns): Similar. (various unnamed subtract patterns): Similar. (bswaphi2 patterns): Similar. (divmodsi4): Similar. (udiv<GPR:mode>3): Similar. (div<GPR:mode>3 patterns): Similar. (udivmodsi4): Similar. (mulhcall): Delete. (mullcall): Delete. (divss_call): Delete. (divus_call): Delete. (quoss_call): Delete. (quous_call): Delete. (insvsi patterns): Adjust. (addsf3 patterns): Adjust. (subsf3 patterns): Adjust. (mulsf3 patterns): Adjust. (divsf3 patterns): Adjust. (*fmasf4_fpr): Adjust. (*fmssf4_fpr): Adjust. (*nfmasf4_fpr): Adjust. (*nfmssf4_fpr): Adjust. (*floatunssidf2_internal): Adjust. (fix_trunc<SFDF:mode>si2_internal): Adjust. (fctiwz_<SFDF:mode>): Adjust. (mulsidi3 patterns): Adjust. (smulsi3_highpart patterns): Adjust. (umulsi3_highpart patterns): Adjust. (fix_trunctfsi2 patterns): Adjust. (prefetch): Adjust. * config/rs6000/rs6000.opt (mpowerpc): Replace by stub option. (mno-powerpc): Delete. * config/rs6000/sync.md (load_locked<ATOMIC:mode>): Adjust. (store_conditional<ATOMIC:mode>): Adjust. (atomic_compare_and_swap<ATOMIC:mode>): Adjust. (atomic_exchange<ATOMIC:mode>): Adjust. (atomic_<fetchop_name><ATOMIC:mode>): Adjust. (atomic_nand<ATOMIC:mode>): Adjust. (atomic_fetch_<fetchop_name><ATOMIC:mode>): Adjust. (atomic_fetch_nand<ATOMIC:mode>): Adjust. (atomic_<fetchop_name>_fetch<ATOMIC:mode>): Adjust. (atomic_nand_fetch<ATOMIC:mode>): Adjust. * config/rs6000/sysv4.h (TARGET_DEFAULT): Delete MASK_POWERPC. * config/rs6000/sysv4le.h (TARGET_DEFAULT): Ditto. * config/rs6000/vxworks.h (TARGET_DEFAULT): Ditto. * doc/invoke.texi: Adjust documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190430 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/sync.md (atomic_load, atomic_store): Use INT1 moderth2012-06-121-4/+4
| | | | | | iterator instead of INT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188463 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/sync.md (fetchop_name): Change ior attribute to "or".dje2012-04-191-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186599 138bc75d-0d04-0410-961f-82ee72b054a4
* rs6000: Rewrite sync patterns for atomic; expand early.rth2011-11-141-521/+183
| | | | | | | | | | The conversion of the __sync post-reload splitters was half complete. Since there are nearly no restrictions on what may appear between LL and SC, expand all the patterns immediatly. This allows significantly easier code generation for subword atomic operations. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181370 138bc75d-0d04-0410-961f-82ee72b054a4
* Make UNSPEC/UNSPECV constants use the enum; Fix 48192; Add test case for 48053meissner2011-03-211-3/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171247 138bc75d-0d04-0410-961f-82ee72b054a4
* Step 1 of VSX changes: Powerpc infrstructure changesmeissner2009-06-231-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148869 138bc75d-0d04-0410-961f-82ee72b054a4
* Update Copyright years for files modified in 2008 and/or 2009.jakub2009-02-201-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144324 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.uros2009-01-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143047 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support fordje2008-11-291-27/+25
| | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142285 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/md.texi (Iterators): Renamed from Macros. All contentshp2007-08-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | changed to reflect rename of respectively define_code_macro and define_mode_macro to define_code_iterator and define_mode_iterator. (Mode Iterators, Code Iterators): Similar. * read-rtl.c (struct iterator_group, struct iterator_traverse_data) (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p) (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse) (initialize_iterators, find_iterator, check_code_iterator) (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping) (read_mapping, read_rtx_1): Similar. * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md, config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md, config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md, config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md, config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md, config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md, config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md, config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md, config/rs6000/sync.md, config/rs6000/rs6000.md, config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md, config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md, config/vax/vax.md, config/bfin/bfin.md: Similar. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127715 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/host-hpux.c: Change copyright header to refer to version 3 of the GNUnickc2007-08-021-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | General Public License and to point readers at the COPYING3 file and the FSF's license web page. * config/alpha/predicates.md, config/alpha/vms-ld.c, config/alpha/linux.h, config/alpha/alpha.opt, config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h, config/alpha/vms-unwind.h, config/alpha/ev4.md, config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c, config/alpha/alpha.h, config/alpha/sync.md, config/alpha/openbsd.h, config/alpha/alpha.md, config/alpha/alpha-modes.def, config/alpha/ev5.md, config/alpha/alpha-protos.h, config/alpha/freebsd.h, config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h, config/alpha/constraints.md, config/alpha/osf.h, config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h, config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h, config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def, config/frv/frv-asm.h, config/frv/frv-protos.h, config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h, config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h, config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt, config/s390/2064.md, config/s390/2084.md, config/s390/s390.md, config/s390/s390.opt, config/s390/s390-modes.def, config/s390/fixdfdi.h, config/s390/constraints.md, config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h, config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md, config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md, config/m32c/m32c-pragma.c, config/m32c/m32c.h, config/m32c/prologue.md, config/m32c/m32c.abi, config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md, config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt, config/m32c/t-m32c, config/m32c/m32c-modes.def, config/m32c/jump.md, config/m32c/shift.md, config/m32c/m32c-protos.h, config/libgloss.h, config/spu/spu-protos.h, config/spu/predicates.md, config/spu/spu-builtins.h, config/spu/spu.c, config/spu/spu-builtins.def, config/spu/spu-builtins.md, config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md, config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt, config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h, config/sparc/hypersparc.md, config/sparc/predicates.md, config/sparc/linux.h, config/sparc/sp64-elf.h, config/sparc/supersparc.md, config/sparc/cypress.md, config/sparc/openbsd1-64.h, config/sparc/openbsd64.h, config/sparc/niagara.md, config/sparc/sparc.md, config/sparc/long-double-switch.opt, config/sparc/ultra3.md, config/sparc/sparc.opt, config/sparc/sync.md, config/sparc/sp-elf.h, config/sparc/sparc-protos.h, config/sparc/ultra1_2.md, config/sparc/biarch64.h, config/sparc/sparc.c, config/sparc/little-endian.opt, config/sparc/sysv4-only.h, config/sparc/sparc.h, config/sparc/linux64.h, config/sparc/freebsd.h, config/sparc/sol2.h, config/sparc/rtemself.h, config/sparc/netbsd-elf.h, config/sparc/vxworks.h, config/sparc/sparc-modes.def, config/sparc/sparclet.md, config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h, config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md, config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt, config/m32r/linux.h, config/m32r/constraints.md, config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt, config/darwin-c.c, config/darwin.opt, config/i386/i386.h, config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h, config/i386/i386.md, config/i386/netware-crt0.c, config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h, config/i386/kaos-i386.h, config/i386/winnt-stubs.c, config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h, config/i386/sol2.h, config/i386/constraints.md, config/i386/netware-libgcc.c, config/i386/sysv5.h, config/i386/predicates.md, config/i386/geode.md, config/i386/x86-64.h, config/i386/kfreebsd-gnu.h, config/i386/freebsd64.h, config/i386/vxworksae.h, config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h, config/i386/rtemself.h, config/i386/netbsd-elf.h, config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c, config/i386/netware.h, config/i386/i386-modes.def, config/i386/sysv4-cpp.h, config/i386/i386-interix.h, config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h, config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h, config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h, config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md, config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt, config/i386/xm-mingw32.h, config/i386/linux64.h, config/i386/openbsdelf.h, config/i386/xm-cygwin.h, config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h, config/i386/winnt-cxx.c, config/i386/i386-interix3.h, config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c, config/i386/cygwin2.c, config/i386/i386-protos.h, config/i386/sync.md, config/i386/openbsd.h, config/i386/host-mingw32.c, config/i386/i386-aout.h, config/i386/nto.h, config/i386/biarch64.h, config/i386/i386-coff.h, config/i386/freebsd.h, config/i386/driver-i386.c, config/i386/knetbsd-gnu.h, config/i386/host-i386-darwin.c, config/i386/vxworks.h, config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h, config/darwin-protos.h, config/linux.opt, config/sol2.c, config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h, config/sh/linux.h, config/sh/elf.h, config/sh/superh.h, config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h, config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h, config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md, config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h, config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c, config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def, config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md, config/sh/superh64.h, config/sh/rtemself.h, config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h, config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h, config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c, config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def, config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h, config/avr/predicates.md, config/avr/constraints.md, config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt, config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h, config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h, config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt, config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt, config/c4x/c4x-modes.def, config/c4x/rtems.h, config/c4x/predicates.md, config/c4x/c4x.h, config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h, config/xtensa/predicates.md, config/xtensa/xtensa.c, config/xtensa/linux.h, config/xtensa/xtensa.h, config/xtensa/elf.h, config/xtensa/xtensa.md, config/xtensa/xtensa.opt, config/xtensa/constraints.md, config/xtensa/xtensa-protos.h, config/dbx.h, config/stormy16/predicates.md, config/stormy16/stormy16.md, config/stormy16/stormy16.c, config/stormy16/stormy16.opt, config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h, config/host-solaris.c, config/fr30/fr30.h, config/fr30/predicates.md, config/fr30/fr30-protos.h, config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt, config/vxworksae.h, config/sol2-c.c, config/lynx.h, config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md, config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h, config/m68hc11/m68hc12.h, config/openbsd-oldgas.h, config/host-linux.c, config/interix3.h, config/cris/cris.c, config/cris/predicates.md, config/cris/linux.h, config/cris/cris.h, config/cris/aout.h, config/cris/cris.md, config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt, config/cris/cris-protos.h, config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h, config/iq2000/iq2000.h, config/iq2000/predicates.md, config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md, config/iq2000/iq2000.c, config/iq2000/iq2000.opt, config/host-darwin.c, config/mt/mt.md, config/mt/mt.c, config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h, config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h, config/chorus.h, config/mn10300/mn10300.c, config/mn10300/mn10300.opt, config/mn10300/predicates.md, config/mn10300/mn10300.h, config/mn10300/linux.h, config/mn10300/constraints.md, config/mn10300/mn10300-protos.h, config/mn10300/mn10300.md, config/ia64/predicates.md, config/ia64/itanium1.md, config/ia64/unwind-ia64.h, config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c, config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md, config/ia64/freebsd.h, config/ia64/ia64.md, config/ia64/ia64-modes.def, config/ia64/constraints.md, config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h, config/gofast.h, config/rtems.h, config/sol2-10.h, config/m68k/predicates.md, config/m68k/m68k.md, config/m68k/linux.h, config/m68k/m68k-modes.def, config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h, config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt, config/m68k/openbsd.h, config/m68k/m68k-aout.h, config/m68k/m68k.opt, config/m68k/m68020-elf.h, config/m68k/m68kelf.h, config/m68k/m68k-devices.def, config/m68k/uclinux-oldabi.h, config/m68k/m68k.c, config/m68k/constraints.md, config/m68k/rtemself.h, config/m68k/netbsd-elf.h, config/m68k/m68k.h, config/m68k/uclinux.h, config/rs6000/power4.md, config/rs6000/host-darwin.c, config/rs6000/6xx.md, config/rs6000/linux.h, config/rs6000/eabi.h, config/rs6000/aix41.opt, config/rs6000/xcoff.h, config/rs6000/secureplt.h, config/rs6000/linuxspe.h, config/rs6000/eabialtivec.h, config/rs6000/8540.md, config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h, config/rs6000/windiss.h, config/rs6000/603.md, config/rs6000/aix41.h, config/rs6000/cell.md, config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h, config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt, config/rs6000/darwin.md, config/rs6000/darwin64.h, config/rs6000/default64.h, config/rs6000/7xx.md, config/rs6000/darwin.opt, config/rs6000/spe.md, config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c, config/rs6000/rios2.md, config/rs6000/linuxaltivec.h, config/rs6000/7450.md, config/rs6000/linux64.h, config/rs6000/constraints.md, config/rs6000/440.md, config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c, config/rs6000/rs6000.c, config/rs6000/aix52.h, config/rs6000/rs6000.h, config/rs6000/power6.md, config/rs6000/predicates.md, config/rs6000/altivec.md, config/rs6000/aix64.opt, config/rs6000/rios1.md, config/rs6000/rs6000-modes.def, config/rs6000/rs64.md, config/rs6000/eabisim.h, config/rs6000/sysv4le.h, config/rs6000/darwin7.h, config/rs6000/dfp.md, config/rs6000/linux64.opt, config/rs6000/sync.md, config/rs6000/vxworksae.h, config/rs6000/power5.md, config/rs6000/lynx.h, config/rs6000/biarch64.h, config/rs6000/rs6000.md, config/rs6000/sysv4.opt, config/rs6000/eabispe.h, config/rs6000/e500.h, config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h, config/rs6000/netbsd.h, config/rs6000/e500-double.h, config/rs6000/aix.h, config/rs6000/vxworks.h, config/rs6000/40x.md, config/rs6000/aix51.h, config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md, config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def, config/arc/arc.h, config/mcore/mcore-elf.h, config/mcore/mcore-protos.h, config/mcore/predicates.md, config/mcore/mcore.md, config/mcore/mcore.c, config/mcore/mcore.opt, config/mcore/mcore.h, config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h, config/score/predicates.md, config/score/score-version.h, config/score/score-protos.h, config/score/misc.md, config/score/elf.h, config/score/score.c, config/score/mac.md, config/score/score7.md, config/score/score.h, config/score/score-conv.h, config/score/score-mdaux.c, config/score/score.md, config/score/score.opt, config/score/score-modes.def, config/score/score-mdaux.h, config/score/mul-div.S, config/arm/uclinux-elf.h, config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md, config/arm/symbian.h, config/arm/linux-elf.h, config/arm/arm1026ejs.md, config/arm/arm1136jfs.md, config/arm/elf.h, config/arm/aout.h, config/arm/arm.c, config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h, config/arm/strongarm-pe.h, config/arm/arm.h, config/arm/cortex-a8-neon.md, config/arm/semiaof.h, config/arm/cortex-a8.md, config/arm/uclinux-eabi.h, config/arm/arm-modes.def, config/arm/linux-eabi.h, config/arm/rtems-elf.h, config/arm/neon-schedgen.ml, config/arm/arm-cores.def, config/arm/arm-protos.h, config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h, config/arm/wince-pe.h, config/arm/neon.md, config/arm/constraints.md, config/arm/neon.ml, config/arm/xscale-elf.h, config/arm/strongarm-coff.h, config/arm/arm.opt, config/arm/arm926ejs.md, config/arm/predicates.md, config/arm/iwmmxt.md, config/arm/arm_neon.h, config/arm/unknown-elf.h, config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt, config/arm/neon-testgen.ml, config/arm/arm.md, config/arm/xscale-coff.h, config/arm/pe.c, config/arm/arm-generic.md, config/arm/pe.h, config/arm/kaos-strongarm.h, config/arm/freebsd.h, config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md, config/arm/strongarm-elf.h, config/arm/cirrus.md, config/arm/netbsd-elf.h, config/arm/vxworks.h, config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c, config/pa/predicates.md, config/pa/pa64-hpux.h, config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt, config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h, config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h, config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h, config/pa/pa-hpux10.h, config/pa/pa-hpux11.h, config/pa/pa-hpux1010.h, config/pa/pa-protos.h, config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h, config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h, config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt, config/pa/pa64-regs.h, config/pa/pa-modes.def, config/pa/constraints.md, config/darwin9.h, config/mips/4100.md, config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h, config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h, config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md, config/mips/7000.md, config/mips/9000.md, config/mips/4600.md, config/mips/linux64.h, config/mips/elforion.h, config/mips/constraints.md, config/mips/generic.md, config/mips/predicates.md, config/mips/4300.md, config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md, config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md, config/mips/5k.md, config/mips/vr4120-div.S, config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md, config/mips/mips-protos.h, config/mips/6000.md, config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h, config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h, config/mips/mips-modes.def, config/mips/vr.h, config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h, config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h, config/vax/vax.h, config/vax/elf.h, config/vax/vax.md, config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def, config/vax/openbsd1.h, config/vax/netbsd.h, config/vax/vax-protos.h, config/vax/netbsd-elf.h, config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h, config/h8300/rtems.h, config/h8300/predicates.md, config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h, config/h8300/h8300.md, config/h8300/h8300.opt, config/h8300/coff.h, config/h8300/h8300-protos.h, config/v850/v850.md, config/v850/predicates.md, config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt, config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c, config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h, config/mmix/mmix.h, config/mmix/predicates.md, config/mmix/mmix-protos.h, config/mmix/mmix.md, config/mmix/mmix.c, config/mmix/mmix.opt, config/mmix/mmix-modes.def, config/bfin/bfin.opt, config/bfin/rtems.h, config/bfin/bfin-modes.def, config/bfin/predicates.md, config/bfin/bfin-protos.h, config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127157 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc:jsm282006-11-181-1/+6
| | | | | | | | | | | | | | | * config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Define. * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define __NO_LWSYNC__ if TARGET_NO_LWSYNC. * config/rs6000/sync.md (lwsync): Emit plain sync if TARGET_NO_LWSYNC. libstdc++-v3: * config/cpu/powerpc/atomic_word.h (_GLIBCXX_WRITE_MEM_BARRIER): Use plain sync if __NO_LWSYNC__. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118961 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.dje2006-01-011-0/+46
| | | | | | | | | | (rs6000_split_compare_and_swapqhi): New. * config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New. (sync_compare_and_swapqhi_internal): New. * config/rs6000/rs6000-protos.h: Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109226 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-09-23 David Edelsohn <edelsohn@gnu.org>dje2005-09-231-6/+6
| | | | | | | | | | | | | | | | Andrew Pinski <pinskia@physics.uc.edu> * config/rs6000/sync.md (sync_<fetchop_name>si_internal): Change operand2 constraint to "b". (sync_<fetchop_name>di_internal): Same. (sync_old_<fetchop_name>si_internal): Change operand3 constraint to "b". (sync_old_<fetchop_name>di_internal): Same. (sync_new_<fetchop_name>si_internal): Same. (sync_new_<fetchop_name>di_internal): Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104567 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/rs6000.md (UNSPEC_SYNC, UNSPEC_LWSYNC,dje2005-07-151-276/+342
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UNSPEC_ISYNC, UNSPEC_SYNC_OP, UNSPEC_ATOMIC, UNSPEC_CMPXCHG, UNSPEC_XCHG, UNSPEC_AND): New. (UNSPECV_ATOMIC, UNSPECV_SYNC, UNSPECV_SYNC_OP, UNSPECV_CMPXCHG, UNSPECV_LWSYNC, UNSPECV_ISYNC): Delete. * config/rs6000/sync.md (FETCHOP): New code macro. (fetchop_name, fetchop_pred, fetchopsi_constr, fetchopdi_constr): New code attrs. (memory_barrier, sync_internal): Use unspec instead of unspec_volatile. (sync_compare_and_swap<mode>): Same. (sync_lock_test_and_set<mode>): Same. (sync_<fetchop><mode>, sync_nand<mode>): Only use rs6000_emit_sync for QImode and HImode, and not PPC405. (sync_old_<fetchop><mode>, sync_old_nand<mode>): Same. (sync_new_<fetchop><mode>, sync_new_nand<mode>): Same. (sync_<fetchop>{si,di}_internal): New. (sync_nand{si,di}_internal): New. (sync_old_<fetchop>{si,di}_internal): New. (sync_old_nand{si,di}_internal): New (sync_new_<fetchop>{si,di}_internal): New. (sync_new_nand{si,di}_internal): New. (atomic_and{si,di}): New. (sync_new_nand{si,di}_internal): New. (atomic_and{si,di}): New. (sync_add<mode>_internal): Delete. (sync_addshort_internal): Use unspec instead of unspec_volatile. (sync_sub<mode>_internal): Delte. (sync_subshort_internal): New. (sync_andsi_internal): Use unspec instead of unspec_volatile. (sync_anddi_internal): Delete. (sync_boolsi_internal): Use unspec instead of unspec_volatile. (sync_booldi_internal): Delete. (sync_boolc<mode>_internal): Delete. (sync_boolcshort_internal): Use unspec instead of unspec_volatile. (sync_boolc<mode>_internal2): Delete. (sync_boolcc<mode>_internal): Delete. (isync, lwsync): Use unspec instead of unspec_volatile. * config/rs6000/rs6000.c (rs6000_emit_sync): Implement MINUS. Revert UNSPEC_VOLATILE. (rs6000_split_atomic_op): New. * config/rs6000/rs6000-protos.h (rs6000_split_atomic_op): Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102049 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/sync.md (load_locked_<mode>): Use Z fordje2005-07-091-4/+4
| | | | | | | | | | memory_operand constraint. (store_conditional_<mode>): Same. (sync_compare_and_swap<mode>): Same. (sync_lock_test_and_set<mode>): Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101813 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/rs6000/rs6000.md (UNSPEC_SYNC, UNSPEC_SYNC_OP,dje2005-07-071-75/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | UNSPEC_SYNC_SWAP, UNSPEC_LWSYNC, UNSPEC_ISYNC): Delete. (UNSPECV_LL, UNSPECV_SC, UNSPECV_ATOMIC, UNSPECV_SYNC, UNSPECV_SYNC_OP, UNSPECV_CMPXCHG, UNSPECV_LWSYNC, UNSPECV_ISYNC): New. (define_attr "type"): Add isync, sync, load_l, store_c. * config/rs6000/sync.md (memory_barrier): Change to define_expand. Create scratch volatile MEM. (sync_internal): New. POWER mnemonic is dcs, not ics. Attribute sync. (load_locked_<mode>): New. (store_conditional_<mode>): New. (sync_compare_and_swap<mode>): Replace with splitter. (sync_lock_test_and_set<mode>): Replace with splitter. (sync_<fetchop><mode>): Change to unspec_volatile UNSPECV_SYNC_OP and UNSPECV_ISYNC. (isync): Change to unspec_volatile UNSPECV_ISYNC. POWER mnemonic is ics. Attribute isync. (lwsync): Change to unspec_volatile UNSPECV_LWSYNC. Attribute lwsync. * config/rs6000/rs6000.c (rs6000_emit_sync): Use UNSPEC_VOLATILE and UNSPECV_SYNC_OP. (emit_unlikely_jump): New. (emit_load_locked): New. (emit_store_conditional): New. (rs6000_split_compare_and_swap): New. (rs6000_split_lock_test_and_set): New. (is_dispatch_slot_restricted): Return 4 for TYPE_LOAD_L, TYPE_STORE_C, TYPE_ISYNC, TYPE_SYNC. * config/rs6000/rs6000-protos.h (rs6000_split_compare_and_swap, rs6000_split_lock_test_and_set): Declare. * config/rs6000/{40x.md,440.md,603.md,6xx.md,7450.md,7xx.md,8540.md, mpc.md,power4.md,power5.md,rios1.md,rios2.md,rs64.md): Add load_l, store_c, isync, sync. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101712 138bc75d-0d04-0410-961f-82ee72b054a4
* Update FSF addresskcook2005-06-281-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101366 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/21760dje2005-06-231-0/+492
* config/rs6000/rs6000.h (PPC405_ERRATUM77): New. * config/rs6000/rs6000.md: Move atomic instructions to ... * config/rs6000/sync.md: Here. Change sync_compare_and_swap<mode> to define_expand. All stwcx patterns test PPC405_ERRATUM77. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101268 138bc75d-0d04-0410-961f-82ee72b054a4