diff options
Diffstat (limited to 'gcc/config/arm/thumb2.md')
-rw-r--r-- | gcc/config/arm/thumb2.md | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index fe150c70f22..de573ca0810 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -1,5 +1,5 @@ ;; ARM Thumb-2 Machine Description -;; Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2007, 2008, 2010, 2012 Free Software Foundation, Inc. ;; Written by CodeSourcery, LLC. ;; ;; This file is part of GCC. @@ -180,7 +180,7 @@ ldr%?\\t%0, %1 str%?\\t%1, %0 str%?\\t%1, %0" - [(set_attr "type" "*,*,*,*,load1,load1,store1,store1") + [(set_attr "type" "*,*,simple_alu_imm,*,load1,load1,store1,store1") (set_attr "predicable" "yes") (set_attr "pool_range" "*,*,*,*,1018,4094,*,*") (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")] @@ -568,7 +568,11 @@ "@ sxtb%?\\t%0, %1 ldr%(sb%)\\t%0, %1" - [(set_attr "type" "alu_shift,load_byte") + [(set_attr_alternative "type" + [(if_then_else (eq_attr "tune" "cortexa7") + (const_string "simple_alu_imm") + (const_string "alu_shift")) + (const_string "load_byte")]) (set_attr "predicable" "yes") (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] @@ -581,7 +585,11 @@ "@ uxth%?\\t%0, %1 ldr%(h%)\\t%0, %1" - [(set_attr "type" "alu_shift,load_byte") + [(set_attr_alternative "type" + [(if_then_else (eq_attr "tune" "cortexa7") + (const_string "simple_alu_imm") + (const_string "alu_shift")) + (const_string "load_byte")]) (set_attr "predicable" "yes") (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] @@ -594,7 +602,11 @@ "@ uxtb%(%)\\t%0, %1 ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" - [(set_attr "type" "alu_shift,load_byte") + [(set_attr_alternative "type" + [(if_then_else (eq_attr "tune" "cortexa7") + (const_string "simple_alu_imm") + (const_string "alu_shift")) + (const_string "load_byte")]) (set_attr "predicable" "yes") (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] @@ -790,8 +802,8 @@ (define_insn "*thumb2_addsi3_compare0_scratch" [(set (reg:CC_NOOV CC_REGNUM) (compare:CC_NOOV - (plus:SI (match_operand:SI 0 "s_register_operand" "l, r") - (match_operand:SI 1 "arm_add_operand" "lPv,rIL")) + (plus:SI (match_operand:SI 0 "s_register_operand" "l,l, r,r") + (match_operand:SI 1 "arm_add_operand" "Pv,l,IL,r")) (const_int 0)))] "TARGET_THUMB2" "* @@ -808,7 +820,8 @@ return \"cmn\\t%0, %1\"; " [(set_attr "conds" "set") - (set_attr "length" "2,4")] + (set_attr "length" "2,2,4,4") + (set_attr "type" "simple_alu_imm,*,simple_alu_imm,*")] ) (define_insn "*thumb2_mulsi_short" |