aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2013-07-02 10:21:36 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2013-07-02 10:21:36 +0000
commitafc5e8a6a79510e207d23420417f78bcfb678b4e (patch)
tree25a10a057b3938017a1d7f43daee9805bc5c6328
parent4bc21884b4d64d1fadadf41d70147162f927df98 (diff)
downloadgcc-afc5e8a6a79510e207d23420417f78bcfb678b4e.zip
gcc-afc5e8a6a79510e207d23420417f78bcfb678b4e.tar.gz
gcc-afc5e8a6a79510e207d23420417f78bcfb678b4e.tar.bz2
arm.md (arm_andsi3_insn): Add alternatives for 16-bit encoding.
2013-07-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.md (arm_andsi3_insn): Add alternatives for 16-bit encoding. (iorsi3_insn): Likewise. (arm_xorsi3): Likewise. From-SVN: r200593
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/arm/arm.md41
2 files changed, 31 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a29ab30..727b579 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2013-07-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/arm/arm.md (arm_andsi3_insn): Add alternatives for 16-bit
+ encoding.
+ (iorsi3_insn): Likewise.
+ (arm_xorsi3): Likewise.
+
2013-07-01 Sofiane Naci <sofiane.naci@arm.com>
* arm.md (attribute "wtype"): Delete. Move attribute values from here
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 89e7b54..0fcdeea 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -2564,12 +2564,13 @@
; ??? Check split length for Thumb-2
(define_insn_and_split "*arm_andsi3_insn"
- [(set (match_operand:SI 0 "s_register_operand" "=r,r,r,r")
- (and:SI (match_operand:SI 1 "s_register_operand" "r,r,r,r")
- (match_operand:SI 2 "reg_or_int_operand" "I,K,r,?n")))]
+ [(set (match_operand:SI 0 "s_register_operand" "=r,l,r,r,r")
+ (and:SI (match_operand:SI 1 "s_register_operand" "%r,0,r,r,r")
+ (match_operand:SI 2 "reg_or_int_operand" "I,l,K,r,?n")))]
"TARGET_32BIT"
"@
and%?\\t%0, %1, %2
+ and%?\\t%0, %1, %2
bic%?\\t%0, %1, #%B2
and%?\\t%0, %1, %2
#"
@@ -2583,9 +2584,11 @@
INTVAL (operands[2]), operands[0], operands[1], 0);
DONE;
"
- [(set_attr "length" "4,4,4,16")
+ [(set_attr "length" "4,4,4,4,16")
(set_attr "predicable" "yes")
- (set_attr "type" "simple_alu_imm,simple_alu_imm,*,simple_alu_imm")]
+ (set_attr "predicable_short_it" "no,yes,no,no,no")
+ (set_attr "type"
+ "simple_alu_imm,simple_alu_imm,*,*,simple_alu_imm")]
)
(define_insn "*thumb1_andsi3_insn"
@@ -3338,12 +3341,13 @@
)
(define_insn_and_split "*iorsi3_insn"
- [(set (match_operand:SI 0 "s_register_operand" "=r,r,r,r")
- (ior:SI (match_operand:SI 1 "s_register_operand" "%r,r,r,r")
- (match_operand:SI 2 "reg_or_int_operand" "I,K,r,?n")))]
+ [(set (match_operand:SI 0 "s_register_operand" "=r,l,r,r,r")
+ (ior:SI (match_operand:SI 1 "s_register_operand" "%r,0,r,r,r")
+ (match_operand:SI 2 "reg_or_int_operand" "I,l,K,r,?n")))]
"TARGET_32BIT"
"@
orr%?\\t%0, %1, %2
+ orr%?\\t%0, %1, %2
orn%?\\t%0, %1, #%B2
orr%?\\t%0, %1, %2
#"
@@ -3353,14 +3357,15 @@
|| (TARGET_THUMB2 && const_ok_for_arm (~INTVAL (operands[2]))))"
[(clobber (const_int 0))]
{
- arm_split_constant (IOR, SImode, curr_insn,
+ arm_split_constant (IOR, SImode, curr_insn,
INTVAL (operands[2]), operands[0], operands[1], 0);
DONE;
}
- [(set_attr "length" "4,4,4,16")
- (set_attr "arch" "32,t2,32,32")
+ [(set_attr "length" "4,4,4,4,16")
+ (set_attr "arch" "32,t2,t2,32,32")
(set_attr "predicable" "yes")
- (set_attr "type" "simple_alu_imm,simple_alu_imm,*,*")]
+ (set_attr "predicable_short_it" "no,yes,no,no,no")
+ (set_attr "type" "simple_alu_imm,*,simple_alu_imm,*,*")]
)
(define_insn "*thumb1_iorsi3_insn"
@@ -3512,13 +3517,14 @@
)
(define_insn_and_split "*arm_xorsi3"
- [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
- (xor:SI (match_operand:SI 1 "s_register_operand" "%r,r,r")
- (match_operand:SI 2 "reg_or_int_operand" "I,r,?n")))]
+ [(set (match_operand:SI 0 "s_register_operand" "=r,l,r,r")
+ (xor:SI (match_operand:SI 1 "s_register_operand" "%r,0,r,r")
+ (match_operand:SI 2 "reg_or_int_operand" "I,l,r,?n")))]
"TARGET_32BIT"
"@
eor%?\\t%0, %1, %2
eor%?\\t%0, %1, %2
+ eor%?\\t%0, %1, %2
#"
"TARGET_32BIT
&& CONST_INT_P (operands[2])
@@ -3529,9 +3535,10 @@
INTVAL (operands[2]), operands[0], operands[1], 0);
DONE;
}
- [(set_attr "length" "4,4,16")
+ [(set_attr "length" "4,4,4,16")
(set_attr "predicable" "yes")
- (set_attr "type" "simple_alu_imm,*,*")]
+ (set_attr "predicable_short_it" "no,yes,no,no")
+ (set_attr "type" "simple_alu_imm,*,*,*")]
)
(define_insn "*thumb1_xorsi3_insn"