[PATCH][ARM]Add earlyclobber modifier for neon_(vtrn, vuzp, vzip)<mode>_insn rtx
authorRenlin Li <renlin.li@arm.com>
Fri, 9 Oct 2015 16:22:33 +0000 (16:22 +0000)
committerRenlin Li <renlin@gcc.gnu.org>
Fri, 9 Oct 2015 16:22:33 +0000 (16:22 +0000)
pattern.

gcc/

2015-10-09  Renlin Li  <renlin.li@arm.com>

* config/arm/neon.md (neon_vuzp<mode>_insn): Add & modifier for
        operands[0] and operands[2].
        (neon_vtrn<mode>_insn): Likewise.
        (neon_vzip<mode>_insn): Likewise.

From-SVN: r228662

gcc/ChangeLog
gcc/config/arm/neon.md

index 6156bd09c02c9fa77fc007dbbfe72a3967f0bb08..932253da4c175bc877dfdcde099a12cccf2ebee4 100644 (file)
@@ -1,3 +1,10 @@
+2015-10-09  Renlin Li  <renlin.li@arm.com>
+
+       * config/arm/neon.md (neon_vuzp<mode>_insn): Add & modifier for
+       operands[0] and operands[2].
+       (neon_vtrn<mode>_insn): Likewise.
+       (neon_vzip<mode>_insn): Likewise.
+
 2015-10-09  Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
        * match.pd: ((X inner_op C0) outer_op C1) New pattern.
index 26678663a64fc108526b007f058dbc6f89d4b8bd..e5a2b0f1c9a193665d41694d441f119a07359cd0 100644 (file)
@@ -4074,11 +4074,11 @@ if (BYTES_BIG_ENDIAN)
 
 ;; Note: Different operand numbering to handle tied registers correctly.
 (define_insn "*neon_vtrn<mode>_insn"
-  [(set (match_operand:VDQW 0 "s_register_operand" "=w")
+  [(set (match_operand:VDQW 0 "s_register_operand" "=&w")
         (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
                       (match_operand:VDQW 3 "s_register_operand" "2")]
                      UNSPEC_VTRN1))
-   (set (match_operand:VDQW 2 "s_register_operand" "=w")
+   (set (match_operand:VDQW 2 "s_register_operand" "=&w")
          (unspec:VDQW [(match_dup 1) (match_dup 3)]
                      UNSPEC_VTRN2))]
   "TARGET_NEON"
@@ -4100,11 +4100,11 @@ if (BYTES_BIG_ENDIAN)
 
 ;; Note: Different operand numbering to handle tied registers correctly.
 (define_insn "*neon_vzip<mode>_insn"
-  [(set (match_operand:VDQW 0 "s_register_operand" "=w")
+  [(set (match_operand:VDQW 0 "s_register_operand" "=&w")
         (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
                       (match_operand:VDQW 3 "s_register_operand" "2")]
                      UNSPEC_VZIP1))
-   (set (match_operand:VDQW 2 "s_register_operand" "=w")
+   (set (match_operand:VDQW 2 "s_register_operand" "=&w")
         (unspec:VDQW [(match_dup 1) (match_dup 3)]
                      UNSPEC_VZIP2))]
   "TARGET_NEON"
@@ -4126,11 +4126,11 @@ if (BYTES_BIG_ENDIAN)
 
 ;; Note: Different operand numbering to handle tied registers correctly.
 (define_insn "*neon_vuzp<mode>_insn"
-  [(set (match_operand:VDQW 0 "s_register_operand" "=w")
+  [(set (match_operand:VDQW 0 "s_register_operand" "=&w")
         (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
                       (match_operand:VDQW 3 "s_register_operand" "2")]
                      UNSPEC_VUZP1))
-   (set (match_operand:VDQW 2 "s_register_operand" "=w")
+   (set (match_operand:VDQW 2 "s_register_operand" "=&w")
         (unspec:VDQW [(match_dup 1) (match_dup 3)]
                      UNSPEC_VUZP2))]
   "TARGET_NEON"