diff options
author | Tamar Christina <tamar.christina@arm.com> | 2018-08-16 10:26:05 +0000 |
---|---|---|
committer | Tamar Christina <tnfchris@gcc.gnu.org> | 2018-08-16 10:26:05 +0000 |
commit | a77042b50c292a128fbd4178b5633bf60a174804 (patch) | |
tree | c4e7fe8c56f94bb1fab412b11b030b468bf4c92f | |
parent | 88e25f47696777d7e60737cd48095e7722a0145e (diff) | |
download | gcc-a77042b50c292a128fbd4178b5633bf60a174804.zip gcc-a77042b50c292a128fbd4178b5633bf60a174804.tar.gz gcc-a77042b50c292a128fbd4178b5633bf60a174804.tar.bz2 |
Remove dead pattern on ARM.
About 13 years ago the reg-to-reg patterns were split up, before that time
output_move_double could actually handle this case.
After the split was done most patterns were updated except for *neon_mov
which incorrectly retained reg,reg as a valid alternative.
However output_move_double can not handle this and simply returns ""
and asserts.
This pattern is essentially dead and I'm removing it for clarity.
gcc/
2018-08-16 Tamar Christina <tamar.christina@arm.com>
* config/arm/neon.md (*neon_mov<mode>): Remove reg-to-reg alternative.
From-SVN: r263582
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/arm/neon.md | 14 |
2 files changed, 11 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2831d6e..85bf69c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2018-08-16 Tamar Christina <tamar.christina@arm.com> + + * config/arm/neon.md (*neon_mov<mode>): Remove reg-to-reg alternative. + 2018-08-16 Sam Tebbs <sam.tebbs@arm.com> * config/aarch64/aarch64.opt (mlow-precision-recip-sqrt) diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 1646b21..97d88e6 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -25,9 +25,9 @@ (define_insn "*neon_mov<mode>" [(set (match_operand:VDX 0 "nonimmediate_operand" - "=w,Un,w, w, ?r,?w,?r,?r, ?Us") + "=w,Un,w, w, ?r,?w,?r, ?Us") (match_operand:VDX 1 "general_operand" - " w,w, Dn,Uni, w, r, r, Usi,r"))] + " w,w, Dn,Uni, w, r, Usi,r"))] "TARGET_NEON && (register_operand (operands[0], <MODE>mode) || register_operand (operands[1], <MODE>mode))" @@ -61,12 +61,12 @@ } } [(set_attr "type" "neon_move<q>,neon_store1_1reg,neon_move<q>,\ - neon_load1_1reg, neon_to_gp<q>,neon_from_gp<q>,mov_reg,\ + neon_load1_1reg, neon_to_gp<q>,neon_from_gp<q>,\ neon_load1_2reg, neon_store1_2reg") - (set_attr "length" "4,4,4,4,4,4,8,8,8") - (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") - (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") - (set_attr "neg_pool_range" "*,*,*,1004,*,*,*,1004,*")]) + (set_attr "length" "4,4,4,4,4,4,8,8") + (set_attr "arm_pool_range" "*,*,*,1020,*,*,1020,*") + (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,1018,*") + (set_attr "neg_pool_range" "*,*,*,1004,*,*,1004,*")]) (define_insn "*neon_mov<mode>" [(set (match_operand:VQXMOV 0 "nonimmediate_operand" |