OSDN Git Service

* config/avr/avr.h (AVR_HAVE_LPMX): New macro.
authoraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jan 2007 18:42:58 +0000 (18:42 +0000)
committeraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jan 2007 18:42:58 +0000 (18:42 +0000)
(AVR_ENHANCED): Rename to ...
(AVR_HAVE_MUL): ... new.
(avr_enhanced_p): Rename to ...
(avr_have_mul_p): ... new.
(TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
* config/avr/avr.c (avr_enhanced_p): Rename to ...
(avr_have_mul_p): ... new.
(base_arch_s): Rename 'enhanced' to 'have_mul'.
(avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
'avr_enhanced_p' and 'enhanced'.
(ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
AVR_HAVE_MUL instead of AVR_ENHANCED.
* avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
(mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
*mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
instead of AVR_ENHANCED.
(*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
* libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
(__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120865 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/avr/avr.c
gcc/config/avr/avr.h
gcc/config/avr/avr.md
gcc/config/avr/libgcc.S

index 1b8bbce..4794dde 100644 (file)
@@ -1,3 +1,27 @@
+2007-01-17  Anatoly Sokolov <aesok@post.ru>\r
+\r
+       * config/avr/avr.h (AVR_HAVE_LPMX): New macro.\r
+       (AVR_ENHANCED): Rename to ...\r
+       (AVR_HAVE_MUL): ... new.\r
+       (avr_enhanced_p): Rename to ...\r
+       (avr_have_mul_p): ... new.\r
+       (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of \r
+       'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".\r
+       * config/avr/avr.c (avr_enhanced_p): Rename to ...\r
+       (avr_have_mul_p): ... new.\r
+       (base_arch_s): Rename 'enhanced' to 'have_mul'.\r
+       (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of\r
+       'avr_enhanced_p' and 'enhanced'.\r
+       (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use \r
+       AVR_HAVE_MUL instead of AVR_ENHANCED.\r
+       * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.\r
+       (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3, \r
+       *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL \r
+       instead of AVR_ENHANCED.\r
+       (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.\r
+       * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.\r
+       (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.\r
+
 2007-01-17  Ian Lance Taylor  <iant@google.com>
 
        * vec.h (VEC_reserve_exact): Define.
index 41142a4..d222a53 100644 (file)
@@ -120,8 +120,8 @@ section *progmem_section;
 /* More than 8K of program memory: use "call" and "jmp".  */
 int avr_mega_p = 0;
 
-/* Enhanced core: use "movw", "mul", ...  */
-int avr_enhanced_p = 0;
+/* Core have 'MUL*' instructions.  */
+int avr_have_mul_p = 0;
 
 /* Assembler only.  */
 int avr_asm_only_p = 0;
@@ -131,7 +131,7 @@ int avr_have_movw_lpmx_p = 0;
 
 struct base_arch_s {
   int asm_only;
-  int enhanced;
+  int have_mul;
   int mega;
   int have_movw_lpmx;
   const char *const macro;
@@ -324,7 +324,7 @@ avr_override_options (void)
 
   base = &avr_arch_types[t->arch];
   avr_asm_only_p = base->asm_only;
-  avr_enhanced_p = base->enhanced;
+  avr_have_mul_p = base->have_mul;
   avr_mega_p = base->mega;
   avr_have_movw_lpmx_p = base->have_movw_lpmx;
   avr_base_arch_macro = base->macro;
@@ -3170,7 +3170,7 @@ ashlhi3_out (rtx insn, rtx operands[], int *len)
                      AS1 (lsl,%B0)     CR_TAB
                      AS2 (andi,%B0,0xe0));
            }
-         if (AVR_ENHANCED && scratch)
+         if (AVR_HAVE_MUL && scratch)
            {
              *len = 5;
              return (AS2 (ldi,%3,0x20) CR_TAB
@@ -3191,7 +3191,7 @@ ashlhi3_out (rtx insn, rtx operands[], int *len)
                      AS2 (ldi,%3,0xe0) CR_TAB
                      AS2 (and,%B0,%3));
            }
-         if (AVR_ENHANCED)
+         if (AVR_HAVE_MUL)
            {
              *len = 6;
              return ("set"            CR_TAB
@@ -3211,7 +3211,7 @@ ashlhi3_out (rtx insn, rtx operands[], int *len)
                  AS1 (lsl,%B0));
 
        case 14:
-         if (AVR_ENHANCED && ldi_ok)
+         if (AVR_HAVE_MUL && ldi_ok)
            {
              *len = 5;
              return (AS2 (ldi,%B0,0x40) CR_TAB
@@ -3220,7 +3220,7 @@ ashlhi3_out (rtx insn, rtx operands[], int *len)
                      AS1 (clr,%A0)      CR_TAB
                      AS1 (clr,__zero_reg__));
            }
-         if (AVR_ENHANCED && scratch)
+         if (AVR_HAVE_MUL && scratch)
            {
              *len = 5;
              return (AS2 (ldi,%3,0x40) CR_TAB
@@ -3500,7 +3500,7 @@ ashrhi3_out (rtx insn, rtx operands[], int *len)
                  AS1 (asr,%A0));
 
        case 11:
-         if (AVR_ENHANCED && ldi_ok)
+         if (AVR_HAVE_MUL && ldi_ok)
            {
              *len = 5;
              return (AS2 (ldi,%A0,0x20) CR_TAB
@@ -3520,7 +3520,7 @@ ashrhi3_out (rtx insn, rtx operands[], int *len)
                  AS1 (asr,%A0));
 
        case 12:
-         if (AVR_ENHANCED && ldi_ok)
+         if (AVR_HAVE_MUL && ldi_ok)
            {
              *len = 5;
              return (AS2 (ldi,%A0,0x10) CR_TAB
@@ -3541,7 +3541,7 @@ ashrhi3_out (rtx insn, rtx operands[], int *len)
                  AS1 (asr,%A0));
 
        case 13:
-         if (AVR_ENHANCED && ldi_ok)
+         if (AVR_HAVE_MUL && ldi_ok)
            {
              *len = 5;
              return (AS2 (ldi,%A0,0x08) CR_TAB
@@ -3947,7 +3947,7 @@ lshrhi3_out (rtx insn, rtx operands[], int *len)
                      AS1 (lsr,%A0)     CR_TAB
                      AS2 (andi,%A0,0x07));
            }
-         if (AVR_ENHANCED && scratch)
+         if (AVR_HAVE_MUL && scratch)
            {
              *len = 5;
              return (AS2 (ldi,%3,0x08) CR_TAB
@@ -3968,7 +3968,7 @@ lshrhi3_out (rtx insn, rtx operands[], int *len)
                      AS2 (ldi,%3,0x07) CR_TAB
                      AS2 (and,%A0,%3));
            }
-         if (AVR_ENHANCED)
+         if (AVR_HAVE_MUL)
            {
              *len = 6;
              return ("set"            CR_TAB
@@ -3988,7 +3988,7 @@ lshrhi3_out (rtx insn, rtx operands[], int *len)
                  AS1 (lsr,%A0));
 
        case 14:
-         if (AVR_ENHANCED && ldi_ok)
+         if (AVR_HAVE_MUL && ldi_ok)
            {
              *len = 5;
              return (AS2 (ldi,%A0,0x04) CR_TAB
@@ -3997,7 +3997,7 @@ lshrhi3_out (rtx insn, rtx operands[], int *len)
                      AS1 (clr,%B0)      CR_TAB
                      AS1 (clr,__zero_reg__));
            }
-         if (AVR_ENHANCED && scratch)
+         if (AVR_HAVE_MUL && scratch)
            {
              *len = 5;
              return (AS2 (ldi,%3,0x04) CR_TAB
@@ -4983,7 +4983,7 @@ avr_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total)
       switch (mode)
        {
        case QImode:
-         if (AVR_ENHANCED)
+         if (AVR_HAVE_MUL)
            *total = COSTS_N_INSNS (optimize_size ? 3 : 4);
          else if (optimize_size)
            *total = COSTS_N_INSNS (AVR_MEGA ? 2 : 1);
@@ -4991,7 +4991,7 @@ avr_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total)
            return false;
 
        case HImode:
-         if (AVR_ENHANCED)
+         if (AVR_HAVE_MUL)
            *total = COSTS_N_INSNS (optimize_size ? 7 : 10);
          else if (optimize_size)
            *total = COSTS_N_INSNS (AVR_MEGA ? 2 : 1);
index 724a213..2c054e6 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler,
    for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers.
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
    Free Software Foundation, Inc.
    Contributed by Denis Chertykov (denisc@overta.ru)
 
@@ -37,8 +37,10 @@ Boston, MA 02110-1301, USA.  */
        builtin_define ("__AVR_HAVE_LPMX__");   \
       if (avr_asm_only_p)                      \
        builtin_define ("__AVR_ASM_ONLY__");    \
-      if (avr_enhanced_p)                      \
+      if (avr_have_mul_p)                      \
        builtin_define ("__AVR_ENHANCED__");    \
+      if (avr_have_mul_p)                      \
+       builtin_define ("__AVR_HAVE_MUL__");    \
       if (avr_mega_p)                          \
        builtin_define ("__AVR_MEGA__");        \
       if (TARGET_NO_INTERRUPTS)                        \
@@ -49,7 +51,7 @@ Boston, MA 02110-1301, USA.  */
 extern const char *avr_base_arch_macro;
 extern const char *avr_extra_arch_macro;
 extern int avr_mega_p;
-extern int avr_enhanced_p;
+extern int avr_have_mul_p;
 extern int avr_asm_only_p;
 extern int avr_have_movw_lpmx_p;
 #ifndef IN_LIBGCC2
@@ -57,8 +59,9 @@ extern GTY(()) section *progmem_section;
 #endif
 
 #define AVR_MEGA (avr_mega_p && !TARGET_SHORT_CALLS)
-#define AVR_ENHANCED (avr_enhanced_p)
+#define AVR_HAVE_MUL (avr_have_mul_p)
 #define AVR_HAVE_MOVW (avr_have_movw_lpmx_p)
+#define AVR_HAVE_LPMX (avr_have_movw_lpmx_p)
 
 #define TARGET_VERSION fprintf (stderr, " (GNU assembler syntax)");
 
index 38cee2d..d0b96e1 100644 (file)
                 (match_operand:QI 2 "register_operand" "")))]
   ""
   "{
-  if (!AVR_ENHANCED)
+  if (!AVR_HAVE_MUL)
     {
       emit_insn (gen_mulqi3_call (operands[0], operands[1], operands[2]));
       DONE;
   [(set (match_operand:QI 0 "register_operand" "=r")
        (mult:QI (match_operand:QI 1 "register_operand" "r")
                 (match_operand:QI 2 "register_operand" "r")))]
-  "AVR_ENHANCED"
+  "AVR_HAVE_MUL"
   "mul %1,%2
        mov %0,r0
        clr r1"
 (define_insn "*mulqi3_call"
   [(set (reg:QI 24) (mult:QI (reg:QI 24) (reg:QI 22)))
    (clobber (reg:QI 22))]
-  "!AVR_ENHANCED"
+  "!AVR_HAVE_MUL"
   "%~call __mulqi3"
   [(set_attr "type" "xcall")
    (set_attr "cc" "clobber")])
   [(set (match_operand:HI 0 "register_operand" "=r")
        (mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "d"))
                 (sign_extend:HI (match_operand:QI 2 "register_operand" "d"))))]
-  "AVR_ENHANCED"
+  "AVR_HAVE_MUL"
   "muls %1,%2
        movw %0,r0
        clr r1"
   [(set (match_operand:HI 0 "register_operand" "=r")
        (mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))
                 (zero_extend:HI (match_operand:QI 2 "register_operand" "r"))))]
-  "AVR_ENHANCED"
+  "AVR_HAVE_MUL"
   "mul %1,%2
        movw %0,r0
        clr r1"
   ""
   "
 {
-  if (!AVR_ENHANCED)
+  if (!AVR_HAVE_MUL)
     {
       emit_insn (gen_mulhi3_call (operands[0], operands[1], operands[2]));
       DONE;
   [(set (match_operand:HI 0 "register_operand" "=&r")
        (mult:HI (match_operand:HI 1 "register_operand" "r")
                 (match_operand:HI 2 "register_operand" "r")))]
-  "AVR_ENHANCED"
+  "AVR_HAVE_MUL"
   "mul %A1,%A2
        movw %0,r0
        mul %A1,%B2
   [(set (reg:HI 24) (mult:HI (reg:HI 24) (reg:HI 22)))
    (clobber (reg:HI 22))
    (clobber (reg:QI 21))]
-  "!AVR_ENHANCED"
+  "!AVR_HAVE_MUL"
   "%~call __mulhi3"
   [(set_attr "type" "xcall")
    (set_attr "cc" "clobber")])
              (clobber (reg:HI 26))
              (clobber (reg:HI 30))])
    (set (match_operand:SI 0 "register_operand" "") (reg:SI 22))]
-  "AVR_ENHANCED"
+  "AVR_HAVE_MUL"
   "")
 
 (define_insn "*mulsi3_call"
   [(set (reg:SI 22) (mult:SI (reg:SI 22) (reg:SI 18)))
    (clobber (reg:HI 26))
    (clobber (reg:HI 30))]
-  "AVR_ENHANCED"
+  "AVR_HAVE_MUL"
   "%~call __mulsi3"
   [(set_attr "type" "xcall")
    (set_attr "cc" "clobber")])
                        UNSPEC_INDEX_JMP))
    (use (label_ref (match_operand 1 "" "")))
    (clobber (match_dup 0))]
-  "AVR_MEGA && AVR_ENHANCED"
+  "AVR_MEGA && AVR_HAVE_LPMX"
   "lsl r30
        rol r31
        lpm __tmp_reg__,Z+
index d542bc8..c6814fe 100644 (file)
@@ -1,5 +1,5 @@
 /*  -*- Mode: Asm -*-  */
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2007 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
 
 This file is free software; you can redistribute it and/or modify it
@@ -56,7 +56,7 @@ Boston, MA 02110-1301, USA.  */
        .endm
 
 /* Note: mulqi3, mulhi3 are open-coded on the enhanced core.  */
-#if !defined (__AVR_ENHANCED__)
+#if !defined (__AVR_HAVE_MUL__)
 /*******************************************************
                Multiplication  8 x 8
 *******************************************************/
@@ -159,7 +159,7 @@ __mulhi3_exit:
 
 .endfunc
 #endif /* defined (L_mulhi3) */
-#endif /* !defined (__AVR_ENHANCED__) */
+#endif /* !defined (__AVR_HAVE_MUL__) */
 
 #if defined (L_mulhisi3)
        .global __mulhisi3
@@ -217,7 +217,7 @@ __umulhisi3:
        .global __mulsi3
        .func   __mulsi3
 __mulsi3:
-#if defined (__AVR_ENHANCED__)
+#if defined (__AVR_HAVE_MUL__)
        mul     r_arg1L, r_arg2L
        movw    r_resL, r0
        mul     r_arg1H, r_arg2H
@@ -281,7 +281,7 @@ __mulsi3_exit:
        mov_h   r_arg1H,r_resH
        mov_l   r_arg1L,r_resL
        ret
-#endif /* !defined (__AVR_ENHANCED__) */
+#endif /* defined (__AVR_HAVE_MUL__) */
 #undef r_arg1L 
 #undef r_arg1H 
 #undef r_arg1HL
@@ -668,7 +668,7 @@ __tablejump2__:
        rol     r31
        .global __tablejump__
 __tablejump__:
-#if defined (__AVR_ENHANCED__)
+#if defined (__AVR_HAVE_LPMX__)
        lpm     __tmp_reg__, Z+
        lpm     r31, Z
        mov     r30, __tmp_reg__