diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2013-06-07 12:51:45 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2013-06-07 12:51:45 +0000 |
commit | b31ddbdb6c9e6bf72ee3a6ae1e7f7878b65159e7 (patch) | |
tree | 29fb469e55d3b8a3d54379418e78877f2c8d1b38 /gcc | |
parent | ba88423cb23c57fdb49cb1809d6c65cb55c3a6df (diff) | |
download | gcc-b31ddbdb6c9e6bf72ee3a6ae1e7f7878b65159e7.zip gcc-b31ddbdb6c9e6bf72ee3a6ae1e7f7878b65159e7.tar.gz gcc-b31ddbdb6c9e6bf72ee3a6ae1e7f7878b65159e7.tar.bz2 |
arm.md (anddi3_insn): Remove duplicate alternatives.
2013-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.md (anddi3_insn): Remove duplicate alternatives.
Clean up alternatives.
From-SVN: r199810
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 43 |
2 files changed, 22 insertions, 26 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 025e2c5..0c66239 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + * config/arm/arm.md (anddi3_insn): Remove duplicate alternatives. + Clean up alternatives. + 2013-06-07 Alan Modra <amodra@gmail.com> * config/rs6000/rs6000.c (setup_incoming_varargs): Round up diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 95293bd..dc62caa 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -2183,29 +2183,28 @@ ) (define_insn_and_split "*anddi3_insn" - [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r,&r,w,w ,?&r,?&r,?w,?w") - (and:DI (match_operand:DI 1 "s_register_operand" "%0 ,r ,0,r ,w,0 ,0 ,r ,w ,0") - (match_operand:DI 2 "arm_anddi_operand_neon" "r ,r ,De,De,w,DL,r ,r ,w ,DL")))] + [(set (match_operand:DI 0 "s_register_operand" "=w,w ,&r,&r,&r,&r,?w,?w") + (and:DI (match_operand:DI 1 "s_register_operand" "%w,0 ,0 ,r ,0 ,r ,w ,0") + (match_operand:DI 2 "arm_anddi_operand_neon" "w ,DL,r ,r ,De,De,w ,DL")))] "TARGET_32BIT && !TARGET_IWMMXT" { switch (which_alternative) { - case 0: - case 1: + case 0: /* fall through */ + case 6: return "vand\t%P0, %P1, %P2"; + case 1: /* fall through */ + case 7: return neon_output_logic_immediate ("vand", &operands[2], + DImode, 1, VALID_NEON_QREG_MODE (DImode)); case 2: - case 3: /* fall through */ - return "#"; - case 4: /* fall through */ - case 8: return "vand\t%P0, %P1, %P2"; + case 3: + case 4: case 5: /* fall through */ - case 9: return neon_output_logic_immediate ("vand", &operands[2], - DImode, 1, VALID_NEON_QREG_MODE (DImode)); - case 6: return "#"; - case 7: return "#"; + return "#"; default: gcc_unreachable (); } } - "TARGET_32BIT && !TARGET_IWMMXT" + "TARGET_32BIT && !TARGET_IWMMXT && reload_completed + && !(IS_VFP_REGNUM (REGNO (operands[0])))" [(set (match_dup 3) (match_dup 4)) (set (match_dup 5) (match_dup 6))] " @@ -2221,19 +2220,11 @@ gen_highpart_mode (SImode, DImode, operands[2])); }" - [(set_attr "neon_type" "*,*,*,*,neon_int_1,neon_int_1,*,*,neon_int_1,neon_int_1") - (set_attr "arch" "*,*,*,*,neon_for_64bits,neon_for_64bits,*,*, + [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,*,*,neon_int_1,neon_int_1") + (set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,*, avoid_neon_for_64bits,avoid_neon_for_64bits") - (set_attr "length" "8,8,8,8,*,*,8,8,*,*") - (set (attr "insn_enabled") (if_then_else - (lt (symbol_ref "which_alternative") - (const_int 4)) - (if_then_else (match_test "!TARGET_NEON") - (const_string "yes") - (const_string "no")) - (if_then_else (match_test "TARGET_NEON") - (const_string "yes") - (const_string "no"))))] + (set_attr "length" "*,*,8,8,8,8,*,*") + ] ) (define_insn_and_split "*anddi_zesidi_di" |