aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000.md
AgeCommit message (Collapse)Author
2019-10-16Rework patch #4ibm/pcrel-trunkmeissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277053 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-16Undo part of patch #4meissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277052 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-16Use PADDI to add 34-bit constants.meissner
2019-10-15 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/predicates.md (add_operand): Add support for PADDI. * config/rs6000/rs6000.md (add<mode>3): Add support for PADDI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277028 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-162019-10-15 Michael Meissner <meissner@linux.ibm.com>meissner
* config/rs6000/rs6000.md (movsi_internal1): Add support to load up 32-bit SImode integer constants with PADDI. (movsi integer constant splitter): Do not split constant if PADDI can load it up directly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277027 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-16Use PADDI/PLI to load up 34-bit DImode constants.meissner
2019-10-15 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (num_insns_constant_gpr): Add support for PADDI to load up and/or add 34-bit integer constants. (rs6000_rtx_costs): Treat constants loaded up with PADDI with the same cost as normal 16-bit constants. * config/rs6000/rs6000.md (movdi_internal64): Add support to load up 34-bit integer constants with PADDI. (movdi integer constant splitter): Add comment about PADDI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277026 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Change predicate namemeissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277024 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Undo patchmeissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277022 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Add support for using prefixed addresses with stack protect.meissner
2019-10-15 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/predicates.md (prefixed_mem_operand): New predicate. * config/rs6000/rs6000.md (stack_protect_setdi): Deal with either address being a prefixed load/store. (stack_protect_testdi): Deal with either address being a prefixed load. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277021 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Redo patch #2meissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277019 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Redo patch #1meissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277018 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Undo patchesmeissner
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277017 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Reformat some code.meissner
2019-10-15 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.md (mov<mode>_64bit_dm): Reformat. (movtd_64bit_nodm): Reformat. (mov<mode>_32bit): Reformat. (mov<mode>_softfloat): Reformat. (FMOVE128_GPR splitter): Reformat. (DIFD splitter): Reformat. (TI2 splitter): Reformat. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277013 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-15Use ADJUST_INSN_LENGTH to adjust for prefixed insns.meissner
2019-10-15 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (rs6000_insn_cost): Use num_insns insn attribute if it exists, rather than the insn size. If we use the insn size, adjust the size to remove the extra size that prefixed instructions take. * config/rs6000/rs6000.h (ADJUST_INSN_LENGTH): New target hook to update the instruction sized if prefixed instructions are used. * config/rs6000/rs6000.md (prefixed_length attribute): Delete. (non_prefixed_length attribute): Delete. (num_insns attribute): New insn attribute to return the number of instructions. (max_prefixed_insns attribute): New insn attribute to return the maximum number of prefixed instructions in an insn. (length attribute): Do not adjust for prefix instructions here, punt to ADJUST_INSN_LENGTH. (mov<mode>_64bit): Set max_prefixed_insns and num_insns. (movtd_64bit_nodm): Set max_prefixed_insns and num_insns. (mov<mode>_ppc64): Set max_prefixed_insns and num_insns. * config/rs6000/vsx.md: (vsx_mov<mode>_64bit): Set max_prefixed_insns and num_insns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/pcrel-trunk@277012 138bc75d-0d04-0410-961f-82ee72b054a4
2019-10-14[Darwin, machopic 9/n] Minor code clean-ups.iains
Improve some comments, replace some asserts that have been in the code base for years with checking-asserts. gcc/ChangeLog: 2019-10-14 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.c: Use unsigned ints for the picbase label counters, initialise the vars explicitly. (update_pic_label_number_if_needed): Move a variable declaration to where it's needed. (machopic_output_function_base_name): Use a more strict checking assert, and and unsigned int for the picbase label counter. (machopic_get_function_picbase): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@276967 138bc75d-0d04-0410-961f-82ee72b054a4
2019-09-24[Darwin, PPC, Mode Iterators 0/n] Make iterators visible to darwin.md.iains
As a clean-up, we want to be able to use mode iterators in darwin.md. This patch moves the include point for the Darwin include until after the definition of the mode iterators and attrs. No functional change intended. gcc/ChangeLog: 2019-09-24 Iain Sandoe <iain@sandoe.co.uk> * config/rs6000/rs6000.md: Move darwin.md include until after the definition of the mode iterators. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@276106 138bc75d-0d04-0410-961f-82ee72b054a4
2019-09-06rs6000: Delete UNSPEC_MV_CR_OV.segher
This isn't used since 2018. (It's a remnant of paired single support). * config/rs6000/rs6000.md (unspec): Delete UNSPEC_MV_CR_OV. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@275477 138bc75d-0d04-0410-961f-82ee72b054a4
2019-09-06rs6000: Delete UNSPEC_FRSPsegher
This isn't used since 2012. (It's a remnant of RIOS support). * config/rs6000/rs6000.c (rs6000_rtx_costs) <case UNSPEC>: Delete. * config/rs6000/rs6000.md (unspec): Delete UNSPEC_FRSP. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@275476 138bc75d-0d04-0410-961f-82ee72b054a4
2019-08-22rs6000: Use unspec_volatile for darn (PR91481)segher
Every call to darn should deliver a *new* random number; such calls should not be CSEd together. So they should be unspec_volatile, not plain unspec. PR target/91481 * config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32, and UNSPEC_DARN_RAW. (unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and UNSPECV_DARN_RAW. (darn_32): Use an unspec_volatile, and UNSPECV_DARN_32. (darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW. (darn): Use an unspec_volatile, and UNSPECV_DARN. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@274835 138bc75d-0d04-0410-961f-82ee72b054a4
2019-08-22rs6000: Move various non-vector things out of altivec.mdsegher
* config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32, UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to... * config/rs6000/rs6000.md (unspec): ... here. * config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb, *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal, cmpeqb, *cmpeqb_internal): Delete, move to... * config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb, *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal, cmpeqb, *cmpeqb_internal): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@274834 138bc75d-0d04-0410-961f-82ee72b054a4
2019-08-02Add future.md.meissner
2019-08-02 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/future.md: New file. * config/rs6000/rs6000.md: Include future.md. * config/rs6000/t-rs6000 (MD_INCLUDES): Add future.md. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@274030 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-16[rs6000] Fix ambiguous .md attribute usesrsandifo
This patch is part of a series that fixes ambiguous attribute uses in .md files, i.e. cases in which attributes didn't use <ITER:ATTR> to specify an iterator, and in which <ATTR> could have different values depending on the iterator chosen. No behavioural change -- produces the same code as before except for formatting and line numbers. 2019-07-16 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/rs6000/rs6000.md (*mov<mode>_update1): Explicitly use <SFDF:mode>, <SFDF:MODE>, <SFDF:Ff> and <SFDF:bits> rather than leaving the choice between SFDF and P implicit. (*mov<mode>_update2): Likewise. (*cmp<IBM128:mode>_internal2): Explicitly use <IBM128:MODE> rather than leaving the choice betweem IBM128 and GPR implicit. (*fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Explicitly use <IEEE128:MODE> rather than leaving the choice between IEEE128 and QHSI implicit. (AltiVec define_peephole2s): Explicitly use <ALTIVEC_DFORM:MODE> rather than leaving the choice between ALTIVEC_DFORM and P implicit. * config/rs6000/vsx.md (*vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>) (*vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Explicitly use <FL_CONV:VSisa> rather than leaving the choice between FL_CONV and VSX_EXTRACT_I implicit. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@273509 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-07rs6000: Delete Ffresegher
It is unused. * config/rs6000/rs6000.md (Ffre): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@273182 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-032019-07-03 Michael Meissner <meissner@linux.ibm.com>meissner
* config/rs6000/altivec.md (altivec_mov<mode>, VM2 iterator): Change the RTL attribute "length" from "4" to "*" to allow the length attribute to be adjusted automatically for prefixed load, store, and add immediate instructions. * config/rs6000/rs6000.md (extendhi<mode>2, EXTHI iterator): Likewise. (extendsi<mode>2, EXTSI iterator): Likewise. (movsi_internal1): Likewise. (movsi_from_sf): Likewise. (movdi_from_sf_zero_ext): Likewise. (mov<mode>_internal): Likewise. (movcc_internal1, QHI iterator): Likewise. (mov<mode>_softfloat, FMOVE32 iterator): Likewise. (movsf_from_si): Likewise. (mov<mode>_hardfloat32, FMOVE64 iterator): Likewise. (mov<mode>_softfloat64, FMOVE64 iterator): Likewise. (mov<mode>, FMOVE128 iterator): Likewise. (movdi_internal64): Likewise. * config/rs6000/vsx.md (vsx_le_permute_<mode>, VSX_TI iterator): Likewise. (vsx_le_undo_permute_<mode>, VSX_TI iterator): Likewise. (vsx_mov<mode>_64bit, VSX_M iterator): Likewise. (vsx_mov<mode>_32bit, VSX_M iterator): Likewise. (vsx_splat_v4sf): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@273013 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@signbit<mode>2_dmsegher
* config/rs6000/rs6000.md (signbit<mode>2_dm): Make this a parameterized name. (signbit<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272912 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@ieee_128bit_vsx_abs<mode>2segher
* config/rs6000/rs6000.md (ieee_128bit_vsx_abs<mode>2): Make this a parameterized name. (abs<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272907 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@ieee_128bit_vsx_neg<mode>2segher
* config/rs6000/rs6000.md (ieee_128bit_vsx_neg<mode>2): Make this a parameterized name. (neg<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272906 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@abs<mode>2_hwsegher
* config/rs6000/rs6000.md (abs<mode>2_hw): Make this a parameterized name. (abs<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272905 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@neg<mode>2_hwsegher
* config/rs6000/rs6000.md (neg<mode>2_hw): Make this a parameterized name. (neg<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272904 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@extenddf<mode>2segher
* config/rs6000/rs6000.md (extenddf<mode>2): Make this a parameterized name. (floatsi<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272903 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@extenddf<mode>2_{fprs,vsx}segher
* config/rs6000/rs6000.md (extenddf<mode>2_fprs): Make this a parameterized name. (extenddf<mode>2_vsx): Make this a parameterized name. (extenddf<mode>2): Use those names. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272901 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@eh_set_lr_<mode>segher
* config/rs6000/rs6000.md (eh_set_lr_<mode>): Make this a parameterized name. (eh_return): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272900 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@ctr<mode>segher
* config/rs6000/rs6000.md (ctr<mode>): Make this a parameterized name. (doloop_end): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272899 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@indirect_jump<mode>_nospecsegher
* config/rs6000/rs6000.md (indirect_jump<mode>_nospec): Make this a parameterized name. (indirect_jump): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272898 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@abs<mode>2_internalsegher
* config/rs6000/rs6000.md (abs<mode>2_internal): Make this a parameterized name. (abs<mode>2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272897 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@fix_trunc<mode>si2_fprssegher
* config/rs6000/rs6000.md (fix_trunc<mode>si2_fprs): Make this a parameterized name. (fix_trunc<mode>si2): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272896 138bc75d-0d04-0410-961f-82ee72b054a4
2019-07-01@neg<mode>2segher
* config/rs6000/rs6000.md (neg<mode>2): Make this a parameterized name. (allocate_stack): Use that name. Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272894 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-28Fix PR target/91009meissner
2019-06-27 Michael Meissner <meissner@linux.ibm.com> PR target/91009 * config/rs6000/rs6000.md (floatsi<mode>2_lfiwax): Add non-VSX alternative. (floatsi<mode>2_lfiwax_mem): Add non-VSX alternative. (floatunssi<mode>2_lfiwzx): Add non-VSX alternative. (floatunssi<mode>2_lfiwzx_mem): Add non-VSX alternative. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272791 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-272019-06-27 Aaron Sawdey <acsawdey@linux.ibm.com>acsawdey
* builtins.c (get_memory_rtx): Fix comment. * optabs.def (movmem_optab): Change to cpymem_optab. * expr.c (emit_block_move_via_cpymem): Change movmem to cpymem. (emit_block_move_hints): Change movmem to cpymem. * defaults.h: Change movmem to cpymem. * targhooks.c (get_move_ratio): Change movmem to cpymem. (default_use_by_pieces_infrastructure_p): Ditto. * config/aarch64/aarch64-protos.h: Change movmem to cpymem. * config/aarch64/aarch64.c (aarch64_expand_movmem): Change movmem to cpymem. * config/aarch64/aarch64.h: Change movmem to cpymem. * config/aarch64/aarch64.md (movmemdi): Change name to cpymemdi. * config/alpha/alpha.h: Change movmem to cpymem in comment. * config/alpha/alpha.md (movmemqi, movmemdi, *movmemdi_1): Change movmem to cpymem. * config/arc/arc-protos.h: Change movmem to cpymem. * config/arc/arc.c (arc_expand_movmem): Change movmem to cpymem. * config/arc/arc.h: Change movmem to cpymem in comment. * config/arc/arc.md (movmemsi): Change movmem to cpymem. * config/arm/arm-protos.h: Change movmem to cpymem in names. * config/arm/arm.c (arm_movmemqi_unaligned, arm_gen_movmemqi, gen_movmem_ldrd_strd, thumb_expand_movmemqi) Change movmem to cpymem. * config/arm/arm.md (movmemqi): Change movmem to cpymem. * config/arm/thumb1.md (movmem12b, movmem8b): Change movmem to cpymem. * config/avr/avr-protos.h: Change movmem to cpymem. * config/avr/avr.c (avr_adjust_insn_length, avr_emit_movmemhi, avr_out_movmem): Change movmem to cpymem. * config/avr/avr.md (movmemhi, movmem_<mode>, movmemx_<mode>): Change movmem to cpymem. * config/bfin/bfin-protos.h: Change movmem to cpymem. * config/bfin/bfin.c (single_move_for_movmem, bfin_expand_movmem): Change movmem to cpymem. * config/bfin/bfin.h: Change movmem to cpymem in comment. * config/bfin/bfin.md (movmemsi): Change name to cpymemsi. * config/c6x/c6x-protos.h: Change movmem to cpymem. * config/c6x/c6x.c (c6x_expand_movmem): Change movmem to cpymem. * config/c6x/c6x.md (movmemsi): Change name to cpymemsi. * config/frv/frv.md (movmemsi): Change name to cpymemsi. * config/ft32/ft32.md (movmemsi): Change name to cpymemsi. * config/h8300/h8300.md (movmemsi): Change name to cpymemsi. * config/i386/i386-expand.c (expand_set_or_movmem_via_loop, expand_set_or_movmem_via_rep, expand_movmem_epilogue, expand_setmem_epilogue_via_loop, expand_set_or_cpymem_prologue, expand_small_cpymem_or_setmem, expand_set_or_cpymem_prologue_epilogue_by_misaligned_moves, expand_set_or_cpymem_constant_prologue, ix86_expand_set_or_cpymem): Change movmem to cpymem. * config/i386/i386-protos.h: Change movmem to cpymem. * config/i386/i386.h: Change movmem to cpymem in comment. * config/i386/i386.md (movmem<mode>): Change name to cpymem. (setmem<mode>): Change expansion function name. * config/lm32/lm32.md (movmemsi): Change name to cpymemsi. * config/m32c/blkmov.md (movmemhi, movmemhi_bhi_op, movmemhi_bpsi_op, movmemhi_whi_op, movmemhi_wpsi_op): Change movmem to cpymem. * config/m32c/m32c-protos.h: Change movmem to cpymem. * config/m32c/m32c.c (m32c_expand_movmemhi): Change movmem to cpymem. * config/m32r/m32r.c (m32r_expand_block_move): Change movmem to cpymem. * config/m32r/m32r.md (movmemsi, movmemsi_internal): Change movmem to cpymem. * config/mcore/mcore.md (movmemsi): Change name to cpymemsi. * config/microblaze/microblaze.c: Change movmem to cpymem in comment. * config/microblaze/microblaze.md (movmemsi): Change name to cpymemsi. * config/mips/mips.c (mips_use_by_pieces_infrastructure_p): Change movmem to cpymem. * config/mips/mips.h: Change movmem to cpymem. * config/mips/mips.md (movmemsi): Change name to cpymemsi. * config/nds32/nds32-memory-manipulation.c (nds32_expand_movmemsi_loop_unknown_size, nds32_expand_movmemsi_loop_known_size, nds32_expand_movmemsi_loop, nds32_expand_movmemsi_unroll, nds32_expand_movmemsi): Change movmem to cpymem. * config/nds32/nds32-multiple.md (movmemsi): Change name to cpymemsi. * config/nds32/nds32-protos.h: Change movmem to cpymem. * config/pa/pa.c (compute_movmem_length): Change movmem to cpymem. (pa_adjust_insn_length): Change call to compute_movmem_length. * config/pa/pa.md (movmemsi, movmemsi_prereload, movmemsi_postreload, movmemdi, movmemdi_prereload, movmemdi_postreload): Change movmem to cpymem. * config/pdp11/pdp11.md (movmemhi, movmemhi1, movmemhi_nocc, UNSPEC_MOVMEM): Change movmem to cpymem. * config/riscv/riscv.c: Change movmem to cpymem in comment. * config/riscv/riscv.h: Change movmem to cpymem. * config/riscv/riscv.md: (movmemsi) Change name to cpymemsi. * config/rs6000/rs6000.md: (movmemsi) Change name to cpymemsi. * config/rx/rx.md: (UNSPEC_MOVMEM, movmemsi, rx_movmem): Change movmem to cpymem. * config/s390/s390-protos.h: Change movmem to cpymem. * config/s390/s390.c (s390_expand_movmem, s390_expand_setmem, s390_expand_insv): Change movmem to cpymem. * config/s390/s390.md (movmem<mode>, movmem_short, *movmem_short, movmem_long, *movmem_long, *movmem_long_31z): Change movmem to cpymem. * config/sh/sh.md (movmemsi): Change name to cpymemsi. * config/sparc/sparc.h: Change movmem to cpymem in comment. * config/vax/vax-protos.h (vax_output_movmemsi): Remove prototype for nonexistent function. * config/vax/vax.h: Change movmem to cpymem in comment. * config/vax/vax.md (movmemhi, movmemhi1): Change movmem to cpymem. * config/visium/visium.h: Change movmem to cpymem in comment. * config/visium/visium.md (movmemsi): Change name to cpymemsi. * config/xtensa/xtensa.md (movmemsi): Change name to cpymemsi. * doc/md.texi: Change movmem to cpymem and update description to match. * doc/rtl.texi: Change movmem to cpymem. * target.def (use_by_pieces_infrastructure_p): Change movmem to cpymem. * doc/tm.texi: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272755 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-26[RS6000] Change maddld match_operand from DI to GPRhelijia
From PowerPC ISA3.0, the description of `maddld RT, RA.RB, RC` is as follows: 64-bit RA and RB are multiplied and then the RC is signed extend to 128 bits, and add them together. We only apply it to 64-bit mode (DI) when implementing maddld. However, if we can guarantee that the result of the maddld operation will be limited to 32-bit mode (SI), we can still apply it to 32-bit mode (SI). gcc/ChangeLog 2019-06-26 Li Jia He <helijia@linux.ibm.com> * config/rs6000/rs6000.h (TARGET_MADDLD): Remove the restriction of TARGET_POWERPC64. * config/rs6000/rs6000.md (maddld): Change maddld match_operand from DI to GPR. gcc/testsuite/ChangeLog 2019-06-26 Li Jia He <helijia@linux.ibm.com> * gcc.target/powerpc/maddld-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272673 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-202019-06-20 Michael Meissner <meissner@linux.ibm.com>meissner
* config/rs6000/rs6000.md (isa attribute): Add support for for a future processor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272513 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-15rs6000: New iterator CCEITHERsegher
This expands to both CC and CCUNS, it's useful for isel for example. * config/rs6000/rs6000.md (CCEITHER): New define_mode_iterator. (un): New define_mode_attr. (isel_signed_<mode>, isel_unsigned_<mode>): Delete, merge into ... (isel_<un>signed_<GPR:mode>): ... this. New define_insn. (isel_reversed_signed_<mode>, isel_reversed_unsigned_<mode>): Delete, merge into ... (isel_reversed_<un>signed_<GPR:mode>): ... this. New define_insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272319 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: Add p9kf and p9tf isa valuessegher
This adds "p9kf" and "p9tf" isa values, to be used for instruction alternatives where KFmode resp. TFmode is used. * config/rs6000/rs6000.md (define_attr "isa"): Add p9kf and p9tf. (define_attr "enabled"): Handle those new isa values. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271938 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: <VSs> -> <sd>psegher
We don't need the <VSs> mode attribute, if we make <sd> work for V4SF and V2DF just like for SF and DF. * config/rs6000/rs6000.md (define_mode_attr sd): Add values for V4SF and V2DF. * config/rs6000/vsx.md (define_mode_attr VSs): Delete. (rest of file): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271936 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: ww -> wasegher
"ww" can always be "wa". * config/rs6000/constraints.md (define_register_constraint "ww"): Delete. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust. (rs6000_init_hard_regno_mode_ok): Adjust. * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete RS6000_CONSTRAINT_ww. * config/rs6000/rs6000.md: Adjust. * config/rs6000/vsx.md: Adjust. * doc/md.texi (Machine Constraints): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271932 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: Remove Ftrad, Fvsx, Fs; add s and sdsegher
This removes the <Ftrad>, <Fvsx>, and <Fs> mode attributes, and creates new <sd> and <s> mode attributes instead. <sd> is either "s" or "d", depending on whether the mode is single-precision or double-precision floating point; and <s> is either "s" or nothing. * config/rs6000/rs6000.md (SFDF, SFDF2): Adjust comments. (define_mode_attr sd): New. (define_mode_attr s): New. (define_mode_attr Ftrad): Delete. (define_mode_attr Fvsx): Delete. (define_mode_attr Fs): Delete. (rest of file): Use the new mode attributes. * config.rs6000/vsx.md: Use the new mode attributes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271931 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: wf -> wasegher
"wf" is just "wa". * config/rs6000/constraints.md (define_register_constraint "wf"): Delete. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust. (rs6000_init_hard_regno_mode_ok): Adjust. * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete RS6000_CONSTRAINT_wf. * config/rs6000/rs6000.md: Adjust. * config/rs6000/vsx.md: Adjust. * doc/md.texi (Machine Constraints): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271921 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: wd -> wasegher
"wd" is just "wa". * config/rs6000/constraints.md (define_register_constraint "wd"): Delete. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust. (rs6000_init_hard_regno_mode_ok): Adjust. * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete RS6000_CONSTRAINT_wd. * config/rs6000/rs6000.md: Adjust. * config/rs6000/vsx.md: Adjust. * doc/md.texi (Machine Constraints): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271919 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: Delete Fv2segher
<Fv2> always is "wa". * config/rs6000/rs6000.md (define_mode_attr Fv2): Delete. (rest of file): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271918 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: ws -> wasegher
"ws" is just "wa". * config/rs6000/constraints.md (define_register_constraint "ws"): Delete. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust. (rs6000_init_hard_regno_mode_ok): Adjust. * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete RS6000_CONSTRAINT_ws. * config/rs6000/rs6000.md: Adjust. * config/rs6000/vsx.md: Adjust. * doc/md.texi (Machine Constraints): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271916 138bc75d-0d04-0410-961f-82ee72b054a4
2019-06-04rs6000: wv -> v+p7vsegher
"wv" is "v", but only if VSX is enabled (otherwise it's NO_REGS). So this patch sets "isa" "p7v" to all alternatives that used "wv" before (and that do not already need a later ISA), and changes the constraint. * config/rs6000/constraints.md (define_register_constraint "wv"): Delete. * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust. (rs6000_init_hard_regno_mode_ok): Adjust. * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete RS6000_CONSTRAINT_wv. * config/rs6000/rs6000.md: Adjust. * config/rs6000/vsx.md: Adjust. * doc/md.texi (Machine Constraints): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271915 138bc75d-0d04-0410-961f-82ee72b054a4