summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-23 10:36:48 +0000
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-23 10:36:48 +0000
commitcd9a1d130360ece3a87c0730c00f5d8f5df40fb0 (patch)
treecf382039836e2ee4baa63f570f857bb5c956f679
parent1b44ebe5e154eab951d72f9bad986882ac7b0128 (diff)
downloadgcc-cd9a1d130360ece3a87c0730c00f5d8f5df40fb0.tar.gz
[ARM] PR 67439: Allow matching of *arm32_movhf when -mrestrict-it is on
Backport from mainline 2015-09-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR target/67439 * config/arm/arm.md (*arm32_movhf): Remove !arm_restrict_it from predicate. Set predicable_short_it attr to "no". PR target/67439 * gcc.target/arm/pr67439_1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@228039 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/arm/arm.md5
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.target/arm/pr67439_1.c11
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1969c6669fd..695a98cb536 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2015-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline
+ 2015-09-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/67439
+ * config/arm/arm.md (*arm32_movhf): Remove !arm_restrict_it from
+ predicate. Set predicable_short_it attr to "no".
+
2015-09-23 Matthew Wahab <matthew.wahab@arm.com>
Backport from mainline
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 7ee4971d41c..f4c9dea9e5c 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -6508,7 +6508,7 @@
(define_insn "*arm32_movhf"
[(set (match_operand:HF 0 "nonimmediate_operand" "=r,m,r,r")
(match_operand:HF 1 "general_operand" " m,r,r,F"))]
- "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_FP16) && !arm_restrict_it
+ "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_FP16)
&& ( s_register_operand (operands[0], HFmode)
|| s_register_operand (operands[1], HFmode))"
"*
@@ -6546,7 +6546,8 @@
[(set_attr "conds" "unconditional")
(set_attr "type" "load1,store1,mov_reg,multiple")
(set_attr "length" "4,4,4,8")
- (set_attr "predicable" "yes")]
+ (set_attr "predicable" "yes")
+ (set_attr "predicable_short_it" "no")]
)
(define_expand "movsf"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ff9ac7f12a1..1d5c88e1e5a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2015-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline
+ 2015-09-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/67439
+ * gcc.target/arm/pr67439_1.c: New test.
+
2015-09-23 Matthew Wahab <matthew.wahab@arm.com>
Backport from mainline
diff --git a/gcc/testsuite/gcc.target/arm/pr67439_1.c b/gcc/testsuite/gcc.target/arm/pr67439_1.c
new file mode 100644
index 00000000000..f7a6128758a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr67439_1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-options "-O1 -mfp16-format=ieee -march=armv7-a -mfpu=neon -mthumb -mrestrict-it" } */
+
+__fp16 h0 = -1.0;
+
+void
+f (__fp16 *p)
+{
+ h0 = 1.0;
+}