]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
(all patterns): length attribute now describes length in bytes.
authorRichard Earnshaw <erich@gnu.org>
Wed, 1 Jun 1994 08:53:42 +0000 (08:53 +0000)
committerRichard Earnshaw <erich@gnu.org>
Wed, 1 Jun 1994 08:53:42 +0000 (08:53 +0000)
From-SVN: r7415

gcc/config/arm/arm.md

index e25c674bad0f822b9f67b50f6f7dd15beb3f7076..3228e6476bd453be42087fe519842944d7c4aade 100644 (file)
 
 (define_attr "cpu" "arm2,arm3,arm6" (const (symbol_ref "arm_cpu_attr")))
 
-; LENGTH, all instructions are 4 bytes
-(define_attr "length" "" (const_int 1))
+; LENGTH of an instruction (in bytes)
+(define_attr "length" "" (const_int 4))
 
 ; An assembler sequence may clobber the condition codes without us knowing
 (define_asm_attributes
  [(set_attr "conds" "clob")
-  (set_attr "length" "1")])
+  (set_attr "length" "4")])
 
 ; TYPE attribute is used to detect floating point instructions which, if
 ; running on a co-processor can run in parallel with other, basic instructions
   return (arm_output_asm_insn (\"adc\\t%R0, %R1, %R2\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   return (arm_output_asm_insn (\"adc\\t%R0, %R2, %1, asr #31\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   return (arm_output_asm_insn (\"adc\\t%R0, %R2, #0\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn "addsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (\"add%d2\\t%0, %1, #1\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "*,2")])
+ (set_attr "length" "*,8")])
 
 ; If a constant is too big to fit in a single instruction then the constant
 ; will be pre-loaded into a register taking at least two insns, we might be
   return (arm_output_asm_insn (\"sbc\\t%R0, %R1, %R2\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   return (arm_output_asm_insn (\"sbc\\t%R0, %R1, #0\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   return (arm_output_asm_insn (\"sbc\\t%R0, %R1, %2, asr #31\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   return (arm_output_asm_insn (\"rsc\\t%R0, %R1, #0\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   return (arm_output_asm_insn (\"rsc\\t%R0, %R1, %2, asr #31\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=r")
          operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn "subsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
   return arm_output_asm_insn (\"sub%d2\\t%0, %1, #1\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "*,2")])
+ (set_attr "length" "*,8")])
 
 (define_insn "subsf3"
   [(set (match_operand:SF 0 "s_register_operand" "=f,f")
   arm_output_asm_insn (\"and\\t%0, %1, %2\", operands);
   return (arm_output_asm_insn (\"and\\t%R0, %R1, %R2\", operands));
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   arm_output_asm_insn (\"and\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"mov\\t%R0, #0\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   arm_output_asm_insn (\"and\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"and\\t%R0, %R1, %2, asr #31\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn "andsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
 }
 "
 [(set_attr "conds" "set")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 ;; constants for op 2 will never be given to these patterns.
 (define_insn ""
   arm_output_asm_insn (\"bic\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"bic\\t%R0, %R1, %R2\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
   
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
     return arm_output_asm_insn (\"mov\\t%R0, %R1\", operands);
   return \"\";
 "
-[(set_attr "length" "2,1")])
+[(set_attr "length" "8,4")])
   
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   arm_output_asm_insn (\"bic\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"bic\\t%R0, %R1, %2, asr #31\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
   
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   arm_output_asm_insn (\"orr\\t%0, %1, %2\", operands);
   return (arm_output_asm_insn (\"orr\\t%R0, %R1, %R2\", operands));
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
     return (arm_output_asm_insn (\"mov\\t%R0, %R1\", operands));
   return \"\";
 "
-[(set_attr "length" "2,1")])
+[(set_attr "length" "8,4")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   arm_output_asm_insn (\"orr\\t%0, %1, %2\", operands);
   return (arm_output_asm_insn (\"orr\\t%R0, %R1, %2, asr #31\", operands));
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn "iorsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   arm_output_asm_insn (\"eor\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"eor\\t%R0, %R1, %R2\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
     return arm_output_asm_insn (\"mov\\t%R0, %R1\", operands);
   return \"\";
 "
-[(set_attr "length" "2,1")])
+[(set_attr "length" "8,4")])
 
 (define_insn ""
   [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
   arm_output_asm_insn (\"eor\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"eor\\t%R0, %R1, %2, asr #31\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn "xorsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   arm_output_asm_insn (\"orr\\t%0, %1, %2\", operands);
   return arm_output_asm_insn (\"bic\\t%0, %0, %3\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 \f
 
   return \"\";
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,2,3")])
+ (set_attr "length" "8,8,12")])
 
 (define_insn "sminsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
   return \"\";
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,2,3")])
+ (set_attr "length" "8,8,12")])
 
 (define_insn "umaxsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
   return \"\";
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,2,3")])
+ (set_attr "length" "8,8,12")])
 
 (define_insn "uminsi3"
   [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
   return \"\";
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,2,3")])
+ (set_attr "length" "8,8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "memory_operand" "=m")
   return arm_output_asm_insn (\"str%D3\\t%2, %0\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")
+ (set_attr "length" "12")
  (set_attr "type" "store1")])
 
 (define_insn ""
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 \f
 ;; Shift and rotation insns
   return (arm_output_asm_insn (\"rsc\\t%R0, %R1, #0\", operands));
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn "negsi2"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
     }
 "
 [(set_attr "conds" "clob,*")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,&r")
     }
 "
 [(set_attr "conds" "clob,*")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn "abssf2"
   [(set (match_operand:SF 0 "s_register_operand" "=f")
   arm_output_asm_insn (\"mvn\\t%0, %1\", operands);
   return arm_output_asm_insn (\"mvn\\t%R0, %R1\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn "one_cmplsi2"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
     arm_output_asm_insn (\"mov\\t%0, %1\", operands);
   return arm_output_asm_insn (\"mov\\t%R0, #0\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_insn "zero_extendqidi2"
   [(set (match_operand:DI 0 "s_register_operand" "=r,r")
     }
   return arm_output_asm_insn (\"mov\\t%R0, #0\", operands);
 "
-[(set_attr "length" "2")
+[(set_attr "length" "8")
  (set_attr "type" "*,load")])
 
 (define_insn "extendsidi2"
     arm_output_asm_insn (\"mov\\t%0, %1\", operands);
   return arm_output_asm_insn (\"mov\\t%R0, %0, asr #31\", operands);
 "
-[(set_attr "length" "2")])
+[(set_attr "length" "8")])
 
 (define_expand "zero_extendhisi2"
   [(set (match_dup 2)
   "*
   return (output_move_double (operands));
 "
-[(set_attr "length" "2,8,2,2,8")
+[(set_attr "length" "8,32,8,8,32")
  (set_attr "type" "*,*,load,store2,*")])
 
 (define_expand "movsi"
       return output_load_symbol (operands);
     }
 "
-[(set_attr "length" "2,*,*,*,4")
+[(set_attr "length" "8,*,*,*,16")
  (set_attr "type" "load,*,*,store1,*")])
 
 ;; If copying one reg to another we can set the condition codes according to
   }
 }
 "
-[(set_attr "length" "1,1,1,1,2,2,1,1,1")
+[(set_attr "length" "4,4,4,4,8,8,4,4,4")
  (set_attr "type" "float,float,f_load,f_store,r_mem_f,f_mem_r,*,load,store1")])
 
 (define_expand "movdf"
     }
 }
 "
-[(set_attr "length" "1,1,2,2,1,1,1,1,1,2,2,2")
+[(set_attr "length" "4,4,8,8,4,4,4,4,4,8,8,8")
  (set_attr "type" 
 "load,store2,load,store2,float,float,float,f_load,f_store,r_mem_f,f_mem_r,*")])
 
     }
 }
 "
-[(set_attr "length" "1,1,1,1,2,2,3")
+[(set_attr "length" "4,4,4,4,8,8,12")
  (set_attr "type" "float,float,f_load,f_store,r_mem_f,f_mem_r,*")])
 \f
 
   return arm_output_asm_insn (\"mov%D1\\t%0, #0\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (\"mov%D1\\t%0, #0\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (\"mov%D1\\t%0, #0\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 \f
 ;; Jump and linkage insns
                    (const_string "clob")
                    (const_string "nocond")))
 ;; length is worst case, normally it is only two
- (set_attr "length" "3")
+ (set_attr "length" "12")
  (set_attr "type" "call")])
 
 (define_insn ""
       (if_then_else (eq_attr "cpu" "arm6")
                    (const_string "clob")
                    (const_string "nocond")))
- (set_attr "length" "3")
+ (set_attr "length" "12")
  (set_attr "type" "call")])
 
 (define_expand "call_value"
       (if_then_else (eq_attr "cpu" "arm6")
                    (const_string "clob")
                    (const_string "nocond")))
- (set_attr "length" "3")
+ (set_attr "length" "12")
  (set_attr "type" "call")])
 
 (define_insn ""
       (if_then_else (eq_attr "cpu" "arm6")
                    (const_string "clob")
                    (const_string "nocond")))
- (set_attr "length" "3")
+ (set_attr "length" "12")
  (set_attr "type" "call")])
 
 ;; Allow calls to SYMBOL_REFs specially as they are not valid general addresses
   return output_add_immediate (operands);
 }"
 ; we have no idea how long the add_immediate is, it could be up to 4.
-[(set_attr "length" "5")])
+[(set_attr "length" "20")])
 
 (define_insn ""
   [(set (reg:CC_NOOV 24)
   return arm_output_asm_insn (instr, operands);
 }"
 [(set_attr "conds" "set")
- (set_attr "length" "5")])
+ (set_attr "length" "20")])
 
 (define_insn ""
   [(set (reg:CC_NOOV 24)
   return arm_output_asm_insn (instr, operands);
 }"
 [(set_attr "conds" "set")
- (set_attr "length" "5")])
+ (set_attr "length" "20")])
 
 ;; These are similar, but are needed when the mla pattern contains the
 ;; eliminated register as operand 3.
   operands[1] = operands[0];
   return output_add_immediate (operands);
 "
-[(set_attr "length" "5")])
+[(set_attr "length" "20")])
 
 (define_insn ""
   [(set (reg:CC_NOOV 24)
   output_add_immediate (operands);
   return arm_output_asm_insn (\"mlas\\t%0, %3, %4, %0\", operands);
 "
-[(set_attr "length" "5")
+[(set_attr "length" "20")
  (set_attr "conds" "set")])
 
 (define_insn ""
   output_add_immediate (operands);
   return arm_output_asm_insn (\"mlas\\t%0, %3, %4, %0\", operands);
 "
-[(set_attr "length" "5")
+[(set_attr "length" "20")
  (set_attr "conds" "set")])
 
 
   return arm_output_asm_insn (\"and%d1\\t%0, %2, #1\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
   return arm_output_asm_insn (\"orr%d2\\t%0, %1, #1\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "1,2")])
+ (set_attr "length" "4,8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (\"mov%d1\\t%0, #1\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=&r")
 "
 [(set_attr "conds" "clob")
 ; worst case length
- (set_attr "length" "5")])
+ (set_attr "length" "20")])
 
 (define_split
   [(set (pc)
   return arm_output_asm_insn (\"b%d6\\t%l4\", operands);
 }"
 [(set_attr "conds" "jump_clob")
- (set_attr "length" "4")])
+ (set_attr "length" "16")])
 
 (define_insn ""
   [(set (reg:CC 24)
   return arm_output_asm_insn (\"cmp%D4\\t%2, %3\", operands);
 "
 [(set_attr "conds" "set")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
   return \"\";
 "
 [(set_attr "conds" "use")
- (set_attr "length" "1,1,2")])
+ (set_attr "length" "4,4,8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
   return arm_output_asm_insn (\"sub%d4\\t%0, %1, #1\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=&r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "5")])
+ (set_attr "length" "20")])
 
 (define_split
   [(set (pc)
   return arm_output_asm_insn (\"b%D4\\t%l0\", operands);
 }"
 [(set_attr "conds" "jump_clob")
- (set_attr "length" "4")])
+ (set_attr "length" "16")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (\"mvn%d3\\t%0, #0\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn "movcond"
   [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
   return \"\";
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,2,3")])
+ (set_attr "length" "8,8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
   ""
   "#"
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 ;;  if (GET_CODE (operands[3]) == CONST_INT
 ;;      && !const_ok_for_arm (INTVAL (operands[3])))
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
 }
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
   return arm_output_asm_insn (\"rsb%d5\\t%0, %2, #0\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
   return arm_output_asm_insn (\"rsb%D5\\t%0, %2, #0\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2,3")])
+ (set_attr "length" "8,12")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (pattern, arith);
 }
 "
-[(set_attr "length" "3")
+[(set_attr "length" "12")
  (set_attr "type" "load")])
 
 ;; the arm can support extended pre-inc instructions
       (if_then_else (eq_attr "cpu" "arm6")
                    (const_string "clob")
                    (const_string "nocond")))
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_peephole
   [(parallel [(set (match_operand 0 "s_register_operand" "=rf")
       (if_then_else (eq_attr "cpu" "arm6")
                    (const_string "clob")
                    (const_string "nocond")))
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 ;; As above but when this function is not void, we must be returning the
 ;; result of the called subroutine.
       (if_then_else (eq_attr "cpu" "arm6")
                    (const_string "clob")
                    (const_string "nocond")))
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 ;; If calling a subroutine and then jumping back to somewhere else, but not
 ;; too far away, then we can set the link register with the branch address
                    (const_string "nocond")))
  (set (attr "length")
       (if_then_else (eq_attr "cpu" "arm6")
-                   (const_int 2)
-                   (const_int 3)))])
+                   (const_int 8)
+                   (const_int 12)))])
 
 (define_peephole
   [(parallel[(set (match_operand:SI 0 "s_register_operand" "=r")
                    (const_string "nocond")))
  (set (attr "length")
       (if_then_else (eq_attr "cpu" "arm6")
-                   (const_int 2)
-                   (const_int 3)))])
+                   (const_int 8)
+                   (const_int 12)))])
 
 (define_split
   [(set (pc)
   return arm_output_asm_insn (\"cmp\\t%2, %1\", operands);
 "
 [(set_attr "conds" "set")
- (set_attr "length" "2")
+ (set_attr "length" "8")
  (set_attr "type" "load")])
 
 (define_expand "save_stack_nonlocal"
   return arm_output_asm_insn (\"mvn%D4\\t%0, %2\", operands);
 "
 [(set_attr "conds" "use")
- (set_attr "length" "1,2")])
+ (set_attr "length" "4,8")])
 
 ;; The next two patterns occur when an AND operation is followed by a
 ;; scc insn sequence 
   return arm_output_asm_insn (\"mvnne\\t%0, #0\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "2")])
+ (set_attr "length" "8")])
 
 (define_insn ""
   [(set (match_operand:SI 0 "s_register_operand" "=r")
   return arm_output_asm_insn (\"movne\\t%0, #0\", operands);
 "
 [(set_attr "conds" "clob")
- (set_attr "length" "3")])
+ (set_attr "length" "12")])