public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-563] i386: Fix ICE in final_scan_insn_1 [PR105624]
@ 2022-05-17 15:38 Uros Bizjak
  0 siblings, 0 replies; only message in thread
From: Uros Bizjak @ 2022-05-17 15:38 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:61a6923e8917b6efcf349515a00a485dfd5b42e4

commit r13-563-g61a6923e8917b6efcf349515a00a485dfd5b42e4
Author: Uros Bizjak <ubizjak@gmail.com>
Date:   Tue May 17 17:22:26 2022 +0200

    i386: Fix ICE in final_scan_insn_1 [PR105624]
    
    Apparently const_int_operand and other const*_operand predicates
    do need constraints.  Revert the offending patch that caused ICE.
    
    2022-05-17  Uroš Bizjak  <ubizjak@gmail.com>
    
    gcc/ChangeLog:
    
            PR target/105624
            Revert:
    
            * config/i386/i386.md: Remove constraints when used with
            const_int_operand, const0_operand, const_1_operand, constm1_operand,
            const8_operand, const128_operand, const248_operand, const123_operand,
            const2367_operand, const1248_operand, const359_operand,
            const_4_or_8_to_11_operand, const48_operand, const_0_to_1_operand,
            const_0_to_3_operand, const_0_to_4_operand, const_0_to_5_operand,
            const_0_to_7_operand, const_0_to_15_operand, const_0_to_31_operand,
            const_0_to_63_operand, const_0_to_127_operand, const_0_to_255_operand,
            const_0_to_255_mul_8_operand, const_1_to_31_operand,
            const_1_to_63_operand, const_2_to_3_operand, const_4_to_5_operand,
            const_4_to_7_operand, const_6_to_7_operand, const_8_to_9_operand,
            const_8_to_11_operand, const_8_to_15_operand, const_10_to_11_operand,
            const_12_to_13_operand, const_12_to_15_operand, const_14_to_15_operand,
            const_16_to_19_operand, const_16_to_31_operand, const_20_to_23_operand,
            const_24_to_27_operand and const_28_to_31_operand.
            * config/i386/mmx.md: Ditto.
            * config/i386/sse.md: Ditto.
            * config/i386/subst.md: Ditto.
            * config/i386/sync.md: Ditto.
    
    gcc/testsuite/ChangeLog:
    
            PR target/105624
            * gcc.target/i386/pr105624.c: New test.

Diff:
---
 gcc/config/i386/i386.md                  |  98 ++++-----
 gcc/config/i386/mmx.md                   |  20 +-
 gcc/config/i386/sse.md                   | 366 +++++++++++++++----------------
 gcc/config/i386/subst.md                 |  10 +-
 gcc/config/i386/sync.md                  |   4 +-
 gcc/testsuite/gcc.target/i386/pr105624.c |  19 ++
 6 files changed, 268 insertions(+), 249 deletions(-)

diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 1d7ff256e62..f9c06ff302a 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -6281,7 +6281,7 @@
   [(set (reg FLAGS_REG)
 	(compare
 	  (match_operand:SWI124 1 "nonimmediate_operand" "0")
-	  (match_operand:SWI124 2 "const_int_operand")))
+	  (match_operand:SWI124 2 "const_int_operand" "n")))
    (clobber (match_scratch:SWI124 0 "=<r>"))]
   "ix86_match_ccmode (insn, CCGCmode)"
 {
@@ -6487,7 +6487,7 @@
 	(eq:CCO (plus:<DWI>
 		   (sign_extend:<DWI>
 		      (match_operand:SWI 1 "nonimmediate_operand" "0"))
-		   (match_operand:<DWI> 3 "const_int_operand"))
+		   (match_operand:<DWI> 3 "const_int_operand" "i"))
 		(sign_extend:<DWI>
 		   (plus:SWI
 		     (match_dup 1)
@@ -6560,7 +6560,7 @@
 	  (plus:<QPWI>
 	    (sign_extend:<QPWI>
 	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0"))
-	    (match_operand:<QPWI> 3 "const_scalar_int_operand"))
+	    (match_operand:<QPWI> 3 "const_scalar_int_operand" ""))
 	  (sign_extend:<QPWI>
 	    (plus:<DWI>
 	      (match_dup 1)
@@ -6645,7 +6645,7 @@
 		[(match_operand 3 "flags_reg_operand") (const_int 0)])
 	      (sign_extend:<DWI>
 		(match_operand:SWI 1 "nonimmediate_operand" "%0")))
-	    (match_operand:<DWI> 6 "const_int_operand"))
+	    (match_operand:<DWI> 6 "const_int_operand" ""))
 	  (sign_extend:<DWI>
 	    (plus:SWI
 	      (plus:SWI
@@ -6810,8 +6810,8 @@
 	(any_or:SWI12
 	  (ashift:SWI12
 	    (match_operand:SWI12 1 "index_register_operand" "l")
-	    (match_operand 2 "const_0_to_3_operand"))
-	  (match_operand 3 "const_int_operand")))]
+	    (match_operand 2 "const_0_to_3_operand" "n"))
+	  (match_operand 3 "const_int_operand" "n")))]
   "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
    && ((unsigned HOST_WIDE_INT) INTVAL (operands[3])
        < (HOST_WIDE_INT_1U << INTVAL (operands[2])))"
@@ -6834,8 +6834,8 @@
 	(any_or:SWI48
 	  (ashift:SWI48
 	    (match_operand:SWI48 1 "index_register_operand" "l")
-	    (match_operand 2 "const_0_to_3_operand"))
-	  (match_operand 3 "const_int_operand")))]
+	    (match_operand 2 "const_0_to_3_operand" "n"))
+	  (match_operand 3 "const_int_operand" "n")))]
   "(unsigned HOST_WIDE_INT) INTVAL (operands[3])
    < (HOST_WIDE_INT_1U << INTVAL (operands[2]))"
   "#"
@@ -7031,7 +7031,7 @@
 	(eq:CCO (minus:<DWI>
 		   (sign_extend:<DWI>
 		      (match_operand:SWI 1 "nonimmediate_operand" "0"))
-		   (match_operand:<DWI> 3 "const_int_operand"))
+		   (match_operand:<DWI> 3 "const_int_operand" "i"))
 		(sign_extend:<DWI>
 		   (minus:SWI
 		     (match_dup 1)
@@ -7099,7 +7099,7 @@
 	  (minus:<QPWI>
 	    (sign_extend:<QPWI>
 	      (match_operand:<DWI> 1 "nonimmediate_operand" "0"))
-	    (match_operand:<QPWI> 3 "const_scalar_int_operand"))
+	    (match_operand:<QPWI> 3 "const_scalar_int_operand" ""))
 	  (sign_extend:<QPWI>
 	    (minus:<DWI>
 	      (match_dup 1)
@@ -7182,7 +7182,7 @@
 		(match_operand:SWI 1 "nonimmediate_operand" "%0"))
 	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
 		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
-	    (match_operand:<DWI> 6 "const_int_operand"))
+	    (match_operand:<DWI> 6 "const_int_operand" ""))
 	  (sign_extend:<DWI>
 	    (minus:SWI
 	      (minus:SWI
@@ -7452,7 +7452,7 @@
 		(match_operand:SWI48 1 "nonimmediate_operand" "%0"))
 	      (match_operand:SWI48 2 "x86_64_immediate_operand" "e")))
 	  (plus:<DWI>
-	    (match_operand:<DWI> 6 "const_scalar_int_operand")
+	    (match_operand:<DWI> 6 "const_scalar_int_operand" "")
 	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
 	      [(match_dup 3) (const_int 0)]))))
    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm")
@@ -8446,7 +8446,7 @@
 	  (lshiftrt:<DWI>
 	    (mult:<DWI> (zero_extend:<DWI> (match_dup 2))
 			(zero_extend:<DWI> (match_dup 3)))
-	    (match_operand:QI 4 "const_int_operand"))))]
+	    (match_operand:QI 4 "const_int_operand" "n"))))]
   "TARGET_BMI2 && INTVAL (operands[4]) == <MODE_SIZE> * BITS_PER_UNIT
    && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
   "mulx\t{%3, %0, %1|%1, %0, %3}"
@@ -9080,7 +9080,7 @@
 (define_insn_and_split "*udivmod<mode>4_pow2"
   [(set (match_operand:SWI48 0 "register_operand" "=r")
 	(udiv:SWI48 (match_operand:SWI48 2 "register_operand" "0")
-		    (match_operand:SWI48 3 "const_int_operand")))
+		    (match_operand:SWI48 3 "const_int_operand" "n")))
    (set (match_operand:SWI48 1 "register_operand" "=r")
 	(umod:SWI48 (match_dup 2) (match_dup 3)))
    (clobber (reg:CC FLAGS_REG))]
@@ -9161,7 +9161,7 @@
   [(set (match_operand:DI 0 "register_operand" "=r")
 	(zero_extend:DI
 	  (udiv:SI (match_operand:SI 2 "register_operand" "0")
-		   (match_operand:SI 3 "const_int_operand"))))
+		   (match_operand:SI 3 "const_int_operand" "n"))))
    (set (match_operand:SI 1 "register_operand" "=r")
 	(umod:SI (match_dup 2) (match_dup 3)))
    (clobber (reg:CC FLAGS_REG))]
@@ -9245,7 +9245,7 @@
   [(set (match_operand:DI 1 "register_operand" "=r")
 	(zero_extend:DI
 	  (umod:SI (match_operand:SI 2 "register_operand" "0")
-		   (match_operand:SI 3 "const_int_operand"))))
+		   (match_operand:SI 3 "const_int_operand" "n"))))
    (set (match_operand:SI 0 "register_operand" "=r")
 	(udiv:SI (match_dup 2) (match_dup 3)))
    (clobber (reg:CC FLAGS_REG))]
@@ -9312,7 +9312,7 @@
 ;; Avoid sign-extension (using cdq) for constant numerators.
 (define_insn_and_split "*divmodsi4_const"
   [(set (match_operand:SI 0 "register_operand" "=&a")
-	(div:SI (match_operand:SI 2 "const_int_operand")
+	(div:SI (match_operand:SI 2 "const_int_operand" "n")
 		(match_operand:SI 3 "nonimmediate_operand" "rm")))
    (set (match_operand:SI 1 "register_operand" "=&d")
 	(mod:SI (match_dup 2) (match_dup 3)))
@@ -9597,8 +9597,8 @@
         (match_operator 1 "compare_operator"
 	  [(zero_extract:SWI248
 	     (match_operand 2 "int_nonimmediate_operand" "rm")
-	     (match_operand 3 "const_int_operand")
-	     (match_operand 4 "const_int_operand"))
+	     (match_operand 3 "const_int_operand" "n")
+	     (match_operand 4 "const_int_operand" "n"))
 	   (const_int 0)]))]
   "/* Ensure that resulting mask is zero or sign extended operand.  */
    INTVAL (operands[4]) >= 0
@@ -9851,7 +9851,7 @@
   [(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
 	(and:DI
 	 (match_operand:DI 1 "nonimmediate_operand" "%0")
-	 (match_operand:DI 2 "const_int_operand")))
+	 (match_operand:DI 2 "const_int_operand" "n")))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT && TARGET_USE_BT
    && ix86_binary_operator_ok (AND, DImode, operands)
@@ -10481,7 +10481,7 @@
   [(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
 	(ior:DI
 	 (match_operand:DI 1 "nonimmediate_operand" "%0")
-	 (match_operand:DI 2 "const_int_operand")))
+	 (match_operand:DI 2 "const_int_operand" "n")))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT && TARGET_USE_BT
    && ix86_binary_operator_ok (IOR, DImode, operands)
@@ -10503,7 +10503,7 @@
   [(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
 	(xor:DI
 	 (match_operand:DI 1 "nonimmediate_operand" "%0")
-	 (match_operand:DI 2 "const_int_operand")))
+	 (match_operand:DI 2 "const_int_operand" "n")))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT && TARGET_USE_BT
    && ix86_binary_operator_ok (XOR, DImode, operands)
@@ -11860,12 +11860,12 @@
 (define_insn "*x86_64_shld_1"
   [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
         (ior:DI (ashift:DI (match_dup 0)
-			   (match_operand:QI 2 "const_0_to_63_operand"))
+			   (match_operand:QI 2 "const_0_to_63_operand" "J"))
 		(subreg:DI
 		  (lshiftrt:TI
 		    (zero_extend:TI
 		      (match_operand:DI 1 "register_operand" "r"))
-		    (match_operand:QI 3 "const_0_to_255_operand")) 0)))
+		    (match_operand:QI 3 "const_0_to_255_operand" "N")) 0)))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT
    && INTVAL (operands[3]) == 64 - INTVAL (operands[2])"
@@ -11924,12 +11924,12 @@
 (define_insn "*x86_shld_1"
   [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m")
         (ior:SI (ashift:SI (match_dup 0)
-			   (match_operand:QI 2 "const_0_to_31_operand"))
+			   (match_operand:QI 2 "const_0_to_31_operand" "I"))
 		(subreg:SI
 		  (lshiftrt:DI
 		    (zero_extend:DI
 		      (match_operand:SI 1 "register_operand" "r"))
-		    (match_operand:QI 3 "const_0_to_63_operand")) 0)))
+		    (match_operand:QI 3 "const_0_to_63_operand" "J")) 0)))
    (clobber (reg:CC FLAGS_REG))]
   "INTVAL (operands[3]) == 32 - INTVAL (operands[2])"
   "shld{l}\t{%2, %1, %0|%0, %1, %2}"
@@ -12449,7 +12449,7 @@
   [(set (reg FLAGS_REG)
 	(compare
 	  (ashift:SI (match_operand:SI 1 "register_operand" "0")
-		     (match_operand:QI 2 "const_1_to_31_operand"))
+		     (match_operand:QI 2 "const_1_to_31_operand" "I"))
 	  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=r")
 	(zero_extend:DI (ashift:SI (match_dup 1) (match_dup 2))))]
@@ -12783,12 +12783,12 @@
 (define_insn "*x86_64_shrd_1"
   [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
         (ior:DI (lshiftrt:DI (match_dup 0)
-			     (match_operand:QI 2 "const_0_to_63_operand"))
+			     (match_operand:QI 2 "const_0_to_63_operand" "J"))
 		(subreg:DI
 		  (ashift:TI
 		    (zero_extend:TI
 		      (match_operand:DI 1 "register_operand" "r"))
-		    (match_operand:QI 3 "const_0_to_255_operand")) 0)))
+		    (match_operand:QI 3 "const_0_to_255_operand" "N")) 0)))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT
    && INTVAL (operands[3]) == 64 - INTVAL (operands[2])"
@@ -12847,12 +12847,12 @@
 (define_insn "*x86_shrd_1"
   [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m")
         (ior:SI (lshiftrt:SI (match_dup 0)
-			     (match_operand:QI 2 "const_0_to_31_operand"))
+			     (match_operand:QI 2 "const_0_to_31_operand" "I"))
 		(subreg:SI
 		  (ashift:DI
 		    (zero_extend:DI
 		      (match_operand:SI 1 "register_operand" "r"))
-		    (match_operand:QI 3 "const_0_to_63_operand")) 0)))
+		    (match_operand:QI 3 "const_0_to_63_operand" "J")) 0)))
    (clobber (reg:CC FLAGS_REG))]
   "INTVAL (operands[3]) == 32 - INTVAL (operands[2])"
   "shrd{l}\t{%2, %1, %0|%0, %1, %2}"
@@ -13260,7 +13260,7 @@
   [(set (reg FLAGS_REG)
 	(compare
 	  (any_shiftrt:SI (match_operand:SI 1 "register_operand" "0")
-			  (match_operand:QI 2 "const_1_to_31_operand"))
+			  (match_operand:QI 2 "const_1_to_31_operand" "I"))
 	  (const_int 0)))
    (set (match_operand:DI 0 "register_operand" "=r")
 	(zero_extend:DI (any_shiftrt:SI (match_dup 1) (match_dup 2))))]
@@ -13637,7 +13637,7 @@
   [(set (match_operand:DI 0 "register_operand" "=r")
 	(zero_extend:DI
 	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
-		       (match_operand:QI 2 "const_0_to_31_operand"))))]
+		       (match_operand:QI 2 "const_0_to_31_operand" "I"))))]
   "TARGET_64BIT && TARGET_BMI2 && !optimize_function_for_size_p (cfun)"
   "rorx\t{%2, %1, %k0|%k0, %1, %2}"
   [(set_attr "type" "rotatex")
@@ -13990,7 +13990,7 @@
 (define_insn "*btsq_imm"
   [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
 			 (const_int 1)
-			 (match_operand 1 "const_0_to_63_operand"))
+			 (match_operand 1 "const_0_to_63_operand" "J"))
 	(const_int 1))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
@@ -14003,7 +14003,7 @@
 (define_insn "*btrq_imm"
   [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
 			 (const_int 1)
-			 (match_operand 1 "const_0_to_63_operand"))
+			 (match_operand 1 "const_0_to_63_operand" "J"))
 	(const_int 0))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
@@ -14016,7 +14016,7 @@
 (define_insn "*btcq_imm"
   [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
 			 (const_int 1)
-			 (match_operand 1 "const_0_to_63_operand"))
+			 (match_operand 1 "const_0_to_63_operand" "J"))
 	(not:DI (zero_extract:DI (match_dup 0) (const_int 1) (match_dup 1))))
    (clobber (reg:CC FLAGS_REG))]
   "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
@@ -14544,7 +14544,7 @@
 	(unspec:QI
 	  [(match_operand:HF 1 "register_operand" "v")
 	   (match_operand:HF 2 "nonimmediate_operand" "vm")
-	   (match_operand:SI 3 "const_0_to_31_operand")]
+	   (match_operand:SI 3 "const_0_to_31_operand" "n")]
 	  UNSPEC_PCMP))]
   "TARGET_AVX512FP16"
   "vcmpsh\t{%3, %2, %1, %0|%0, %1, %2, %3}"
@@ -16561,7 +16561,7 @@
 	  (zero_extract:SWI48
 	    (match_operand:SWI48 1 "nonimmediate_operand" "rm")
 	    (umin:SWI48 (and:SWI48 (match_dup 2) (const_int 255))
-			(match_operand:SWI48 3 "const_int_operand"))
+			(match_operand:SWI48 3 "const_int_operand" "n"))
 	    (const_int 0))
 	  (const_int 0)))
    (clobber (reg:CC FLAGS_REG))]
@@ -16578,7 +16578,7 @@
 	  (zero_extract:SWI48
 	    (match_operand:SWI48 1 "nonimmediate_operand" "rm")
 	    (umin:SWI48 (zero_extend:SWI48 (match_dup 2))
-			(match_operand:SWI48 3 "const_int_operand"))
+			(match_operand:SWI48 3 "const_int_operand" "n"))
 	    (const_int 0))
 	  (const_int 0)))
    (clobber (reg:CC FLAGS_REG))]
@@ -16596,7 +16596,7 @@
 	    (zero_extract:SWI48
 	      (match_operand:SWI48 1 "nonimmediate_operand" "rm")
 	      (umin:SWI48 (zero_extend:SWI48 (match_dup 2))
-			  (match_operand:SWI48 3 "const_int_operand"))
+			  (match_operand:SWI48 3 "const_int_operand" "n"))
 	      (const_int 0))
 	    (const_int 0))
 	(const_int 0)))
@@ -16663,8 +16663,8 @@
   [(set (match_operand:SWI48 0 "register_operand" "=r")
         (zero_extract:SWI48
           (match_operand:SWI48 1 "nonimmediate_operand" "rm")
-          (match_operand 2 "const_0_to_255_operand")
-          (match_operand 3 "const_0_to_255_operand")))
+          (match_operand 2 "const_0_to_255_operand" "N")
+          (match_operand 3 "const_0_to_255_operand" "N")))
    (clobber (reg:CC FLAGS_REG))]
    "TARGET_TBM"
 {
@@ -19287,7 +19287,7 @@
   [(set (match_operand:MODEFH 0 "register_operand" "=x,x,x,v,v")
 	(unspec:MODEFH
 	  [(match_operand:MODEFH 1 "nonimmediate_operand" "0,x,m,v,m")
-	   (match_operand:SI 2 "const_0_to_15_operand")]
+	   (match_operand:SI 2 "const_0_to_15_operand" "n,n,n,n,n")]
 	  UNSPEC_ROUND))]
   "TARGET_SSE4_1"
   "@
@@ -21479,7 +21479,7 @@
 	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
 			    UNSPECV_PROBE_STACK_RANGE))
    (set (reg:P SP_REG)
-        (minus:P (reg:P SP_REG) (match_operand:P 2 "const_int_operand")))
+        (minus:P (reg:P SP_REG) (match_operand:P 2 "const_int_operand" "n")))
    (clobber (reg:CC FLAGS_REG))
    (clobber (mem:BLK (scratch)))]
   ""
@@ -21489,7 +21489,7 @@
 (define_insn "@probe_stack_range_<mode>"
   [(set (match_operand:P 0 "register_operand" "=r")
 	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
-			    (match_operand:P 2 "const_int_operand")]
+			    (match_operand:P 2 "const_int_operand" "n")]
 			    UNSPECV_PROBE_STACK_RANGE))
    (clobber (reg:CC FLAGS_REG))]
   ""
@@ -22933,7 +22933,7 @@
 
 (define_insn "*prefetch_3dnow"
   [(prefetch (match_operand 0 "address_operand" "p")
-	     (match_operand:SI 1 "const_int_operand")
+	     (match_operand:SI 1 "const_int_operand" "n")
 	     (const_int 3))]
   "TARGET_3DNOW || TARGET_PRFCHW || TARGET_PREFETCHWT1"
 {
@@ -23483,7 +23483,7 @@
 (define_insn "@lwp_lwpval<mode>"
   [(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")
     	    	     (match_operand:SI 1 "nonimmediate_operand" "rm")
-		     (match_operand:SI 2 "const_int_operand")]
+		     (match_operand:SI 2 "const_int_operand" "i")]
 		    UNSPECV_LWPVAL_INTRINSIC)]
   "TARGET_LWP"
   "lwpval\t{%2, %1, %0|%0, %1, %2}"
@@ -23496,7 +23496,7 @@
   [(set (reg:CCC FLAGS_REG)
 	(unspec_volatile:CCC [(match_operand:SWI48 0 "register_operand" "r")
 			      (match_operand:SI 1 "nonimmediate_operand" "rm")
-			      (match_operand:SI 2 "const_int_operand")]
+			      (match_operand:SI 2 "const_int_operand" "i")]
 			     UNSPECV_LWPINS_INTRINSIC))]
   "TARGET_LWP"
   "lwpins\t{%2, %1, %0|%0, %1, %2}"
@@ -23702,7 +23702,7 @@
    (set_attr "length" "3")])
 
 (define_insn "xabort"
-  [(unspec_volatile [(match_operand:SI 0 "const_0_to_255_operand")]
+  [(unspec_volatile [(match_operand:SI 0 "const_0_to_255_operand" "n")]
 		    UNSPECV_XABORT)]
   "TARGET_RTM"
   "xabort\t%0"
diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index 03aa01f8693..197f19e4b1a 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -3454,7 +3454,7 @@
   [(set (match_operand:HI 0 "register_sse4nonimm_operand" "=r,r,m")
 	(vec_select:HI
 	  (match_operand:V4HI 1 "register_operand" "y,YW,YW")
-	  (parallel [(match_operand:SI 2 "const_0_to_3_operand")])))]
+	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n,n")])))]
   "(TARGET_MMX || TARGET_MMX_WITH_SSE)
    && (TARGET_SSE || TARGET_3DNOW_A)"
   "@
@@ -3473,7 +3473,7 @@
 	(zero_extend:SWI48
 	  (vec_select:HI
 	    (match_operand:V4HI 1 "register_operand" "y,YW")
-	    (parallel [(match_operand:SI 2 "const_0_to_3_operand")]))))]
+	    (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n")]))))]
   "(TARGET_MMX || TARGET_MMX_WITH_SSE)
    && (TARGET_SSE || TARGET_3DNOW_A)"
   "@
@@ -3490,7 +3490,7 @@
   [(set (match_operand:QI 0 "nonimmediate_operand" "=r,m")
 	(vec_select:QI
 	  (match_operand:V8QI 1 "register_operand" "YW,YW")
-	  (parallel [(match_operand:SI 2 "const_0_to_7_operand")])))]
+	  (parallel [(match_operand:SI 2 "const_0_to_7_operand" "n,n")])))]
   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
   "@
    %vpextrb\t{%2, %1, %k0|%k0, %1, %2}
@@ -3507,7 +3507,7 @@
 	(zero_extend:SWI248
 	  (vec_select:QI
 	    (match_operand:V8QI 1 "register_operand" "YW")
-	    (parallel [(match_operand:SI 2 "const_0_to_7_operand")]))))]
+	    (parallel [(match_operand:SI 2 "const_0_to_7_operand" "n")]))))]
   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
   "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}"
   [(set_attr "type" "sselog1")
@@ -3630,7 +3630,7 @@
 	(vec_merge:V4HI
 	  (match_operand:V4HI 2 "register_operand" "Yr,*x,x")
 	  (match_operand:V4HI 1 "register_operand" "0,0,x")
-	  (match_operand:SI 3 "const_0_to_15_operand")))]
+	  (match_operand:SI 3 "const_0_to_15_operand" "n,n,n")))]
   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
   "@
    pblendw\t{%3, %2, %0|%0, %2, %3}
@@ -3648,7 +3648,7 @@
 	(vec_merge:V2HI
 	  (match_operand:V2HI 2 "register_operand" "Yr,*x,x")
 	  (match_operand:V2HI 1 "register_operand" "0,0,x")
-	  (match_operand:SI 3 "const_0_to_7_operand")))]
+	  (match_operand:SI 3 "const_0_to_7_operand" "n,n,n")))]
   "TARGET_SSE4_1"
   "@
    pblendw\t{%3, %2, %0|%0, %2, %3}
@@ -4035,7 +4035,7 @@
   [(set (match_operand:HI 0 "register_sse4nonimm_operand" "=r,m")
 	(vec_select:HI
 	  (match_operand:V2HI 1 "register_operand" "YW,YW")
-	  (parallel [(match_operand:SI 2 "const_0_to_1_operand")])))]
+	  (parallel [(match_operand:SI 2 "const_0_to_1_operand" "n,n")])))]
   "TARGET_SSE2"
   "@
    %vpextrw\t{%2, %1, %k0|%k0, %1, %2}
@@ -4051,7 +4051,7 @@
 	(zero_extend:SWI48
 	  (vec_select:HI
 	    (match_operand:V2HI 1 "register_operand" "YW")
-	    (parallel [(match_operand:SI 2 "const_0_to_1_operand")]))))]
+	    (parallel [(match_operand:SI 2 "const_0_to_1_operand" "n")]))))]
   "TARGET_SSE2"
   "%vpextrw\t{%2, %1, %k0|%k0, %1, %2}"
   [(set_attr "type" "sselog1")
@@ -4063,7 +4063,7 @@
   [(set (match_operand:QI 0 "nonimmediate_operand" "=r,m")
 	(vec_select:QI
 	  (match_operand:V4QI 1 "register_operand" "YW,YW")
-	  (parallel [(match_operand:SI 2 "const_0_to_3_operand")])))]
+	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n")])))]
   "TARGET_SSE4_1"
   "@
    %vpextrb\t{%2, %1, %k0|%k0, %1, %2}
@@ -4080,7 +4080,7 @@
 	(zero_extend:SWI248
 	  (vec_select:QI
 	    (match_operand:V4QI 1 "register_operand" "YW")
-	    (parallel [(match_operand:SI 2 "const_0_to_3_operand")]))))]
+	    (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n")]))))]
   "TARGET_SSE4_1"
   "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}"
   [(set_attr "type" "sselog1")
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 92890d4957d..191371b1081 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -1484,7 +1484,7 @@
 	      (match_operand:MODEFH 1 "memory_operand" "m"))
 	    (match_operand:<ssevecmode> 2 "nonimm_or_0_operand" "0C")
 	    (match_operand:QI 3 "register_operand" "Yk"))
-	  (match_operand:<ssevecmode> 4 "const0_operand")
+	  (match_operand:<ssevecmode> 4 "const0_operand" "C")
 	  (const_int 1)))]
   "TARGET_AVX512F"
   "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{3%}%N2, %1}"
@@ -1624,7 +1624,7 @@
 	  (vec_select:<ssescalarmode>
 	    (match_operand:VI8F_128 1 "nonimmediate_operand" "vm")
 	    (parallel [(const_int 0)]))
-	  (match_operand:<ssescalarmode> 2 "const0_operand")))]
+	  (match_operand:<ssescalarmode> 2 "const0_operand" "C")))]
   "TARGET_SSE2"
   "%vmovq\t{%1, %0|%0, %q1}"
   [(set_attr "type" "ssemov")
@@ -2018,7 +2018,7 @@
   [(set (match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "=k")
 	(any_lshift:SWI1248_AVX512BWDQ
 	  (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")
-	  (match_operand 2 "const_0_to_255_operand")))
+	  (match_operand 2 "const_0_to_255_operand" "n")))
    (unspec [(const_int 0)] UNSPEC_MASKOP)]
   "TARGET_AVX512F"
   "k<mshift><mskmodesuffix>\t{%2, %1, %0|%0, %1, %2}"
@@ -3440,7 +3440,7 @@
 	(unspec:VF_128_256
 	  [(match_operand:VF_128_256 1 "register_operand" "x")
 	   (match_operand:VF_128_256 2 "nonimmediate_operand" "xm")
-	   (match_operand:SI 3 "const_0_to_31_operand")]
+	   (match_operand:SI 3 "const_0_to_31_operand" "n")]
 	  UNSPEC_PCMP))]
   "TARGET_AVX"
   "vcmp<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
@@ -3652,7 +3652,7 @@
 	  (unspec:VF_128
 	    [(match_operand:VF_128 1 "register_operand" "x")
 	     (match_operand:VF_128 2 "nonimmediate_operand" "xm")
-	     (match_operand:SI 3 "const_0_to_31_operand")]
+	     (match_operand:SI 3 "const_0_to_31_operand" "n")]
 	    UNSPEC_PCMP)
 	 (match_dup 1)
 	 (const_int 1)))]
@@ -3745,7 +3745,7 @@
 	  (unspec:<V48H_AVX512VL:avx512fmaskmode>
 	    [(match_operand:V48H_AVX512VL 1 "nonimmediate_operand")
 	     (match_operand:V48H_AVX512VL 2 "nonimmediate_operand")
-	     (match_operand:SI 3 "const_0_to_7_operand")]
+	     (match_operand:SI 3 "const_0_to_7_operand" "n")]
 	    UNSPEC_PCMP)))]
   "TARGET_AVX512F
    && (!VALID_MASK_AVX512BW_MODE (<SWI248x:MODE>mode) || TARGET_AVX512BW)
@@ -3951,7 +3951,7 @@
 	(unspec:<avx512fmaskmode>
 	  [(match_operand:VI12_AVX512VL 1 "register_operand" "v")
 	   (match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm")
-	   (match_operand:SI 3 "const_0_to_7_operand")]
+	   (match_operand:SI 3 "const_0_to_7_operand" "n")]
 	  UNSPEC_UNSIGNED_PCMP))]
   "TARGET_AVX512BW"
   "vpcmpu<ssemodesuffix>\t{%3, %2, %1, %0<mask_scalar_merge_operand4>|%0<mask_scalar_merge_operand4>, %1, %2, %3}"
@@ -4049,7 +4049,7 @@
 	(unspec:<avx512fmaskmode>
 	  [(match_operand:VI48_AVX512VL 1 "register_operand" "v")
 	   (match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm")
-	   (match_operand:SI 3 "const_0_to_7_operand")]
+	   (match_operand:SI 3 "const_0_to_7_operand" "n")]
 	  UNSPEC_UNSIGNED_PCMP))]
   "TARGET_AVX512F"
   "vpcmpu<ssemodesuffix>\t{%3, %2, %1, %0<mask_scalar_merge_operand4>|%0<mask_scalar_merge_operand4>, %1, %2, %3}"
@@ -4189,7 +4189,7 @@
 	  (unspec:<avx512fmaskmode>
 	    [(match_operand:VFH_128 1 "register_operand" "v")
 	     (match_operand:VFH_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")
-	     (match_operand:SI 3 "const_0_to_31_operand")]
+	     (match_operand:SI 3 "const_0_to_31_operand" "n")]
 	    UNSPEC_PCMP)
 	  (const_int 1)))]
   "TARGET_AVX512F"
@@ -4205,7 +4205,7 @@
 	  (unspec:<avx512fmaskmode>
 	    [(match_operand:VFH_128 1 "register_operand" "v")
 	     (match_operand:VFH_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")
-	     (match_operand:SI 3 "const_0_to_31_operand")]
+	     (match_operand:SI 3 "const_0_to_31_operand" "n")]
 	    UNSPEC_PCMP)
 	  (and:<avx512fmaskmode>
 	    (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")
@@ -6081,7 +6081,7 @@
 	      (match_operand:VFH_128 1 "register_operand" "0,0")
 	      (match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")
 	      (match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))
-	    (match_operand:VFH_128 4 "const0_operand")
+	    (match_operand:VFH_128 4 "const0_operand" "C,C")
 	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
 	  (match_dup 1)
 	  (const_int 1)))]
@@ -6139,7 +6139,7 @@
 	      (match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")
 	      (neg:VFH_128
 		(match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")))
-	    (match_operand:VFH_128 4 "const0_operand")
+	    (match_operand:VFH_128 4 "const0_operand" "C,C")
 	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
 	  (match_dup 1)
 	  (const_int 1)))]
@@ -6211,7 +6211,7 @@
 		(match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v"))
 	      (match_operand:VFH_128 1 "register_operand" "0,0")
 	      (match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))
-	    (match_operand:VFH_128 4 "const0_operand")
+	    (match_operand:VFH_128 4 "const0_operand" "C,C")
 	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
 	  (match_dup 1)
 	  (const_int 1)))]
@@ -6272,7 +6272,7 @@
 	      (match_operand:VFH_128 1 "register_operand" "0,0")
 	      (neg:VFH_128
 		(match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")))
-	    (match_operand:VFH_128 4 "const0_operand")
+	    (match_operand:VFH_128 4 "const0_operand" "C,C")
 	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
 	  (match_dup 1)
 	  (const_int 1)))]
@@ -6937,7 +6937,7 @@
   [(set (match_operand:V8HF 0 "register_operand" "=v")
 	(vec_concat:V8HF
 	    (any_float:V4HF (match_operand:VI4_128_8_256 1 "vector_operand" "vm"))
-	    (match_operand:V4HF 2 "const0_operand")))]
+	    (match_operand:V4HF 2 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssecvt")
@@ -6966,7 +6966,7 @@
                 (match_operand:V8HF 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"))
-	    (match_operand:V4HF 4 "const0_operand")))]
+	    (match_operand:V4HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(set_attr "type" "ssecvt")
@@ -6979,9 +6979,9 @@
 	(vec_merge:V4HF
 		(any_float:V4HF (match_operand:VI4_128_8_256 1
 				  "vector_operand" "vm"))
-	    (match_operand:V4HF 3 "const0_operand")
+	    (match_operand:V4HF 3 "const0_operand" "C")
 	    (match_operand:QI 2 "register_operand" "Yk"))
-	    (match_operand:V4HF 4 "const0_operand")))]
+	    (match_operand:V4HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
   [(set_attr "type" "ssecvt")
@@ -7013,7 +7013,7 @@
   [(set (match_operand:V8HF 0 "register_operand" "=v")
 	(vec_concat:V8HF
 	    (any_float:V2HF (match_operand:V2DI 1 "vector_operand" "vm"))
-	    (match_operand:V6HF 2 "const0_operand")))]
+	    (match_operand:V6HF 2 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<floatsuffix>qq2ph{x}\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssecvt")
@@ -7042,7 +7042,7 @@
                 (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
                 (parallel [(const_int 0) (const_int 1)]))
             (match_operand:QI 3 "register_operand" "Yk"))
-	    (match_operand:V6HF 4 "const0_operand")))]
+	    (match_operand:V6HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<floatsuffix>qq2ph{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(set_attr "type" "ssecvt")
@@ -7055,9 +7055,9 @@
 	(vec_merge:V2HF
 		(any_float:V2HF (match_operand:V2DI 1
 				  "vector_operand" "vm"))
-	    (match_operand:V2HF 3 "const0_operand")
+	    (match_operand:V2HF 3 "const0_operand" "C")
 	    (match_operand:QI 2 "register_operand" "Yk"))
-	    (match_operand:V6HF 4 "const0_operand")))]
+	    (match_operand:V6HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<floatsuffix>qq2ph{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
   [(set_attr "type" "ssecvt")
@@ -7360,7 +7360,7 @@
 	(vec_concat:V8HF
 	    (float_truncate:V4HF
 	      (match_operand:VF4_128_8_256 1 "vector_operand" "vm"))
-	    (match_operand:V4HF 2 "const0_operand")))]
+	    (match_operand:V4HF 2 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssecvt")
@@ -7393,7 +7393,7 @@
 	      (parallel [(const_int 0) (const_int 1)
 			 (const_int 2) (const_int 3)]))
 	    (match_operand:QI 3 "register_operand" "Yk"))
-	  (match_operand:V4HF 4 "const0_operand")))]
+	  (match_operand:V4HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(set_attr "type" "ssecvt")
@@ -7406,9 +7406,9 @@
 	  (vec_merge:V4HF
 	    (float_truncate:V4HF
 	      (match_operand:VF4_128_8_256 1 "vector_operand" "vm"))
-	    (match_operand:V4HF 3 "const0_operand")
+	    (match_operand:V4HF 3 "const0_operand" "C")
 	    (match_operand:QI 2 "register_operand" "Yk"))
-	  (match_operand:V4HF 4 "const0_operand")))]
+	  (match_operand:V4HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
   [(set_attr "type" "ssecvt")
@@ -7439,7 +7439,7 @@
 	(vec_concat:V8HF
 	  (float_truncate:V2HF
 	    (match_operand:V2DF 1 "vector_operand" "vm"))
-	  (match_operand:V6HF 2 "const0_operand")))]
+	  (match_operand:V6HF 2 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvtpd2ph{x}\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssecvt")
@@ -7469,7 +7469,7 @@
 	      (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
 	      (parallel [(const_int 0) (const_int 1)]))
 	    (match_operand:QI 3 "register_operand" "Yk"))
-	  (match_operand:V6HF 4 "const0_operand")))]
+	  (match_operand:V6HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvtpd2ph{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(set_attr "type" "ssecvt")
@@ -7482,9 +7482,9 @@
 	  (vec_merge:V2HF
 	    (float_truncate:V2HF
 	      (match_operand:V2DF 1 "vector_operand" "vm"))
-	    (match_operand:V2HF 3 "const0_operand")
+	    (match_operand:V2HF 3 "const0_operand" "C")
 	    (match_operand:QI 2 "register_operand" "Yk"))
-	  (match_operand:V6HF 4 "const0_operand")))]
+	  (match_operand:V6HF 4 "const0_operand" "C")))]
   "TARGET_AVX512FP16 && TARGET_AVX512VL"
   "vcvtpd2ph{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
   [(set_attr "type" "ssecvt")
@@ -8268,7 +8268,7 @@
   [(set (match_operand:V4SF 0 "register_operand" "=v")
 	(vec_concat:V4SF
 	    (any_float:V2SF (match_operand:V2DI 1 "nonimmediate_operand" "vm"))
-	    (match_operand:V2SF 2 "const0_operand")))]
+	    (match_operand:V2SF 2 "const0_operand" "C")))]
   "TARGET_AVX512DQ && TARGET_AVX512VL"
   "vcvt<floatsuffix>qq2ps{x}\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssecvt")
@@ -8343,7 +8343,7 @@
                 (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
                 (parallel [(const_int 0) (const_int 1)]))
             (match_operand:QI 3 "register_operand" "Yk"))
-	    (match_operand:V2SF 4 "const0_operand")))]
+	    (match_operand:V2SF 4 "const0_operand" "C")))]
   "TARGET_AVX512DQ && TARGET_AVX512VL"
   "vcvt<floatsuffix>qq2ps{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(set_attr "type" "ssecvt")
@@ -8356,9 +8356,9 @@
 	(vec_merge:V2SF
 		(any_float:V2SF (match_operand:V2DI 1
 				  "nonimmediate_operand" "vm"))
-	    (match_operand:V2SF 3 "const0_operand")
+	    (match_operand:V2SF 3 "const0_operand" "C")
 	    (match_operand:QI 2 "register_operand" "Yk"))
-	    (match_operand:V2SF 4 "const0_operand")))]
+	    (match_operand:V2SF 4 "const0_operand" "C")))]
   "TARGET_AVX512DQ && TARGET_AVX512VL"
   "vcvt<floatsuffix>qq2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
   [(set_attr "type" "ssecvt")
@@ -8982,7 +8982,7 @@
 	(vec_concat:V4SF
 	  (float_truncate:V2SF
 	    (match_operand:V2DF 1 "vector_operand" "vBm"))
-	  (match_operand:V2SF 2 "const0_operand")))]
+	  (match_operand:V2SF 2 "const0_operand" "C")))]
   "TARGET_SSE2"
 {
   if (TARGET_AVX)
@@ -9027,7 +9027,7 @@
 	      (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
 	      (parallel [(const_int 0) (const_int 1)]))
 	    (match_operand:QI 3 "register_operand" "Yk"))
-	  (match_operand:V2SF 4 "const0_operand")))]
+	  (match_operand:V2SF 4 "const0_operand" "C")))]
   "TARGET_AVX512VL"
   "vcvtpd2ps{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
   [(set_attr "type" "ssecvt")
@@ -9040,9 +9040,9 @@
 	  (vec_merge:V2SF
 	    (float_truncate:V2SF
 	      (match_operand:V2DF 1 "nonimmediate_operand" "vm"))
-	    (match_operand:V2SF 3 "const0_operand")
+	    (match_operand:V2SF 3 "const0_operand" "C")
 	    (match_operand:QI 2 "register_operand" "Yk"))
-	  (match_operand:V2SF 4 "const0_operand")))]
+	  (match_operand:V2SF 4 "const0_operand" "C")))]
   "TARGET_AVX512VL"
   "vcvtpd2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
   [(set_attr "type" "ssecvt")
@@ -10577,7 +10577,7 @@
   [(set (match_operand:V4SF 0 "register_operand"       "=v")
 	(vec_concat:V4SF
 	  (match_operand:V2SF 1 "nonimmediate_operand" "vm")
-	  (match_operand:V2SF 2 "const0_operand")))]
+	  (match_operand:V2SF 2 "const0_operand"       " C")))]
   "TARGET_SSE2"
   "%vmovq\t{%1, %0|%0, %1}"
   [(set_attr "type" "ssemov")
@@ -10735,7 +10735,7 @@
 	(vec_merge:VI2F_256_512
 	  (vec_duplicate:VI2F_256_512
 	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "r,m"))
-	  (match_operand:VI2F_256_512 1 "const0_operand")
+	  (match_operand:VI2F_256_512 1 "const0_operand" "C,C")
 	  (const_int 1)))]
   "TARGET_AVX512FP16"
   "@
@@ -10835,7 +10835,7 @@
 	(vec_merge:VI4F_256_512
 	  (vec_duplicate:VI4F_256_512
 	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "v,m,r"))
-	  (match_operand:VI4F_256_512 1 "const0_operand")
+	  (match_operand:VI4F_256_512 1 "const0_operand" "C,C,C")
 	  (const_int 1)))]
   "TARGET_AVX"
   "@
@@ -10898,7 +10898,7 @@
   [(set (match_operand:V4SF 0 "register_operand" "=Yr,*x,v")
 	(unspec:V4SF [(match_operand:V4SF 2 "nonimmediate_operand" "Yrm,*xm,vm")
 		      (match_operand:V4SF 1 "register_operand" "0,0,v")
-		      (match_operand:SI 3 "const_0_to_255_operand")]
+		      (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")]
 		     UNSPEC_INSERTPS))]
   "TARGET_SSE4_1"
 {
@@ -11015,7 +11015,7 @@
   [(set (match_operand:SF 0 "nonimmediate_operand" "=rm,rm,rm,Yv,Yv")
 	(vec_select:SF
 	  (match_operand:V4SF 1 "register_operand" "Yr,*x,v,0,v")
-	  (parallel [(match_operand:SI 2 "const_0_to_3_operand")])))]
+	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n,n,n,n")])))]
   "TARGET_SSE4_1"
   "@
    extractps\t{%2, %1, %0|%0, %1, %2}
@@ -11057,7 +11057,7 @@
   [(set (match_operand:SF 0 "register_operand" "=v,*r,f")
 	(vec_select:SF
 	  (match_operand:V4SF 1 "memory_operand" "o,o,o")
-	  (parallel [(match_operand 2 "const_0_to_3_operand")])))]
+	  (parallel [(match_operand 2 "const_0_to_3_operand" "n,n,n")])))]
   "TARGET_SSE"
   "#"
   "&& reload_completed"
@@ -13540,7 +13540,7 @@
 	(vec_merge:VF2_512_256
 	  (vec_duplicate:VF2_512_256
 	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "vm"))
-	  (match_operand:VF2_512_256 1 "const0_operand")
+	  (match_operand:VF2_512_256 1 "const0_operand" "C")
 	  (const_int 1)))]
   "TARGET_AVX"
   "vmovq\t{%2, %x0|%x0, %2}"
@@ -16027,7 +16027,7 @@
   [(set (match_operand:VIMAX_AVX512VL 0 "register_operand" "=v")
 	(any_lshift:VIMAX_AVX512VL
 	 (match_operand:VIMAX_AVX512VL 1 "nonimmediate_operand" "vm")
-	 (match_operand:SI 2 "const_0_to_255_mul_8_operand")))]
+	 (match_operand:SI 2 "const_0_to_255_mul_8_operand" "n")))]
   "TARGET_AVX512BW"
 {
   operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
@@ -16042,7 +16042,7 @@
   [(set (match_operand:VIMAX_AVX2 0 "register_operand" "=x,Yw")
 	(any_lshift:VIMAX_AVX2
 	 (match_operand:VIMAX_AVX2 1 "register_operand" "0,Yw")
-	 (match_operand:SI 2 "const_0_to_255_mul_8_operand")))]
+	 (match_operand:SI 2 "const_0_to_255_mul_8_operand" "n,n")))]
   "TARGET_SSE2"
 {
   operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
@@ -18101,7 +18101,7 @@
 	  (match_operand:AVX512_VEC 1 "reg_or_0_operand" "v,C,C")
 	  (vec_duplicate:AVX512_VEC
 		(match_operand:<ssequartermode> 2 "nonimmediate_operand" "vm,xm,vm"))
-	  (match_operand:SI 3 "const_int_operand")))]
+	  (match_operand:SI 3 "const_int_operand" "n,n,n")))]
   "TARGET_AVX512F
    && (INTVAL (operands[3])
        == (GET_MODE_UNIT_SIZE (<MODE>mode) == 4 ? 0xFFF0 : 0xFC))"
@@ -18149,7 +18149,7 @@
 	  (match_operand:AVX512_VEC 1 "register_operand" "v")
 	  (vec_duplicate:AVX512_VEC
 		(match_operand:<ssequartermode> 2 "nonimmediate_operand" "vm"))
-	  (match_operand:SI 3 "const_int_operand")))]
+	  (match_operand:SI 3 "const_int_operand" "n")))]
   "TARGET_AVX512F"
 {
   int mask;
@@ -18817,7 +18817,7 @@
   [(set (match_operand:V32HI 0 "register_operand" "=v")
 	(unspec:V32HI
 	  [(match_operand:V32HI 1 "nonimmediate_operand" "vm")
-	   (match_operand:SI 2 "const_0_to_255_operand")]
+	   (match_operand:SI 2 "const_0_to_255_operand" "n")]
 	  UNSPEC_PSHUFLW))]
   "TARGET_AVX512BW"
   "vpshuflw\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
@@ -18993,7 +18993,7 @@
   [(set (match_operand:V32HI 0 "register_operand" "=v")
 	(unspec:V32HI
 	  [(match_operand:V32HI 1 "nonimmediate_operand" "vm")
-	   (match_operand:SI 2 "const_0_to_255_operand")]
+	   (match_operand:SI 2 "const_0_to_255_operand" "n")]
 	  UNSPEC_PSHUFHW))]
   "TARGET_AVX512BW"
   "vpshufhw\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
@@ -19725,7 +19725,7 @@
   [(set (match_operand:VI124_128 0 "register_operand"       "=v,x")
 	(vec_concat:VI124_128
 	  (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm,?!*y")
-	  (match_operand:<ssehalfvecmode> 2 "const0_operand")))]
+	  (match_operand:<ssehalfvecmode> 2 "const0_operand"       " C,C")))]
   "TARGET_SSE2"
   "@
    %vmovq\t{%1, %0|%0, %1}
@@ -19799,7 +19799,7 @@
   [(set (match_operand:V2DI 0 "register_operand"     "=v,v ,x")
 	(vec_concat:V2DI
 	  (match_operand:DI 1 "nonimmediate_operand" " r,vm,?!*y")
-	  (match_operand:DI 2 "const0_operand")))]
+	  (match_operand:DI 2 "const0_operand"       " C,C ,C")))]
   "TARGET_SSE2"
   "@
    * return HAVE_AS_IX86_INTERUNIT_MOVQ ? \"%vmovq\t{%1, %0|%0, %1}\" : \"%vmovd\t{%1, %0|%0, %1}\";
@@ -19823,7 +19823,7 @@
 	(vec_merge:VI8_AVX_AVX512F
 	  (vec_duplicate:VI8_AVX_AVX512F
 	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "r,vm"))
-	  (match_operand:VI8_AVX_AVX512F 1 "const0_operand")
+	  (match_operand:VI8_AVX_AVX512F 1 "const0_operand" "C,C")
 	  (const_int 1)))]
   "TARGET_AVX"
   "vmovq\t{%2, %x0|%x0, %2}"
@@ -20024,7 +20024,7 @@
 	(unspec:SI
 	  [(lt:VF_128_256
 	     (match_operand:<sseintvecmode> 1 "register_operand" "x")
-	     (match_operand:<sseintvecmode> 2 "const0_operand"))]
+	     (match_operand:<sseintvecmode> 2 "const0_operand" "C"))]
 	  UNSPEC_MOVMSK))]
   "TARGET_SSE"
   "#"
@@ -20042,7 +20042,7 @@
 	  (unspec:SI
 	    [(lt:VF_128_256
 	       (match_operand:<sseintvecmode> 1 "register_operand" "x")
-	       (match_operand:<sseintvecmode> 2 "const0_operand"))]
+	       (match_operand:<sseintvecmode> 2 "const0_operand" "C"))]
 	    UNSPEC_MOVMSK)))]
   "TARGET_64BIT && TARGET_SSE"
   "#"
@@ -20060,7 +20060,7 @@
 	  [(subreg:VF_128_256
 	     (ashiftrt:<sseintvecmode>
 	       (match_operand:<sseintvecmode> 1 "register_operand" "x")
-	       (match_operand:QI 2 "const_int_operand")) 0)]
+	       (match_operand:QI 2 "const_int_operand" "n")) 0)]
 	  UNSPEC_MOVMSK))]
   "TARGET_SSE"
   "#"
@@ -20079,7 +20079,7 @@
 	    [(subreg:VF_128_256
 	       (ashiftrt:<sseintvecmode>
 		 (match_operand:<sseintvecmode> 1 "register_operand" "x")
-	       (match_operand:QI 2 "const_int_operand")) 0)]
+	       (match_operand:QI 2 "const_int_operand" "n")) 0)]
 	    UNSPEC_MOVMSK)))]
   "TARGET_64BIT && TARGET_SSE"
   "#"
@@ -20220,7 +20220,7 @@
   [(set (match_operand:SI 0 "register_operand" "=r")
 	(unspec:SI
 	  [(lt:VI1_AVX2 (match_operand:VI1_AVX2 1 "register_operand" "x")
-			(match_operand:VI1_AVX2 2 "const0_operand"))]
+			(match_operand:VI1_AVX2 2 "const0_operand" "C"))]
 	  UNSPEC_MOVMSK))]
   "TARGET_SSE2"
   "#"
@@ -20242,7 +20242,7 @@
 	(zero_extend:DI
 	  (unspec:SI
 	    [(lt:VI1_AVX2 (match_operand:VI1_AVX2 1 "register_operand" "x")
-			  (match_operand:VI1_AVX2 2 "const0_operand"))]
+			  (match_operand:VI1_AVX2 2 "const0_operand" "C"))]
 	    UNSPEC_MOVMSK)))]
   "TARGET_64BIT && TARGET_SSE2"
   "#"
@@ -20264,7 +20264,7 @@
 	(sign_extend:DI
 	  (unspec:SI
 	    [(lt:V16QI (match_operand:V16QI 1 "register_operand" "x")
-		       (match_operand:V16QI 2 "const0_operand"))]
+		       (match_operand:V16QI 2 "const0_operand" "C"))]
 	    UNSPEC_MOVMSK)))]
   "TARGET_64BIT && TARGET_SSE2"
   "#"
@@ -21063,7 +21063,7 @@
 	  (unspec:VI1_AVX512
 	    [(match_operand:VI1_AVX512 1 "register_operand" "v")
 	     (match_operand:VI1_AVX512 2 "nonimmediate_operand" "vm")
-	     (match_operand:SI 3 "const_0_to_255_mul_8_operand")]
+	     (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n")]
 	    UNSPEC_PALIGNR)
 	(match_operand:VI1_AVX512 4 "nonimm_or_0_operand" "0C")
 	(match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
@@ -21084,7 +21084,7 @@
 	(unspec:SSESCALARMODE
 	  [(match_operand:SSESCALARMODE 1 "register_operand" "0,<v_Yw>")
 	   (match_operand:SSESCALARMODE 2 "vector_operand" "xBm,<v_Yw>m")
-	   (match_operand:SI 3 "const_0_to_255_mul_8_operand")]
+	   (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n,n")]
 	  UNSPEC_PALIGNR))]
   "TARGET_SSSE3"
 {
@@ -21113,7 +21113,7 @@
   [(set (match_operand:DI 0 "register_operand" "=y,x,Yv")
 	(unspec:DI [(match_operand:DI 1 "register_operand" "0,0,Yv")
 		    (match_operand:DI 2 "register_mmxmem_operand" "ym,x,Yv")
-		    (match_operand:SI 3 "const_0_to_255_mul_8_operand")]
+		    (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n,n,n")]
 		   UNSPEC_PALIGNR))]
   "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
 {
@@ -21400,7 +21400,7 @@
 	   (match_operand:VF_128_256 2 "vector_operand" "YrBm,*xBm,xm")
 	   (lt:VF_128_256
 	     (match_operand:<sseintvecmode> 3 "register_operand" "Yz,Yz,x")
-	     (match_operand:<sseintvecmode> 4 "const0_operand"))]
+	     (match_operand:<sseintvecmode> 4 "const0_operand" "C,C,C"))]
 	  UNSPEC_BLENDV))]
   "TARGET_SSE4_1"
   "#"
@@ -21432,7 +21432,7 @@
 	   (subreg:<ssebytemode>
 	     (lt:VI48_AVX
 	       (match_operand:VI48_AVX 3 "register_operand" "Yz,Yz,x")
-	       (match_operand:VI48_AVX 4 "const0_operand")) 0)]
+	       (match_operand:VI48_AVX 4 "const0_operand" "C,C,C")) 0)]
 	  UNSPEC_BLENDV))]
   "TARGET_SSE4_1"
   "#"
@@ -21487,7 +21487,7 @@
 	(unspec:VF_128_256
 	  [(match_operand:VF_128_256 1 "vector_operand" "%0,0,x")
 	   (match_operand:VF_128_256 2 "vector_operand" "YrBm,*xBm,xm")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")]
 	  UNSPEC_DP))]
   "TARGET_SSE4_1"
   "@
@@ -21525,7 +21525,7 @@
 	(unspec:VI1_AVX2
 	  [(match_operand:VI1_AVX2 1 "register_operand" "0,0,x")
 	   (match_operand:VI1_AVX2 2 "vector_operand" "YrBm,*xBm,xm")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")]
 	  UNSPEC_MPSADBW))]
   "TARGET_SSE4_1"
   "@
@@ -21614,7 +21614,7 @@
 	  [(match_operand:VI1_AVX2 1 "register_operand"  "0,0,x")
 	   (match_operand:VI1_AVX2 2 "vector_operand" "YrBm,*xBm,xm")
 	   (lt:VI1_AVX2 (match_operand:VI1_AVX2 3 "register_operand" "Yz,Yz,x")
-			(match_operand:VI1_AVX2 4 "const0_operand"))]
+			(match_operand:VI1_AVX2 4 "const0_operand" "C,C,C"))]
 	  UNSPEC_BLENDV))]
   "TARGET_SSE4_1"
   "#"
@@ -21658,7 +21658,7 @@
 	(vec_merge:V8_128
 	  (match_operand:V8_128 2 "vector_operand" "YrBm,*xBm,xm")
 	  (match_operand:V8_128 1 "register_operand" "0,0,x")
-	  (match_operand:SI 3 "const_0_to_255_operand")))]
+	  (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")))]
   "TARGET_SSE4_1"
   "@
    pblendw\t{%3, %2, %0|%0, %2, %3}
@@ -21730,7 +21730,7 @@
 	(vec_merge:V16_256
 	  (match_operand:V16_256 2 "nonimmediate_operand" "xm")
 	  (match_operand:V16_256 1 "register_operand" "x")
-	  (match_operand:SI 3 "avx2_pblendw_operand")))]
+	  (match_operand:SI 3 "avx2_pblendw_operand" "n")))]
   "TARGET_AVX2"
 {
   operands[3] = GEN_INT (INTVAL (operands[3]) & 0xff);
@@ -21747,7 +21747,7 @@
 	(vec_merge:VI4_AVX2
 	  (match_operand:VI4_AVX2 2 "nonimmediate_operand" "xm")
 	  (match_operand:VI4_AVX2 1 "register_operand" "x")
-	  (match_operand:SI 3 "const_0_to_255_operand")))]
+	  (match_operand:SI 3 "const_0_to_255_operand" "n")))]
   "TARGET_AVX2"
   "vpblendd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
   [(set_attr "type" "ssemov")
@@ -21784,9 +21784,9 @@
 	(vec_select:V32QI
 	  (vec_concat:V64QI
 	    (match_operand:V32QI 1 "nonimmediate_operand" "vm")
-	    (match_operand:V32QI 2 "const0_operand"))
+	    (match_operand:V32QI 2 "const0_operand" "C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n")])))]
   "TARGET_AVX2"
   "#"
   "&& reload_completed"
@@ -21803,10 +21803,10 @@
 	    (subreg:V32QI
 	      (vec_concat:VI248_256
 		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
-		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
-	    (match_operand:V32QI 3 "const0_operand"))
+		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
+	    (match_operand:V32QI 3 "const0_operand" "C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n")])))]
   "TARGET_AVX2"
   "#"
   "&& reload_completed"
@@ -21838,9 +21838,9 @@
 	(vec_select:V64QI
 	  (vec_concat:V128QI
 	    (match_operand:V64QI 1 "nonimmediate_operand" "vm")
-	    (match_operand:V64QI 2 "const0_operand"))
+	    (match_operand:V64QI 2 "const0_operand" "C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n")])))]
   "TARGET_AVX512BW"
   "#"
   "&& reload_completed"
@@ -21857,10 +21857,10 @@
 	    (subreg:V64QI
 	      (vec_concat:VI248_512
 		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
-		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
-	    (match_operand:V64QI 3 "const0_operand"))
+		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
+	    (match_operand:V64QI 3 "const0_operand" "C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n")])))]
   "TARGET_AVX512BW"
   "#"
   "&& reload_completed"
@@ -21930,9 +21930,9 @@
 	(vec_select:V16QI
 	  (vec_concat:V32QI
 	    (match_operand:V16QI 1 "vector_operand" "YrBm,*xBm,Ywm")
-	    (match_operand:V16QI 2 "const0_operand"))
+	    (match_operand:V16QI 2 "const0_operand" "C,C,C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n,n,n")])))]
   "TARGET_SSE4_1"
   "#"
   "&& reload_completed"
@@ -21963,10 +21963,10 @@
 	    (subreg:V16QI
 	      (vec_concat:VI248_128
 		(match_operand:<ssehalfvecmode> 1 "vector_operand" "YrBm,*xBm,Ywm")
-		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
-	    (match_operand:V16QI 3 "const0_operand"))
+		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C,C,C")) 0)
+	    (match_operand:V16QI 3 "const0_operand" "C,C,C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n,n,n")])))]
   "TARGET_SSE4_1"
   "#"
   "&& reload_completed"
@@ -22169,9 +22169,9 @@
 	(vec_select:V32HI
 	  (vec_concat:V64HI
 	    (match_operand:V32HI 1 "nonimmediate_operand" "vm")
-	    (match_operand:V32HI 2 "const0_operand"))
+	    (match_operand:V32HI 2 "const0_operand" "C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n")])))]
   "TARGET_AVX512F"
   "#"
   "&& reload_completed"
@@ -22188,10 +22188,10 @@
 	    (subreg:V32HI
 	      (vec_concat:VI148_512
 	        (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
-		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
-	    (match_operand:V32HI 3 "const0_operand"))
+		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
+	    (match_operand:V32HI 3 "const0_operand" "C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n")])))]
   "TARGET_AVX512F"
   "#"
   "&& reload_completed"
@@ -22223,9 +22223,9 @@
 	(vec_select:V16HI
 	  (vec_concat:V32HI
 	    (match_operand:V16HI 1 "nonimmediate_operand" "vm")
-	    (match_operand:V16HI 2 "const0_operand"))
+	    (match_operand:V16HI 2 "const0_operand" "C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n")])))]
   "TARGET_AVX2"
   "#"
   "&& reload_completed"
@@ -22242,10 +22242,10 @@
 	    (subreg:V16HI
 	      (vec_concat:VI148_256
 		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
-		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
-	    (match_operand:V16HI 3 "const0_operand"))
+		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
+	    (match_operand:V16HI 3 "const0_operand" "C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n")])))]
   "TARGET_AVX2"
   "#"
   "&& reload_completed"
@@ -22321,9 +22321,9 @@
 	(vec_select:V8HI
 	  (vec_concat:V16HI
 	    (match_operand:V8HI 1 "vector_operand" "YrBm,*xBm,vm")
-	    (match_operand:V8HI 2 "const0_operand"))
+	    (match_operand:V8HI 2 "const0_operand" "C,C,C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n,n,n")])))]
   "TARGET_SSE4_1"
   "#"
   "&& reload_completed"
@@ -22352,10 +22352,10 @@
 	    (subreg:V8HI
 	      (vec_concat:VI148_128
 		(match_operand:<ssehalfvecmode> 1 "vector_operand" "YrBm,*xBm,vm")
-		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
-	    (match_operand:V8HI 3 "const0_operand"))
+		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C,C,C")) 0)
+	    (match_operand:V8HI 3 "const0_operand" "C,C,C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n,n,n")])))]
   "TARGET_SSE4_1"
   "#"
   "&& reload_completed"
@@ -22713,9 +22713,9 @@
 	(vec_select:V16SI
 	  (vec_concat:V32SI
 	    (match_operand:V16SI 1 "nonimmediate_operand" "vm")
-	    (match_operand:V16SI 2 "const0_operand"))
+	    (match_operand:V16SI 2 "const0_operand" "C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n")])))]
   "TARGET_AVX512F"
   "#"
   "&& reload_completed"
@@ -22731,10 +22731,10 @@
 	  (vec_concat:V32SI
 	    (vec_concat:V16SI
 	      (match_operand:V8SI 1 "nonimmediate_operand" "vm")
-	      (match_operand:V8SI 2 "const0_operand"))
-	    (match_operand:V16SI 3 "const0_operand"))
+	      (match_operand:V8SI 2 "const0_operand" "C"))
+	    (match_operand:V16SI 3 "const0_operand" "C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n")])))]
   "TARGET_AVX512F"
   "#"
   "&& reload_completed"
@@ -22765,9 +22765,9 @@
 	(vec_select:V8SI
 	  (vec_concat:V16SI
 	    (match_operand:V8SI 1 "nonimmediate_operand" "vm")
-	    (match_operand:V8SI 2 "const0_operand"))
+	    (match_operand:V8SI 2 "const0_operand" "C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n")])))]
   "TARGET_AVX2"
   "#"
   "&& reload_completed"
@@ -22783,10 +22783,10 @@
 	  (vec_concat:V16SI
 	    (vec_concat:V8SI
 	      (match_operand:V4SI 1 "nonimmediate_operand" "vm")
-	      (match_operand:V4SI 2 "const0_operand"))
-	    (match_operand:V8SI 3 "const0_operand"))
+	      (match_operand:V4SI 2 "const0_operand" "C"))
+	    (match_operand:V8SI 3 "const0_operand" "C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n")])))]
   "TARGET_AVX2"
   "#"
   "&& reload_completed"
@@ -22849,9 +22849,9 @@
 	(vec_select:V4SI
 	  (vec_concat:V8SI
 	    (match_operand:V4SI 1 "vector_operand" "YrBm,*xBm,vm")
-	    (match_operand:V4SI 2 "const0_operand"))
+	    (match_operand:V4SI 2 "const0_operand" "C,C,C"))
 	  (match_parallel 3 "pmovzx_parallel"
-	    [(match_operand 4 "const_int_operand")])))]
+	    [(match_operand 4 "const_int_operand" "n,n,n")])))]
   "TARGET_SSE4_1"
   "#"
   "&& reload_completed"
@@ -22877,10 +22877,10 @@
 	  (vec_concat:V8SI
 	    (vec_concat:V4SI
 	      (match_operand:V2SI 1 "vector_operand" "YrBm, *xBm, vm")
-	      (match_operand:V2SI 2 "const0_operand"))
-	    (match_operand:V4SI 3 "const0_operand"))
+	      (match_operand:V2SI 2 "const0_operand" "C,C,C"))
+	    (match_operand:V4SI 3 "const0_operand" "C,C,C"))
 	  (match_parallel 4 "pmovzx_parallel"
-	    [(match_operand 5 "const_int_operand")])))]
+	    [(match_operand 5 "const_int_operand" "n,n,n")])))]
   "TARGET_SSE4_1"
   "#"
   "&& reload_completed"
@@ -22984,7 +22984,7 @@
   [(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x,x")
 	(unspec:VF_128_256
 	  [(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm,xm")
-	   (match_operand:SI 2 "const_0_to_15_operand")]
+	   (match_operand:SI 2 "const_0_to_15_operand" "n,n,n")]
 	  UNSPEC_ROUND))]
   "TARGET_SSE4_1"
   "%vround<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
@@ -23077,7 +23077,7 @@
 	(vec_merge:VF_128
 	  (unspec:VF_128
 	    [(match_operand:VF_128 2 "nonimmediate_operand" "Yrm,*xm,xm,vm")
-	     (match_operand:SI 3 "const_0_to_15_operand")]
+	     (match_operand:SI 3 "const_0_to_15_operand" "n,n,n,n")]
 	    UNSPEC_ROUND)
 	  (match_operand:VF_128 1 "register_operand" "0,0,x,v")
 	  (const_int 1)))]
@@ -23101,7 +23101,7 @@
 	  (vec_duplicate:VFH_128
 	    (unspec:<ssescalarmode>
 	      [(match_operand:<ssescalarmode> 2 "nonimmediate_operand" "Yrm,*xm,xm,vm")
-	       (match_operand:SI 3 "const_0_to_15_operand")]
+	       (match_operand:SI 3 "const_0_to_15_operand" "n,n,n,n")]
 	      UNSPEC_ROUND))
 	  (match_operand:VFH_128 1 "register_operand" "0,0,x,v")
 	  (const_int 1)))]
@@ -23214,7 +23214,7 @@
 	   (match_operand:SI 3 "register_operand" "a,a")
 	   (match_operand:V16QI 4 "nonimmediate_operand" "x,m")
 	   (match_operand:SI 5 "register_operand" "d,d")
-	   (match_operand:SI 6 "const_0_to_255_operand")]
+	   (match_operand:SI 6 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_PCMPESTR))
    (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
 	(unspec:V16QI
@@ -23274,7 +23274,7 @@
 	   (match_operand:SI 2 "register_operand" "a,a")
 	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
 	   (match_operand:SI 4 "register_operand" "d,d")
-	   (match_operand:SI 5 "const_0_to_255_operand")]
+	   (match_operand:SI 5 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_PCMPESTR))
    (set (reg:CC FLAGS_REG)
 	(unspec:CC
@@ -23302,7 +23302,7 @@
 	   (match_operand:SI 2 "register_operand" "a,a")
 	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
 	   (match_operand:SI 4 "register_operand" "d,d")
-	   (match_operand:SI 5 "const_0_to_255_operand")]
+	   (match_operand:SI 5 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_PCMPESTR))
    (set (reg:CC FLAGS_REG)
 	(unspec:CC
@@ -23330,7 +23330,7 @@
 	   (match_operand:SI 3 "register_operand" "a,a,a,a")
 	   (match_operand:V16QI 4 "nonimmediate_operand" "x,m,x,m")
 	   (match_operand:SI 5 "register_operand" "d,d,d,d")
-	   (match_operand:SI 6 "const_0_to_255_operand")]
+	   (match_operand:SI 6 "const_0_to_255_operand" "n,n,n,n")]
 	  UNSPEC_PCMPESTR))
    (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
    (clobber (match_scratch:SI    1 "= X, X,c,c"))]
@@ -23354,7 +23354,7 @@
 	(unspec:SI
 	  [(match_operand:V16QI 2 "register_operand" "x,x")
 	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
-	   (match_operand:SI 4 "const_0_to_255_operand")]
+	   (match_operand:SI 4 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_PCMPISTR))
    (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
 	(unspec:V16QI
@@ -23405,7 +23405,7 @@
 	(unspec:SI
 	  [(match_operand:V16QI 1 "register_operand" "x,x")
 	   (match_operand:V16QI 2 "nonimmediate_operand" "x,m")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_PCMPISTR))
    (set (reg:CC FLAGS_REG)
 	(unspec:CC
@@ -23429,7 +23429,7 @@
 	(unspec:V16QI
 	  [(match_operand:V16QI 1 "register_operand" "x,x")
 	   (match_operand:V16QI 2 "nonimmediate_operand" "x,m")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_PCMPISTR))
    (set (reg:CC FLAGS_REG)
 	(unspec:CC
@@ -23453,7 +23453,7 @@
 	(unspec:CC
 	  [(match_operand:V16QI 2 "register_operand" "x,x,x,x")
 	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m,x,m")
-	   (match_operand:SI 4 "const_0_to_255_operand")]
+	   (match_operand:SI 4 "const_0_to_255_operand" "n,n,n,n")]
 	  UNSPEC_PCMPISTR))
    (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
    (clobber (match_scratch:SI    1 "= X, X,c,c"))]
@@ -23500,9 +23500,9 @@
 	[(unspec:P
 	   [(match_operand:P 2 "vsib_address_operand" "Tv")
 	    (match_operand:VI48_512 1 "register_operand" "v")
-	    (match_operand:SI 3 "const1248_operand")]
+	    (match_operand:SI 3 "const1248_operand" "n")]
 	   UNSPEC_VSIBADDR)])
-      (match_operand:SI 4 "const_2_to_3_operand")]
+      (match_operand:SI 4 "const_2_to_3_operand" "n")]
      UNSPEC_GATHER_PREFETCH)]
   "TARGET_AVX512PF"
 {
@@ -23547,9 +23547,9 @@
 	[(unspec:P
 	   [(match_operand:P 2 "vsib_address_operand" "Tv")
 	    (match_operand:VI4_256_8_512 1 "register_operand" "v")
-	    (match_operand:SI 3 "const1248_operand")]
+	    (match_operand:SI 3 "const1248_operand" "n")]
 	   UNSPEC_VSIBADDR)])
-      (match_operand:SI 4 "const_2_to_3_operand")]
+      (match_operand:SI 4 "const_2_to_3_operand" "n")]
      UNSPEC_GATHER_PREFETCH)]
   "TARGET_AVX512PF"
 {
@@ -23594,9 +23594,9 @@
 	[(unspec:P
 	   [(match_operand:P 2 "vsib_address_operand" "Tv")
 	    (match_operand:VI48_512 1 "register_operand" "v")
-	    (match_operand:SI 3 "const1248_operand")]
+	    (match_operand:SI 3 "const1248_operand" "n")]
 	   UNSPEC_VSIBADDR)])
-      (match_operand:SI 4 "const2367_operand")]
+      (match_operand:SI 4 "const2367_operand" "n")]
      UNSPEC_SCATTER_PREFETCH)]
   "TARGET_AVX512PF"
 {
@@ -23643,9 +23643,9 @@
 	[(unspec:P
 	   [(match_operand:P 2 "vsib_address_operand" "Tv")
 	    (match_operand:VI4_256_8_512 1 "register_operand" "v")
-	    (match_operand:SI 3 "const1248_operand")]
+	    (match_operand:SI 3 "const1248_operand" "n")]
 	   UNSPEC_VSIBADDR)])
-      (match_operand:SI 4 "const2367_operand")]
+      (match_operand:SI 4 "const2367_operand" "n")]
      UNSPEC_SCATTER_PREFETCH)]
   "TARGET_AVX512PF"
 {
@@ -24183,7 +24183,7 @@
   [(set (match_operand:VI_128 0 "register_operand" "=x")
 	(rotate:VI_128
 	 (match_operand:VI_128 1 "nonimmediate_operand" "xm")
-	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand")))]
+	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand" "n")))]
   "TARGET_XOP"
   "vprot<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
   [(set_attr "type" "sseishft")
@@ -24194,7 +24194,7 @@
   [(set (match_operand:VI_128 0 "register_operand" "=x")
 	(rotatert:VI_128
 	 (match_operand:VI_128 1 "nonimmediate_operand" "xm")
-	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand")))]
+	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand" "n")))]
   "TARGET_XOP"
 {
   operands[3]
@@ -24800,7 +24800,7 @@
 	(unspec:VI_128
 	  [(match_operand:VI_128 1 "register_operand" "x")
 	   (match_operand:VI_128 2 "nonimmediate_operand" "xm")
-	   (match_operand:SI 3 "const_int_operand")]
+	   (match_operand:SI 3 "const_int_operand" "n")]
 	  UNSPEC_XOP_TRUEFALSE))]
   "TARGET_XOP"
 {
@@ -24820,7 +24820,7 @@
 	  [(match_operand:VF_128_256 1 "register_operand" "x,x")
 	   (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m")
 	   (match_operand:<sseintvecmode> 3 "nonimmediate_operand" "xm,x")
-	   (match_operand:SI 4 "const_0_to_3_operand")]
+	   (match_operand:SI 4 "const_0_to_3_operand" "n,n")]
 	  UNSPEC_VPERMIL2))]
   "TARGET_XOP"
   "vpermil2<ssemodesuffix>\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}"
@@ -24908,7 +24908,7 @@
 (define_insn "aeskeygenassist"
   [(set (match_operand:V2DI 0 "register_operand" "=x")
 	(unspec:V2DI [(match_operand:V2DI 1 "vector_operand" "xBm")
-		      (match_operand:SI 2 "const_0_to_255_operand")]
+		      (match_operand:SI 2 "const_0_to_255_operand" "n")]
 		     UNSPEC_AESKEYGENASSIST))]
   "TARGET_AES"
   "%vaeskeygenassist\t{%2, %1, %0|%0, %1, %2}"
@@ -24922,7 +24922,7 @@
   [(set (match_operand:V2DI 0 "register_operand" "=x,x")
 	(unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x")
 		      (match_operand:V2DI 2 "vector_operand" "xBm,xm")
-		      (match_operand:SI 3 "const_0_to_255_operand")]
+		      (match_operand:SI 3 "const_0_to_255_operand" "n,n")]
 		     UNSPEC_PCLMUL))]
   "TARGET_PCLMUL"
   "@
@@ -25374,7 +25374,7 @@
 	(unspec:V4DI
 	  [(match_operand:V4DI 1 "register_operand" "x")
 	   (match_operand:V4DI 2 "nonimmediate_operand" "xm")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
 	  UNSPEC_VPERMTI))]
   "TARGET_AVX2"
   "vperm2i128\t{%3, %2, %1, %0|%0, %1, %2, %3}"
@@ -25918,7 +25918,7 @@
 	(unspec:AVX256MODE2P
 	  [(match_operand:AVX256MODE2P 1 "register_operand" "x")
 	   (match_operand:AVX256MODE2P 2 "nonimmediate_operand" "xm")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
 	  UNSPEC_VPERMIL2F128))]
   "TARGET_AVX"
   "vperm2<i128>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
@@ -25958,7 +25958,7 @@
       (vec_select:V_128
 	(match_operand:V_128 1 "register_operand" "0,Yw")
 	(match_parallel 2 "palignr_operand"
-	  [(match_operand 3 "const_int_operand")])))]
+	  [(match_operand 3 "const_int_operand" "n,n")])))]
   "TARGET_SSSE3"
 {
   operands[2] = (GEN_INT (INTVAL (operands[3])
@@ -26628,7 +26628,7 @@
   [(set (match_operand:V8HI 0 "register_operand" "=v")
 	(vec_concat:V8HI
 	  (unspec:V4HI [(match_operand:V4SF 1 "register_operand" "v")
-			(match_operand:SI 2 "const_0_to_255_operand")]
+			(match_operand:SI 2 "const_0_to_255_operand" "N")]
 		       UNSPEC_VCVTPS2PH)
 	  (match_operand:V4HI 3 "const0_operand")))]
   "(TARGET_F16C || TARGET_AVX512VL) && <mask_avx512vl_condition>"
@@ -26640,7 +26640,7 @@
 (define_insn "*vcvtps2ph_store<merge_mask_name>"
   [(set (match_operand:V4HI 0 "memory_operand" "=m")
 	(unspec:V4HI [(match_operand:V4SF 1 "register_operand" "v")
-		      (match_operand:SI 2 "const_0_to_255_operand")]
+		      (match_operand:SI 2 "const_0_to_255_operand" "N")]
 		     UNSPEC_VCVTPS2PH))]
   "TARGET_F16C || TARGET_AVX512VL"
   "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
@@ -26651,7 +26651,7 @@
 (define_insn "vcvtps2ph256<mask_name>"
   [(set (match_operand:V8HI 0 "register_operand" "=v")
 	(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "v")
-		      (match_operand:SI 2 "const_0_to_255_operand")]
+		      (match_operand:SI 2 "const_0_to_255_operand" "N")]
 		     UNSPEC_VCVTPS2PH))]
   "TARGET_F16C || TARGET_AVX512VL"
   "vcvtps2ph\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
@@ -26663,7 +26663,7 @@
 (define_insn "*vcvtps2ph256<merge_mask_name>"
   [(set (match_operand:V8HI 0 "memory_operand" "=m")
 	(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "v")
-		      (match_operand:SI 2 "const_0_to_255_operand")]
+		      (match_operand:SI 2 "const_0_to_255_operand" "N")]
 		     UNSPEC_VCVTPS2PH))]
   "TARGET_F16C || TARGET_AVX512VL"
   "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
@@ -26676,7 +26676,7 @@
   [(set (match_operand:V16HI 0 "register_operand" "=v")
 	(unspec:V16HI
 	  [(match_operand:V16SF 1 "register_operand" "v")
-	   (match_operand:SI 2 "const_0_to_255_operand")]
+	   (match_operand:SI 2 "const_0_to_255_operand" "N")]
 	  UNSPEC_VCVTPS2PH))]
   "TARGET_AVX512F"
   "vcvtps2ph\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
@@ -26688,7 +26688,7 @@
   [(set (match_operand:V16HI 0 "memory_operand" "=m")
 	(unspec:V16HI
 	  [(match_operand:V16SF 1 "register_operand" "v")
-	   (match_operand:SI 2 "const_0_to_255_operand")]
+	   (match_operand:SI 2 "const_0_to_255_operand" "N")]
 	  UNSPEC_VCVTPS2PH))]
   "TARGET_AVX512F"
   "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
@@ -26746,7 +26746,7 @@
 	     [(unspec:P
 		[(match_operand:P 3 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXSI> 4 "register_operand" "x")
-		 (match_operand:SI 6 "const1248_operand")]
+		 (match_operand:SI 6 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])
 	   (mem:BLK (scratch))
 	   (match_operand:VEC_GATHER_MODE 5 "register_operand" "1")]
@@ -26766,7 +26766,7 @@
 	     [(unspec:P
 		[(match_operand:P 2 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXSI> 3 "register_operand" "x")
-		 (match_operand:SI 5 "const1248_operand")]
+		 (match_operand:SI 5 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])
 	   (mem:BLK (scratch))
 	   (match_operand:VEC_GATHER_MODE 4 "register_operand" "1")]
@@ -26807,7 +26807,7 @@
 	     [(unspec:P
 		[(match_operand:P 3 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXDI> 4 "register_operand" "x")
-		 (match_operand:SI 6 "const1248_operand")]
+		 (match_operand:SI 6 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])
 	   (mem:BLK (scratch))
 	   (match_operand:<VEC_GATHER_SRCDI> 5 "register_operand" "1")]
@@ -26827,7 +26827,7 @@
 	     [(unspec:P
 		[(match_operand:P 2 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "x")
-		 (match_operand:SI 5 "const1248_operand")]
+		 (match_operand:SI 5 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])
 	   (mem:BLK (scratch))
 	   (match_operand:<VEC_GATHER_SRCDI> 4 "register_operand" "1")]
@@ -26852,7 +26852,7 @@
 	       [(unspec:P
 		  [(match_operand:P 3 "vsib_address_operand" "Tv")
 		   (match_operand:<VEC_GATHER_IDXDI> 4 "register_operand" "x")
-		   (match_operand:SI 6 "const1248_operand")]
+		   (match_operand:SI 6 "const1248_operand" "n")]
 		  UNSPEC_VSIBADDR)])
 	     (mem:BLK (scratch))
 	     (match_operand:<VEC_GATHER_SRCDI> 5 "register_operand" "1")]
@@ -26875,7 +26875,7 @@
 	       [(unspec:P
 		  [(match_operand:P 2 "vsib_address_operand" "Tv")
 		   (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "x")
-		   (match_operand:SI 5 "const1248_operand")]
+		   (match_operand:SI 5 "const1248_operand" "n")]
 		  UNSPEC_VSIBADDR)])
 	     (mem:BLK (scratch))
 	     (match_operand:<VEC_GATHER_SRCDI> 4 "register_operand" "1")]
@@ -26917,7 +26917,7 @@
 	     [(unspec:P
 		[(match_operand:P 4 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXSI> 3 "register_operand" "v")
-		 (match_operand:SI 5 "const1248_operand")]
+		 (match_operand:SI 5 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])]
 	  UNSPEC_GATHER))
    (clobber (match_scratch:<avx512fmaskmode> 2 "=&Yk"))]
@@ -26938,7 +26938,7 @@
 	     [(unspec:P
 		[(match_operand:P 3 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
-		 (match_operand:SI 4 "const1248_operand")]
+		 (match_operand:SI 4 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])]
 	  UNSPEC_GATHER))
    (clobber (match_scratch:<avx512fmaskmode> 1 "=&Yk"))]
@@ -26979,7 +26979,7 @@
 	     [(unspec:P
 		[(match_operand:P 4 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "v")
-		 (match_operand:SI 5 "const1248_operand")]
+		 (match_operand:SI 5 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])]
 	  UNSPEC_GATHER))
    (clobber (match_scratch:QI 2 "=&Yk"))]
@@ -27000,7 +27000,7 @@
 	     [(unspec:P
 		[(match_operand:P 3 "vsib_address_operand" "Tv")
 		 (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
-		 (match_operand:SI 4 "const1248_operand")]
+		 (match_operand:SI 4 "const1248_operand" "n")]
 		UNSPEC_VSIBADDR)])]
 	  UNSPEC_GATHER))
    (clobber (match_scratch:QI 1 "=&Yk"))]
@@ -27045,7 +27045,7 @@
 	  [(unspec:P
 	     [(match_operand:P 0 "vsib_address_operand" "Tv")
 	      (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
-	      (match_operand:SI 4 "const1248_operand")
+	      (match_operand:SI 4 "const1248_operand" "n")
 	      (match_operand:<avx512fmaskmode> 6 "register_operand" "1")]
 	     UNSPEC_VSIBADDR)])
 	(unspec:VI48F
@@ -27085,7 +27085,7 @@
 	  [(unspec:P
 	     [(match_operand:P 0 "vsib_address_operand" "Tv")
 	      (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
-	      (match_operand:SI 4 "const1248_operand")
+	      (match_operand:SI 4 "const1248_operand" "n")
 	      (match_operand:QI 6 "register_operand" "1")]
 	     UNSPEC_VSIBADDR)])
 	(unspec:VI48F
@@ -27306,7 +27306,7 @@
   [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k")
           (unspec:<avx512fmaskmode>
             [(match_operand:VFH_AVX512VL 1 "vector_operand" "vm")
-             (match_operand 2 "const_0_to_255_operand")]
+             (match_operand 2 "const_0_to_255_operand" "n")]
              UNSPEC_FPCLASS))]
    "TARGET_AVX512DQ || VALID_AVX512FP16_REG_MODE(<MODE>mode)"
    "vfpclass<ssemodesuffix><vecmemsuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2}";
@@ -27320,7 +27320,7 @@
 	(and:<avx512fmaskmode>
 	  (unspec:<avx512fmaskmode>
 	    [(match_operand:VFH_128 1 "nonimmediate_operand" "vm")
-             (match_operand 2 "const_0_to_255_operand")]
+             (match_operand 2 "const_0_to_255_operand" "n")]
 	    UNSPEC_FPCLASS)
 	  (const_int 1)))]
    "TARGET_AVX512DQ || VALID_AVX512FP16_REG_MODE(<MODE>mode)"
@@ -27444,7 +27444,7 @@
 	(unspec:V4SI
 	  [(match_operand:V4SI 1 "register_operand" "0")
 	   (match_operand:V4SI 2 "vector_operand" "xBm")
-	   (match_operand:SI 3 "const_0_to_3_operand")]
+	   (match_operand:SI 3 "const_0_to_3_operand" "n")]
 	  UNSPEC_SHA1RNDS4))]
   "TARGET_SHA"
   "sha1rnds4\t{%3, %2, %0|%0, %2, %3}"
@@ -27671,7 +27671,7 @@
 	    [(match_operand:V16SF 1 "register_operand" "0")
 	     (match_operand:V64SF 2 "register_operand" "v")
 	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD)
-	  (match_operand:V16SF 4 "const0_operand")
+	  (match_operand:V16SF 4 "const0_operand" "C")
 	  (match_operand:HI 5 "register_operand" "Yk")))]
   "TARGET_AVX5124FMAPS"
   "v4fmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
@@ -27712,7 +27712,7 @@
 	    [(match_operand:V4SF 1 "register_operand" "0")
 	     (match_operand:V64SF 2 "register_operand" "v")
 	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD)
-	  (match_operand:V4SF 4 "const0_operand")
+	  (match_operand:V4SF 4 "const0_operand" "C")
 	  (match_operand:QI 5 "register_operand" "Yk")))]
   "TARGET_AVX5124FMAPS"
   "v4fmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}"
@@ -27753,7 +27753,7 @@
 	    [(match_operand:V16SF 1 "register_operand" "0")
 	     (match_operand:V64SF 2 "register_operand" "v")
 	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD)
-	  (match_operand:V16SF 4 "const0_operand")
+	  (match_operand:V16SF 4 "const0_operand" "C")
 	  (match_operand:HI 5 "register_operand" "Yk")))]
   "TARGET_AVX5124FMAPS"
   "v4fnmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
@@ -27794,7 +27794,7 @@
 	    [(match_operand:V4SF 1 "register_operand" "0")
 	     (match_operand:V64SF 2 "register_operand" "v")
 	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD)
-	  (match_operand:V4SF 4 "const0_operand")
+	  (match_operand:V4SF 4 "const0_operand" "C")
 	  (match_operand:QI 5 "register_operand" "Yk")))]
   "TARGET_AVX5124FMAPS"
   "v4fnmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}"
@@ -27835,7 +27835,7 @@
 	    [(match_operand:V16SI 1 "register_operand" "0")
 	     (match_operand:V64SI 2 "register_operand" "v")
 	     (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSD)
-	  (match_operand:V16SI 4 "const0_operand")
+	  (match_operand:V16SI 4 "const0_operand" "C")
 	  (match_operand:HI 5 "register_operand" "Yk")))]
   "TARGET_AVX5124VNNIW"
   "vp4dpwssd\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
@@ -27876,7 +27876,7 @@
 	    [(match_operand:V16SI 1 "register_operand" "0")
 	     (match_operand:V64SI 2 "register_operand" "v")
 	     (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSDS)
-	  (match_operand:V16SI 4 "const0_operand")
+	  (match_operand:V16SI 4 "const0_operand" "C")
 	  (match_operand:HI 5 "register_operand" "Yk")))]
   "TARGET_AVX5124VNNIW"
   "vp4dpwssds\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
@@ -27952,7 +27952,7 @@
 	(unspec:VI1_AVX512F
 	  [(match_operand:VI1_AVX512F 1 "register_operand" "0,v")
 	   (match_operand:VI1_AVX512F 2 "vector_operand" "xBm,vm")
-	   (match_operand 3 "const_0_to_255_operand")]
+	   (match_operand 3 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_GF2P8AFFINEINV))]
   "TARGET_GFNI"
   "@
@@ -27969,7 +27969,7 @@
 	(unspec:VI1_AVX512F
 	  [(match_operand:VI1_AVX512F 1 "register_operand" "0,v")
 	   (match_operand:VI1_AVX512F 2 "vector_operand" "xBm,vm")
-	   (match_operand 3 "const_0_to_255_operand")]
+	   (match_operand 3 "const_0_to_255_operand" "n,n")]
 	  UNSPEC_GF2P8AFFINE))]
   "TARGET_GFNI"
   "@
@@ -28002,7 +28002,7 @@
 	(unspec:VI248_AVX512VL
 	  [(match_operand:VI248_AVX512VL 1 "register_operand" "v")
 	   (match_operand:VI248_AVX512VL 2 "nonimmediate_operand" "vm")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
 	  UNSPEC_VPSHRD))]
   "TARGET_AVX512VBMI2"
   "vpshrd<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
@@ -28013,7 +28013,7 @@
 	(unspec:VI248_AVX512VL
 	  [(match_operand:VI248_AVX512VL 1 "register_operand" "v")
 	   (match_operand:VI248_AVX512VL 2 "nonimmediate_operand" "vm")
-	   (match_operand:SI 3 "const_0_to_255_operand")]
+	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
 	  UNSPEC_VPSHLD))]
   "TARGET_AVX512VBMI2"
   "vpshld<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
@@ -28069,7 +28069,7 @@
 	     (match_operand:VI248_AVX512VL 2 "register_operand" "v")
 	     (match_operand:VI248_AVX512VL 3 "nonimmediate_operand" "vm")]
 	    UNSPEC_VPSHRDV)
-	  (match_operand:VI248_AVX512VL 4 "const0_operand")
+	  (match_operand:VI248_AVX512VL 4 "const0_operand" "C")
 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512VBMI2"
   "vpshrdv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
@@ -28126,7 +28126,7 @@
 	     (match_operand:VI248_AVX512VL 2 "register_operand" "v")
 	     (match_operand:VI248_AVX512VL 3 "nonimmediate_operand" "vm")]
 	    UNSPEC_VPSHLDV)
-	  (match_operand:VI248_AVX512VL 4 "const0_operand")
+	  (match_operand:VI248_AVX512VL 4 "const0_operand" "C")
 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512VBMI2"
   "vpshldv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
@@ -28222,7 +28222,7 @@
 	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
 	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
 	    ] UNSPEC_VPMADDUBSWACCD)
-	  (match_operand:VI4_AVX512VL 4 "const0_operand")
+	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512VNNI"
   "vpdpbusd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
@@ -28290,7 +28290,7 @@
 	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
 	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
 	    UNSPEC_VPMADDUBSWACCSSD)
-	  (match_operand:VI4_AVX512VL 4 "const0_operand")
+	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512VNNI"
   "vpdpbusds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
@@ -28358,7 +28358,7 @@
 	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
 	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
 	    UNSPEC_VPMADDWDACCD)
-	  (match_operand:VI4_AVX512VL 4 "const0_operand")
+	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512VNNI"
   "vpdpwssd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
@@ -28426,7 +28426,7 @@
 	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
 	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
 	    UNSPEC_VPMADDWDACCSSD)
-	  (match_operand:VI4_AVX512VL 4 "const0_operand")
+	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
   "TARGET_AVX512VNNI"
   "vpdpwssds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
@@ -28476,7 +28476,7 @@
   [(set (match_operand:VI8_FVL 0 "register_operand" "=v")
 	(unspec:VI8_FVL [(match_operand:VI8_FVL 1 "register_operand" "v")
 			 (match_operand:VI8_FVL 2 "vector_operand" "vm")
-			 (match_operand:SI 3 "const_0_to_255_operand")]
+			 (match_operand:SI 3 "const_0_to_255_operand" "n")]
 			UNSPEC_VPCLMULQDQ))]
   "TARGET_VPCLMULQDQ"
   "vpclmulqdq\t{%3, %2, %1, %0|%0, %1, %2, %3}"
diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md
index 0b7588237fe..bb86f82905f 100644
--- a/gcc/config/i386/subst.md
+++ b/gcc/config/i386/subst.md
@@ -137,7 +137,7 @@
  [(set (match_dup 0)
        (vec_merge:SUBST_V
 	 (match_dup 1)
-	 (match_operand:SUBST_V 2 "const0_operand")
+	 (match_operand:SUBST_V 2 "const0_operand" "C")
 	 (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))
 ])
 
@@ -155,7 +155,7 @@
 	(vec_merge:SUBST_V
 	  (vec_merge:SUBST_V
 	    (match_dup 1)
-	    (match_operand:SUBST_V 3 "const0_operand")
+	    (match_operand:SUBST_V 3 "const0_operand" "C")
 	    (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
 	  (match_dup 2)
 	  (const_int 1)))])
@@ -171,7 +171,7 @@
  [(set (match_dup 0)
        (vec_merge:SUBST_CV
 	 (match_dup 1)
-	 (match_operand:SUBST_CV 2 "const0_operand")
+	 (match_operand:SUBST_CV 2 "const0_operand" "C")
 	 (unspec:<avx512fmaskmode>
 	   [(match_operand:<avx512fmaskcmode> 3 "register_operand" "Yk")]
 	   UNSPEC_COMPLEX_MASK)))
@@ -372,7 +372,7 @@
 	(vec_merge:SUBST_CV
 	  (vec_merge:SUBST_CV
 	    (match_dup 1)
-	    (match_operand:SUBST_CV 3 "const0_operand")
+	    (match_operand:SUBST_CV 3 "const0_operand" "C")
 	    (unspec:<avx512fmaskmode>
 	      [(match_operand:<avx512fmaskcmode> 4 "register_operand" "Yk")]
 	      UNSPEC_COMPLEX_MASK))
@@ -478,5 +478,5 @@
   [(set (match_dup 0)
         (vec_merge:SUBST_V
 	  (match_dup 1)
-	  (match_operand:SUBST_V 2 "const0_operand")
+	  (match_operand:SUBST_V 2 "const0_operand" "C")
 	  (match_operand:<avx512fmaskhalfmode> 3 "register_operand" "Yk")))])
diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md
index 92634d538cb..820e9ca911a 100644
--- a/gcc/config/i386/sync.md
+++ b/gcc/config/i386/sync.md
@@ -745,10 +745,10 @@
 	    [(match_operand:SWI 0 "memory_operand" "+m")
 	     (match_operand:SI 3 "const_int_operand")]		;; model
 	    UNSPECV_XCHG)
-	  (match_operand:SWI 2 "const_int_operand")))
+	  (match_operand:SWI 2 "const_int_operand" "i")))
    (set (match_dup 0)
 	(plus:SWI (match_dup 0)
-		  (match_operand:SWI 1 "const_int_operand")))]
+		  (match_operand:SWI 1 "const_int_operand" "i")))]
   "(unsigned HOST_WIDE_INT) INTVAL (operands[1])
    == -(unsigned HOST_WIDE_INT) INTVAL (operands[2])"
 {
diff --git a/gcc/testsuite/gcc.target/i386/pr105624.c b/gcc/testsuite/gcc.target/i386/pr105624.c
new file mode 100644
index 00000000000..8ca6c439a85
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr105624.c
@@ -0,0 +1,19 @@
+/* PR target/105624 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -march=k8" } */
+
+union U {
+  double d;
+  unsigned long long int i;
+};
+
+double
+fabs (double x)
+{
+  union U u;
+
+  u.d = x;
+  u.i &= ~0ULL >> 1;
+
+  return u.d;
+}


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-05-17 15:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-17 15:38 [gcc r13-563] i386: Fix ICE in final_scan_insn_1 [PR105624] Uros Bizjak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).