aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2015-09-10 10:43:43 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2015-09-10 10:43:43 +0000
commit9b9828886e093b6f41b3abf8fd999e6817e2292c (patch)
treecd63ea979814f908675319fef1d963b47c9fcf12
parentfc4d140a5ce4b45523b9616634cfd5e0912115cc (diff)
downloadgcc-9b9828886e093b6f41b3abf8fd999e6817e2292c.zip
gcc-9b9828886e093b6f41b3abf8fd999e6817e2292c.tar.gz
gcc-9b9828886e093b6f41b3abf8fd999e6817e2292c.tar.bz2
[ARM] PR 67439: Allow matching of *arm32_movhf when -mrestrict-it is on
PR target/67439 * config/arm/arm.md (*arm32_movhf): Remove !arm_restrict_it from predicate. Set predicable_short_it attr to "no". * gcc.target/arm/pr67439_1.c: New test. From-SVN: r227630
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm.md5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/pr67439_1.c11
4 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d5254fa..42802bf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+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-10 Jiong Wang <jiong.wang@arm.com>
PR rtl-optimization/67421
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 775ca25..878576a 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -6620,7 +6620,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))"
"*
@@ -6658,7 +6658,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 e78d4c7..2272a67 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/67439
+ * gcc.target/arm/pr67439_1.c: New test.
+
2015-09-10 Jiong Wang <jiong.wang@arm.com>
* gcc.target/aarch64/pic-small.c (dg-skip-if): Skip tiny and large code
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 0000000..f7a6128
--- /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;
+}