]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/arc/simdext.md
Update copyright years.
[thirdparty/gcc.git] / gcc / config / arc / simdext.md
index 13e268c11471eee857b3915273a4b9a769e88663..4e51a237c3ae175cce0f60376aabaa1dd67c24ec 100644 (file)
@@ -1,5 +1,5 @@
 ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
-;; Copyright (C) 2007-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2024 Free Software Foundation, Inc.
 
 ;; This file is part of GCC.
 
 ;; along with GCC; see the file COPYING3.  If not see
 ;; <http://www.gnu.org/licenses/>.
 
-(define_constants
-  [
+(define_c_enum "unspec" [
   ;; Va, Vb, Vc builtins
-  (UNSPEC_ARC_SIMD_VADDAW     1000)
-  (UNSPEC_ARC_SIMD_VADDW      1001)
-  (UNSPEC_ARC_SIMD_VAVB       1002)
-  (UNSPEC_ARC_SIMD_VAVRB      1003)
-  (UNSPEC_ARC_SIMD_VDIFAW     1004)
-  (UNSPEC_ARC_SIMD_VDIFW      1005)
-  (UNSPEC_ARC_SIMD_VMAXAW     1006)
-  (UNSPEC_ARC_SIMD_VMAXW      1007)
-  (UNSPEC_ARC_SIMD_VMINAW     1008)
-  (UNSPEC_ARC_SIMD_VMINW      1009)
-  (UNSPEC_ARC_SIMD_VMULAW     1010)
-  (UNSPEC_ARC_SIMD_VMULFAW    1011)
-  (UNSPEC_ARC_SIMD_VMULFW     1012)
-  (UNSPEC_ARC_SIMD_VMULW      1013)
-  (UNSPEC_ARC_SIMD_VSUBAW     1014)
-  (UNSPEC_ARC_SIMD_VSUBW      1015)
-  (UNSPEC_ARC_SIMD_VSUMMW     1016)
-  (UNSPEC_ARC_SIMD_VAND       1017)
-  (UNSPEC_ARC_SIMD_VANDAW     1018)
-  (UNSPEC_ARC_SIMD_VBIC       1019)
-  (UNSPEC_ARC_SIMD_VBICAW     1020)
-  (UNSPEC_ARC_SIMD_VOR        1021)
-  (UNSPEC_ARC_SIMD_VXOR       1022)
-  (UNSPEC_ARC_SIMD_VXORAW     1023)
-  (UNSPEC_ARC_SIMD_VEQW       1024)
-  (UNSPEC_ARC_SIMD_VLEW       1025)
-  (UNSPEC_ARC_SIMD_VLTW       1026)
-  (UNSPEC_ARC_SIMD_VNEW       1027)
-  (UNSPEC_ARC_SIMD_VMR1AW     1028)
-  (UNSPEC_ARC_SIMD_VMR1W      1029)
-  (UNSPEC_ARC_SIMD_VMR2AW     1030)
-  (UNSPEC_ARC_SIMD_VMR2W      1031)
-  (UNSPEC_ARC_SIMD_VMR3AW     1032)
-  (UNSPEC_ARC_SIMD_VMR3W      1033)
-  (UNSPEC_ARC_SIMD_VMR4AW     1034)
-  (UNSPEC_ARC_SIMD_VMR4W      1035)
-  (UNSPEC_ARC_SIMD_VMR5AW     1036)
-  (UNSPEC_ARC_SIMD_VMR5W      1037)
-  (UNSPEC_ARC_SIMD_VMR6AW     1038)
-  (UNSPEC_ARC_SIMD_VMR6W      1039)
-  (UNSPEC_ARC_SIMD_VMR7AW     1040)
-  (UNSPEC_ARC_SIMD_VMR7W      1041)
-  (UNSPEC_ARC_SIMD_VMRB       1042)
-  (UNSPEC_ARC_SIMD_VH264F     1043)
-  (UNSPEC_ARC_SIMD_VH264FT    1044)
-  (UNSPEC_ARC_SIMD_VH264FW    1045)
-  (UNSPEC_ARC_SIMD_VVC1F      1046)
-  (UNSPEC_ARC_SIMD_VVC1FT     1047)
+  UNSPEC_ARC_SIMD_VADDAW
+  UNSPEC_ARC_SIMD_VADDW
+  UNSPEC_ARC_SIMD_VAVB
+  UNSPEC_ARC_SIMD_VAVRB
+  UNSPEC_ARC_SIMD_VDIFAW
+  UNSPEC_ARC_SIMD_VDIFW
+  UNSPEC_ARC_SIMD_VMAXAW
+  UNSPEC_ARC_SIMD_VMAXW
+  UNSPEC_ARC_SIMD_VMINAW
+  UNSPEC_ARC_SIMD_VMINW
+  UNSPEC_ARC_SIMD_VMULAW
+  UNSPEC_ARC_SIMD_VMULFAW
+  UNSPEC_ARC_SIMD_VMULFW
+  UNSPEC_ARC_SIMD_VMULW
+  UNSPEC_ARC_SIMD_VSUBAW
+  UNSPEC_ARC_SIMD_VSUBW
+  UNSPEC_ARC_SIMD_VSUMMW
+  UNSPEC_ARC_SIMD_VAND
+  UNSPEC_ARC_SIMD_VANDAW
+  UNSPEC_ARC_SIMD_VBIC
+  UNSPEC_ARC_SIMD_VBICAW
+  UNSPEC_ARC_SIMD_VOR
+  UNSPEC_ARC_SIMD_VXOR
+  UNSPEC_ARC_SIMD_VXORAW
+  UNSPEC_ARC_SIMD_VEQW
+  UNSPEC_ARC_SIMD_VLEW
+  UNSPEC_ARC_SIMD_VLTW
+  UNSPEC_ARC_SIMD_VNEW
+  UNSPEC_ARC_SIMD_VMR1AW
+  UNSPEC_ARC_SIMD_VMR1W
+  UNSPEC_ARC_SIMD_VMR2AW
+  UNSPEC_ARC_SIMD_VMR2W
+  UNSPEC_ARC_SIMD_VMR3AW
+  UNSPEC_ARC_SIMD_VMR3W
+  UNSPEC_ARC_SIMD_VMR4AW
+  UNSPEC_ARC_SIMD_VMR4W
+  UNSPEC_ARC_SIMD_VMR5AW
+  UNSPEC_ARC_SIMD_VMR5W
+  UNSPEC_ARC_SIMD_VMR6AW
+  UNSPEC_ARC_SIMD_VMR6W
+  UNSPEC_ARC_SIMD_VMR7AW
+  UNSPEC_ARC_SIMD_VMR7W
+  UNSPEC_ARC_SIMD_VMRB
+  UNSPEC_ARC_SIMD_VH264F
+  UNSPEC_ARC_SIMD_VH264FT
+  UNSPEC_ARC_SIMD_VH264FW
+  UNSPEC_ARC_SIMD_VVC1F
+  UNSPEC_ARC_SIMD_VVC1FT
   ;; Va, Vb, rc/limm builtins
-  (UNSPEC_ARC_SIMD_VBADDW     1050)
-  (UNSPEC_ARC_SIMD_VBMAXW     1051)
-  (UNSPEC_ARC_SIMD_VBMINW     1052)
-  (UNSPEC_ARC_SIMD_VBMULAW    1053)
-  (UNSPEC_ARC_SIMD_VBMULFW    1054)
-  (UNSPEC_ARC_SIMD_VBMULW     1055)
-  (UNSPEC_ARC_SIMD_VBRSUBW    1056)
-  (UNSPEC_ARC_SIMD_VBSUBW     1057)
+  UNSPEC_ARC_SIMD_VBADDW
+  UNSPEC_ARC_SIMD_VBMAXW
+  UNSPEC_ARC_SIMD_VBMINW
+  UNSPEC_ARC_SIMD_VBMULAW
+  UNSPEC_ARC_SIMD_VBMULFW
+  UNSPEC_ARC_SIMD_VBMULW
+  UNSPEC_ARC_SIMD_VBRSUBW
+  UNSPEC_ARC_SIMD_VBSUBW
 
   ;; Va, Vb, Ic builtins
-  (UNSPEC_ARC_SIMD_VASRW      1060)
-  (UNSPEC_ARC_SIMD_VSR8       1061)
-  (UNSPEC_ARC_SIMD_VSR8AW     1062)
+  UNSPEC_ARC_SIMD_VASRW
+  UNSPEC_ARC_SIMD_VSR8
+  UNSPEC_ARC_SIMD_VSR8AW
 
   ;; Va, Vb, Ic builtins
-  (UNSPEC_ARC_SIMD_VASRRWi    1065)
-  (UNSPEC_ARC_SIMD_VASRSRWi   1066)
-  (UNSPEC_ARC_SIMD_VASRWi     1067)
-  (UNSPEC_ARC_SIMD_VASRPWBi   1068)
-  (UNSPEC_ARC_SIMD_VASRRPWBi  1069)
-  (UNSPEC_ARC_SIMD_VSR8AWi    1070)
-  (UNSPEC_ARC_SIMD_VSR8i      1071)
+  UNSPEC_ARC_SIMD_VASRRWi
+  UNSPEC_ARC_SIMD_VASRSRWi
+  UNSPEC_ARC_SIMD_VASRWi
+  UNSPEC_ARC_SIMD_VASRPWBi
+  UNSPEC_ARC_SIMD_VASRRPWBi
+  UNSPEC_ARC_SIMD_VSR8AWi
+  UNSPEC_ARC_SIMD_VSR8i
 
   ;; Va, Vb, u8 (simm) builtins
-  (UNSPEC_ARC_SIMD_VMVAW      1075)
-  (UNSPEC_ARC_SIMD_VMVW       1076)
-  (UNSPEC_ARC_SIMD_VMVZW      1077)
-  (UNSPEC_ARC_SIMD_VD6TAPF    1078)
+  UNSPEC_ARC_SIMD_VMVAW
+  UNSPEC_ARC_SIMD_VMVW
+  UNSPEC_ARC_SIMD_VMVZW
+  UNSPEC_ARC_SIMD_VD6TAPF
 
   ;; Va, rlimm, u8 (simm) builtins
-  (UNSPEC_ARC_SIMD_VMOVAW     1080)
-  (UNSPEC_ARC_SIMD_VMOVW      1081)
-  (UNSPEC_ARC_SIMD_VMOVZW     1082)
+  UNSPEC_ARC_SIMD_VMOVAW
+  UNSPEC_ARC_SIMD_VMOVW
+  UNSPEC_ARC_SIMD_VMOVZW
 
   ;; Va, Vb builtins
-  (UNSPEC_ARC_SIMD_VABSAW     1085)
-  (UNSPEC_ARC_SIMD_VABSW      1086)
-  (UNSPEC_ARC_SIMD_VADDSUW    1087)
-  (UNSPEC_ARC_SIMD_VSIGNW     1088)
-  (UNSPEC_ARC_SIMD_VEXCH1     1089)
-  (UNSPEC_ARC_SIMD_VEXCH2     1090)
-  (UNSPEC_ARC_SIMD_VEXCH4     1091)
-  (UNSPEC_ARC_SIMD_VUPBAW     1092)
-  (UNSPEC_ARC_SIMD_VUPBW      1093)
-  (UNSPEC_ARC_SIMD_VUPSBAW    1094)
-  (UNSPEC_ARC_SIMD_VUPSBW     1095)
-
-  (UNSPEC_ARC_SIMD_VDIRUN     1100)
-  (UNSPEC_ARC_SIMD_VDORUN     1101)
-  (UNSPEC_ARC_SIMD_VDIWR      1102)
-  (UNSPEC_ARC_SIMD_VDOWR      1103)
-
-  (UNSPEC_ARC_SIMD_VREC      1105)
-  (UNSPEC_ARC_SIMD_VRUN      1106)
-  (UNSPEC_ARC_SIMD_VRECRUN   1107)
-  (UNSPEC_ARC_SIMD_VENDREC   1108)
-
-  (UNSPEC_ARC_SIMD_VCAST     1200)
-  (UNSPEC_ARC_SIMD_VINTI     1201)
-   ]
-)
+  UNSPEC_ARC_SIMD_VABSAW
+  UNSPEC_ARC_SIMD_VABSW
+  UNSPEC_ARC_SIMD_VADDSUW
+  UNSPEC_ARC_SIMD_VSIGNW
+  UNSPEC_ARC_SIMD_VEXCH1
+  UNSPEC_ARC_SIMD_VEXCH2
+  UNSPEC_ARC_SIMD_VEXCH4
+  UNSPEC_ARC_SIMD_VUPBAW
+  UNSPEC_ARC_SIMD_VUPBW
+  UNSPEC_ARC_SIMD_VUPSBAW
+  UNSPEC_ARC_SIMD_VUPSBW
+
+  UNSPEC_ARC_SIMD_VDIRUN
+  UNSPEC_ARC_SIMD_VDORUN
+  UNSPEC_ARC_SIMD_VDIWR
+  UNSPEC_ARC_SIMD_VDOWR
+
+  UNSPEC_ARC_SIMD_VREC
+  UNSPEC_ARC_SIMD_VRUN
+  UNSPEC_ARC_SIMD_VRECRUN
+  UNSPEC_ARC_SIMD_VENDREC
+
+  UNSPEC_ARC_SIMD_VCAST
+  UNSPEC_ARC_SIMD_VINTI
+  ])
 
 ;; Scheduler descriptions for the simd instructions
 (define_insn_reservation "simd_lat_0_insn" 1
 
 (define_insn_reservation "simd_lat_1_insn" 2
        (eq_attr "type" "simd_vcompare, simd_vlogic,
-                        simd_vmove_else_zero, simd_varith_1cycle")
+                       simd_vmove_else_zero, simd_varith_1cycle")
   "issue+simd_unit, nothing")
 
 (define_insn_reservation "simd_lat_2_insn" 3
        (eq_attr "type" "simd_valign, simd_vpermute,
-                        simd_vpack, simd_varith_2cycle")
+                       simd_vpack, simd_varith_2cycle")
   "issue+simd_unit, nothing*2")
 
 (define_insn_reservation "simd_lat_3_insn" 4
        (eq_attr "type" "simd_valign_with_acc, simd_vpack_with_acc,
-                        simd_vlogic_with_acc, simd_vload128,
-                        simd_vmove_with_acc, simd_vspecial_3cycle,
-                        simd_varith_with_acc")
+                       simd_vlogic_with_acc, simd_vload128,
+                       simd_vmove_with_acc, simd_vspecial_3cycle,
+                       simd_varith_with_acc")
   "issue+simd_unit, nothing*3")
 
 (define_insn_reservation "simd_lat_4_insn" 5
                                                          (parallel [(match_operand:SI 2 "immediate_operand" "L")])))
                           (match_operand:SI 3 "immediate_operand" "P"))))]
  "TARGET_SIMD_SET"
- "vld128 %0, [i%2, %3]"
+ "vld128\\t%0,[i%2,%3]"
  [(set_attr "type" "simd_vload128")
   (set_attr "length" "4")
   (set_attr "cond" "nocond")]
                           (match_operand:SI 2 "immediate_operand" "P")))
        (match_operand:V8HI 3 "vector_register_operand" "=v"))]
  "TARGET_SIMD_SET"
- "vst128 %3, [i%1, %2]"
+ "vst128\\t%3,[i%1,%2]"
  [(set_attr "type" "simd_vstore")
   (set_attr "length" "4")
   (set_attr "cond" "nocond")]
 )
 
 (define_insn "vst64_insn"
-  [(set        (mem:V4HI (plus:SI (zero_extend:SI (vec_select:HI (match_operand:V8HI 0 "vector_register_operand"  "v")
-                                                         (parallel [(match_operand:SI 1 "immediate_operand" "L")])))
-                          (match_operand:SI 2 "immediate_operand" "P")))
-       (vec_select:V4HI (match_operand:V8HI 3 "vector_register_operand" "=v")
-                        (parallel [(const_int 0)])))]
+  [(set        (mem:V4HI
+        (plus:SI
+         (zero_extend:SI
+          (vec_select:HI (match_operand:V8HI 0 "vector_register_operand"  "v")
+                         (parallel
+                          [(match_operand:SI 1 "immediate_operand" "L")])))
+         (match_operand:SI 2 "immediate_operand" "P")))
+       (vec_select:V4HI
+        (match_operand:V8HI 3 "vector_register_operand" "=v")
+        (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)])))]
  "TARGET_SIMD_SET"
- "vst64 %3, [i%1, %2]"
+ "vst64\\t%3,[i%1,%2]"
  [(set_attr "type" "simd_vstore")
   (set_attr "length" "4")
   (set_attr "cond" "nocond")]
        (match_operand:V8HI 1 "vector_register_or_memory_operand" "m,v,v"))]
   "TARGET_SIMD_SET && !(GET_CODE (operands[0]) == MEM && GET_CODE(operands[1]) == MEM)"
   "@
-    vld128r %0, %1
-    vst128r %1, %0
-    vmvzw %0,%1,0xffff"
+    vld128r\\t%0,%1
+    vst128r\\t%1,%0
+    vmvzw\\t%0,%1,0xffff"
   [(set_attr "type" "simd_vload128,simd_vstore,simd_vmove_else_zero")
    (set_attr "length" "8,8,4")
    (set_attr "cond" "nocond, nocond, nocond")])
        (match_operand:TI 1 "vector_register_or_memory_operand" "m,v,v"))]
   ""
   "@
-    vld128r %0, %1
-    vst128r %1, %0
-    vmvzw %0,%1,0xffff"
+    vld128r\\t%0,%1
+    vst128r\\t%1,%0
+    vmvzw\\t%0,%1,0xffff"
   [(set_attr "type" "simd_vload128,simd_vstore,simd_vmove_else_zero")
    (set_attr "length" "8,8,4")
    (set_attr "cond" "nocond, nocond, nocond")])
 
-;; (define_insn "*movv8hi_insn_rr"
-;;   [(set (match_operand:V8HI 0 "vector_register_operand" "=v")
-;;     (match_operand:V8HI 1 "vector_register_operand" "v"))]
-;;   ""
-;;   "mov reg,reg"
-;;   [(set_attr "length" "8")
-;;   (set_attr "type" "move")])
-
-;; (define_insn "*movv8_out"
-;;   [(set (match_operand:V8HI 0 "memory_operand" "=m")
-;;     (match_operand:V8HI 1 "vector_register_operand" "v"))]
-;;   ""
-;;   "mov out"
-;;   [(set_attr "length" "8")
-;;   (set_attr "type" "move")])
-
-
-;; (define_insn "addv8hi3"
-;;   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-;;     (plus:V8HI (match_operand:V8HI 1 "vector_register_operand"  "v")
-;;                (match_operand:V8HI 2 "vector_register_operand" "v")))]
-;;   "TARGET_SIMD_SET"
-;;   "vaddw %0, %1, %2"
-;;   [(set_attr "length" "8")
-;;    (set_attr "cond" "nocond")])
-
-;; (define_insn "vaddw_insn"
-;;   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-;;     (unspec [(match_operand:V8HI 1 "vector_register_operand"  "v")
-;;                      (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VADDW))]
-;;   "TARGET_SIMD_SET"
-;;   "vaddw %0, %1, %2"
-;;   [(set_attr "length" "8")
-;;    (set_attr "cond" "nocond")])
-
 ;; V V V Insns
 (define_insn "vaddaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VADDAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VADDAW))]
   "TARGET_SIMD_SET"
-  "vaddaw %0, %1, %2"
+  "vaddaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vaddw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VADDW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VADDW))]
   "TARGET_SIMD_SET"
-  "vaddw %0, %1, %2"
+  "vaddw\\t%0,%1,2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vavb_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VAVB))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VAVB))]
   "TARGET_SIMD_SET"
-  "vavb %0, %1, %2"
+  "vavb\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vavrb_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VAVRB))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VAVRB))]
   "TARGET_SIMD_SET"
-  "vavrb %0, %1, %2"
+  "vavrb\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vdifaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VDIFAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VDIFAW))]
   "TARGET_SIMD_SET"
-  "vdifaw %0, %1, %2"
+  "vdifaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vdifw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VDIFW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VDIFW))]
   "TARGET_SIMD_SET"
-  "vdifw %0, %1, %2"
+  "vdifw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmaxaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMAXAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMAXAW))]
   "TARGET_SIMD_SET"
-  "vmaxaw %0, %1, %2"
+  "vmaxaw\\t%0,%1,2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmaxw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMAXW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMAXW))]
   "TARGET_SIMD_SET"
-  "vmaxw %0, %1, %2"
+  "vmaxw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vminaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMINAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMINAW))]
   "TARGET_SIMD_SET"
-  "vminaw %0, %1, %2"
+  "vminaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vminw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMINW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMINW))]
   "TARGET_SIMD_SET"
-  "vminw %0, %1, %2"
+  "vminw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmulaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMULAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMULAW))]
   "TARGET_SIMD_SET"
-  "vmulaw %0, %1, %2"
+  "vmulaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmulfaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMULFAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMULFAW))]
   "TARGET_SIMD_SET"
-  "vmulfaw %0, %1, %2"
+  "vmulfaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmulfw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMULFW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMULFW))]
   "TARGET_SIMD_SET"
-  "vmulfw %0, %1, %2"
+  "vmulfw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmulw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMULW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMULW))]
   "TARGET_SIMD_SET"
-  "vmulw %0, %1, %2"
+  "vmulw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vsubaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VSUBAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VSUBAW))]
   "TARGET_SIMD_SET"
-  "vsubaw %0, %1, %2"
+  "vsubaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vsubw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VSUBW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VSUBW))]
   "TARGET_SIMD_SET"
-  "vsubw %0, %1, %2"
+  "vsubw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vsummw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VSUMMW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VSUMMW))]
   "TARGET_SIMD_SET"
-  "vsummw %0, %1, %2"
+  "vsummw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vand_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VAND))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VAND))]
   "TARGET_SIMD_SET"
-  "vand %0, %1, %2"
+  "vand\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vandaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VANDAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VANDAW))]
   "TARGET_SIMD_SET"
-  "vandaw %0, %1, %2"
+  "vandaw\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbic_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VBIC))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VBIC))]
   "TARGET_SIMD_SET"
-  "vbic %0, %1, %2"
+  "vbic\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbicaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VBICAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VBICAW))]
   "TARGET_SIMD_SET"
-  "vbicaw %0, %1, %2"
+  "vbicaw\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vor_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VOR))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VOR))]
   "TARGET_SIMD_SET"
-  "vor %0, %1, %2"
+  "vor\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vxor_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VXOR))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VXOR))]
   "TARGET_SIMD_SET"
-  "vxor %0, %1, %2"
+  "vxor\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vxoraw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VXORAW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VXORAW))]
   "TARGET_SIMD_SET"
-  "vxoraw %0, %1, %2"
+  "vxoraw\\t%0,%1,%2"
   [(set_attr "type" "simd_vlogic_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "veqw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VEQW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VEQW))]
   "TARGET_SIMD_SET"
-  "veqw %0, %1, %2"
+  "veqw\\t%0,%1,%2"
   [(set_attr "type" "simd_vcompare")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vlew_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VLEW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VLEW))]
   "TARGET_SIMD_SET"
-  "vlew %0, %1, %2"
+  "vlew\\t%0,%1,%2"
   [(set_attr "type" "simd_vcompare")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vltw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VLTW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VLTW))]
   "TARGET_SIMD_SET"
-  "vltw %0, %1, %2"
+  "vltw\\t%0,%1,%2"
   [(set_attr "type" "simd_vcompare")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vnew_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VNEW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VNEW))]
   "TARGET_SIMD_SET"
-  "vnew %0, %1, %2"
+  "vnew\\t%0,%1,%2"
   [(set_attr "type" "simd_vcompare")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr1aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR1AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR1AW))]
   "TARGET_SIMD_SET"
-  "vmr1aw %0, %1, %2"
+  "vmr1aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr1w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR1W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR1W))]
   "TARGET_SIMD_SET"
-  "vmr1w %0, %1, %2"
+  "vmr1w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr2aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR2AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR2AW))]
   "TARGET_SIMD_SET"
-  "vmr2aw %0, %1, %2"
+  "vmr2aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr2w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR2W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR2W))]
   "TARGET_SIMD_SET"
-  "vmr2w %0, %1, %2"
+  "vmr2w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr3aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR3AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR3AW))]
   "TARGET_SIMD_SET"
-  "vmr3aw %0, %1, %2"
+  "vmr3aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr3w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR3W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR3W))]
   "TARGET_SIMD_SET"
-  "vmr3w %0, %1, %2"
+  "vmr3w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr4aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR4AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR4AW))]
   "TARGET_SIMD_SET"
-  "vmr4aw %0, %1, %2"
+  "vmr4aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr4w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR4W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR4W))]
   "TARGET_SIMD_SET"
-  "vmr4w %0, %1, %2"
+  "vmr4w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr5aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR5AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR5AW))]
   "TARGET_SIMD_SET"
-  "vmr5aw %0, %1, %2"
+  "vmr5aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr5w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR5W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR5W))]
   "TARGET_SIMD_SET"
-  "vmr5w %0, %1, %2"
+  "vmr5w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr6aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR6AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR6AW))]
   "TARGET_SIMD_SET"
-  "vmr6aw %0, %1, %2"
+  "vmr6aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr6w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR6W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR6W))]
   "TARGET_SIMD_SET"
-  "vmr6w %0, %1, %2"
+  "vmr6w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr7aw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR7AW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR7AW))]
   "TARGET_SIMD_SET"
-  "vmr7aw %0, %1, %2"
+  "vmr7aw\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmr7w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMR7W))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMR7W))]
   "TARGET_SIMD_SET"
-  "vmr7w %0, %1, %2"
+  "vmr7w\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vmrb_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VMRB))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VMRB))]
   "TARGET_SIMD_SET"
-  "vmrb %0, %1, %2"
+  "vmrb\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vh264f_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VH264F))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VH264F))]
   "TARGET_SIMD_SET"
-  "vh264f %0, %1, %2"
+  "vh264f\\t%0,%1,%2"
   [(set_attr "type" "simd_vspecial_3cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vh264ft_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VH264FT))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VH264FT))]
   "TARGET_SIMD_SET"
-  "vh264ft %0, %1, %2"
+  "vh264ft\\t%0,%1,%2"
   [(set_attr "type" "simd_vspecial_3cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vh264fw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VH264FW))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VH264FW))]
   "TARGET_SIMD_SET"
-  "vh264fw %0, %1, %2"
+  "vh264fw\\t%0,%1,%2"
   [(set_attr "type" "simd_vspecial_3cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vvc1f_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VVC1F))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VVC1F))]
   "TARGET_SIMD_SET"
-  "vvc1f %0, %1, %2"
+  "vvc1f\\t%0,%1,%2"
   [(set_attr "type" "simd_vspecial_3cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vvc1ft_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                        (match_operand:V8HI 2 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VVC1FT))]
+                     (match_operand:V8HI 2 "vector_register_operand" "v")]
+                    UNSPEC_ARC_SIMD_VVC1FT))]
   "TARGET_SIMD_SET"
-  "vvc1ft %0, %1, %2"
+  "vvc1ft\\t%0,%1,%2"
   [(set_attr "type" "simd_vspecial_3cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 ;;---
 ;; V V r/limm Insns
-
-;; (define_insn "vbaddw_insn"
-;;   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-;;     (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-;;                           (match_operand:SI 2 "nonmemory_operand" "rCal")] UNSPEC_ARC_SIMD_VBADDW))]
-;;   "TARGET_SIMD_SET"
-;;   "vbaddw %0, %1, %2"
-;;   [(set_attr "length" "4")
-;;    (set_attr "cond" "nocond")])
-
 (define_insn "vbaddw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBADDW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBADDW))]
   "TARGET_SIMD_SET"
-  "vbaddw %0, %1, %2"
+  "vbaddw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbmaxw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBMAXW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBMAXW))]
   "TARGET_SIMD_SET"
-  "vbmaxw %0, %1, %2"
+  "vbmaxw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbminw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBMINW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBMINW))]
   "TARGET_SIMD_SET"
-  "vbminw %0, %1, %2"
+  "vbminw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbmulaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBMULAW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBMULAW))]
   "TARGET_SIMD_SET"
-  "vbmulaw %0, %1, %2"
+  "vbmulaw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbmulfw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBMULFW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBMULFW))]
   "TARGET_SIMD_SET"
-  "vbmulfw %0, %1, %2"
+  "vbmulfw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbmulw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBMULW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBMULW))]
   "TARGET_SIMD_SET"
-  "vbmulw %0, %1, %2"
+  "vbmulw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbrsubw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                    (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBRSUBW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBRSUBW))]
   "TARGET_SIMD_SET"
-  "vbrsubw %0, %1, %2"
+  "vbrsubw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vbsubw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VBSUBW))]
+                     (match_operand:SI 2 "nonmemory_operand" "r")]
+                    UNSPEC_ARC_SIMD_VBSUBW))]
   "TARGET_SIMD_SET"
-  "vbsubw %0, %1, %2"
+  "vbsubw\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vasrrwi_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VASRRWi))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VASRRWi))]
   "TARGET_SIMD_SET"
-  "vasrrwi %0, %1, %2"
+  "vasrrwi\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vasrsrwi_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                    (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VASRSRWi))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VASRSRWi))]
   "TARGET_SIMD_SET"
-  "vasrsrwi %0, %1, %2"
+  "vasrsrwi\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_2cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vasrwi_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VASRWi))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VASRWi))]
   "TARGET_SIMD_SET"
-  "vasrwi %0, %1, %2"
+  "vasrwi\\t%0,%1,%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vasrpwbi_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VASRPWBi))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VASRPWBi))]
   "TARGET_SIMD_SET"
-  "vasrpwbi %0, %1, %2"
+  "vasrpwbi\\t%0,%1,%2"
   [(set_attr "type" "simd_vpack")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vasrrpwbi_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VASRRPWBi))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VASRRPWBi))]
   "TARGET_SIMD_SET"
-  "vasrrpwbi %0, %1, %2"
+  "vasrrpwbi\\t%0,%1,%2"
   [(set_attr "type" "simd_vpack")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vsr8awi_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VSR8AWi))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VSR8AWi))]
   "TARGET_SIMD_SET"
-  "vsr8awi %0, %1, %2"
+  "vsr8awi\\t%0,%1,%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 (define_insn "vsr8i_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "L")] UNSPEC_ARC_SIMD_VSR8i))]
+                     (match_operand:SI 2 "immediate_operand" "L")]
+                    UNSPEC_ARC_SIMD_VSR8i))]
   "TARGET_SIMD_SET"
-  "vsr8i %0, %1, %2"
+  "vsr8i\\t%0,%1,%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vmvaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VMVAW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VMVAW))]
   "TARGET_SIMD_SET"
-  "vmvaw %0, %1, %2"
+  "vmvaw\\t%0,%1,%2"
   [(set_attr "type" "simd_vmove_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vmvw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VMVW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VMVW))]
   "TARGET_SIMD_SET"
-  "vmvw %0, %1, %2"
+  "vmvw\\t%0,%1,%2"
   [(set_attr "type" "simd_vmove")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vmvzw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VMVZW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VMVZW))]
   "TARGET_SIMD_SET"
-  "vmvzw %0, %1, %2"
+  "vmvzw\\t%0,%1,%2"
   [(set_attr "type" "simd_vmove_else_zero")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vd6tapf_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VD6TAPF))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VD6TAPF))]
   "TARGET_SIMD_SET"
-  "vd6tapf %0, %1, %2"
+  "vd6tapf\\t%0,%1,%2"
   [(set_attr "type" "simd_vspecial_4cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 ;; Va, rlimm, u8 (simm) insns
 (define_insn "vmovaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:SI 1 "nonmemory_operand"  "r")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VMOVAW))]
+       (unspec:V8HI [(match_operand:SI 1 "nonmemory_operand"  "r")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VMOVAW))]
   "TARGET_SIMD_SET"
-  "vmovaw %0, %1, %2"
+  "vmovaw\\t%0,%1,%2"
   [(set_attr "type" "simd_vmove_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vmovw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:SI 1 "nonmemory_operand"  "r")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VMOVW))]
+       (unspec:V8HI [(match_operand:SI 1 "nonmemory_operand"  "r")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VMOVW))]
   "TARGET_SIMD_SET"
-  "vmovw %0, %1, %2"
+  "vmovw\\t%0,%1,%2"
   [(set_attr "type" "simd_vmove")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vmovzw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-        (unspec:V8HI [(match_operand:SI 1 "nonmemory_operand"  "r")
-                     (match_operand:SI 2 "immediate_operand" "P")] UNSPEC_ARC_SIMD_VMOVZW))]
+       (unspec:V8HI [(match_operand:SI 1 "nonmemory_operand"  "r")
+                     (match_operand:SI 2 "immediate_operand" "P")]
+                    UNSPEC_ARC_SIMD_VMOVZW))]
   "TARGET_SIMD_SET"
-  "vmovzw %0, %1, %2"
+  "vmovzw\\t%0,%1,%2"
   [(set_attr "type" "simd_vmove_else_zero")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
                      (match_operand:SI 2 "immediate_operand" "K")
-                     (match_operand:V8HI 3 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VSR8))]
+                     (match_operand:V8HI 3 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VSR8))]
   "TARGET_SIMD_SET"
-  "vsr8 %0, %1, i%2"
+  "vsr8\\t%0,%1,i%2"
   [(set_attr "type" "simd_valign")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
                      (match_operand:SI 2 "immediate_operand" "K")
-                     (match_operand:V8HI 3 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VASRW))]
+                     (match_operand:V8HI 3 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VASRW))]
   "TARGET_SIMD_SET"
-  "vasrw %0, %1, i%2"
+  "vasrw\\t%0,%1,i%2"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
   [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
        (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")
                      (match_operand:SI 2 "immediate_operand" "K")
-                     (match_operand:V8HI 3 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VSR8AW))]
+                     (match_operand:V8HI 3 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VSR8AW))]
   "TARGET_SIMD_SET"
-  "vsr8aw %0, %1, i%2"
+  "vsr8aw\\t%0,%1,i%2"
   [(set_attr "type" "simd_valign_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 ;; Va, Vb insns
 (define_insn "vabsaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VABSAW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VABSAW))]
   "TARGET_SIMD_SET"
-  "vabsaw %0, %1"
+  "vabsaw\\t%0,%1"
   [(set_attr "type" "simd_varith_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vabsw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VABSW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VABSW))]
   "TARGET_SIMD_SET"
-  "vabsw %0, %1"
+  "vabsw\\t%0,%1"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vaddsuw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VADDSUW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VADDSUW))]
   "TARGET_SIMD_SET"
-  "vaddsuw %0, %1"
+  "vaddsuw\\t%0,%1"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vsignw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VSIGNW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VSIGNW))]
   "TARGET_SIMD_SET"
-  "vsignw %0, %1"
+  "vsignw\\t%0,%1"
   [(set_attr "type" "simd_varith_1cycle")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vexch1_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VEXCH1))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VEXCH1))]
   "TARGET_SIMD_SET"
-  "vexch1 %0, %1"
+  "vexch1\\t%0,%1"
   [(set_attr "type" "simd_vpermute")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vexch2_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VEXCH2))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VEXCH2))]
   "TARGET_SIMD_SET"
-  "vexch2 %0, %1"
+  "vexch2\\t%0,%1"
   [(set_attr "type" "simd_vpermute")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vexch4_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VEXCH4))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VEXCH4))]
   "TARGET_SIMD_SET"
-  "vexch4 %0, %1"
+  "vexch4\\t%0,%1"
   [(set_attr "type" "simd_vpermute")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vupbaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VUPBAW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VUPBAW))]
   "TARGET_SIMD_SET"
-  "vupbaw %0, %1"
+  "vupbaw\\t%0,%1"
   [(set_attr "type" "simd_vpack_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vupbw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VUPBW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VUPBW))]
   "TARGET_SIMD_SET"
-  "vupbw %0, %1"
+  "vupbw\\t%0,%1"
   [(set_attr "type" "simd_vpack")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vupsbaw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VUPSBAW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VUPSBAW))]
   "TARGET_SIMD_SET"
-  "vupsbaw %0, %1"
+  "vupsbaw\\t%0,%1"
   [(set_attr "type" "simd_vpack_with_acc")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vupsbw_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand"  "=v")
-       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")] UNSPEC_ARC_SIMD_VUPSBW))]
+       (unspec:V8HI [(match_operand:V8HI 1 "vector_register_operand"  "v")]
+                    UNSPEC_ARC_SIMD_VUPSBW))]
   "TARGET_SIMD_SET"
-  "vupsbw %0, %1"
+  "vupsbw\\t%0,%1"
   [(set_attr "type" "simd_vpack")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 ; DMA setup instructions
 (define_insn "vdirun_insn"
   [(set (match_operand:SI 0 "arc_simd_dma_register_operand"           "=d")
-        (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"  "r")
-                            (match_operand:SI 2 "nonmemory_operand" "r")] UNSPEC_ARC_SIMD_VDIRUN))]
+       (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"  "r")
+                            (match_operand:SI 2 "nonmemory_operand" "r")]
+                           UNSPEC_ARC_SIMD_VDIRUN))]
   "TARGET_SIMD_SET"
-  "vdirun %1, %2"
+  "vdirun\\t%1,%2"
   [(set_attr "type" "simd_dma")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vdorun_insn"
   [(set (match_operand:SI 0 "arc_simd_dma_register_operand"              "=d")
-        (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"     "r")
-                            (match_operand:SI 2 "nonmemory_operand"     "r")] UNSPEC_ARC_SIMD_VDORUN))]
+       (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"     "r")
+                            (match_operand:SI 2 "nonmemory_operand"     "r")]
+                           UNSPEC_ARC_SIMD_VDORUN))]
   "TARGET_SIMD_SET"
-  "vdorun %1, %2"
+  "vdorun\\t%1,%2"
   [(set_attr "type" "simd_dma")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vdiwr_insn"
   [(set (match_operand:SI 0 "arc_simd_dma_register_operand"           "=d,d")
-        (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"  "r,Cal")] UNSPEC_ARC_SIMD_VDIWR))]
+       (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"  "r,Cal")]
+                           UNSPEC_ARC_SIMD_VDIWR))]
   "TARGET_SIMD_SET"
-  "vdiwr %0, %1"
+  "vdiwr\\t%0,%1"
   [(set_attr "type" "simd_dma")
    (set_attr "length" "4,8")
    (set_attr "cond" "nocond,nocond")])
 
 (define_insn "vdowr_insn"
   [(set (match_operand:SI 0 "arc_simd_dma_register_operand"           "=d,d")
-        (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"  "r,Cal")] UNSPEC_ARC_SIMD_VDOWR))]
+       (unspec_volatile:SI [(match_operand:SI 1 "nonmemory_operand"  "r,Cal")]
+                           UNSPEC_ARC_SIMD_VDOWR))]
   "TARGET_SIMD_SET"
-  "vdowr %0, %1"
+  "vdowr\\t%0,%1"
   [(set_attr "type" "simd_dma")
    (set_attr "length" "4,8")
    (set_attr "cond" "nocond,nocond")])
 
 ;; vector record and run instructions
 (define_insn "vrec_insn"
-  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")] UNSPEC_ARC_SIMD_VREC)]
+  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")]
+                   UNSPEC_ARC_SIMD_VREC)]
   "TARGET_SIMD_SET"
-  "vrec %0"
+  "vrec\\t%0"
   [(set_attr "type" "simd_vcontrol")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vrun_insn"
-  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")] UNSPEC_ARC_SIMD_VRUN)]
+  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")]
+                   UNSPEC_ARC_SIMD_VRUN)]
   "TARGET_SIMD_SET"
-  "vrun %0"
+  "vrun\\t%0"
   [(set_attr "type" "simd_vcontrol")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vrecrun_insn"
-  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")] UNSPEC_ARC_SIMD_VRECRUN)]
+  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")]
+                   UNSPEC_ARC_SIMD_VRECRUN)]
   "TARGET_SIMD_SET"
-  "vrecrun %0"
+  "vrecrun\\t%0"
   [(set_attr "type" "simd_vcontrol")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vendrec_insn"
-  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")] UNSPEC_ARC_SIMD_VENDREC)]
+  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "r")]
+                   UNSPEC_ARC_SIMD_VENDREC)]
   "TARGET_SIMD_SET"
-  "vendrec %S0"
+  "vendrec\\t%0"
   [(set_attr "type" "simd_vcontrol")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vld32wh_insn"
-  [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-       (vec_concat:V8HI (zero_extend:V4HI (mem:V4QI (plus:SI (match_operand:SI 1 "immediate_operand" "P")
-                                                             (zero_extend: SI (vec_select:HI (match_operand:V8HI 2 "vector_register_operand"  "v")
-                                                                                             (parallel [(match_operand:SI 3 "immediate_operand" "L")]))))))
-                        (vec_select:V4HI (match_dup 0)
-                                         (parallel [(const_int 0)]))))]
-  "TARGET_SIMD_SET"
-  "vld32wh %0, [i%3,%1]"
+  [(set (match_operand:V8HI 0 "vector_register_operand" "=v")
+       (vec_concat:V8HI
+        (zero_extend:V4HI
+         (mem:V4QI
+          (plus:SI
+           (match_operand:SI 1 "immediate_operand" "P")
+           (zero_extend:SI
+            (vec_select:HI
+             (match_operand:V8HI 2 "vector_register_operand"  "v")
+             (parallel [(match_operand:SI 3 "immediate_operand" "L")]))))))
+        (vec_select:V4HI
+         (match_dup 0)
+         (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)])
+         )))]
+  "TARGET_SIMD_SET"
+  "vld32wh\\t%0,[i%3,%1]"
   [(set_attr "type" "simd_vload")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vld32wl_insn"
-  [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-       (vec_concat:V8HI (vec_select:V4HI (match_dup 0)
-                                         (parallel [(const_int 1)]))
-                        (zero_extend:V4HI (mem:V4QI (plus:SI (match_operand:SI 1 "immediate_operand" "P")
-                                                             (zero_extend: SI (vec_select:HI (match_operand:V8HI 2 "vector_register_operand"  "v")
-                                                                                             (parallel [(match_operand:SI 3 "immediate_operand" "L")])))))) ))]
-  "TARGET_SIMD_SET"
-  "vld32wl %0, [i%3,%1]"
+  [(set (match_operand:V8HI 0 "vector_register_operand" "=v")
+       (vec_concat:V8HI
+        (vec_select:V4HI
+         (match_dup 0)
+         (parallel [(const_int 4) (const_int 5) (const_int 6) (const_int 7)]))
+        (zero_extend:V4HI
+         (mem:V4QI
+          (plus:SI
+           (match_operand:SI 1 "immediate_operand" "P")
+           (zero_extend:SI
+            (vec_select:HI (match_operand:V8HI 2 "vector_register_operand" "v")
+                           (parallel
+                            [(match_operand:SI 3 "immediate_operand" "L")]))
+            ))))))]
+  "TARGET_SIMD_SET"
+  "vld32wl\\t%0,[i%3,%1]"
   [(set_attr "type" "simd_vload")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vld64w_insn"
   [(set (match_operand:V8HI 0 "vector_register_operand" "=v")
-       (zero_extend:V8HI (mem:V4HI (plus:SI (zero_extend:SI (vec_select:HI (match_operand:V8HI 1 "vector_register_operand"  "v")
-                                                                           (parallel [(match_operand:SI 2 "immediate_operand" "L")])))
-                                            (match_operand:SI 3 "immediate_operand" "P")))))]
+       (zero_extend:V8HI
+        (mem:V4HI
+         (plus:SI
+          (zero_extend:SI
+           (vec_select:HI (match_operand:V8HI 1 "vector_register_operand"  "v")
+                          (parallel [(match_operand:SI 2 "immediate_operand" "L")])))
+          (match_operand:SI 3 "immediate_operand" "P")))))]
  "TARGET_SIMD_SET"
- "vld64w %0, [i%2, %3]"
+ "vld64w\\t%0,[i%2,%3]"
  [(set_attr "type" "simd_vload")
   (set_attr "length" "4")
   (set_attr "cond" "nocond")]
 )
 
 (define_insn "vld64_insn"
-  [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-       (vec_concat:V8HI (vec_select:V4HI (match_dup 0)
-                                         (parallel [(const_int 1)]))
-                        (mem:V4HI (plus:SI (match_operand:SI 1 "immediate_operand" "P")
-                                           (zero_extend: SI (vec_select:HI (match_operand:V8HI 2 "vector_register_operand"  "v")
-                                                                           (parallel [(match_operand:SI 3 "immediate_operand" "L")]))))) ))]
-  "TARGET_SIMD_SET"
-  "vld64 %0, [i%3,%1]"
+  [(set (match_operand:V8HI 0 "vector_register_operand" "=v")
+       (vec_concat:V8HI
+        (vec_select:V4HI
+         (match_dup 0)
+         (parallel [(const_int 4) (const_int 5) (const_int 6) (const_int 7)]))
+        (mem:V4HI
+         (plus:SI
+          (match_operand:SI 1 "immediate_operand" "P")
+          (zero_extend:SI
+           (vec_select:HI
+            (match_operand:V8HI 2 "vector_register_operand"  "v")
+            (parallel [(match_operand:SI 3 "immediate_operand" "L")]))
+           )))))]
+  "TARGET_SIMD_SET"
+  "vld64\\t%0,[i%3,%1]"
   [(set_attr "type" "simd_vload")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vld32_insn"
-  [(set (match_operand:V8HI 0 "vector_register_operand"           "=v")
-       (vec_concat:V8HI (vec_select:V4HI (match_dup 0)
-                                         (parallel [(const_int 1)]))
-                        (vec_concat:V4HI  (vec_select:V2HI (match_dup 0)
-                                                           (parallel [(const_int 1)]))
-                                          (mem:V2HI (plus:SI (match_operand:SI 1 "immediate_operand" "P")
-                                                             (zero_extend: SI (vec_select:HI (match_operand:V8HI 2 "vector_register_operand"  "v")
-                                                                                             (parallel [(match_operand:SI 3 "immediate_operand" "L")])))))) ))]
-  "TARGET_SIMD_SET"
-  "vld32 %0, [i%3,%1]"
+  [(set (match_operand:V8HI 0 "vector_register_operand" "=v")
+       (vec_concat:V8HI
+        (vec_select:V4HI
+         (match_dup 0)
+         (parallel [(const_int 4) (const_int 5) (const_int 6) (const_int 7)]))
+        (vec_concat:V4HI
+         (vec_select:V2HI
+          (match_dup 0)
+          (parallel [(const_int 2) (const_int 3)]))
+         (mem:V2HI
+          (plus:SI
+           (match_operand:SI 1 "immediate_operand" "P")
+           (zero_extend:SI
+            (vec_select:HI
+             (match_operand:V8HI 2 "vector_register_operand"  "v")
+             (parallel [(match_operand:SI 3 "immediate_operand" "L")]))))))))]
+  "TARGET_SIMD_SET"
+  "vld32\\t%0,[i%3,%1]"
   [(set_attr "type" "simd_vload")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
 
 (define_insn "vst16_n_insn"
-  [(set  (mem:HI (plus:SI (match_operand:SI 0 "immediate_operand" "P")
-                         (zero_extend: SI (vec_select:HI (match_operand:V8HI 1 "vector_register_operand"  "v")
-                                                         (parallel [(match_operand:SI 2 "immediate_operand" "L")])))))
+  [(set (mem:HI
+        (plus:SI
+         (match_operand:SI 0 "immediate_operand" "P")
+         (zero_extend:SI
+          (vec_select:HI (match_operand:V8HI 1 "vector_register_operand"  "v")
+                         (parallel [(match_operand:SI 2 "immediate_operand" "L")])))))
         (vec_select:HI (match_operand:V8HI 3 "vector_register_operand" "v")
                        (parallel [(match_operand:SI 4 "immediate_operand" "L")])))]
  "TARGET_SIMD_SET"
- "vst16_%4 %3,[i%2, %0]"
+ "vst16_%4\\t%3,[i%2,%0]"
  [(set_attr "type" "simd_vstore")
   (set_attr "length" "4")
   (set_attr "cond" "nocond")])
 
 (define_insn "vst32_n_insn"
-  [(set  (mem:SI (plus:SI (match_operand:SI 0 "immediate_operand" "P")
-                         (zero_extend: SI (vec_select:HI (match_operand:V8HI 1 "vector_register_operand"  "v")
-                                                         (parallel [(match_operand:SI 2 "immediate_operand" "L")])))))
-        (vec_select:SI (unspec:V4SI [(match_operand:V8HI 3 "vector_register_operand" "v")] UNSPEC_ARC_SIMD_VCAST)
-                       (parallel [(match_operand:SI 4 "immediate_operand" "L")])))]
+  [(set (mem:SI
+        (plus:SI
+         (match_operand:SI 0 "immediate_operand" "P")
+         (zero_extend:SI
+          (vec_select:HI (match_operand:V8HI 1 "vector_register_operand"  "v")
+                         (parallel [(match_operand:SI 2 "immediate_operand" "L")])))))
+       (vec_select:SI (unspec:V4SI [(match_operand:V8HI 3 "vector_register_operand" "v")]
+                                   UNSPEC_ARC_SIMD_VCAST)
+                      (parallel [(match_operand:SI 4 "immediate_operand" "L")])))]
  "TARGET_SIMD_SET"
- "vst32_%4 %3,[i%2, %0]"
+ "vst32_%4\\t%3,[i%2,%0]"
  [(set_attr "type" "simd_vstore")
   (set_attr "length" "4")
   (set_attr "cond" "nocond")])
 
 ;; SIMD unit interrupt
 (define_insn "vinti_insn"
-  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "L")] UNSPEC_ARC_SIMD_VINTI)]
+  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand"  "L")]
+                   UNSPEC_ARC_SIMD_VINTI)]
   "TARGET_SIMD_SET"
-  "vinti %0"
+  "vinti\\t%0"
   [(set_attr "type" "simd_vcontrol")
    (set_attr "length" "4")
    (set_attr "cond" "nocond")])
+
+;; New ARCv2 SIMD extensions
+
+;;64-bit vectors of halwords and words
+(define_mode_iterator VWH [V4HI V2SI])
+
+;;double element vectors
+(define_mode_iterator VDV [V2HI V2SI])
+(define_mode_attr V_addsub [(V2HI "HI") (V2SI "SI")])
+(define_mode_attr V_addsub_suffix [(V2HI "2h") (V2SI "")])
+
+;;all vectors
+(define_mode_iterator VCT [(V2HI "TARGET_PLUS_DMPY")
+                          (V4HI "TARGET_PLUS_QMACW")
+                          (V2SI "TARGET_PLUS_QMACW")])
+(define_mode_attr V_suffix [(V2HI "2h") (V4HI "4h") (V2SI "2")])
+
+(define_code_iterator EMUVEC [(mult "TARGET_MPYW")
+                             (div "TARGET_DIVREM")
+                             smax smin])
+
+(define_code_attr voptab [(mult "mul")
+                         (div "div")
+                         (smin "smin")
+                         (smax "smax")])
+
+;; Widening operations.
+(define_code_iterator SE [sign_extend zero_extend])
+(define_code_attr V_US [(sign_extend "s") (zero_extend "u")])
+(define_code_attr V_US_suffix [(sign_extend "") (zero_extend "u")])
+
+
+;; Move patterns
+(define_expand "movv2hi"
+  [(set (match_operand:V2HI 0 "move_dest_operand" "")
+       (match_operand:V2HI 1 "general_operand" ""))]
+  ""
+  "{
+    if (prepare_move_operands (operands, V2HImode))
+         DONE;
+   }")
+
+(define_insn_and_split "*movv2hi_insn"
+  [(set (match_operand:V2HI 0 "move_dest_operand" "=r,r,r,m")
+       (match_operand:V2HI 1 "general_operand"    "i,r,m,r"))]
+  "(register_operand (operands[0], V2HImode)
+    || register_operand (operands[1], V2HImode))"
+  "@
+   #
+   mov%?\\t%0,%1
+   ld%U1%V1\\t%0,%1
+   st%U0%V0\\t%1,%0"
+  "reload_completed && GET_CODE (operands[1]) == CONST_VECTOR"
+  [(set (match_dup 0) (match_dup 2))]
+  {
+   HOST_WIDE_INT intval = INTVAL (XVECEXP (operands[1], 0, 1)) << 16;
+   intval |= INTVAL (XVECEXP (operands[1], 0, 0)) & 0xFFFF;
+
+   operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]));
+   operands[2] = GEN_INT (trunc_int_for_mode (intval, SImode));
+  }
+  [(set_attr "type" "move,move,load,store")
+   (set_attr "predicable" "yes,yes,no,no")
+   (set_attr "iscompact"  "false,false,false,false")
+   ])
+
+(define_expand "movmisalignv2hi"
+  [(set (match_operand:V2HI 0 "general_operand" "")
+       (match_operand:V2HI 1 "general_operand" ""))]
+ "unaligned_access"
+ "{
+   if (prepare_move_operands (operands, V2HImode))
+     DONE;
+  }")
+
+(define_expand "mov<mode>"
+  [(set (match_operand:VWH 0 "move_dest_operand" "")
+       (match_operand:VWH 1 "general_operand" ""))]
+  ""
+  "{
+    if (prepare_move_operands (operands, <MODE>mode))
+     DONE;
+   }")
+
+(define_insn_and_split "*mov<mode>_insn"
+  [(set (match_operand:VWH 0 "move_dest_operand" "=r,r,r,m")
+       (match_operand:VWH 1 "general_operand"    "i,r,m,r"))]
+  "(register_operand (operands[0], <MODE>mode)
+       || register_operand (operands[1], <MODE>mode))"
+  "@
+   #
+   vadd2\\t%0,%1,0
+   ldd%U1%V1\\t%0,%1
+   std%U0%V0\\t%1,%0"
+  "&& reload_completed && arc_split_move_p (operands)"
+  [(const_int 0)]
+  {
+   arc_split_move (operands);
+   DONE;
+  }
+  [(set_attr "type" "move,move,load,store")
+   (set_attr "length" "16,8,16,16")])
+
+(define_expand "movmisalign<mode>"
+  [(set (match_operand:VWH 0 "general_operand" "")
+       (match_operand:VWH 1 "general_operand" ""))]
+ "unaligned_access"
+ "{
+   if (prepare_move_operands (operands, <MODE>mode))
+     DONE;
+  }")
+
+(define_insn "bswapv2hi2"
+  [(set (match_operand:V2HI 0 "register_operand" "=r,r")
+       (bswap:V2HI (match_operand:V2HI 1 "nonmemory_operand" "r,i")))]
+  "TARGET_V2 && TARGET_SWAP"
+  "swape\\t%0,%1"
+  [(set_attr "length" "4,8")
+   (set_attr "type" "two_cycle_core")])
+
+;; Simple arithmetic insns
+(define_insn "add<mode>3"
+  [(set (match_operand:VCT 0 "register_operand"          "=r,r")
+       (plus:VCT (match_operand:VCT 1 "register_operand" "0,r")
+                 (match_operand:VCT 2 "register_operand" "r,r")))]
+  "TARGET_PLUS_DMPY"
+  "vadd<V_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "sub<mode>3"
+  [(set (match_operand:VCT 0 "register_operand"           "=r,r")
+       (minus:VCT (match_operand:VCT 1 "register_operand" "0,r")
+                  (match_operand:VCT 2 "register_operand" "r,r")))]
+  "TARGET_PLUS_DMPY"
+  "vsub<V_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+;; Combined arithmetic ops
+(define_insn "addsub<mode>3"
+  [(set (match_operand:VDV 0 "register_operand" "=r,r")
+       (vec_concat:VDV
+        (plus:<V_addsub>
+         (vec_select:<V_addsub> (match_operand:VDV 1 "register_operand" "0,r")
+                                (parallel [(const_int 0)]))
+         (vec_select:<V_addsub> (match_operand:VDV 2 "register_operand" "r,r")
+                                (parallel [(const_int 0)])))
+        (minus:<V_addsub>
+         (vec_select:<V_addsub> (match_dup 1) (parallel [(const_int 1)]))
+         (vec_select:<V_addsub> (match_dup 2) (parallel [(const_int 1)])))))]
+  "TARGET_PLUS_DMPY"
+  "vaddsub<V_addsub_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "subadd<mode>3"
+  [(set (match_operand:VDV 0 "register_operand" "=r,r")
+       (vec_concat:VDV
+        (minus:<V_addsub>
+         (vec_select:<V_addsub> (match_operand:VDV 1 "register_operand" "0,r")
+                                (parallel [(const_int 0)]))
+         (vec_select:<V_addsub> (match_operand:VDV 2 "register_operand" "r,r")
+                                (parallel [(const_int 0)])))
+        (plus:<V_addsub>
+         (vec_select:<V_addsub> (match_dup 1) (parallel [(const_int 1)]))
+         (vec_select:<V_addsub> (match_dup 2) (parallel [(const_int 1)])))))]
+  "TARGET_PLUS_DMPY"
+  "vsubadd<V_addsub_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "addsubv4hi3"
+  [(set (match_operand:V4HI 0 "even_register_operand" "=r,r")
+       (vec_concat:V4HI
+        (vec_concat:V2HI
+         (plus:HI
+          (vec_select:HI (match_operand:V4HI 1 "even_register_operand" "0,r")
+                         (parallel [(const_int 0)]))
+          (vec_select:HI (match_operand:V4HI 2 "even_register_operand" "r,r")
+                         (parallel [(const_int 0)])))
+         (minus:HI (vec_select:HI (match_dup 1) (parallel [(const_int 1)]))
+                   (vec_select:HI (match_dup 2) (parallel [(const_int 1)]))))
+        (vec_concat:V2HI
+         (plus:HI (vec_select:HI (match_dup 1) (parallel [(const_int 2)]))
+                  (vec_select:HI (match_dup 2) (parallel [(const_int 2)])))
+         (minus:HI (vec_select:HI (match_dup 1) (parallel [(const_int 3)]))
+                   (vec_select:HI (match_dup 2) (parallel [(const_int 3)]))))
+        ))]
+  "TARGET_PLUS_QMACW"
+  "vaddsub4h%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "subaddv4hi3"
+  [(set (match_operand:V4HI 0 "even_register_operand" "=r,r")
+       (vec_concat:V4HI
+        (vec_concat:V2HI
+         (minus:HI
+          (vec_select:HI (match_operand:V4HI 1 "even_register_operand" "0,r")
+                         (parallel [(const_int 0)]))
+          (vec_select:HI (match_operand:V4HI 2 "even_register_operand" "r,r")
+                         (parallel [(const_int 0)])))
+         (plus:HI (vec_select:HI (match_dup 1) (parallel [(const_int 1)]))
+                  (vec_select:HI (match_dup 2) (parallel [(const_int 1)]))))
+        (vec_concat:V2HI
+         (minus:HI (vec_select:HI (match_dup 1) (parallel [(const_int 2)]))
+                   (vec_select:HI (match_dup 2) (parallel [(const_int 2)])))
+         (plus:HI (vec_select:HI (match_dup 1) (parallel [(const_int 3)]))
+                  (vec_select:HI (match_dup 2) (parallel [(const_int 3)]))))
+        ))]
+  "TARGET_PLUS_QMACW"
+  "vsubadd4h%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+;; Multiplication
+(define_insn "dmpyh<V_US_suffix>"
+  [(set (match_operand:SI 0 "register_operand" "=r,r")
+       (plus:SI
+        (mult:SI
+         (SE:SI
+          (vec_select:HI (match_operand:V2HI 1 "register_operand" "0,r")
+                         (parallel [(const_int 0)])))
+         (SE:SI
+          (vec_select:HI (match_operand:V2HI 2 "register_operand" "r,r")
+                         (parallel [(const_int 0)]))))
+        (mult:SI
+         (SE:SI (vec_select:HI (match_dup 1) (parallel [(const_int 1)])))
+         (SE:SI (vec_select:HI (match_dup 2) (parallel [(const_int 1)]))))))
+   (set (reg:DI ARCV2_ACC)
+       (zero_extend:DI
+        (plus:SI
+         (mult:SI
+          (SE:SI (vec_select:HI (match_dup 1) (parallel [(const_int 0)])))
+          (SE:SI (vec_select:HI (match_dup 2) (parallel [(const_int 0)]))))
+         (mult:SI
+          (SE:SI (vec_select:HI (match_dup 1) (parallel [(const_int 1)])))
+          (SE:SI (vec_select:HI (match_dup 2) (parallel [(const_int 1)])))))))]
+  "TARGET_PLUS_DMPY"
+  "dmpyh<V_US_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+;; We can use dmac as well here.  To be investigated which version
+;; brings more.
+(define_expand "sdot_prodv2hi"
+  [(match_operand:SI 0 "register_operand" "")
+   (match_operand:V2HI 1 "register_operand" "")
+   (match_operand:V2HI 2 "register_operand" "")
+   (match_operand:SI 3 "register_operand" "")]
+  "TARGET_PLUS_DMPY"
+{
+ rtx t = gen_reg_rtx (SImode);
+ emit_insn (gen_dmpyh (t, operands[1], operands[2]));
+ emit_insn (gen_addsi3 (operands[0], operands[3], t));
+ DONE;
+})
+
+(define_expand "udot_prodv2hi"
+  [(match_operand:SI 0 "register_operand" "")
+   (match_operand:V2HI 1 "register_operand" "")
+   (match_operand:V2HI 2 "register_operand" "")
+   (match_operand:SI 3 "register_operand" "")]
+  "TARGET_PLUS_DMPY"
+{
+ rtx t = gen_reg_rtx (SImode);
+ emit_insn (gen_dmpyhu (t, operands[1], operands[2]));
+ emit_insn (gen_addsi3 (operands[0], operands[3], t));
+ DONE;
+})
+
+(define_expand "sdot_prodv4hi"
+  [(match_operand:V2SI 0 "register_operand" "")
+   (match_operand:V4HI 1 "register_operand" "")
+   (match_operand:V4HI 2 "register_operand" "")
+   (match_operand:V2SI 3 "register_operand" "")]
+  "TARGET_PLUS_MACD"
+{
+ rtx acc_reg  = gen_rtx_REG  (V2SImode, ACC_REG_FIRST);
+ rtx op1_low  = gen_lowpart  (V2HImode, operands[1]);
+ rtx op1_high = gen_highpart (V2HImode, operands[1]);
+ rtx op2_low  = gen_lowpart  (V2HImode, operands[2]);
+ rtx op2_high = gen_highpart (V2HImode, operands[2]);
+
+ emit_move_insn (acc_reg, operands[3]);
+ emit_insn (gen_arc_vec_smac_v2hiv2si_zero (op1_low, op2_low));
+ emit_insn (gen_arc_vec_smac_v2hiv2si (operands[0], op1_high, op2_high));
+ DONE;
+})
+
+(define_expand "udot_prodv4hi"
+  [(match_operand:V2SI 0 "register_operand" "")
+   (match_operand:V4HI 1 "register_operand" "")
+   (match_operand:V4HI 2 "register_operand" "")
+   (match_operand:V2SI 3 "register_operand" "")]
+  "TARGET_PLUS_MACD"
+{
+ rtx acc_reg  = gen_rtx_REG  (V2SImode, ACC_REG_FIRST);
+ rtx op1_low  = gen_lowpart  (V2HImode, operands[1]);
+ rtx op1_high = gen_highpart (V2HImode, operands[1]);
+ rtx op2_low  = gen_lowpart  (V2HImode, operands[2]);
+ rtx op2_high = gen_highpart (V2HImode, operands[2]);
+
+ emit_move_insn (acc_reg, operands[3]);
+ emit_insn (gen_arc_vec_umac_v2hiv2si_zero (op1_low, op2_low));
+ emit_insn (gen_arc_vec_umac_v2hiv2si (operands[0], op1_high, op2_high));
+ DONE;
+})
+
+(define_insn "arc_vec_<V_US>mult_lo_v4hi"
+ [(set (match_operand:V2SI 0 "even_register_operand"                     "=r,r")
+       (mult:V2SI (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 1 "even_register_operand" "0,r")
+                           (parallel [(const_int 0) (const_int 1)])))
+                 (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 2 "even_register_operand" "r,r")
+                           (parallel [(const_int 0) (const_int 1)])))))
+  (set (reg:V2SI ARCV2_ACC)
+       (mult:V2SI (SE:V2SI
+                  (vec_select:V2HI (match_dup 1)
+                                   (parallel [(const_int 0) (const_int 1)])))
+                 (SE:V2SI
+                  (vec_select:V2HI (match_dup 2)
+                                   (parallel [(const_int 0) (const_int 1)])))))
+  ]
+  "TARGET_PLUS_MACD"
+  "vmpy2h<V_US_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "arc_vec_<V_US>multacc_lo_v4hi"
+  [(set (reg:V2SI ARCV2_ACC)
+       (mult:V2SI (SE:V2SI (vec_select:V2HI
+                            (match_operand:V4HI 0 "even_register_operand" "r")
+                            (parallel [(const_int 0) (const_int 1)])))
+                  (SE:V2SI (vec_select:V2HI
+                            (match_operand:V4HI 1 "even_register_operand" "r")
+                            (parallel [(const_int 0) (const_int 1)])))))
+  ]
+  "TARGET_PLUS_MACD"
+  "vmpy2h<V_US_suffix>%?\\t0,%0,%1"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "no")
+   (set_attr "cond" "nocond")])
+
+(define_expand "vec_widen_<V_US>mult_lo_v4hi"
+ [(set (match_operand:V2SI 0 "even_register_operand"                 "")
+       (mult:V2SI (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 1 "even_register_operand" "")
+                           (parallel [(const_int 0) (const_int 1)])))
+                 (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 2 "even_register_operand" "")
+                           (parallel [(const_int 0) (const_int 1)])))))]
+  "TARGET_PLUS_QMACW"
+  {
+     emit_insn (gen_arc_vec_<V_US>mult_lo_v4hi (operands[0],
+                                               operands[1],
+                                               operands[2]));
+     DONE;
+  }
+)
+
+(define_insn "arc_vec_<V_US>mult_hi_v4hi"
+ [(set (match_operand:V2SI 0 "even_register_operand"                     "=r,r")
+       (mult:V2SI (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 1 "even_register_operand" "0,r")
+                           (parallel [(const_int 2) (const_int 3)])))
+                 (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 2 "even_register_operand" "r,r")
+                           (parallel [(const_int 2) (const_int 3)])))))
+  (set (reg:V2SI ARCV2_ACC)
+       (mult:V2SI (SE:V2SI
+                  (vec_select:V2HI (match_dup 1)
+                                   (parallel [(const_int 2) (const_int 3)])))
+                 (SE:V2SI
+                  (vec_select:V2HI (match_dup 2)
+                                   (parallel [(const_int 2) (const_int 3)])))))
+  ]
+  "TARGET_PLUS_QMACW"
+  "vmpy2h<V_US_suffix>%?\\t%0,%R1,%R2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_expand "vec_widen_<V_US>mult_hi_v4hi"
+ [(set (match_operand:V2SI 0 "even_register_operand")
+       (mult:V2SI (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 1 "even_register_operand")
+                           (parallel [(const_int 2) (const_int 3)])))
+                 (SE:V2SI (vec_select:V2HI
+                           (match_operand:V4HI 2 "even_register_operand")
+                           (parallel [(const_int 2) (const_int 3)])))))]
+  "TARGET_PLUS_QMACW"
+  {
+     emit_insn (gen_arc_vec_<V_US>mult_hi_v4hi (operands[0],
+                                               operands[1],
+                                               operands[2]));
+     DONE;
+  }
+)
+
+(define_insn "arc_vec_<V_US>mac_v2hiv2si"
+ [(set (match_operand:V2SI 0 "even_register_operand"     "=r,Ral,r")
+       (plus:V2SI
+       (mult:V2SI
+        (SE:V2SI (match_operand:V2HI 1 "register_operand" "0,  r,r"))
+        (SE:V2SI (match_operand:V2HI 2 "register_operand" "r,  r,r")))
+       (reg:V2SI ARCV2_ACC)))
+  (set (reg:V2SI ARCV2_ACC)
+       (plus:V2SI
+       (mult:V2SI (SE:V2SI (match_dup 1))
+                  (SE:V2SI (match_dup 2)))
+       (reg:V2SI ARCV2_ACC)))
+  ]
+  "TARGET_PLUS_MACD"
+  "@
+   vmac2h<V_US_suffix>%?\\t%0,%1,%2
+   vmac2h<V_US_suffix>%?\\t0,%1,%2
+   vmac2h<V_US_suffix>%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no,no")])
+
+(define_insn "arc_vec_<V_US>mac_v2hiv2si_zero"
+ [(set (reg:V2SI ARCV2_ACC)
+       (plus:V2SI
+       (mult:V2SI (SE:V2SI (match_operand:V2HI 0 "register_operand" "r"))
+                  (SE:V2SI (match_operand:V2HI 1 "register_operand" "r")))
+       (reg:V2SI ARCV2_ACC)))]
+  "TARGET_PLUS_MACD"
+  "vmac2h<V_US_suffix>%?\\t0,%0,%1"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")])
+
+;; Builtins
+(define_insn "dmach"
+  [(set (match_operand:SI 0 "register_operand" "=r,r")
+       (unspec:SI [(match_operand:V2HI 1 "register_operand" "0,r")
+                   (match_operand:V2HI 2 "register_operand" "r,r")
+                   (reg:DI ARCV2_ACC)]
+                  UNSPEC_ARC_DMACH))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_DMPY"
+  "dmach%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "dmachu"
+  [(set (match_operand:SI 0 "register_operand" "=r,r")
+       (unspec:SI [(match_operand:V2HI 1 "register_operand" "0,r")
+                   (match_operand:V2HI 2 "register_operand" "r,r")
+                   (reg:DI ARCV2_ACC)]
+                  UNSPEC_ARC_DMACHU))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_DMPY"
+  "dmachu%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "dmacwh"
+  [(set (match_operand:DI 0 "even_register_operand" "=r,r")
+       (unspec:DI [(match_operand:V2SI 1 "even_register_operand" "0,r")
+                   (match_operand:V2HI 2 "register_operand"      "r,r")
+                   (reg:DI ARCV2_ACC)]
+                  UNSPEC_ARC_DMACWH))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "dmacwh%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "dmacwhu"
+  [(set (match_operand:DI 0 "register_operand" "=r,r")
+       (unspec:DI [(match_operand:V2SI 1 "even_register_operand" "0,r")
+                   (match_operand:V2HI 2 "register_operand"      "r,r")
+                   (reg:DI ARCV2_ACC)]
+                  UNSPEC_ARC_DMACWHU))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "dmacwhu%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "vmac2h"
+  [(set (match_operand:V2SI 0 "even_register_operand" "=r,r")
+       (unspec:V2SI [(match_operand:V2HI 1 "register_operand" "0,r")
+                     (match_operand:V2HI 2 "register_operand" "r,r")
+                     (reg:DI ARCV2_ACC)]
+                    UNSPEC_ARC_VMAC2H))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_MACD"
+  "vmac2h%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "vmac2hu"
+  [(set (match_operand:V2SI 0 "even_register_operand" "=r,r")
+       (unspec:V2SI [(match_operand:V2HI 1 "register_operand" "0,r")
+                     (match_operand:V2HI 2 "register_operand" "r,r")
+                     (reg:DI ARCV2_ACC)]
+                  UNSPEC_ARC_VMAC2HU))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_MACD"
+  "vmac2hu%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "vmpy2h"
+  [(set (match_operand:V2SI 0 "even_register_operand" "=r,r")
+       (unspec:V2SI [(match_operand:V2HI 1 "register_operand" "0,r")
+                     (match_operand:V2HI 2 "register_operand" "r,r")]
+                    UNSPEC_ARC_VMPY2H))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_MACD"
+  "vmpy2h%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "vmpy2hu"
+  [(set (match_operand:V2SI 0 "even_register_operand" "=r,r")
+       (unspec:V2SI [(match_operand:V2HI 1 "register_operand" "0,r")
+                     (match_operand:V2HI 2 "register_operand" "r,r")]
+                    UNSPEC_ARC_VMPY2HU))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_MACD"
+  "vmpy2hu%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "qmach"
+  [(set (match_operand:DI 0 "even_register_operand" "=r,r")
+       (unspec:DI [(match_operand:V4HI 1 "even_register_operand" "0,r")
+                   (match_operand:V4HI 2 "even_register_operand" "r,r")
+                   (reg:DI ARCV2_ACC)]
+                    UNSPEC_ARC_QMACH))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "qmach%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "qmachu"
+  [(set (match_operand:DI 0 "even_register_operand" "=r,r")
+       (unspec:DI [(match_operand:V4HI 1 "even_register_operand" "0,r")
+                   (match_operand:V4HI 2 "even_register_operand" "r,r")
+                   (reg:DI ARCV2_ACC)]
+                  UNSPEC_ARC_QMACHU))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "qmachu%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "qmpyh"
+  [(set (match_operand:DI 0 "even_register_operand" "=r,r")
+       (unspec:DI [(match_operand:V4HI 1 "even_register_operand" "0,r")
+                   (match_operand:V4HI 2 "even_register_operand" "r,r")]
+                    UNSPEC_ARC_QMPYH))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "qmpyh%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+(define_insn "qmpyhu"
+  [(set (match_operand:DI 0 "even_register_operand" "=r,r")
+       (unspec:DI [(match_operand:V4HI 1 "even_register_operand" "0,r")
+                   (match_operand:V4HI 2 "even_register_operand" "r,r")]
+                  UNSPEC_ARC_QMPYHU))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "qmpyhu%?\\t%0,%1,%2"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")
+   (set_attr "predicable" "yes,no")
+   (set_attr "cond" "canuse,nocond")])
+
+;; Emulated vector instructions.
+(define_insn_and_split "<voptab>v2si3"
+  [(set (match_operand:V2SI 0 "register_operand" "=r")
+       (EMUVEC:V2SI (match_operand:V2SI 1 "register_operand" "r")
+                    (match_operand:V2SI 2 "nonmemory_operand" "ri")))]
+  ""
+  "#"
+  "reload_completed"
+  [(const_int 0)]
+  {
+   rtx high_dest = gen_highpart (SImode, operands[0]);
+   rtx low_dest = gen_lowpart (SImode, operands[0]);
+   rtx high_op1 = gen_highpart (SImode, operands[1]);
+   rtx low_op1 = gen_lowpart (SImode, operands[1]);
+   rtx high_op2 = gen_highpart (SImode, operands[2]);
+   rtx low_op2 = gen_lowpart (SImode, operands[2]);
+   emit_insn (gen_<voptab>si3 (low_dest, low_op1, low_op2));
+   emit_insn (gen_<voptab>si3 (high_dest, high_op1, high_op2));
+   DONE;
+  }
+  [(set_attr "length" "12")
+   (set_attr "type" "multi")])
+
+(define_expand "neg<mode>2"
+  [(set (match_operand:VCT 0 "register_operand")
+       (neg:VCT (match_operand:VCT 1 "register_operand")))]
+  "TARGET_PLUS_DMPY"
+  "")
+
+(define_insn "*neg<mode>2"
+  [(set (match_operand:VCT 0 "register_operand" "=r")
+       (neg:VCT (match_operand:VCT 1 "register_operand" "r")))]
+  "TARGET_PLUS_DMPY"
+  "vsub<V_suffix>\\t%0,0,%1"
+  [(set_attr "length" "8")
+   (set_attr "type" "multi")])
+
+(define_insn "reduc_plus_scal_v4hi"
+  [(set (match_operand:HI 0 "even_register_operand" "=r")
+       (unspec:HI [(match_operand:V4HI 1 "even_register_operand" "r")]
+                  UNSPEC_ARC_QMPYH))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_QMACW"
+  "qmpyh\\t%0,%1,1"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")])
+
+(define_insn "reduc_plus_scal_v2si"
+  [(set (match_operand:SI 0 "even_register_operand" "=r")
+       (unspec:SI [(match_operand:V2SI 1 "even_register_operand" "r")]
+                  UNSPEC_ARC_DMPYWH))
+   (clobber (reg:DI ARCV2_ACC))]
+  "TARGET_PLUS_DMPY"
+  "dmpywh\\t%0,%1,1"
+  [(set_attr "length" "4")
+   (set_attr "type" "multi")])
+
+(define_insn_and_split "vec_duplicatev2si"
+  [(set (match_operand:V2SI 0 "register_operand" "=r")
+       (vec_duplicate:V2SI
+        (match_operand:SI 1 "nonmemory_operand" "ri")))]
+  ""
+  "#"
+  "reload_completed"
+  [(const_int 0)]
+  {
+   rtx high_dest = gen_highpart (SImode, operands[0]);
+   rtx low_dest = gen_lowpart (SImode, operands[0]);
+   emit_move_insn (high_dest, operands[1]);
+   emit_move_insn (low_dest, operands[1]);
+   DONE;
+  }
+  [(set_attr "length" "8")
+   (set_attr "type" "multi")])
+
+(define_insn_and_split "vec_duplicatev4hi"
+  [(set (match_operand:V4HI 0 "register_operand" "=r")
+       (vec_duplicate:V4HI
+        (match_operand:HI 1 "nonmemory_operand" "ri")))]
+  "TARGET_BARREL_SHIFTER"
+  "#"
+  "reload_completed"
+  [(const_int 0)]
+  {
+   rtx high_dest = gen_highpart (SImode, operands[0]);
+   rtx low_dest = gen_lowpart (SImode, operands[0]);
+   rtx tmp = gen_lowpart (SImode, operands[1]);
+   emit_insn (gen_rtx_SET (high_dest,
+                          gen_rtx_ASHIFT (SImode, tmp, GEN_INT (16))));
+   emit_insn (gen_rtx_SET (low_dest,
+                          gen_rtx_IOR (SImode, high_dest, tmp)));
+   emit_move_insn (high_dest, low_dest);
+   DONE;
+  }
+  [(set_attr "length" "12")
+   (set_attr "type" "multi")])