constraints.md ("C"): Do not depend on TARGET_SSE.
authorUros Bizjak <ubizjak@gmail.com>
Fri, 5 Oct 2018 16:45:52 +0000 (18:45 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 5 Oct 2018 16:45:52 +0000 (18:45 +0200)
* config/i386/constraints.md ("C"): Do not depend on TARGET_SSE.
* config/i386/predicates.md (nonimm_or_0_operand): Rename
from vector_move_operand.  Update all uses.

From-SVN: r264877

gcc/ChangeLog
gcc/config/i386/constraints.md
gcc/config/i386/i386.md
gcc/config/i386/mmx.md
gcc/config/i386/predicates.md
gcc/config/i386/sse.md
gcc/config/i386/subst.md

index b12413f558fa1a51ea531e6b9f4a0bbcf4419d41..ad39b8396948ca22b662903b79acd8a2a6623e9d 100644 (file)
@@ -1,3 +1,9 @@
+2018-10-05  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/constraints.md ("C"): Do not depend on TARGET_SSE.
+       * config/i386/predicates.md (nonimm_or_0_operand): Rename
+       from vector_move_operand.  Update all uses.
+
 2018-10-05  Martin Sebor  <msebor@redhat.com>
 
        PR tree-optimization/87490
index 5456564d3a0355f2fed8552e612f8dd8c5a8ed02..41b8690aeaff4bb1272e331f171dc44c597524a9 100644 (file)
 
 ;; This can theoretically be any mode's CONST0_RTX.
 (define_constraint "C"
-  "SSE constant zero operand."
-  (and (match_test "TARGET_SSE")
-       (ior (match_test "op == const0_rtx")
-           (match_operand 0 "const0_operand"))))
+  "Constant zero operand."
+  (ior (match_test "op == const0_rtx")
+       (match_operand 0 "const0_operand")))
 
 ;; Constant-or-symbol-reference constraints.
 
index 122e57f98cc4454566fc80140ef40988a4b8208b..b8d4589bd0c8c0785058ee86195c2a1cd5d61257 100644 (file)
 (define_insn_and_split "copysign<mode>3_const"
   [(set (match_operand:CSGNMODE 0 "register_operand" "=Yv")
        (unspec:CSGNMODE
-         [(match_operand:<CSGNVMODE> 1 "vector_move_operand" "YvmC")
+         [(match_operand:<CSGNVMODE> 1 "nonimm_or_0_operand" "YvmC")
           (match_operand:CSGNMODE 2 "register_operand" "0")
           (match_operand:<CSGNVMODE> 3 "nonimmediate_operand" "Yvm")]
          UNSPEC_COPYSIGN))]
index b1496f5405bf1f42967c79f0ba13e0ea0b91f9e3..539671ce4be5be805a70e4a03802cfd4c1223507 100644 (file)
@@ -79,7 +79,7 @@
 (define_insn "*mov<mode>_internal"
   [(set (match_operand:MMXMODE 0 "nonimmediate_operand"
     "=r ,o ,r,r ,m ,?!y,!y,?!y,m  ,r  ,?!y,v,v,v,m,r,v,!y,*x")
-       (match_operand:MMXMODE 1 "vector_move_operand"
+       (match_operand:MMXMODE 1 "nonimm_or_0_operand"
     "rCo,rC,C,rm,rC,C  ,!y,m  ,?!y,?!y,r  ,C,v,m,v,v,r,*x,!y"))]
   "TARGET_MMX
    && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   [(set (match_operand:V2SF 0 "register_operand"     "=y,y")
        (vec_concat:V2SF
          (match_operand:SF 1 "nonimmediate_operand" " 0,rm")
-         (match_operand:SF 2 "vector_move_operand"  "ym,C")))]
+         (match_operand:SF 2 "nonimm_or_0_operand"  "ym,C")))]
   "TARGET_MMX && !TARGET_SSE"
   "@
    punpckldq\t{%2, %0|%0, %2}
   [(set (match_operand:V2SI 0 "register_operand"     "=y,y")
        (vec_concat:V2SI
          (match_operand:SI 1 "nonimmediate_operand" " 0,rm")
-         (match_operand:SI 2 "vector_move_operand"  "ym,C")))]
+         (match_operand:SI 2 "nonimm_or_0_operand"  "ym,C")))]
   "TARGET_MMX && !TARGET_SSE"
   "@
    punpckldq\t{%2, %0|%0, %2}
index 221053f96b6d9883331706e48d469d5ed1299ab0..bd262d77c6b72e5e4e30cae7997a8c3f33d98dac 100644 (file)
   (ior (match_operand 0 "register_operand")
        (match_operand 0 "vector_memory_operand")))
 
-; Return true when OP is operand acceptable for standard SSE move.
-(define_predicate "vector_move_operand"
-  (ior (match_operand 0 "nonimmediate_operand")
-       (match_operand 0 "const0_operand")))
-
 ;; Return true when OP is either nonimmediate operand, or any
 ;; CONST_VECTOR.
 (define_predicate "nonimmediate_or_const_vector_operand"
   (ior (match_operand 0 "register_operand")
        (match_operand 0 "const0_operand")))
 
+; Return true when OP is a nonimmediate or zero.
+(define_predicate "nonimm_or_0_operand"
+  (ior (match_operand 0 "nonimmediate_operand")
+       (match_operand 0 "const0_operand")))
+
 (define_predicate "norex_memory_operand"
   (and (match_operand 0 "memory_operand")
        (not (match_test "x86_extended_reg_mentioned_p (op)"))))
index ce26994f61fa39cd6fa1decb5c7fb04415be4814..692959b1666131335c19b8fef1d6057785dd3a4d 100644 (file)
   [(set (match_operand:V48_AVX512VL 0 "register_operand" "=v,v")
        (vec_merge:V48_AVX512VL
          (match_operand:V48_AVX512VL 1 "nonimmediate_operand" "v,m")
-         (match_operand:V48_AVX512VL 2 "vector_move_operand" "0C,0C")
+         (match_operand:V48_AVX512VL 2 "nonimm_or_0_operand" "0C,0C")
          (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F"
 {
   [(set (match_operand:VI12_AVX512VL 0 "register_operand" "=v,v")
        (vec_merge:VI12_AVX512VL
          (match_operand:VI12_AVX512VL 1 "nonimmediate_operand" "v,m")
-         (match_operand:VI12_AVX512VL 2 "vector_move_operand" "0C,0C")
+         (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand" "0C,0C")
          (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512BW"
   "vmovdqu<ssescalarsize>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
            (unspec:VF_128
              [(match_operand:VF_128 1 "nonimmediate_operand" "vm")]
            UNSPEC_RCP14)
-             (match_operand:VF_128 3 "vector_move_operand" "0C")
+             (match_operand:VF_128 3 "nonimm_or_0_operand" "0C")
            (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
          (match_operand:VF_128 2 "register_operand" "v")
          (const_int 1)))]
            (unspec:VF_128
              [(match_operand:VF_128 1 "nonimmediate_operand" "vm")]
              UNSPEC_RSQRT14)
-             (match_operand:VF_128 3 "vector_move_operand" "0C")
+             (match_operand:VF_128 3 "nonimm_or_0_operand" "0C")
              (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
          (match_operand:VF_128 2 "register_operand" "v")
          (const_int 1)))]
   [(set (match_operand:V48_AVX512VL 0 "register_operand")
        (vec_merge:V48_AVX512VL
          (match_operand:V48_AVX512VL 1 "nonimmediate_operand")
-         (match_operand:V48_AVX512VL 2 "vector_move_operand")
+         (match_operand:V48_AVX512VL 2 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 3 "register_operand")))]
   "TARGET_AVX512F")
 
   [(set (match_operand:VI12_AVX512VL 0 "register_operand")
        (vec_merge:VI12_AVX512VL
          (match_operand:VI12_AVX512VL 1 "nonimmediate_operand")
-         (match_operand:VI12_AVX512VL 2 "vector_move_operand")
+         (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 3 "register_operand")))]
   "TARGET_AVX512BW")
 
   [(set (match_operand:VI_256 0 "register_operand")
        (vec_merge:VI_256
          (match_operand:VI_256 1 "nonimmediate_operand")
-         (match_operand:VI_256 2 "vector_move_operand")
+         (match_operand:VI_256 2 "nonimm_or_0_operand")
          (match_operand:<sseintvecmode> 3 "register_operand")))]
   "TARGET_AVX2"
 {
   [(set (match_operand:VI124_128 0 "register_operand")
        (vec_merge:VI124_128
          (match_operand:VI124_128 1 "vector_operand")
-         (match_operand:VI124_128 2 "vector_move_operand")
+         (match_operand:VI124_128 2 "nonimm_or_0_operand")
          (match_operand:<sseintvecmode> 3 "register_operand")))]
   "TARGET_SSE2"
 {
   [(set (match_operand:V2DI 0 "register_operand")
        (vec_merge:V2DI
          (match_operand:V2DI 1 "vector_operand")
-         (match_operand:V2DI 2 "vector_move_operand")
+         (match_operand:V2DI 2 "nonimm_or_0_operand")
          (match_operand:V2DI 3 "register_operand")))]
   "TARGET_SSE4_2"
 {
   [(set (match_operand:VF_256 0 "register_operand")
        (vec_merge:VF_256
          (match_operand:VF_256 1 "nonimmediate_operand")
-         (match_operand:VF_256 2 "vector_move_operand")
+         (match_operand:VF_256 2 "nonimm_or_0_operand")
          (match_operand:<sseintvecmode> 3 "register_operand")))]
   "TARGET_AVX"
 {
   [(set (match_operand:VF_128 0 "register_operand")
        (vec_merge:VF_128
          (match_operand:VF_128 1 "vector_operand")
-         (match_operand:VF_128 2 "vector_move_operand")
+         (match_operand:VF_128 2 "nonimm_or_0_operand")
          (match_operand:<sseintvecmode> 3 "register_operand")))]
   "TARGET_SSE"
 {
         (vec_merge:V2SF
                (any_float:V2SF (match_operand:V2DI 1 "nonimmediate_operand" "vm"))
             (vec_select:V2SF
-                (match_operand:V4SF 2 "vector_move_operand" "0C")
+                (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
                 (parallel [(const_int 0) (const_int 1)]))
             (match_operand:QI 3 "register_operand" "Yk"))
            (const_vector:V2SF [(const_int 0) (const_int 0)])))]
              (match_operand:V4SF 2 "nonimmediate_operand" "vm"))
            (parallel [(const_int 0) (const_int 4)
                      (const_int 1) (const_int 5)]))
-         (match_operand:V4SF 3 "vector_move_operand" "0C")
+         (match_operand:V4SF 3 "nonimm_or_0_operand" "0C")
          (match_operand:QI 4 "register_operand" "Yk")))]
   "TARGET_AVX512VL"
   "vunpcklps\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"
                       (match_operand 4 "const_0_to_3_operand")
                       (match_operand 5 "const_4_to_7_operand")
                       (match_operand 6 "const_4_to_7_operand")]))
-      (match_operand:V4SF 7 "vector_move_operand" "0C")
+      (match_operand:V4SF 7 "nonimm_or_0_operand" "0C")
       (match_operand:QI 8 "register_operand" "Yk")))]
   "TARGET_AVX512VL"
 {
        (vec_concat:V2SF
          (match_operand:SF 1 "nonimmediate_operand"
          "  0, 0,Yv, 0,0, v,m, 0 , m")
-         (match_operand:SF 2 "vector_move_operand"
+         (match_operand:SF 2 "nonimm_or_0_operand"
          " Yr,*x,Yv, m,m, m,C,*ym, C")))]
   "TARGET_SSE4_1 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
          (vec_duplicate:VI4F_128
            (match_operand:<ssescalarmode> 2 "general_operand"
          " Yr,*x,v,m,r ,m,x,v,*rm,*rm,*rm,!x,!*re,!*fF"))
-         (match_operand:VI4F_128 1 "vector_move_operand"
+         (match_operand:VI4F_128 1 "nonimm_or_0_operand"
          " C , C,C,C,C ,C,0,v,0  ,0  ,x  ,0 ,0   ,0")
          (const_int 1)))]
   "TARGET_SSE"
   [(match_operand:<ssehalfvecmode> 0 "nonimmediate_operand")
    (match_operand:VI48F_256 1 "register_operand")
    (match_operand:SI 2 "const_0_to_1_operand")
-   (match_operand:<ssehalfvecmode> 3 "vector_move_operand")
+   (match_operand:<ssehalfvecmode> 3 "nonimm_or_0_operand")
    (match_operand:QI 4 "register_operand")]
   "TARGET_AVX512DQ && TARGET_AVX512VL"
 {
            (match_operand:VI4F_256 1 "register_operand" "v")
            (parallel [(const_int 4) (const_int 5)
                       (const_int 6) (const_int 7)]))
-         (match_operand:<ssehalfvecmode> 2 "vector_move_operand" "0C")
+         (match_operand:<ssehalfvecmode> 2 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))]
   "TARGET_AVX512VL"
   "vextract<shuffletype>32x4\t{$0x1, %1, %0%{%3%}%N2|%0%{%3%}%N2, %1, 0x1}"
              (match_operand:V2DF 1 "register_operand" "v")
              (match_operand:V2DF 2 "nonimmediate_operand" "vm"))
            (parallel [(const_int 1) (const_int 3)]))
-         (match_operand:V2DF 3 "vector_move_operand" "0C")
+         (match_operand:V2DF 3 "nonimm_or_0_operand" "0C")
          (match_operand:QI 4 "register_operand" "Yk")))]
   "TARGET_AVX512VL"
   "vunpckhpd\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"
              (match_operand:V2DF 1 "register_operand" "v")
              (match_operand:V2DF 2 "nonimmediate_operand" "vm"))
            (parallel [(const_int 0) (const_int 2)]))
-         (match_operand:V2DF 3 "vector_move_operand" "0C")
+         (match_operand:V2DF 3 "nonimm_or_0_operand" "0C")
          (match_operand:QI 4 "register_operand" "Yk")))]
   "TARGET_AVX512VL"
   "vunpcklpd\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"
              (match_operand:V2DF 2 "nonimmediate_operand" "vm"))
            (parallel [(match_operand 3 "const_0_to_1_operand")
                           (match_operand 4 "const_2_to_3_operand")]))
-      (match_operand:V2DF 5 "vector_move_operand" "0C")
+      (match_operand:V2DF 5 "nonimm_or_0_operand" "0C")
       (match_operand:QI 6 "register_operand" "Yk")))]
   "TARGET_AVX512VL"
 {
          (match_operand:DF 2 "nonimmediate_operand"
          "vm,m,m,x,v,0,0,v,x,*f,r")
          (vec_select:DF
-           (match_operand:V2DF 1 "vector_move_operand"
+           (match_operand:V2DF 1 "nonimm_or_0_operand"
          " C,0,v,0,v,x,o,o,0,0 ,0")
            (parallel [(const_int 1)]))))]
   "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   [(set (match_operand:V2DF 0 "register_operand"     "=x,x,v,x,v,x,x, v,x,x")
        (vec_concat:V2DF
          (match_operand:DF 1 "nonimmediate_operand" " 0,x,v,m,m,0,x,xm,0,0")
-         (match_operand:DF 2 "vector_move_operand"  " x,x,v,1,1,m,m, C,x,m")))]
+         (match_operand:DF 2 "nonimm_or_0_operand"  " x,x,v,1,1,m,m, C,x,m")))]
   "TARGET_SSE
    && (!(MEM_P (operands[1]) && MEM_P (operands[2]))
        || (TARGET_SSE3 && rtx_equal_p (operands[1], operands[2])))"
     (vec_merge:PMOV_DST_MODE_1
       (any_truncate:PMOV_DST_MODE_1
         (match_operand:<pmov_src_mode> 1 "register_operand" "v,v"))
-      (match_operand:PMOV_DST_MODE_1 2 "vector_move_operand" "0C,0")
+      (match_operand:PMOV_DST_MODE_1 2 "nonimm_or_0_operand" "0C,0")
       (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512F"
   "vpmov<trunsuffix><pmov_suff_1>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
     (vec_merge:V32QI
       (any_truncate:V32QI
         (match_operand:V32HI 1 "register_operand" "v,v"))
-      (match_operand:V32QI 2 "vector_move_operand" "0C,0")
+      (match_operand:V32QI 2 "nonimm_or_0_operand" "0C,0")
       (match_operand:SI 3 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512BW"
   "vpmov<trunsuffix>wb\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
     (vec_merge:PMOV_DST_MODE_2
       (any_truncate:PMOV_DST_MODE_2
         (match_operand:<ssedoublemode> 1 "register_operand" "v,v"))
-      (match_operand:PMOV_DST_MODE_2 2 "vector_move_operand" "0C,0")
+      (match_operand:PMOV_DST_MODE_2 2 "nonimm_or_0_operand" "0C,0")
       (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
   "TARGET_AVX512VL"
   "vpmov<trunsuffix><pmov_suff_2>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
         (any_truncate:V2QI
           (match_operand:V2DI 1 "register_operand" "v"))
         (vec_select:V2QI
-          (match_operand:V16QI 2 "vector_move_operand" "0C")
+          (match_operand:V16QI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)]))
         (match_operand:QI 3 "register_operand" "Yk"))
       (const_vector:V14QI [(const_int 0) (const_int 0)
         (any_truncate:V4QI
           (match_operand:VI4_128_8_256 1 "register_operand" "v"))
         (vec_select:V4QI
-          (match_operand:V16QI 2 "vector_move_operand" "0C")
+          (match_operand:V16QI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)
                      (const_int 2) (const_int 3)]))
         (match_operand:QI 3 "register_operand" "Yk"))
         (any_truncate:V8QI
           (match_operand:VI2_128_BW_4_256 1 "register_operand" "v"))
         (vec_select:V8QI
-          (match_operand:V16QI 2 "vector_move_operand" "0C")
+          (match_operand:V16QI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)
                      (const_int 2) (const_int 3)
                      (const_int 4) (const_int 5)
         (any_truncate:V4HI
           (match_operand:VI4_128_8_256 1 "register_operand" "v"))
         (vec_select:V4HI
-          (match_operand:V8HI 2 "vector_move_operand" "0C")
+          (match_operand:V8HI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)
                      (const_int 2) (const_int 3)]))
         (match_operand:QI 3 "register_operand" "Yk"))
         (any_truncate:V2HI
           (match_operand:V2DI 1 "register_operand" "v"))
         (vec_select:V2HI
-          (match_operand:V8HI 2 "vector_move_operand" "0C")
+          (match_operand:V8HI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)]))
         (match_operand:QI 3 "register_operand" "Yk"))
       (const_vector:V6HI [(const_int 0) (const_int 0)
         (any_truncate:V2SI
           (match_operand:V2DI 1 "register_operand" "v"))
         (vec_select:V2SI
-          (match_operand:V4SI 2 "vector_move_operand" "0C")
+          (match_operand:V4SI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)]))
         (match_operand:QI 3 "register_operand" "Yk"))
       (const_vector:V2SI [(const_int 0) (const_int 0)])))]
         (any_truncate:V8QI
           (match_operand:V8DI 1 "register_operand" "v"))
         (vec_select:V8QI
-          (match_operand:V16QI 2 "vector_move_operand" "0C")
+          (match_operand:V16QI 2 "nonimm_or_0_operand" "0C")
           (parallel [(const_int 0) (const_int 1)
                      (const_int 2) (const_int 3)
                      (const_int 4) (const_int 5)
          (plusminus:VI48_AVX512VL
            (match_operand:VI48_AVX512VL 1 "nonimmediate_operand")
            (match_operand:VI48_AVX512VL 2 "nonimmediate_operand"))
-         (match_operand:VI48_AVX512VL 3 "vector_move_operand")
+         (match_operand:VI48_AVX512VL 3 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 4 "register_operand")))]
   "TARGET_AVX512F"
   "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
          (plusminus:VI12_AVX512VL
            (match_operand:VI12_AVX512VL 1 "nonimmediate_operand")
            (match_operand:VI12_AVX512VL 2 "nonimmediate_operand"))
-         (match_operand:VI12_AVX512VL 3 "vector_move_operand")
+         (match_operand:VI12_AVX512VL 3 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 4 "register_operand")))]
   "TARGET_AVX512BW"
   "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
          (plusminus:VI48_AVX512VL
            (match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "<comm>v")
            (match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm"))
-         (match_operand:VI48_AVX512VL 3 "vector_move_operand" "0C")
+         (match_operand:VI48_AVX512VL 3 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
   "TARGET_AVX512F && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
   "vp<plusminus_mnemonic><ssemodesuffix>\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"
          (plusminus:VI12_AVX512VL
            (match_operand:VI12_AVX512VL 1 "nonimmediate_operand" "<comm>v")
            (match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm"))
-         (match_operand:VI12_AVX512VL 3 "vector_move_operand" "0C")
+         (match_operand:VI12_AVX512VL 3 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
   "TARGET_AVX512BW && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
   "vp<plusminus_mnemonic><ssemodesuffix>\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"
          (maxmin:VI48_AVX512VL
            (match_operand:VI48_AVX512VL 1 "nonimmediate_operand")
            (match_operand:VI48_AVX512VL 2 "nonimmediate_operand"))
-         (match_operand:VI48_AVX512VL 3 "vector_move_operand")
+         (match_operand:VI48_AVX512VL 3 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 4 "register_operand")))]
   "TARGET_AVX512F"
   "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
 (define_insn "<avx512>_eq<mode>3<mask_scalar_merge_name>_1"
   [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=Yk,Yk")
        (unspec:<avx512fmaskmode>
-         [(match_operand:VI12_AVX512VL 1 "vector_move_operand" "%v,v")
-          (match_operand:VI12_AVX512VL 2 "vector_move_operand" "vm,C")]
+         [(match_operand:VI12_AVX512VL 1 "nonimm_or_0_operand" "%v,v")
+          (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand" "vm,C")]
          UNSPEC_MASKED_EQ))]
   "TARGET_AVX512BW && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
 (define_insn "<avx512>_eq<mode>3<mask_scalar_merge_name>_1"
   [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=Yk,Yk")
        (unspec:<avx512fmaskmode>
-         [(match_operand:VI48_AVX512VL 1 "vector_move_operand" "%v,v")
-          (match_operand:VI48_AVX512VL 2 "vector_move_operand" "vm,C")]
+         [(match_operand:VI48_AVX512VL 1 "nonimm_or_0_operand" "%v,v")
+          (match_operand:VI48_AVX512VL 2 "nonimm_or_0_operand" "vm,C")]
          UNSPEC_MASKED_EQ))]
   "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
            (not:VI48_AVX512VL
              (match_operand:VI48_AVX512VL 1 "register_operand"))
            (match_operand:VI48_AVX512VL 2 "nonimmediate_operand"))
-         (match_operand:VI48_AVX512VL 3 "vector_move_operand")
+         (match_operand:VI48_AVX512VL 3 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 4 "register_operand")))]
   "TARGET_AVX512F")
 
            (not:VI12_AVX512VL
              (match_operand:VI12_AVX512VL 1 "register_operand"))
            (match_operand:VI12_AVX512VL 2 "nonimmediate_operand"))
-         (match_operand:VI12_AVX512VL 3 "vector_move_operand")
+         (match_operand:VI12_AVX512VL 3 "nonimm_or_0_operand")
          (match_operand:<avx512fmaskmode> 4 "register_operand")))]
   "TARGET_AVX512BW")
 
            (not:VI48_AVX512VL
              (match_operand:VI48_AVX512VL 1 "register_operand" "v"))
            (match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm"))
-         (match_operand:VI48_AVX512VL 3 "vector_move_operand" "0C")
+         (match_operand:VI48_AVX512VL 3 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
   "TARGET_AVX512F"
   "vpandn<ssemodesuffix>\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}";
        (vec_concat:V2SI
          (match_operand:SI 1 "nonimmediate_operand"
          "  0, 0, x,Yv, 0, 0,Yv,rm,  0,rm")
-         (match_operand:SI 2 "vector_move_operand"
+         (match_operand:SI 2 "nonimm_or_0_operand"
          " rm,rm,rm,rm,Yr,*x,Yv, C,*ym, C")))]
   "TARGET_SSE4_1 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "@
        (vec_concat:V2DI
          (match_operand:DI 1 "nonimmediate_operand"
          "  0, 0,x ,Yv,r,vm,?!*y,0,Yv,0,0,v")
-         (match_operand:DI 2 "vector_move_operand"
+         (match_operand:DI 2 "nonimm_or_0_operand"
          " rm,rm,rm,rm,C ,C ,C ,x,Yv,x,m,m")))]
   "TARGET_SSE"
   "@
             (match_operand:VI1_AVX512 2 "nonimmediate_operand" "vm")
             (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n")]
            UNSPEC_PALIGNR)
-       (match_operand:VI1_AVX512 4 "vector_move_operand" "0C")
+       (match_operand:VI1_AVX512 4 "nonimm_or_0_operand" "0C")
        (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512BW && (<MODE_SIZE> == 64 || TARGET_AVX512VL)"
 {
        (vec_merge:VI48_AVX512VL
          (abs:VI48_AVX512VL
            (match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "vm"))
-         (match_operand:VI48_AVX512VL 2 "vector_move_operand" "0C")
+         (match_operand:VI48_AVX512VL 2 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))]
   "TARGET_AVX512F"
   "vpabs<ssemodesuffix>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
        (vec_merge:VI12_AVX512VL
          (abs:VI12_AVX512VL
            (match_operand:VI12_AVX512VL 1 "nonimmediate_operand" "vm"))
-         (match_operand:VI12_AVX512VL 2 "vector_move_operand" "0C")
+         (match_operand:VI12_AVX512VL 2 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))]
   "TARGET_AVX512BW"
   "vpabs<ssemodesuffix>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(match_operand:VI8F_256 0 "register_operand")
    (match_operand:VI8F_256 1 "nonimmediate_operand")
    (match_operand:SI 2 "const_0_to_255_operand")
-   (match_operand:VI8F_256 3 "vector_move_operand")
+   (match_operand:VI8F_256 3 "nonimm_or_0_operand")
    (match_operand:<avx512fmaskmode> 4 "register_operand")]
   "TARGET_AVX512VL"
 {
   [(match_operand:V8FI 0 "register_operand")
    (match_operand:V8FI 1 "nonimmediate_operand")
    (match_operand:SI 2 "const_0_to_255_operand")
-   (match_operand:V8FI 3 "vector_move_operand")
+   (match_operand:V8FI 3 "nonimm_or_0_operand")
    (match_operand:<avx512fmaskmode> 4 "register_operand")]
   "TARGET_AVX512F"
 {
   [(set (match_operand:V_256_512 0 "register_operand" "=x,v,x,Yv")
        (vec_concat:V_256_512
          (match_operand:<ssehalfvecmode> 1 "register_operand" "x,v,x,v")
-         (match_operand:<ssehalfvecmode> 2 "vector_move_operand" "xm,vm,C,C")))]
+         (match_operand:<ssehalfvecmode> 2 "nonimm_or_0_operand" "xm,vm,C,C")))]
   "TARGET_AVX"
 {
   switch (which_alternative)
                          (match_operand:SI 2 "const_0_to_255_operand")]
                          UNSPEC_VCVTPS2PH)
            (match_dup 5))
-          (match_operand:V8HI 3 "vector_move_operand")
+          (match_operand:V8HI 3 "nonimm_or_0_operand")
           (match_operand:QI 4 "register_operand")))]
   "TARGET_AVX512VL"
   "operands[5] = CONST0_RTX (V4HImode);")
   [(set (match_operand:VI48F 0 "register_operand" "=v")
        (unspec:VI48F
          [(match_operand:VI48F 1 "register_operand" "v")
-          (match_operand:VI48F 2 "vector_move_operand" "0C")
+          (match_operand:VI48F 2 "nonimm_or_0_operand" "0C")
           (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")]
          UNSPEC_COMPRESS))]
   "TARGET_AVX512F"
   [(set (match_operand:VI12_AVX512VLBW 0 "register_operand" "=v")
        (unspec:VI12_AVX512VLBW
          [(match_operand:VI12_AVX512VLBW 1 "register_operand" "v")
-          (match_operand:VI12_AVX512VLBW 2 "vector_move_operand" "0C")
+          (match_operand:VI12_AVX512VLBW 2 "nonimm_or_0_operand" "0C")
           (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")]
          UNSPEC_COMPRESS))]
   "TARGET_AVX512VBMI2"
   [(set (match_operand:VI48F 0 "register_operand")
        (unspec:VI48F
          [(match_operand:VI48F 1 "nonimmediate_operand")
-          (match_operand:VI48F 2 "vector_move_operand")
+          (match_operand:VI48F 2 "nonimm_or_0_operand")
           (match_operand:<avx512fmaskmode> 3 "register_operand")]
          UNSPEC_EXPAND))]
   "TARGET_AVX512F"
   [(set (match_operand:VI48F 0 "register_operand" "=v,v")
        (unspec:VI48F
          [(match_operand:VI48F 1 "nonimmediate_operand" "v,m")
-          (match_operand:VI48F 2 "vector_move_operand" "0C,0C")
+          (match_operand:VI48F 2 "nonimm_or_0_operand" "0C,0C")
           (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")]
          UNSPEC_EXPAND))]
   "TARGET_AVX512F"
   [(set (match_operand:VI12_AVX512VLBW 0 "register_operand" "=v,v")
        (unspec:VI12_AVX512VLBW
          [(match_operand:VI12_AVX512VLBW 1 "nonimmediate_operand" "v,m")
-          (match_operand:VI12_AVX512VLBW 2 "vector_move_operand" "0C,0C")
+          (match_operand:VI12_AVX512VLBW 2 "nonimm_or_0_operand" "0C,0C")
           (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")]
          UNSPEC_EXPAND))]
   "TARGET_AVX512VBMI2"
   [(set (match_operand:VI12_AVX512VLBW 0 "register_operand")
        (unspec:VI12_AVX512VLBW
          [(match_operand:VI12_AVX512VLBW 1 "nonimmediate_operand")
-          (match_operand:VI12_AVX512VLBW 2 "vector_move_operand")
+          (match_operand:VI12_AVX512VLBW 2 "nonimm_or_0_operand")
           (match_operand:<avx512fmaskmode> 3 "register_operand")]
          UNSPEC_EXPAND))]
   "TARGET_AVX512VBMI2"
 
 (define_expand "mov<mode>"
   [(set (match_operand:IMOD4 0 "nonimmediate_operand")
-       (match_operand:IMOD4 1 "vector_move_operand"))]
+       (match_operand:IMOD4 1 "nonimm_or_0_operand"))]
   "TARGET_AVX512F"
 {
   ix86_expand_vector_move (<MODE>mode, operands);
 
 (define_insn_and_split "*mov<mode>_internal"
   [(set (match_operand:IMOD4 0 "nonimmediate_operand" "=v,v ,m")
-       (match_operand:IMOD4 1 "vector_move_operand"  " C,vm,v"))]
+       (match_operand:IMOD4 1 "nonimm_or_0_operand"  " C,vm,v"))]
   "TARGET_AVX512F
    && (register_operand (operands[0], <MODE>mode)
        || register_operand (operands[1], <MODE>mode))"
index 3f638650846fd88ec58207b36dca4f7dd6241d5e..44f5dfb648d0981b49871e647ffaeeeb33703b56 100644 (file)
@@ -72,7 +72,7 @@
   [(set (match_dup 0)
         (vec_merge:SUBST_V
          (match_dup 1)
-         (match_operand:SUBST_V 2 "vector_move_operand" "0C")
+         (match_operand:SUBST_V 2 "nonimm_or_0_operand" "0C")
          (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))])
 
 (define_subst_attr "mask_scalar_merge_name" "mask_scalar_merge" "" "_mask")
     (match_dup 1)
     (match_dup 2)
     (match_dup 3)
-    (match_operand:SUBST_V 4 "vector_move_operand")
+    (match_operand:SUBST_V 4 "nonimm_or_0_operand")
     (match_operand:<avx512fmaskmode> 5 "register_operand")])
 
 (define_subst_attr "mask_scalar_name" "mask_scalar" "" "_mask")
        (vec_merge:SUBST_V
          (vec_merge:SUBST_V
            (match_dup 1)
-           (match_operand:SUBST_V 3 "vector_move_operand" "0C")
+           (match_operand:SUBST_V 3 "nonimm_or_0_operand" "0C")
            (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
          (match_dup 2)
          (const_int 1)))])