summaryrefslogtreecommitdiff
path: root/gcc/config/m68k/m68k.md
Commit message (Collapse)AuthorAgeFilesLines
* * config/m68k/m68k.c (post_inc_operand,pre_dec_operand): New.rth2004-08-061-202/+129
| | | | | | | | | | | | * config/m68k/m68k.h (PREDICATE_CODES): add post_inc_operand, pre_dec_operand. * config/m68k/m68k.md (zero_extend*2): delay the splitting of the pattern until reload is finished to allow better code generation and split them completely into separate instrunctions. (*andsi3_split): New pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85631 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-07-24 Roman Zippel <zippel@linux-m68k.org>schwab2004-07-241-68/+46
| | | | | | | | | | | | | | | * config/m68k/m68k.c (output_scc_di): Fix coding style. (symbolic_operand): Fix prototype. * config/m68k/m68k.h (PREDICATE_CODES): Add symbolic_operand. * config/m68k/m68k.md: Add constants for registers a0 and sp and use them, change from the "{...}" syntax to the simpler {...} syntax. (*cfv4_extendqisi2): Fix destination predicate. * config/m68k/m68k-protos.h: Remove various declarations also generated via PREDICATE_CODES. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85115 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/13292bernie2004-06-161-1/+1
| | | | | | | | | | | | * config/m68k/m68k.h (TARGET_SWITCHES): Don't remove MASK_68040_ONLY on -msoft-float. (TARGET_FLT_EVAL_METHOD): Don't advertise extended precision for 68040 and soft-float. * config/m68k/m68k.md (truncdfsf2): Explicitly require TARGET_68881 in the TARGET_68040_ONLY case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83268 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (movsi_cfv4): New pattern to allow mov3q.bernie2004-06-161-16/+87
| | | | | | | | | | | | | | | | | | | (movsi_cf): Make named, don't match TARGET_CFV4. (pushexthisi_const): Use mov3q if possible. (extendhisi2, cvf4_extendhisi2): Split extendhisi2 pattern to special case mvz.w for ColdFire V4. (extendqisi2, cvf4_extendqisi2): Split extendhisi2 pattern to special case mvz.b for ColdFire V4. (udivmodhi4, divmodhi4): Use mvz to zero extend arg for divide. (iorsi3, xorsi3, andsi3): Use bitfield instructions if possible. * config/m68k/m68k.c(valid_mov3q_const): New function. (const_method): SWAP is valid for ColdFire. (MULL_COST, MULW_COST): Fix costs for ColdFire V3/V4. * config/m68k/m68k-protos.h (valid_mov3q_const): Prototype here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83266 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.h(EXTRA_CONSTRAINT): add 'U' for register offsetbernie2004-05-291-6/+6
| | | | | | | | | addressing. * config/m68k/m68k.md: Add 'U,U' alternative to ColdFire variants of movsi,movhi,movqi insn patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82420 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-03-16 Richard Zidlicky <rz@linux-m68k.org>bernie2004-03-161-24/+24
| | | | | | | | * config/m68k/m68k.md: Fix constraints for bitfield instructions. * doc/md.texi: Clarify description of "i" constraint. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79523 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.c, config/m68k/m68k.md (SGS, SGS_CMP_ORDER): Removebernie2004-02-091-307/+104
| | | | | | | | | | | | | | | code to support SGS assembler. Reformat adjacent code where possible. * config/m68k/m68k.c (switch_table_difference_label_flag): Remove definition. * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Remove support for '%#'. * config/m68k/linux.h, config/m68k/m68k.c, * config/m68k/math-68881.h: Replace `%#' with `#' in inline asm macros and asm_printf() format strings. * config/m68k/m68kelf.h (ASM_OUTPUT_CASE_END): Remove macro definition. * config/m68k/linux.h: Update copyright. * config/m68k/linux.h, config/m68k/m68k.c: Remove traling whitespace. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77518 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,kazu2004-02-011-2/+2
| | | | | | | | | | | | | | | | | | | | | config/arm/linux-gas.h, config/arm/netbsd-elf.h, config/arm/netbsd.h, config/arm/pe.c, config/avr/avr.c, config/avr/avr.h, config/avr/avr.md, config/c4x/c4x.h, config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c, config/frv/frv.h, config/ip2k/ip2k.c, config/iq2000/iq2000.c, config/iq2000/iq2000.h, config/m32r/m32r.c, config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h, config/m68hc11/m68hc11.md, config/m68k/m68k.md, config/mcore/mcore.c, config/mcore/mcore.h, config/mcore/mcore.md, config/mips/mips.c, config/ns32k/ns32k.h, config/ns32k/ns32k.md, config/rs6000/rs6000.c, config/s390/s390.c, config/s390/s390.md, config/sparc/sparc.c, config/v850/v850.c, config/xtensa/xtensa.h, config/xtensa/xtensa.md: Replace "gen_rtx (FOO, " with "gen_rtx_FOO (". git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77080 138bc75d-0d04-0410-961f-82ee72b054a4
* alloc-pool.c, c-lex.c, c-pragma.h, c-semantics.c, cfghooks.c,kazu2004-01-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cfghooks.h, cfglayout.c, cfgloopmanip.c, debug.c, debug.h, flow.c, genextract.c, ggc-common.c, ggc-page.c, ggc.h, ifcvt.c, jump.c, loop-unswitch.c, timevar.c, timevar.def, tree-optimize.c, vmsdbgout.c, config/fp-bit.c, config/alpha/alpha.c, config/alpha/alpha.h, config/alpha/alpha.md, config/alpha/unicosmk.h, config/alpha/vms.h, config/arm/linux-elf.h, config/avr/avr.c, config/c4x/c4x-protos.h, config/c4x/c4x.md, config/d30v/d30v.h, config/frv/frv.md, config/frv/frvbegin.c, config/frv/frvend.c, config/i386/cygming.h, config/i386/djgpp.h, config/i386/emmintrin.h, config/i386/gthr-win32.c, config/i386/i386-interix.h, config/i386/i386-protos.h, config/i386/openbsd.h, config/i386/winnt.c, config/i386/xm-mingw32.h, config/i386/xmmintrin.h, config/ia64/ia64.md, config/iq2000/iq2000.md, config/m32r/m32r.md, config/m68k/m68k.md, config/mcore/mcore-elf.h, config/mcore/mcore.md, config/mips/elf.h, config/mips/elf64.h, config/mips/iris5gas.h, config/mips/iris6.h, config/mips/iris6gas.h, config/mips/linux.h, config/mips/mips.md, config/mips/netbsd.h, config/mips/openbsd.h, config/mips/windiss.h, config/pa/fptr.c, config/rs6000/aix.h, config/rs6000/altivec.h, config/rs6000/darwin.h, config/rs6000/xcoff.h, config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h, config/s390/s390.md, config/sh/netbsd-elf.h, config/sh/sh.h, config/sh/vxworks.h, config/sparc/sol2.h: Update copyright. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77018 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc/config/m68k/m68k.md: Switch from the "*..." syntax to thebernie2004-01-121-1146/+962
| | | | | | | brace-enclosed syntax in all C output statements. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75705 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.c (MOTOROLA): Move from here...bernie2003-11-301-449/+236
| | | | | | | | | * config/m68k/m68k.h (MOTOROLA): ... to here. (OUTPUT_JUMP): Use do {...} while (0). * config/m68k/m68k.md: Replace #ifdef MOTOROLA with C statements. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74049 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/lb1sf68.asm: Follow spelling conventions.kazu2003-10-111-6/+6
| | | | | | | | | * config/m68k/m68k.c: Likewise. * config/m68k/m68k.h: Likewise. * config/m68k/m68k.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72336 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/lb1sf68.asm: Add __PIC__ and __ID_SHARED_LIBRARY__bernie2003-10-111-50/+4
| | | | | | | | | | | | | | | | | | | | support. * config/m68k/m68k-none.h (ASM_SPEC): Pass --pcrel to assembler on -fpic, -fPIC, -msep-data and -mid-shared-library. * config/m68k/m68k.c (m68k_library_id_string): New global variable. (override_options): Add -msep-data and -mshared-library-id support. (m68k_output_function_prologue): Generate code to load A5 for TARGET_ID_SHARED_LIBRARY and TARGET_SEP_DATA. (m68k_output_mi_thunk): Emit indirect jump on TARGET_ID_SHARED_LIBRARY. (m68k_output_pic_call): New function. * gcc/config/m68k/m68k.h (TARGET_SEP_DATA): New target flag. (TARGET_ID_SHARED_LIBRARY): Ditto. (TARGET_SWITCHES): Add switches for -mid-shared-library and -msep-data. * gcc/config/m68k/m68k.md (call): Call m68k_output_pic_call(). (call_value): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72324 138bc75d-0d04-0410-961f-82ee72b054a4
* GNU CC -> GCCkcook2003-09-271-4/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71850 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k-none.h: Introduce new ColdFire archs.bernie2003-08-211-183/+237
| | | | | | | | | | | | | | | * config/m68k/m68k.h: Likewise. * config/m68k/lb1sf68.asm: Rename __mcf5200__ to __mcoldfire__. * config/m68k/coff.h: Rename TARGET_5200 to TARGET_COLDFIRE. * config/m68k/linux.h: Likewise. * config/m68k/m68k.c: Likewise. * config/m68k/m68k.md: Likewise. * config/m68k/m68kelf.h: Likewise. * config/m68k/netbsd-elf.h: Likewise. * config/m68k/t-m68kelf: Add multilib targets for new ColdFire archs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70630 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.c: Strip away code depending on NO_ADDSUB_Q definition.bernie2003-08-211-87/+4
| | | | | | | * config/m68k/m68k.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70626 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (anonymous define_insn): remove obsolete codebernie2003-08-201-21/+0
| | | | | | | | | | | | selected by FSGLMUL_USE_S and FSGLDIV_USE_S * config/m68k/m68k.c (output_move_himode): remove SGS_NO_LI check * config/m68k/m68k.md (anonymous define_insn): Likewise * config/m68k/m68k.md (anonymous define_insn): remove ISI_OV check * config/m68k/m68k.c (standard_68881_constant_p): remove obsolete code selected by NO_ASM_FMOVECR git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70622 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.c (output_move_const_into_data_reg,bernie2003-08-201-8/+0
| | | | | | | | | output_move_himode): unify MOTOROLA/MIT handling of moveq * config/m68k/m68k.md (movsi_const0, anonymous define_insn): Likewise git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70621 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.c (m68k_output_mi_thunk): delete obsolete codebernie2003-08-201-10/+0
| | | | | | | | depending on MOTOROLA_BSR * config/m68k/m68k.md (anonymous define_insn): Likewise git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70616 138bc75d-0d04-0410-961f-82ee72b054a4
* PR optimization/9812wilson2003-07-071-14/+22
| | | | | | | | | | | | | | | * rtl.h (mem_for_const_double): Delete prototype. * varasm.c (mem_for_const_double): Delete function. * config/m68k/hp320.h, config/m68k/linux.h, config/m68k/m68kelf.h, config/m68k/m68kv4.h, config/m68k/netbsd-elf.h (LEGITIMATE_PIC_OPERAND_P): Delete duplicate definitions. * config/m68k/m68k.h (LEGITIMATE_CONSTANT_P): Disallow XFmode. (LEGITIMATE_PIC_OPERAND_P): Delete CONST_DOUBLE tests. * config/m68k/m68k.md (movxf): Add reload_in_progress guard. Add comment about confused support for XFmode constants. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69027 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.c: Remove code protected by CRDS.schwab2003-07-051-28/+10
| | | | | | | * config/m68k/m68k.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68962 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/7594rth2003-06-121-3/+3
| | | | | | | | * config/m68k/m68k.md (zero_extendhisi2): Use gen_lowpart_SUBREG. (zero_extendqihi2, zero_extendqisi2): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67857 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-05-23 Larin Hennessy <larin@science.oregonstate.edu>zack2003-05-231-9/+0
| | | | | | | | | | | | | | Zack Weinberg <zack@codesourcery.com> * explow.c (allocate_dynamic_stack_space): Remove call to gen_probe. * config/m68k/m68k.c (m68k_output_function_prologue): Remove code under #if NEED_PROBE. * config/m68k/m68k.h: Don't define NEED_PROBE. * config/m68k/m68k.md: Remove "probe" insn. * doc/md.texi: Remove documentation of "probe" pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67125 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md: Use define_constants for unspec numbers.schwab2003-05-181-13/+20
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66939 138bc75d-0d04-0410-961f-82ee72b054a4
* 2003-05-17 Andreas Schwab <schwab@suse.de>schwab2003-05-171-631/+30
| | | | | | | | | | | | | | | | | | * config/m68k/coff.h: Remove support for Sun FPA and Sun SKY board. * config/m68k/linux.h: Likewise. * config/m68k/m68k-none.h: Likewise. * config/m68k/netbsd-elf.h: Likewise. * config/m68k/sgs.h: Likewise. * config/m68k/m68k.h: Likewise. * config/m68k/m68k.md: Likewise. * config/m68k/m68k.c: Likewise. * doc/md.texi (Machine Constraints): Remove Sun FPA specific constraints. * doc/invoke.texi (Option Summary): Remove -mfpa. (M680x0 Options): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66907 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (iordi3): Fix setting low half to -1. Fromschwab2003-03-181-2/+2
| | | | | | | martin@blom.org. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64549 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (tablejump+2): Don't sign extend an addressrth2003-01-281-6/+33
| | | | | | | | | | | | | | register. * config/m68k/apollo68.h (ASM_RETURN_CASE_JUMP): Likewise. * config/m68k/coff.h (ASM_RETURN_CASE_JUMP): Likewise. * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Likewise. * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise. * config/m68k/mot3300.h (ASM_RETURN_CASE_JUMP): Likewise. * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise. * config/m68k/pbb.h (ASM_RETURN_CASE_JUMP): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62030 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386.md (*mul*): FIx constraints; remove confused comment; fixhubicka2003-01-091-2/+2
| | | | | | | | | | | | | | | | | athlon_decode attributes (imul/k8 optimization peep2s): New. * athlon.md (athlon_ssecmp*): Handle ssecomi as well. * i386.md (type attribute): Add ssecomi. (unit, memory, prefix attributes): Handle ssecomi. (cvt?2? patterns): Fix athlon_decode attribute (comi patterns): Set attribute to ssecomi. PR target/8343 * m68k.md (umulsidi, mulsidi expanders): Use register operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61098 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge basic-improvements-branch to trunkzack2002-12-161-3/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60174 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix thinko last change.rth2002-06-201-4/+4
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54866 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (zero_extendsidi2): Create expander; duplicaterth2002-06-201-3/+33
| | | | | | | pattern and adjust constraints for coldfire. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54865 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (dbcc peepholes): Match four forms of dbra.rth2002-04-021-2/+49
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51736 138bc75d-0d04-0410-961f-82ee72b054a4
* * ChangeLog.2, ChangeLog.4, ChangeLog.5, ChangeLog,jsm282001-11-041-2/+2
| | | | | | | | | | | | | | | | | FSFChangeLog.10, FSFChangeLog.11, alias.c, attribs.c, caller-save.c, calls.c, cfg.c, cfganal.c, cfgcleanup.c, cfgrtl.c, cppmacro.c, fold-const.c, ifcvt.c, local-alloc.c, profile.c, sched-int.h, toplev.c, config/alpha/alpha.c, config/alpha/alpha.md, config/c4x/c4x.h, config/cris/cris.h, config/cris/cris.md, config/i370/i370.md, config/i386/i386.c, config/i386/i386.h, config/i386/i386.md, config/i386/xm-djgpp.h, config/ia64/ia64.c, config/m68hc11/m68hc11.c, config/m68k/m68k.md, config/mcore/mcore.h, config/mmix/mmix.c, config/ns32k/ns32k.h, config/ns32k/ns32k.md, config/rs6000/rs6000.c, config/rs6000/sysv4.h, config/sh/sh.md: Fix spelling errors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46760 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/3b1.h: Fix comment formatting.kazu2001-11-011-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/m68k/3b1g.h: Likewise. * config/m68k/a-ux.h: Likewise. * config/m68k/amix.h: Likewise. * config/m68k/apollo68.h: Likewise. * config/m68k/atari.h: Likewise. * config/m68k/aux-exit.c: Likewise. * config/m68k/ccur-GAS.h: Likewise. * config/m68k/crds.h: Likewise. * config/m68k/dpx2.h: Likewise. * config/m68k/dpx2g.h: Likewise. * config/m68k/hp310.h: Likewise. * config/m68k/hp320.h: Likewise. * config/m68k/isi.h: Likewise. * config/m68k/linux.h: Likewise. * config/m68k/lynx.h: Likewise. * config/m68k/m68k-psos.h: Likewise. * config/m68k/m68k.c: Likewise. * config/m68k/m68k.h: Likewise. * config/m68k/m68k.md: Likewise. * config/m68k/m68kelf.h: Likewise. * config/m68k/m68kv4.h: Likewise. * config/m68k/mot3300.h: Likewise. * config/m68k/news.h: Likewise. * config/m68k/next.h: Likewise. * config/m68k/pbb.h: Likewise. * config/m68k/plexus.h: Likewise. * config/m68k/sgs.h: Likewise. * config/m68k/sun3.h: Likewise. * config/m68k/tower.h: Likewise. * config/m68k/vxm68k.h: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46692 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (sordered, sordered_1, sunordered, sunordered_1,rth2001-08-281-0/+428
| | | | | | | | | | | suneq, suneq_1, sunge, sunge_1, sungt, sungt_1, sunle, sunle_1, sunlt, sunlt_1, sltgt, sltgt_1, fsogt_1, fsoge_1, fsolt_1, fsole_1, bordered, bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): New patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45219 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (subreghi1ashrdi_const32, bsetmemqi,rth2001-08-271-6/+13
| | | | | | | | | | bsetmemqi+1, strict_low_part peephole): Fix SUBREG_BYTE offset. (pushqi1): New. (adddi_dilshr32, adddi_dishl32): Only data register can be source for mem destination. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45216 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md: Replace all general_operand withrth2001-07-311-302/+302
| | | | | | | | nonimmediate_operand for all destinations. * config/m68k/m68k.c (not_sp_operand): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44499 138bc75d-0d04-0410-961f-82ee72b054a4
* * m68k.c (const_uint32_operand): Abort if mode is <= 32 bits.rth2001-07-231-11/+9
| | | | | | | | | | | | | (const_sint32_operand): Likewise. * m68k.md (anon mulsi pattern): Use const_int_operand not const_sint32_operand. (umulsi3_highpart): Zero extend a constant input. (smulsi3_highpart): Don't bother checking SImode constant. (const_umulsi3_highpart): Give op3 DImode. (const_smulsi3_highpart): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44252 138bc75d-0d04-0410-961f-82ee72b054a4
* * m68k.md (zero_extend?i?i2 expander): Use gen_lowpart insteadhubicka2001-07-201-15/+3
| | | | | | | of doing the change by hand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44212 138bc75d-0d04-0410-961f-82ee72b054a4
* * explow.c (plus_constant_wide, case PLUS): Call find_constant_termkenner2001-07-031-56/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | and avoid checking for constant as first operand. * recog.c (find_constant_term_loc): No longer static. (adj_offettable_operand): Delete. * rtl.h (adj_offsettable_operand): Delete declaration. (find_constant_term): Add declaration. * caller-save.c: Replace calls to adj_offsettable_operand with calls to adjust_address. * config/arm/arm.c, config/c4x/c4x.c: Likewise. * config/clipper/clipper.md, config/h8300/h8300.c: Likewise. * config/i386/i386.c, config/i386/i386.md: Likewise. * config/i860/i860.c, config/i960/i960.c: Likewise. * config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise. * config/m68k/m68k.c, config/m68k/m68k.md: Likewise. * config/m88k/m88k.md, config/mcore/mcore.c: Likewise. * config/mips/mips.c, config/mips/mips.md: Likewise. * config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise. * config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise. * config/pa/pa.c, config/pdp11/pdp11.c: Likewise. * config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise. * config/vax/vax.md, config/ns32k/ns32k.c: Likewise. * config/ns32k/ns32k.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43733 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c (adjust_address): New function.kenner2001-07-021-3/+2
| | | | | | | | | | | | | | | | | | | * expr.h (adjust_address): Add declaration. * builtins.c: Replace some calls to change_address with calls to it or to validize_mem. * caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise. * function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise. * config/arm/arm.c, config/convex/convex.c: Likewise. * config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise. * config/i386/i386.c, config/i386/i386.md: Likewise. * config/ia64/ia64.c, config/ia64/ia64.md: Likewise. * config/m32r/m32r.c, config/m68k/m68k.md: Likewise. * config/m88k/m88k.c, config/mips/mips.md: Likewise. * config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise. * config/sh/sh.c, config/sparc/sparc.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43702 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/m68k/m68k.md (ashrdi_const): Fix right shift by 16.rth2001-06-091-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43100 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-04-03 Jakub Jelinek <jakub@redhat.com>amacleod2001-04-031-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | David S. Miller <davem@pierdol.cobaltmicro.com> Andrew MacLeod <amacleod@redhat.com> Use byte offsets in SUBREGs instead of words. * alias.c (nonlocal_mentioned_p): Use subreg_regno function. * caller-save.c (mark_set_regs): Change callers of subreg_hard_regno to pass new argument. (add_stored_regs): Use subreg_regno_offset function. * calls.c (expand_call): For non-paradoxical SUBREG take endianess into account. (precompute_arguments): Use gen_lowpart_SUBREG. * combine.c (try_combine): Replace explicit XEXP with SUBREG_REG. (combine_simplify_rtx): Rework to use SUBREG_BYTE. (simplify_set): Rework to use SUBREG_BYTE. (expand_field_assignment): Use SUBREG_BYTE. (make_extraction): Use SUBREG_BYTE. (if_then_else_cond): Use SUBREG_BYTE. (apply_distributive_law): Use SUBREG_BYTE and fixup subreg comments. (gen_lowpart_for_combine): Compute full byte offset. * cse.c (mention_regs): Use SUBREG_BYTE. (remove_invalid_subreg_refs): Rework to use SUBREG_BYTE. (canon_hash): Use SUBREG_BYTE. (fold_rtx): Pass SUBREG_BYTE div UNITS_PER_WORD to operand_subword. (gen_lowpart_if_possible): Formatting. * dbxout.c (dbxout_symbol_location): Compute SUBREG hard regnos correctly. * dwarf2out.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG (mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG (loc_descriptor): Fixup explicit XEXP into SUBREG_REG * dwarfout.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG (output_mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG (output_loc_descriptor): Fixup explicit XEXP into SUBREG_REG * emit-rtl.c (gen_rtx_SUBREG): New function, used to verify certain invariants about SUBREGs the compiler creates. (gen_lowpart_SUBREG): New function. (subreg_hard_regno): New function to get the final register number. (gen_lowpart_common): Use SUBREG_BYTE. (gen_imagpart): Spacing nits. (subreg_realpart_p): Use SUBREG_BYTE. (gen_highpart): Use SUBREG_BYTE. (subreg_lowpart_p): Always compute endian corrected goal offset, even at the byte level, then compare against that. (constant_subword): New function, pulled out all constant cases from operand_subword and changed second argument name to offset. (operand_subword): Detect non REG/SUBREG/CONCAT/MEM cases early and call constant_subword to do the work. Return const0_rtx if looking for a word outside of OP. (operand_subword_force): Change second arg name to offset. * expmed.c (store_bit_field): Use SUBREG_BYTE. (store_split_bit_field): Use SUBREG_BYTE. (extract_bit_field): Use SUBREG_BYTE. (extract_split_bit_field): Use SUBREG_BYTE. (expand_shift): Use SUBREG_BYTE. * expr.c (store_expr, expand_expr): Use gen_lowpart_SUBREG. * final.c (alter_subreg) Use subreg_hard_regno and SUBREG_BYTE. * flow.c (set_noop_p): Use SUBREG_BYTE. (mark_set_1): Remove ALTER_HARD_SUBREG. Use subreg_regno_offset instead. * function.c (fixup_var_refs_1): Fixup explicit XEXP into a SUBREG_REG. (fixup_memory_subreg): Use SUBREG_BYTE and remove byte endian correction code. (optimize_bit_field): Use SUBREG_BYTE. (purge_addressof_1): Use SUBREG_BYTE. (purge_single_hard_subreg_set): Use subreg_regno_offset function. (assign_params): Mark arguments SUBREG_PROMOTED_VAR_P if they are actually promoted by the caller and PROMOTE_FOR_CALLS_ONLY is true. * gengenrtl.c (special_rtx): Add SUBREG. * global.c (mark_reg_store): Use SUBREG_BYTE. (set_preference): Rework to use subreg_regno_offset and SUBREG_BYTE. * ifcvt (noce_emit_move_insn): Use SUBREG_BYTE. * integrate.c (copy_rtx_and_substitute): Use SUBREG_BYTE and make sure final byte offset is congruent to subreg's mode size. (subst_constants): Use SUBREG_BYTE. (mark_stores): Use subreg_regno_offset function. * jump.c (rtx_renumbered_equal_p, true_regnum): Use subreg_regno_offset function and SUBREG_BYTE. * local-alloc.c (combine_regs): Use subreg_regno_offset function. (reg_is_born): Use subreg_hard_regno. * recog.c (valid_replace_rtx_1): Use SUBREG_BYTE and remove byte endian correction code. Don't combine subregs unless resulting offset aligns with type. Fix subreg constant extraction for DImode. Simplify SUBREG of VOIDmode CONST_DOUBLE. (general_operand): Remove dead mode_altering_drug code. (indirect_operand): Use SUBREG_BYTE. (constrain_operands): Use subreg_regno_offset function. * reg-stack.c (get_true_reg): Use subreg_regno_offset function. * regmove.c (regmove_optimize): Use SUBREG_BYTE. (optimize_reg_copy_3): Use gen_lowpart_SUBREG. * regs.h (REG_SIZE): Allow target to override. (REGMODE_NATURAL_SIZE): New macro which target can override. * reload.c (reload_inner_reg_of_subreg): subreg_regno should be used on the entire subreg rtx. (push_reload): Use SUBREG_BYTE in comments and code. (find_dummy_reload): Use subreg_regno_offset. Only adjust offsets for hard registers inside subregs. (operands_match_p): Use subreg_regno_offset. (find_reloads): Use SUBREG_BYTE and only advance offset for subregs containing hard regs. (find_reload_toplev): Use SUBREG_BYTE. Remove byte endian corrections when fixing up MEM subregs. (find_reloads_address_1): Use SUBREG_BYTE, subreg_regno, and subreg_regno_offset where appropriate. (find_reloads_subreg_address): Use SUBREG_BYTE. Remove byte endian corrections when fixing up MEM subregs. (subst_reloads): When combining two subregs, make sure final offset is congruent to subreg's mode size. (find_replacement): Use SUBREG_BYTE and subreg_regno_offset. (refers_to_regno_for_reload_p): Use subreg_regno. (reg_overlap_mentioned_for_reload_p): Use subreg_regno_offset. * reload1.c (eliminate_regs) Use SUBREG_BYTE. Remove byte endian correction code for memory subreg fixups. (forget_old_reload_1): Use subreg_regno_offset. (choose_reload_regs): Use subreg_regno. (emit_input_reload_insns): Use SUBREG_BYTE. (reload_combine_note_store): Use subreg_regno_offset. (move2add_note_store): Use subreg_regno_offset. * resource.c (update_live_status, mark_referenced_resources): Use subreg_regno function. (mark_set_resources): Use subreg_regno function. * rtl.h (SUBREG_WORD): Rename to SUBREG_BYTE. (subreg_regno_offset, subreg_regno): Define prototypes. (subreg_hard_regno, constant_subword, gen_rtx_SUBREG): Newi functions. (gen_lowpart_SUBREG): Add prototype. * rtl.texi (subreg): Update to reflect new byte offset representation. Add mentioning of the effect that BYTES_BIG_ENDIAN has on subregs now. * rtlanal.c (refers_to_regno_p): Use subreg_regno. (reg_overlap_mentioned_p): Use subreg_regno. (replace_regs); Make sure final offset of combined subreg is congruent to size of subreg's mode. (subreg_regno_offset): New function. (subreg_regno): New function. * sched-vis.c (print_value): Change SUBREG_WORD to SUBREG_BYTE. * sdbout.c (sdbout_symbol): Compute offset using alter_subreg. * stmt.c (expand_anon_union_decl): Use gen_lowpart_SUBREG. * tm.texi (ALTER_HARD_SUBREG): Remove, it is now dead. (SUBREG_REGNO_OFFSET): Describe SUBREG_REGNO_OFFSET overrides. * config/a29k/a29k.c (gpc_reg_operand): Use subreg_regno. (a29k_get_reloaded_address): Use SUBREG_BYTE. (print_operand): Use SUBREG_BYTE. * config/alpha/alpha.c (print_operand_address): Use SUBREG_BYTE. * config/arm/arm.c (arm_reload_in_hi): Use SUBREG_BYTE. (arm_reload_out_hi): Use SUBREG_BYTE. * config/d30v/d30v.c (d30v_split_double): Use subreg_regno_offset instead of SUBREG_WORD. (d30v_print_operand_memory_reference): Use subreg_regno_offset. * config/dsp16xx/dsp16xx.md (extendqihi2, zero_extendqihi2): Fix SUBREG creation to use byte offset. * config/h8300/h8300.md (Unnamed HImode zero extraction and 16bit inverted load insns): Fix explicit rtl subregs to use byte offsets. * config/i370/i370.md (cmpstrsi, movstrsi, mulsi3, divsi3, udivsi3, umodsi3): Generate SUBREGs with byte offsets. * config/i860/i860.c (single_insn_src_p): Use SUBREG_BYTE. * config/i860/i860.md (mulsi3_big): Fixup explicit SUBREGs in rtl to use byte offsets. (unnamed fmlow.dd insn): Fixup SUBREGS to use byte offsets. * config/i960/i960.md (extendhisi2): Generate SUBREGs with byte offsets, also make sure it is congruent to SUBREG's mode size. (extendqisi2, extendqihi2, zero_extendhisi2, zero_extendqisi2, unnamed ldob insn): Generate SUBREGs with byte offset. (zero_extendqihi2): SUBREG's are byte offsets. * config/m68hc11/m68hc11.c (m68hc11_gen_lowpart): Use SUBREG_BYTE. (m68hc11_gen_highpart): Use SUBREG_BYTE. * config/m68k/m68k.md (zero_extendhisi2, zero_extendqihi2, zero-extendqisi2): Generate SUBREGs with byte offset. (umulsidi3, mulsidi3, subreghi1ashrdi_const32, subregsi1ashrdi_const32, subreg1lshrdi_const32): Fixup explicit subregs in rtl to use byte offsets. * config/m88k/m88k.md (extendsidi2): fixup subregs to use byte offset. * config/mips/mips.c (mips_move_1word): Use subreg_regno_offset. (mips_move_2words): Use subreg_regno_offset. (mips_secondary_reload_class): Use subreg_regno_offset. * config/mips/mips.md (DImode plus, minus, move, and logical op splits): Fixup explicit subregs in rtl to use byte offsets. * config/mn10200/mn10200.c (print_operand): Use subreg_regno function. * config/mn10300/mn10300.c (print_operand): Use subreg_regno function. * config/ns32k/ns32k.md (udivmoddisi4): Fix explicit subregs in rtl to use byte offsets. * config/pa/pa.c (emit_move_sequence): Use SUBREG_BYTE. * config/pa/pa.md (floatunssisf2, floatunssidf2, mulsi3): fix explicit subregs to use byte offsets. * config/pdp11/pdp11.md (zero_extendhisi2, modhi3, modhi3+1): Fixup explicit subregs in rtl to use byte offsets. * config/romp/romp.c (memory_offset_in_range_p): Use SUBREG_BYTE and remove byte endian correction code. * config/sh/sh.c (output_movedouble): Use subreg_regno. (gen_ashift_hi): Use SUBREG_BYTE. (regs_used): Use subreg_regno_offset. (machine_dependent_reorg): Use subreg_regno_offset. * config/sh/sh.h (INDEX_REGISTER_RTX_P): Use SUBREG_BYTE. * config/sh/sh.md (DImode and DFmode move splits): Use subreg_regno. (movdf_i4): Subregs are byte offsets now. * config/sparc/sparc.c (ultra_find_type): Use SUBREG_BYTE. * config/sparc/sparc.h (ALTER_HARD_SUBREG): Removed. (REGMODE_NATURAL_SIZE): Override. (REG_SIZE): For SUBREG check float mode on SUBREG_REG's mode. * config/sparc/sparc.md (TFmode move splits): Generate SUBREGs with byte offsets. (zero_extendhisi2, zero_extendqidi2_insn, extendhisi2, extendqihi2, sign_extendqihi2_insn, sign_extendqisi2_insn, extendqidi2): Generate SUBREGs with byte offsets, also make sure it is congruent to SUBREG's mode size. (smulsi3_highpart_v8plus): Fix explicit subregs in rtl to use byte offsets. (cmp_siqi_trunc, cmp_siqi_trunc_set, cmp_diqi_trunc, cmp_diqi_trunc_set, lshrdi3_v8plus+1, lshrdi3_v8plus+2, lshrdi3_v8plus+3, lshrdi3_v8plus+4): Use proper SUBREG_BYTE offset for non-paradoxical subregs in patterns. * config/v850/v850.c (print_operand, output_move_double): Use subreg_regno function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41058 138bc75d-0d04-0410-961f-82ee72b054a4
* Brad's -ffast-math breakup.rth2001-03-071-6/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40300 138bc75d-0d04-0410-961f-82ee72b054a4
* * genoutput.c (validate_insn_operands): New.rth2000-11-281-11/+11
| | | | | | | | | | | | | | | | | | | | (gen_insn): Call it. * config/alpha/alpha.md (divmodsi_internal): Renumber operands. (divmoddi_internal): Likewise. * config/arm/arm.md (andsi3_compare0_scratch): Likewise. * config/i960/i960.md (branch patterns): Likewise. * config/ia64/ia64.md (tbit_and_0): Likewise. (tbit_and_1, tbit_or_0, tbit_or_1): Likewise. * config/m68k/m68k.md (zero_extract memory patterns): Likewise. * config/mips/mips.md (divmodsi4_internal): Likewise. (divmoddi4_internal): Likewise. * config/rs6000/rs6000.md (call patterns): Likewise. * config/sh/sh.md (movsi_y): Likewise. * config/sparc/sparc.md: Comment out if 0 v8p shift pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37828 138bc75d-0d04-0410-961f-82ee72b054a4
* * m68k.c (legitimize_pic_address): Move prototype ...ghazi2000-06-061-3/+1
| | | | | | | | | | | | | | | | | | | * m68k-protos.h (legitimize_pic_address): ... here. * m68k.md (legitimize_pic_address): Delete prototypes. (untyped_call): Invoke GEN_CALL(), not gen_call(). * nextstep.c: Include system.h and toplev.h. (get_directive_line): Don't prototype. (handle_pragma): Mark parameters with ATTRIBUTE_UNUSED and constify. * nextstep.h (handle_pragma): Prototype. (SECTION_FUNCTION): Prototype FUNCTION(). Move prototype of objc_section_init ... (EXTRA_SECTION_FUNCTIONS): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34427 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix copyrights.law2000-02-261-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32198 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.c (enum attrs): Add A_NO_LIMIT_STACK.geoffk1999-12-041-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (init_attributes): Add A_NO_LIMIT_STACK. (decl_attributes): Handle A_NO_LIMIT_STACK. * c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK. * explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]: Handle stack bounds checking. * flags.h (flag_stack_check): Use the word 'probe' rather than 'check', because the flag doesn't actually cause any checking to be done. * function.c (expand_function_start): Set current_function_limit_stack. * function.h (struct function): Add limit_stack. (current_function_limit_stack): Define. * invoke.texi (Code Gen Options): Document new options. * rtl.h: Declare stack_limit_rtx. * toplev.c (stack_limit_rtx): New variable. (decode_f_option): Handle new options -fstack-limit-register=REG, -fstack-limit-symbol=IDENT, -fno-stack-limit. (main): Add stack_limit_rtx as GC root. * tree.h (DECL_NO_LIMIT_STACK): New macro. (struct tree_decl): New member no_limit_stack. * config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle stack_limit_rtx. * config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx. (conditional_trap+1): Get new mnemonic correct. (conditional_trap+2): New pattern for DImode traps. * config/m68k/m68k.c (output_function_prologue): Handle stack_limit_rtx. * config/m68k/m68k.md (trap): New insn. (conditional_trap): New insn. * md.texi (Standard Names): Document `trap' and `conditional_trap'. * optabs.c (gen_cond_trap): Use start_sequence()/end_sequence() so a cc0 setter doesn't get emitted at some random place in the function. * config/i960/i960.md (trap): New insn. (conditional_trap): New expander. (conditional_trap+1, conditional_trap+2): New insns for signed and unsigned cases. * config/i960/i960.c (i960_function_prologue): Use STARTING_FRAME_OFFSET. Handle stack_limit_rtx. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30771 138bc75d-0d04-0410-961f-82ee72b054a4
* * m68k.md (zero_extendsidi2): Add missing output reload constraint.rth1999-10-141-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29984 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge in gcc2-ss-010999law1999-09-071-94/+62
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29150 138bc75d-0d04-0410-961f-82ee72b054a4