]> gcc.gnu.org Git - gcc.git/commitdiff
arm.c (is_load_address): Rename to...
authorNick Clifton <nickc@redhat.com>
Wed, 26 Feb 2003 11:26:37 +0000 (11:26 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Wed, 26 Feb 2003 11:26:37 +0000 (11:26 +0000)
* config/arm/arm.c (is_load_address): Rename to... (arm_memory_load_p) ... this
and make it check for SUBREGs and constant loads that will be converted into
loads from the minipool.
(is_cirrus_insn): Rename to ... (arm_cirrus_insn_p): ... this, for consistency.
Replace test of CIRRUS_NO with CIRRUS_NOT.
(cirrus_reorg): Use renamed functions.
(note_invalid_constants): Change from a void function to bool.  Add an extra
parameter, saying whether the fixups should be pushed.  Return true if fixups
are needed.
(arm_reorg): Use renamed functions.  Use INSN_P.  Replace test of CIRRUS_NO
with CIRRUS_NOT.
* config/arm/arm.h (FLOAT_WORDS_BIG_ENDIAN): Mention that other floating point
co-processors can also affect this.
* config/arm/arm.md ("type" attribute): Add mav_farith and mav_dmult.  Replace
references to "cirrus_type" attribute with "type".
* config/arm/cirrus.md ("cirrus_fpu" attribute): Delete.
("cirrus_type" attribute): Delete - use "type" instead.
("cirrus" attribute): Replace 'no' with 'not' and 'yes' with 'normal'.

From-SVN: r63466

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md
gcc/config/arm/cirrus.md

index b3fc381d9a59232ce4d6168dc0ce5fa7da023aec..ecba1ee497d117816e511dd4f0b3e7e72657eec1 100644 (file)
@@ -1,3 +1,28 @@
+2003-02-26  Nick Clifton  <nickc@redhat.com>
+
+       * config/arm/arm.c (is_load_address): Rename to...
+        (arm_memory_load_p) ... this and make it check for SUBREGs and
+        constant loads that will be converted into loads from the
+        minipool.
+        (is_cirrus_insn): Rename to ...
+        (arm_cirrus_insn_p): ... this, for consistency.  Replace test
+        of CIRRUS_NO with CIRRUS_NOT.
+        (cirrus_reorg): Use renamed functions.
+        (note_invalid_constants): Change from a void function to bool.
+        Add an extra parameter, saying whether the fixups should be
+        pushed.  Return true if fixups are needed.
+        (arm_reorg): Use renamed functions.  Use INSN_P.  Replace test
+        of CIRRUS_NO with CIRRUS_NOT.
+        * config/arm/arm.h (FLOAT_WORDS_BIG_ENDIAN): Mention that
+        other floating point co-processors can also affect this.
+        * config/arm/arm.md ("type" attribute): Add mav_farith and
+        mav_dmult.  Replace references to "cirrus_type" attribute with
+        "type".
+        * config/arm/cirrus.md ("cirrus_fpu" attribute): Delete.
+        ("cirrus_type" attribute): Delete - use "type" instead.
+        ("cirrus" attribute): Replace 'no' with 'not' and 'yes' with
+        'normal'.        
+
 Tue Feb 25 22:46:27 CET 2003  Jan Hubicka  <jh@suse.cz>
 
        * objc-act.c: Include cgraph.h
index 5650ffbd086a8e4fc1a8b389ed1a243f15164b3f..092e934f5f31bbaece6cbe00d91227766f26a795 100644 (file)
@@ -75,11 +75,8 @@ static void      arm_add_gc_roots            PARAMS ((void));
 static int       arm_gen_constant              PARAMS ((enum rtx_code, Mmode, Hint, rtx, rtx, int, int));
 static unsigned  bit_count                     PARAMS ((Ulong));
 static int      arm_address_register_rtx_p     PARAMS ((rtx, int));
-static int      arm_legitimate_index_p         PARAMS ((enum machine_mode,
-                                                        rtx, int));
-static int      thumb_base_register_rtx_p      PARAMS ((rtx, 
-                                                        enum machine_mode,
-                                                        int));
+static int      arm_legitimate_index_p         PARAMS ((Mmode, rtx, int));
+static int      thumb_base_register_rtx_p      PARAMS ((rtx, Mmode, int));
 inline static int thumb_index_register_rtx_p   PARAMS ((rtx, int));
 static int       const_ok_for_op               PARAMS ((Hint, enum rtx_code));
 static int       eliminate_lr2ip               PARAMS ((rtx *));
@@ -116,7 +113,7 @@ static int   arm_barrier_cost               PARAMS ((rtx));
 static Mfix *    create_fix_barrier            PARAMS ((Mfix *, Hint));
 static void     push_minipool_barrier          PARAMS ((rtx, Hint));
 static void     push_minipool_fix              PARAMS ((rtx, Hint, rtx *, Mmode, rtx));
-static void     note_invalid_constants         PARAMS ((rtx, Hint));
+static bool     note_invalid_constants         PARAMS ((rtx, Hint, bool));
 static int       current_file_function_operand PARAMS ((rtx));
 static Ulong    arm_compute_save_reg0_reg12_mask  PARAMS ((void));
 static Ulong     arm_compute_save_reg_mask     PARAMS ((void));
@@ -128,31 +125,28 @@ static void        arm_output_function_epilogue   PARAMS ((FILE *, Hint));
 static void     arm_output_function_prologue   PARAMS ((FILE *, Hint));
 static void     thumb_output_function_prologue PARAMS ((FILE *, Hint));
 static int      arm_comp_type_attributes       PARAMS ((tree, tree));
-static void     arm_set_default_type_attributes  PARAMS ((tree));
+static void     arm_set_default_type_attributes PARAMS ((tree));
 static int      arm_adjust_cost                PARAMS ((rtx, rtx, rtx, int));
-static int      count_insns_for_constant       PARAMS ((HOST_WIDE_INT, int));
+static int      count_insns_for_constant       PARAMS ((Hint, int));
 static int      arm_get_strip_length           PARAMS ((int));
 static bool      arm_function_ok_for_sibcall    PARAMS ((tree, tree));
+static void     arm_internal_label             PARAMS ((FILE *, Ccstar, Ulong));
+static void      arm_output_mi_thunk           PARAMS ((FILE *, tree, Hint, Hint, tree));
+static int       arm_rtx_costs_1               PARAMS ((rtx, enum rtx_code, enum rtx_code));
+static bool      arm_rtx_costs                 PARAMS ((rtx, int, int, int *));
+static int       arm_address_cost              PARAMS ((rtx));
+static bool     arm_memory_load_p              PARAMS ((rtx));
+static bool      arm_cirrus_insn_p              PARAMS ((rtx));
+static void      cirrus_reorg                   PARAMS ((rtx));
 #ifdef OBJECT_FORMAT_ELF
-static void     arm_elf_asm_named_section      PARAMS ((const char *, unsigned int));
+static void     arm_elf_asm_named_section      PARAMS ((Ccstar, unsigned int));
 #endif
 #ifndef ARM_PE
 static void     arm_encode_section_info        PARAMS ((tree, int));
 #endif
 #ifdef AOF_ASSEMBLER
-static void     aof_globalize_label            PARAMS ((FILE *, const char *));
+static void     aof_globalize_label            PARAMS ((FILE *, Ccstar));
 #endif
-static void     arm_internal_label             PARAMS ((FILE *, const char *, unsigned long));
-static void arm_output_mi_thunk                        PARAMS ((FILE *, tree,
-                                                        HOST_WIDE_INT,
-                                                        HOST_WIDE_INT, tree));
-static int arm_rtx_costs_1                     PARAMS ((rtx, enum rtx_code,
-                                                        enum rtx_code));
-static bool arm_rtx_costs                      PARAMS ((rtx, int, int, int*));
-static int arm_address_cost                    PARAMS ((rtx));
-static int      is_load_address                PARAMS ((rtx));
-static int       is_cirrus_insn                 PARAMS ((rtx));
-static void      cirrus_reorg                   PARAMS ((rtx));
 
 #undef Hint
 #undef Mmode
@@ -3984,38 +3978,47 @@ cirrus_shift_const (op, mode)
          && INTVAL (op) < 64);
 }
 
-/* Return nonzero if INSN is an LDR R0,ADDR instruction.  */
+/* Returns TRUE if INSN is an "LDR REG, ADDR" instruction.
+   Use by the Cirrus Maverick code which has to workaround
+   a hardware bug triggered by such instructions.  */
 
-static int
-is_load_address (insn)
+static bool
+arm_memory_load_p (insn)
      rtx insn;
 {
   rtx body, lhs, rhs;;
 
-  if (!insn)
-    return 0;
-
-  if (GET_CODE (insn) != INSN)
-    return 0;
+  if (insn == NULL_RTX || GET_CODE (insn) != INSN)
+    return false;
 
   body = PATTERN (insn);
 
   if (GET_CODE (body) != SET)
-    return 0;
+    return false;
 
   lhs = XEXP (body, 0);
   rhs = XEXP (body, 1);
 
-  return (GET_CODE (lhs) == REG
-         && REGNO_REG_CLASS (REGNO (lhs)) == GENERAL_REGS
-         && (GET_CODE (rhs) == MEM
-             || GET_CODE (rhs) == SYMBOL_REF));
+  lhs = REG_OR_SUBREG_RTX (lhs);
+
+  /* If the destination is not a general purpose
+     register we do not have to worry.  */
+  if (GET_CODE (lhs) != REG
+      || REGNO_REG_CLASS (REGNO (lhs)) != GENERAL_REGS)
+    return false;
+
+  /* As well as loads from memory we also have to react
+     to loads of invalid constants which will be turned
+     into loads from the minipool.  */
+  return (GET_CODE (rhs) == MEM
+         || GET_CODE (rhs) == SYMBOL_REF
+         || note_invalid_constants (insn, -1, false));
 }
 
-/* Return nonzero if INSN is a Cirrus instruction.  */
+/* Return TRUE if INSN is a Cirrus instruction.  */
 
-static int
-is_cirrus_insn (insn)
+static bool
+arm_cirrus_insn_p (insn)
      rtx insn;
 {
   enum attr_cirrus attr;
@@ -4029,7 +4032,7 @@ is_cirrus_insn (insn)
 
   attr = get_attr_cirrus (insn);
 
-  return attr != CIRRUS_NO;
+  return attr != CIRRUS_NOT;
 }
 
 /* Cirrus reorg for invalid instruction combinations.  */
@@ -4049,10 +4052,10 @@ cirrus_reorg (first)
       nops = 0;
       t = next_nonnote_insn (first);
 
-      if (is_cirrus_insn (t))
+      if (arm_cirrus_insn_p (t))
        ++ nops;
 
-      if (is_cirrus_insn (next_nonnote_insn (t)))
+      if (arm_cirrus_insn_p (next_nonnote_insn (t)))
        ++ nops;
 
       while (nops --)
@@ -4073,12 +4076,12 @@ cirrus_reorg (first)
         be followed by a non Cirrus insn.  */
       if (get_attr_cirrus (first) == CIRRUS_DOUBLE)
        {
-         if (is_cirrus_insn (next_nonnote_insn (first)))
+         if (arm_cirrus_insn_p (next_nonnote_insn (first)))
            emit_insn_after (gen_nop (), first);
 
          return;
        }
-      else if (is_load_address (first))
+      else if (arm_memory_load_p (first))
        {
          unsigned int arm_regno;
 
@@ -4102,7 +4105,7 @@ cirrus_reorg (first)
          /* Next insn.  */
          first = next_nonnote_insn (first);
 
-         if (!is_cirrus_insn (first))
+         if (! arm_cirrus_insn_p (first))
            return;
 
          body = PATTERN (first);
@@ -4140,10 +4143,10 @@ cirrus_reorg (first)
 
       t = next_nonnote_insn (first);
 
-      if (is_cirrus_insn (t))
+      if (arm_cirrus_insn_p (t))
        ++ nops;
 
-      if (is_cirrus_insn (next_nonnote_insn (t)))
+      if (arm_cirrus_insn_p (next_nonnote_insn (t)))
        ++ nops;
 
       while (nops --)
@@ -6910,13 +6913,19 @@ push_minipool_fix (insn, address, loc, mode, value)
   minipool_fix_tail = fix;
 }
 
-/* Scan INSN and note any of its operands that need fixing.  */
+/* Scan INSN and note any of its operands that need fixing.
+   If DO_PUSHES is false we do not actually push any of the fixups
+   needed.  The function returns TRUE is any fixups were needed/pushed.
+   This is used by arm_memory_load_p() which needs to know about loads
+   of constants that will be converted into minipool loads.  */
 
-static void
-note_invalid_constants (insn, address)
+static bool
+note_invalid_constants (insn, address, do_pushes)
      rtx insn;
      HOST_WIDE_INT address;
+     bool do_pushes;
 {
+  bool result = false;
   int opno;
 
   extract_insn (insn);
@@ -6924,8 +6933,7 @@ note_invalid_constants (insn, address)
   if (!constrain_operands (1))
     fatal_insn_not_found (insn);
 
-  /* Fill in recog_op_alt with information about the constraints of this
-     insn.  */
+  /* Fill in recog_op_alt with information about the constraints of this insn.  */
   preprocess_constraints ();
 
   for (opno = 0; opno < recog_data.n_operands; opno++)
@@ -6943,27 +6951,27 @@ note_invalid_constants (insn, address)
          rtx op = recog_data.operand[opno];
 
          if (CONSTANT_P (op))
-           push_minipool_fix (insn, address, recog_data.operand_loc[opno],
-                              recog_data.operand_mode[opno], op);
-#if 0
-         /* RWE: Now we look correctly at the operands for the insn,
-            this shouldn't be needed any more.  */
-#ifndef AOF_ASSEMBLER
-         /* XXX Is this still needed?  */
-         else if (GET_CODE (op) == UNSPEC && XINT (op, 1) == UNSPEC_PIC_SYM)
-           push_minipool_fix (insn, address, recog_data.operand_loc[opno],
-                              recog_data.operand_mode[opno],
-                              XVECEXP (op, 0, 0));
-#endif
-#endif
+           {
+             if (do_pushes)
+               push_minipool_fix (insn, address, recog_data.operand_loc[opno],
+                                  recog_data.operand_mode[opno], op);
+             result = true;
+           }
          else if (GET_CODE (op) == MEM
                   && GET_CODE (XEXP (op, 0)) == SYMBOL_REF
                   && CONSTANT_POOL_ADDRESS_P (XEXP (op, 0)))
-           push_minipool_fix (insn, address, recog_data.operand_loc[opno],
-                              recog_data.operand_mode[opno],
-                              get_pool_constant (XEXP (op, 0)));
+           {
+             if (do_pushes)
+               push_minipool_fix (insn, address, recog_data.operand_loc[opno],
+                                  recog_data.operand_mode[opno],
+                                  get_pool_constant (XEXP (op, 0)));
+
+             result = true;
+           }
        }
     }
+
+  return result;
 }
 
 void
@@ -6985,19 +6993,18 @@ arm_reorg (first)
   for (insn = next_nonnote_insn (first); insn; insn = next_nonnote_insn (insn))
     {
       if (TARGET_CIRRUS_FIX_INVALID_INSNS
-          && (is_cirrus_insn (insn)
+          && (arm_cirrus_insn_p (insn)
              || GET_CODE (insn) == JUMP_INSN
-             || is_load_address (insn)))
+             || arm_memory_load_p (insn)))
        cirrus_reorg (insn);
 
       if (GET_CODE (insn) == BARRIER)
        push_minipool_barrier (insn, address);
-      else if (GET_CODE (insn) == INSN || GET_CODE (insn) == CALL_INSN
-              || GET_CODE (insn) == JUMP_INSN)
+      else if (INSN_P (insn))
        {
          rtx table;
 
-         note_invalid_constants (insn, address);
+         note_invalid_constants (insn, address, true);
          address += get_attr_length (insn);
 
          /* If the insn is a vector jump, add the size of the table
@@ -10134,7 +10141,7 @@ arm_final_prescan_insn (insn)
                 instructions to be safe.  */
              if (GET_CODE (scanbody) != USE
                  && GET_CODE (scanbody) != CLOBBER
-                 && get_attr_cirrus (this_insn) != CIRRUS_NO)
+                 && get_attr_cirrus (this_insn) != CIRRUS_NOT)
                fail = TRUE;
              break;
 
index 3856446bc56b4b515293a9b2f1753ab6307094b5..01861f3a9e29da7d27f57c1865723d74eaf1d554 100644 (file)
@@ -698,8 +698,8 @@ extern int arm_is_6_or_7;
 #endif
 
 /* Define this if most significant word of doubles is the lowest numbered.
-   The rules are different based on whether or not we use FPA-format or
-   VFP-format doubles.  */
+   The rules are different based on whether or not we use FPA-format,
+   VFP-format or some other floating point co-processor's format doubles.  */
 #define FLOAT_WORDS_BIG_ENDIAN (arm_float_words_big_endian ())
 
 #define UNITS_PER_WORD 4
index 8bde2265b8b39a3fc582dc5bea2ba9684a17ae6a..0400609aa7a23d1ffe533cc2193fa74ac9ebe8f6 100644 (file)
 ; store2       store 2 words
 ; store3       store 3 words
 ; store4       store 4 words
+;  Additions for Cirrus Maverick co-processor:
+; mav_farith   Floating point arithmetic (4 cycle)
+; mav_dmult    Double multiplies (7 cycle)
 ;
 (define_attr "type"
-       "normal,mult,block,float,fdivx,fdivd,fdivs,fmul,ffmul,farith,ffarith,float_em,f_load,f_store,f_mem_r,r_mem_f,f_2_r,r_2_f,call,load,store1,store2,store3,store4" 
+       "normal,mult,block,float,fdivx,fdivd,fdivs,fmul,ffmul,farith,ffarith,float_em,f_load,f_store,f_mem_r,r_mem_f,f_2_r,r_2_f,call,load,store1,store2,store3,store4,mav_farith,mav_dmult
        (const_string "normal"))
 
 ; Load scheduling, set from the arm_ld_sched variable
    (set_attr "type" "f_2_r")]
 )
 
-;; There is no CCFPE or CCFP modes in the code below so we can have
-;; one pattern to match either one.  Besides, we're pretty sure we
-;; have either CCFPE or CCFP because we made the patterns
-;; (arm_gen_compare_reg).
-
 ;; Cirrus SF compare instruction
 (define_insn "*cirrus_cmpsf"
   [(set (reg:CCFP CC_REGNUM)
                      (match_operand:SF 1 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcmps%?\\tr15, %V0, %V1"
-  [(set_attr "cirrus_type" "farith")
+  [(set_attr "type"   "mav_farith")
    (set_attr "cirrus" "compare")]
 )
 
                      (match_operand:DF 1 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcmpd%?\\tr15, %V0, %V1"
-  [(set_attr "cirrus_type" "farith")
+  [(set_attr "type"   "mav_farith")
    (set_attr "cirrus" "compare")]
 )
 
                    (match_operand:DI 1 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcmp64%?\\tr15, %V0, %V1"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "compare")]
-)
-
-;; Cirrus SI compare instruction
-(define_insn "*cirrus_cmpsi_1"
-  [(set (reg:CC CC_REGNUM)
-       (compare:CC (match_operand:SI 0 "cirrus_fp_register" "v")
-                   (match_operand:SI 1 "cirrus_fp_register" "v")))]
-  "TARGET_ARM && TARGET_CIRRUS && 0"
-  "cfcmp32%?\\tr15, %V0, %V1"
-  [(set_attr "cirrus_type" "farith")
+  [(set_attr "type"   "mav_farith")
    (set_attr "cirrus" "compare")]
 )
 
index 24cd334f3c0fb3e51602883717f2e40005beab88..07a40a25f9582de2ee8865ef36cd4f601c5f94df 100644 (file)
 ;; Boston, MA 02111-1307, USA.
 
 
-(define_attr "cirrus_fpu" "fpa,fpe2,fpe3,yes" (const (symbol_ref "arm_fpu_attr")))
-
-; Classification of each insn
-; farith       Floating point arithmetic (4 cycle)
-; dmult                Double multiplies (7 cycle)
-(define_attr "cirrus_type" "normal,farith,dmult" (const_string "normal"))
-
 ; Cirrus types for invalid insn combinations
-; no           Not a cirrus insn
-; yes          Cirrus insn
+; not          Not a cirrus insn
+; normal       Any Cirrus insn not covered by the special cases below
 ; double       cfldrd, cfldr64, cfstrd, cfstr64
 ; compare      cfcmps, cfcmpd, cfcmp32, cfcmp64
 ; move         cfmvdlr, cfmvdhr, cfmvsr, cfmv64lr, cfmv64hr
-(define_attr "cirrus" "no,yes,double,compare,move" (const_string "no"))
-\f
-(define_function_unit "cirrus_fpa" 1 0
-  (and (eq_attr "cirrus_fpu" "yes")
-       (eq_attr "cirrus_type" "farith")) 4 1)
-
-(define_function_unit "cirrus_fpa" 1 0
-  (and (eq_attr "cirrus_fpu" "yes")
-       (eq_attr "cirrus_type" "dmult")) 7 4)
+(define_attr "cirrus" "not,normal,double,compare,move" (const_string "not"))
 
-(define_function_unit "cirrus_fpa" 1 0
-  (and (eq_attr "cirrus_fpu" "yes")
-       (eq_attr "cirrus_type" "normal")) 1 1)
 \f
 (define_insn "cirrus_adddi3"
   [(set (match_operand:DI          0 "cirrus_fp_register" "=v")
@@ -54,8 +36,8 @@
                 (match_operand:DI 2 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfadd64%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_addsi3"
@@ -64,8 +46,8 @@
                 (match_operand:SI 2 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfadd32%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 ;; define_insn replaced by define_expand and define_insn
@@ -86,8 +68,8 @@
                 (match_operand:SF 2 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfadds%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 ;; define_insn replaced by define_expand and define_insn
                 (match_operand:DF 2 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfaddd%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "cirrus_subdi3"
                  (match_operand:DI 2 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfsub64%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_subsi3_insn"
                  (match_operand:SI 2 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfsub32%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_expand "subsf3"
                  (match_operand:SF 2 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfsubs%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_expand "subdf3"
                  (match_operand:DF 2 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfsubd%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_mulsi3"
                 (match_operand:SI 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfmul32%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "muldi3"
                 (match_operand:DI 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfmul64%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "dmult")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_dmult")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_mulsi3addsi"
          (match_operand:SI          3 "cirrus_fp_register"  "0")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfmac32%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 ;; Cirrus SI multiply-subtract
                   (match_operand:SI 3 "cirrus_fp_register"  "v"))))]
   "0 && TARGET_ARM && TARGET_CIRRUS"
   "cfmsc32%?\\t%V0, %V2, %V3"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_expand "mulsf3"
                 (match_operand:SF 2 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfmuls%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "farith")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_farith")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_expand "muldf3"
                 (match_operand:DF 2 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfmuld%?\\t%V0, %V1, %V2"
-  [(set_attr "cirrus_type" "dmult")
-   (set_attr "cirrus" "yes")]
+  [(set_attr "type" "mav_dmult")
+   (set_attr "cirrus" "normal")]
 )
 
 (define_insn "cirrus_ashl_const"
                   (match_operand:SI 2 "cirrus_shift_const"  "")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfsh32%?\\t%V0, %V1, #%s2"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "cirrus_ashiftrt_const"
                     (match_operand:SI 2 "cirrus_shift_const"  "")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfsh32%?\\t%V0, %V1, #-%s2"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "cirrus_ashlsi3"
                   (match_operand:SI 2 "register_operand"    "r")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfrshl32%?\\t%V1, %V0, %s2"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "ashldi3_cirrus"
                   (match_operand:SI 2 "register_operand"    "r")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfrshl64%?\\t%V1, %V0, %s2"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "cirrus_ashldi_const"
                   (match_operand:SI 2 "cirrus_shift_const"  "")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfsh64%?\\t%V0, %V1, #%s2"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "cirrus_ashiftrtdi_const"
                     (match_operand:SI 2 "cirrus_shift_const"  "")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfsh64%?\\t%V0, %V1, #-%s2"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_absdi2"
        (abs:DI (match_operand:DI 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfabs64%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 ;; This doesn't really clobber ``cc''.  Fixme: aldyh.  
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfneg64%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_negsi2"
        (neg:SI (match_operand:SI 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfneg32%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_expand "negsf2"
        (neg:SF (match_operand:SF 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfnegs%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_expand "negdf2"
        (neg:DF (match_operand:DF 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfnegd%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_expand "abssi2"
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_ARM && TARGET_CIRRUS && 0"
   "cfabs32%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_expand "abssf2"
         (abs:SF (match_operand:SF 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfabss%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_expand "absdf2"
         (abs:DF (match_operand:DF 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfabsd%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_expand "floatsisf2"
        (float:SF (match_operand:DI 1 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcvt64s%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")])
+  [(set_attr "cirrus" "normal")])
 
 (define_insn "floatdidf2"
   [(set (match_operand:DF 0 "cirrus_fp_register" "=v")
        (float:DF (match_operand:DI 1 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcvt64d%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")])
+  [(set_attr "cirrus" "normal")])
 
 (define_expand "fix_truncsfsi2"
   [(set (match_operand:SI         0 "s_register_operand" "")
   "TARGET_ARM && TARGET_CIRRUS"
   "cftruncs32%?\\t%Y2, %V1\;cfmvr64l%?\\t%0, %Z2"
   [(set_attr "length" "8")
-   (set_attr "cirrus" "yes")]
+   (set_attr "cirrus" "normal")]
 )
 
 (define_expand "fix_truncdfsi2"
          (match_operand:DF 1 "cirrus_fp_register" "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcvtds%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_extendsfdf2"
         (float_extend:DF (match_operand:SF 1 "cirrus_fp_register"  "v")))]
   "TARGET_ARM && TARGET_CIRRUS"
   "cfcvtsd%?\\t%V0, %V1"
-  [(set_attr "cirrus" "yes")]
+  [(set_attr "cirrus" "normal")]
 )
 
 (define_insn "*cirrus_arm_movdi"
     default: abort ();
     }
   }"
-  [(set_attr "length" "8,8,8,8,8,4,4,4")
-   (set_attr "type" "*,load,store2,*,*,load,store2,*")
-   (set_attr "pool_range" "*,1020,*,*,*,*,*,*")
-   (set_attr "neg_pool_range" "*,1012,*,*,*,*,*,*")
-   (set_attr "cirrus" "no,no,no,move,yes,double,double,yes")]
+  [(set_attr "length"         "  8,   8,     8,   8,     8,     4,     4,     4")
+   (set_attr "type"           "  *,load,store2,   *,     *,  load,store2,     *")
+   (set_attr "pool_range"     "  *,1020,     *,   *,     *,     *,     *,     *")
+   (set_attr "neg_pool_range" "  *,1012,     *,   *,     *,     *,     *,     *")
+   (set_attr "cirrus"         "not, not,   not,move,normal,double,double,normal")]
 )
 
 ;; Cirrus SI values have been outlawed.  Look in arm.h for the comment
    cfldr32%?\\t%V0, %1
    cfstr32%?\\t%V1, %0
    cfsh32%?\\t%V0, %V1, #0"
-  [(set_attr "type" "*,*,load,store1,*,*,load,store1,*")
-   (set_attr "pool_range" "*,*,4096,*,*,*,1024,*,*")
-   (set_attr "neg_pool_range" "*,*,4084,*,*,*,1012,*,*")
-   (set_attr "cirrus" "no,no,no,no,move,yes,yes,yes,yes")]
+  [(set_attr "type"           "*,  *,  load,store1,   *,     *,  load,store1,     *")
+   (set_attr "pool_range"     "*,  *,  4096,     *,   *,     *,  1024,     *,     *")
+   (set_attr "neg_pool_range" "*,  *,  4084,     *,   *,     *,  1012,     *,     *")
+   (set_attr "cirrus"         "not,not, not,   not,move,normal,normal,normal,normal")]
 )
 
 (define_insn "*cirrus_movsf_hard_insn"
    mov%?\\t%0, %1
    ldr%?\\t%0, %1\\t%@ float
    str%?\\t%1, %0\\t%@ float"
-  [(set_attr "length" "*,*,*,*,*,4,4,4")
-   (set_attr "type" "*,load,*,*,store1,*,load,store1")
-   (set_attr "pool_range" "*,*,*,*,*,*,4096,*")
-   (set_attr "neg_pool_range" "*,*,*,*,*,*,4084,*")
-   (set_attr "cirrus" "yes,yes,move,yes,yes,no,no,no")]
+  [(set_attr "length"         "     *,     *,   *,     *,     *,  4,   4,     4")
+   (set_attr "type"           "     *,  load,   *,     *,store1,  *,load,store1")
+   (set_attr "pool_range"     "     *,     *,   *,     *,     *,  *,4096,     *")
+   (set_attr "neg_pool_range" "     *,     *,   *,     *,     *,  *,4084,     *")
+   (set_attr "cirrus"         "normal,normal,move,normal,normal,not, not,   not")]
 )
 
 (define_insn "*cirrus_movdf_hard_insn"
     default: abort ();
     }
   }"
-  [(set_attr "type" "load,store2,*,store2,load,*,load,*,*,store2")
-   (set_attr "length" "4,4,8,8,8,4,4,8,8,4")
-   (set_attr "pool_range" "*,*,*,*,252,*,*,*,*,*")
-   (set_attr "neg_pool_range" "*,*,*,*,244,*,*,*,*,*")
-   (set_attr "cirrus" "no,no,no,no,no,yes,double,move,yes,double")]
+  [(set_attr "type"           "load,store2,  *,store2,load,     *,  load,   *,     *,store2")
+   (set_attr "length"         "   4,     4,  8,     8,   8,     4,     4,   8,     8,     4")
+   (set_attr "pool_range"     "   *,     *,  *,     *, 252,     *,     *,   *,     *,     *")
+   (set_attr "neg_pool_range" "   *,     *,  *,     *, 244,     *,     *,   *,     *,     *")
+   (set_attr "cirrus"         " not,   not,not,   not, not,normal,double,move,normal,double")]
 )
 
This page took 0.150209 seconds and 5 git commands to generate.