We can unify eqne and other comparison operations.

Tested on RV32 and RV64.

gcc/ChangeLog:

        * config/riscv/predicates.md (comparison_except_eqge_operator): Only
      exclue ge
        (comparison_except_ge_operator): Ditto
        * config/riscv/riscv-string.cc (expand_rawmemchr): Use cmp pattern
        (expand_strcmp): Ditto
        * config/riscv/riscv-vector-builtins-bases.cc: Remvoe eqne cond
        * config/riscv/vector.md (@pred_eqne<mode>_scalar): Remove eqne
      patterns
        (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto
        (*pred_eqne<mode>_scalar): Ditto
        (*pred_eqne<mode>_scalar_narrow): Ditto
        (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto
        (*pred_eqne<mode>_extended_scalar): Ditto
        (*pred_eqne<mode>_extended_scalar_narrow): Ditto

Signed-off-by: demin.han <demin....@starfivetech.com>
---
 gcc/config/riscv/predicates.md                |   4 +-
 gcc/config/riscv/riscv-string.cc              |   4 +-
 .../riscv/riscv-vector-builtins-bases.cc      |   3 -
 gcc/config/riscv/vector.md                    | 279 +-----------------
 4 files changed, 15 insertions(+), 275 deletions(-)

diff --git a/gcc/config/riscv/predicates.md b/gcc/config/riscv/predicates.md
index 6c87a7bd1f4..7f144551bb2 100644
--- a/gcc/config/riscv/predicates.md
+++ b/gcc/config/riscv/predicates.md
@@ -548,8 +548,8 @@ (define_predicate "ltge_operator"
 (define_predicate "comparison_except_ltge_operator"
   (match_code "eq,ne,le,leu,gt,gtu"))
 
-(define_predicate "comparison_except_eqge_operator"
-  (match_code "le,leu,gt,gtu,lt,ltu"))
+(define_predicate "comparison_except_ge_operator"
+  (match_code "eq,ne,le,leu,gt,gtu,lt,ltu"))
 
 (define_predicate "ge_operator"
   (match_code "ge,geu"))
diff --git a/gcc/config/riscv/riscv-string.cc b/gcc/config/riscv/riscv-string.cc
index b09b51d7526..da33bd74ac6 100644
--- a/gcc/config/riscv/riscv-string.cc
+++ b/gcc/config/riscv/riscv-string.cc
@@ -1074,7 +1074,7 @@ expand_rawmemchr (machine_mode mode, rtx dst, rtx 
haystack, rtx needle,
   /* Compare needle with haystack and store in a mask.  */
   rtx eq = gen_rtx_EQ (mask_mode, gen_const_vec_duplicate (vmode, needle), 
vec);
   rtx vmsops[] = {mask, eq, vec, needle};
-  emit_nonvlmax_insn (code_for_pred_eqne_scalar (vmode),
+  emit_nonvlmax_insn (code_for_pred_cmp_scalar (vmode),
                      riscv_vector::COMPARE_OP, vmsops, cnt);
 
   /* Find the first bit in the mask.  */
@@ -1200,7 +1200,7 @@ expand_strcmp (rtx result, rtx src1, rtx src2, rtx nbytes,
     = gen_rtx_EQ (mask_mode, gen_const_vec_duplicate (vmode, CONST0_RTX 
(mode)),
                  vec1);
   rtx vmsops1[] = {mask0, eq0, vec1, CONST0_RTX (mode)};
-  emit_nonvlmax_insn (code_for_pred_eqne_scalar (vmode),
+  emit_nonvlmax_insn (code_for_pred_cmp_scalar (vmode),
                      riscv_vector::COMPARE_OP, vmsops1, cnt);
 
   /* Look for vec1 != vec2 (includes vec2[i] == 0).  */
diff --git a/gcc/config/riscv/riscv-vector-builtins-bases.cc 
b/gcc/config/riscv/riscv-vector-builtins-bases.cc
index d414721ede8..0cef0b91758 100644
--- a/gcc/config/riscv/riscv-vector-builtins-bases.cc
+++ b/gcc/config/riscv/riscv-vector-builtins-bases.cc
@@ -718,9 +718,6 @@ public:
          if (CODE == GE || CODE == GEU)
            return e.use_compare_insn (CODE, code_for_pred_ge_scalar (
                                               e.vector_mode ()));
-         else if (CODE == EQ || CODE == NE)
-           return e.use_compare_insn (CODE, code_for_pred_eqne_scalar (
-                                              e.vector_mode ()));
          else
            return e.use_compare_insn (CODE, code_for_pred_cmp_scalar (
                                               e.vector_mode ()));
diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md
index 9210d7c28ad..544ca4af938 100644
--- a/gcc/config/riscv/vector.md
+++ b/gcc/config/riscv/vector.md
@@ -4671,7 +4671,7 @@ (define_expand "@pred_cmp<mode>_scalar"
             (match_operand 8 "const_int_operand")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_QHS 4 "register_operand")
              (vec_duplicate:V_VLSI_QHS
                (match_operand:<VEL> 5 "register_operand"))])
@@ -4689,7 +4689,7 @@ (define_insn "*pred_cmp<mode>_scalar_merge_tie_mask"
             (match_operand 7 "const_int_operand"              "  i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 2 "comparison_except_eqge_operator"
+         (match_operator:<VM> 2 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_QHS 3 "register_operand"       " vr")
              (vec_duplicate:V_VLSI_QHS
                (match_operand:<VEL> 4 "register_operand"      "  r"))])
@@ -4714,7 +4714,7 @@ (define_insn "*pred_cmp<mode>_scalar"
             (match_operand 8 "const_int_operand"             "    i,    i,    
i,    i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_QHS 4 "register_operand"      "   vr,   vr, 
  vr,   vr")
              (vec_duplicate:V_VLSI_QHS
                (match_operand:<VEL> 5 "register_operand"     "    r,    r,    
r,    r"))])
@@ -4736,7 +4736,7 @@ (define_insn "*pred_cmp<mode>_scalar_narrow"
             (match_operand 8 "const_int_operand"          "    i,    i,    i,  
  i,    i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_QHS 4 "register_operand"   "   vr,    0,    
0,   vr,   vr")
              (vec_duplicate:V_VLSI_QHS
                (match_operand:<VEL> 5 "register_operand"  "    r,    r,    r,  
  r,    r"))])
@@ -4747,92 +4747,6 @@ (define_insn "*pred_cmp<mode>_scalar_narrow"
    (set_attr "mode" "<MODE>")
    (set_attr "spec_restriction" "none,thv,thv,none,none")])
 
-(define_expand "@pred_eqne<mode>_scalar"
-  [(set (match_operand:<VM> 0 "register_operand")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand")
-            (match_operand 6 "vector_length_operand")
-            (match_operand 7 "const_int_operand")
-            (match_operand 8 "const_int_operand")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_QHS
-               (match_operand:<VEL> 5 "register_operand"))
-             (match_operand:V_VLSI_QHS 4 "register_operand")])
-         (match_operand:<VM> 2 "vector_merge_operand")))]
-  "TARGET_VECTOR"
-  {})
-
-(define_insn "*pred_eqne<mode>_scalar_merge_tie_mask"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vm")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "register_operand"           "  0")
-            (match_operand 5 "vector_length_operand"           " rK")
-            (match_operand 6 "const_int_operand"               "  i")
-            (match_operand 7 "const_int_operand"               "  i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 2 "equality_operator"
-            [(vec_duplicate:V_VLSI_QHS
-               (match_operand:<VEL> 4 "register_operand"       "  r"))
-             (match_operand:V_VLSI_QHS 3 "register_operand"        " vr")])
-         (match_dup 1)))]
-  "TARGET_VECTOR"
-  "vms%B2.vx\t%0,%3,%4,v0.t"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "merge_op_idx" "1")
-   (set_attr "vl_op_idx" "5")
-   (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[6])"))
-   (set (attr "avl_type_idx") (const_int 7))])
-
-;; We don't use early-clobber for LMUL <= 1 to get better codegen.
-(define_insn "*pred_eqne<mode>_scalar"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vr,   vr,   
&vr,   &vr")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand"      
"vmWc1,vmWc1,vmWc1,vmWc1")
-            (match_operand 6 "vector_length_operand"         "   rK,   rK,   
rK,   rK")
-            (match_operand 7 "const_int_operand"             "    i,    i,    
i,    i")
-            (match_operand 8 "const_int_operand"             "    i,    i,    
i,    i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_QHS
-               (match_operand:<VEL> 5 "register_operand"     "    r,    r,    
r,    r"))
-             (match_operand:V_VLSI_QHS 4 "register_operand"      "   vr,   vr, 
  vr,   vr")])
-         (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0,    
vu,    0")))]
-  "TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
-  "vms%B3.vx\t%0,%4,%5%p1"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
-
-;; We use early-clobber for source LMUL > dest LMUL.
-(define_insn "*pred_eqne<mode>_scalar_narrow"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vm,   vr,   
vr,  &vr,  &vr")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand"      "    
0,vmWc1,vmWc1,vmWc1,vmWc1")
-            (match_operand 6 "vector_length_operand"         "   rK,   rK,   
rK,   rK,   rK")
-            (match_operand 7 "const_int_operand"             "    i,    i,    
i,    i,    i")
-            (match_operand 8 "const_int_operand"             "    i,    i,    
i,    i,    i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_QHS
-               (match_operand:<VEL> 5 "register_operand"     "    r,    r,    
r,    r,    r"))
-             (match_operand:V_VLSI_QHS 4 "register_operand"      "   vr,    0, 
   0,   vr,   vr")])
-         (match_operand:<VM> 2 "vector_merge_operand"        "   vu,   vu,    
0,   vu,    0")))]
-  "TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
-  "vms%B3.vx\t%0,%4,%5%p1"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "spec_restriction" "none,thv,thv,none,none")])
-
 ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
 ;; we need to deal with SEW = 64 in RV32 system.
 (define_expand "@pred_cmp<mode>_scalar"
@@ -4845,7 +4759,7 @@ (define_expand "@pred_cmp<mode>_scalar"
             (match_operand 8 "const_int_operand")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 4 "register_operand")
              (vec_duplicate:V_VLSI_D
                (match_operand:<VEL> 5 "reg_or_int_operand"))])
@@ -4875,39 +4789,6 @@ (define_expand "@pred_cmp<mode>_scalar"
     DONE;
 })
 
-(define_expand "@pred_eqne<mode>_scalar"
-  [(set (match_operand:<VM> 0 "register_operand")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand")
-            (match_operand 6 "vector_length_operand")
-            (match_operand 7 "const_int_operand")
-            (match_operand 8 "const_int_operand")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (match_operand:<VEL> 5 "reg_or_int_operand"))
-             (match_operand:V_VLSI_D 4 "register_operand")])
-         (match_operand:<VM> 2 "vector_merge_operand")))]
-  "TARGET_VECTOR"
-{
-  enum rtx_code code = GET_CODE (operands[3]);
-  if (riscv_vector::sew64_scalar_helper (
-       operands,
-       /* scalar op */&operands[5],
-       /* vl */operands[6],
-       <MODE>mode,
-       riscv_vector::has_vi_variant_p (code, operands[5]),
-       [] (rtx *operands, rtx boardcast_scalar) {
-         emit_insn (gen_pred_cmp<mode> (operands[0], operands[1],
-               operands[2], operands[3], operands[4], boardcast_scalar,
-               operands[6], operands[7], operands[8]));
-        },
-       (riscv_vector::avl_type) INTVAL (operands[8])))
-    DONE;
-})
-
 (define_insn "*pred_cmp<mode>_scalar_merge_tie_mask"
   [(set (match_operand:<VM> 0 "register_operand"                "=vm")
        (if_then_else:<VM>
@@ -4918,7 +4799,7 @@ (define_insn "*pred_cmp<mode>_scalar_merge_tie_mask"
             (match_operand 7 "const_int_operand"               "  i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 2 "comparison_except_eqge_operator"
+         (match_operator:<VM> 2 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 3 "register_operand"          " vr")
              (vec_duplicate:V_VLSI_D
                (match_operand:<VEL> 4 "register_operand"       "  r"))])
@@ -4932,30 +4813,6 @@ (define_insn "*pred_cmp<mode>_scalar_merge_tie_mask"
    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[6])"))
    (set (attr "avl_type_idx") (const_int 7))])
 
-(define_insn "*pred_eqne<mode>_scalar_merge_tie_mask"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vm")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "register_operand"           "  0")
-            (match_operand 5 "vector_length_operand"           " rK")
-            (match_operand 6 "const_int_operand"               "  i")
-            (match_operand 7 "const_int_operand"               "  i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 2 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (match_operand:<VEL> 4 "register_operand"       "  r"))
-             (match_operand:V_VLSI_D 3 "register_operand"          " vr")])
-         (match_dup 1)))]
-  "TARGET_VECTOR"
-  "vms%B2.vx\t%0,%3,%4,v0.t"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "merge_op_idx" "1")
-   (set_attr "vl_op_idx" "5")
-   (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[6])"))
-   (set (attr "avl_type_idx") (const_int 7))])
-
 ;; We don't use early-clobber for LMUL <= 1 to get better codegen.
 (define_insn "*pred_cmp<mode>_scalar"
   [(set (match_operand:<VM> 0 "register_operand"                "=vr,   vr,   
&vr,   &vr")
@@ -4967,7 +4824,7 @@ (define_insn "*pred_cmp<mode>_scalar"
             (match_operand 8 "const_int_operand"             "    i,    i,    
i,    i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 4 "register_operand"        "   vr,   vr, 
  vr,   vr")
              (vec_duplicate:V_VLSI_D
                (match_operand:<VEL> 5 "register_operand"     "    r,    r,    
r,    r"))])
@@ -4989,7 +4846,7 @@ (define_insn "*pred_cmp<mode>_scalar_narrow"
             (match_operand 8 "const_int_operand"          "    i,    i,    i,  
  i,    i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 4 "register_operand"     "   vr,    0,    
0,   vr,   vr")
              (vec_duplicate:V_VLSI_D
                (match_operand:<VEL> 5 "register_operand"  "    r,    r,    r,  
  r,    r"))])
@@ -5000,50 +4857,6 @@ (define_insn "*pred_cmp<mode>_scalar_narrow"
    (set_attr "mode" "<MODE>")
    (set_attr "spec_restriction" "none,thv,thv,none,none")])
 
-;; We don't use early-clobber for LMUL <= 1 to get better codegen.
-(define_insn "*pred_eqne<mode>_scalar"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vr,   vr,   
&vr,   &vr")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand"      
"vmWc1,vmWc1,vmWc1,vmWc1")
-            (match_operand 6 "vector_length_operand"         "   rK,   rK,   
rK,   rK")
-            (match_operand 7 "const_int_operand"             "    i,    i,    
i,    i")
-            (match_operand 8 "const_int_operand"             "    i,    i,    
i,    i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (match_operand:<VEL> 5 "register_operand"     "    r,    r,    
r,    r"))
-             (match_operand:V_VLSI_D 4 "register_operand"        "   vr,   vr, 
  vr,   vr")])
-         (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0,    
vu,    0")))]
-  "TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode)"
-  "vms%B3.vx\t%0,%4,%5%p1"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
-
-;; We use early-clobber for source LMUL > dest LMUL.
-(define_insn "*pred_eqne<mode>_scalar_narrow"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vm,   vr,   
vr,  &vr,  &vr")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand"      "    
0,vmWc1,vmWc1,vmWc1,vmWc1")
-            (match_operand 6 "vector_length_operand"         "   rK,   rK,   
rK,   rK,   rK")
-            (match_operand 7 "const_int_operand"             "    i,    i,    
i,    i,    i")
-            (match_operand 8 "const_int_operand"             "    i,    i,    
i,    i,    i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (match_operand:<VEL> 5 "register_operand"     "    r,    r,    
r,    r,    r"))
-             (match_operand:V_VLSI_D 4 "register_operand"        "   vr,    0, 
   0,   vr,   vr")])
-         (match_operand:<VM> 2 "vector_merge_operand"        "   vu,   vu,    
0,   vu,    0")))]
-  "TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode)"
-  "vms%B3.vx\t%0,%4,%5%p1"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "spec_restriction" "none,thv,thv,none,none")])
-
 (define_insn "*pred_cmp<mode>_extended_scalar_merge_tie_mask"
   [(set (match_operand:<VM> 0 "register_operand"               "=vm")
        (if_then_else:<VM>
@@ -5054,7 +4867,7 @@ (define_insn 
"*pred_cmp<mode>_extended_scalar_merge_tie_mask"
             (match_operand 7 "const_int_operand"              "  i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 2 "comparison_except_eqge_operator"
+         (match_operator:<VM> 2 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 3 "register_operand"         " vr")
              (vec_duplicate:V_VLSI_D
                (sign_extend:<VEL>
@@ -5080,7 +4893,7 @@ (define_insn "*pred_cmp<mode>_extended_scalar"
             (match_operand 8 "const_int_operand"              "    i,    i,    
i,    i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 4 "register_operand"         "   vr,   
vr,   vr,   vr")
              (vec_duplicate:V_VLSI_D
                (sign_extend:<VEL>
@@ -5102,7 +4915,7 @@ (define_insn "*pred_cmp<mode>_extended_scalar_narrow"
             (match_operand 8 "const_int_operand"              "    i,    i,    
i,    i,    i")
             (reg:SI VL_REGNUM)
             (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "comparison_except_eqge_operator"
+         (match_operator:<VM> 3 "comparison_except_ge_operator"
             [(match_operand:V_VLSI_D 4 "register_operand"         "   vr,    
0,    0,   vr,   vr")
              (vec_duplicate:V_VLSI_D
                (sign_extend:<VEL>
@@ -5114,76 +4927,6 @@ (define_insn "*pred_cmp<mode>_extended_scalar_narrow"
    (set_attr "mode" "<MODE>")
    (set_attr "spec_restriction" "none,thv,thv,none,none")])
 
-(define_insn "*pred_eqne<mode>_extended_scalar_merge_tie_mask"
-  [(set (match_operand:<VM> 0 "register_operand"                 "=vm")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "register_operand"            "  0")
-            (match_operand 5 "vector_length_operand"            " rK")
-            (match_operand 6 "const_int_operand"                "  i")
-            (match_operand 7 "const_int_operand"                "  i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 2 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (sign_extend:<VEL>
-                 (match_operand:<VSUBEL> 4 "register_operand"   "  r")))
-             (match_operand:V_VLSI_D 3 "register_operand"           " vr")])
-         (match_dup 1)))]
-  "TARGET_VECTOR && !TARGET_64BIT"
-  "vms%B2.vx\t%0,%3,%4,v0.t"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "merge_op_idx" "1")
-   (set_attr "vl_op_idx" "5")
-   (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[6])"))
-   (set (attr "avl_type_idx") (const_int 7))])
-
-;; We don't use early-clobber for LMUL <= 1 to get better codegen.
-(define_insn "*pred_eqne<mode>_extended_scalar"
-  [(set (match_operand:<VM> 0 "register_operand"                 "=vr,   vr,   
&vr,   &vr")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand"       
"vmWc1,vmWc1,vmWc1,vmWc1")
-            (match_operand 6 "vector_length_operand"          "   rK,   rK,   
rK,   rK")
-            (match_operand 7 "const_int_operand"              "    i,    i,    
i,    i")
-            (match_operand 8 "const_int_operand"              "    i,    i,    
i,    i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (sign_extend:<VEL>
-                 (match_operand:<VSUBEL> 5 "register_operand" "    r,    r,    
r,    r")))
-             (match_operand:V_VLSI_D 4 "register_operand"         "   vr,   
vr,   vr,   vr")])
-         (match_operand:<VM> 2 "vector_merge_operand"         "   vu,    0,    
vu,    0")))]
-  "TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (<MODE>mode) && 
!TARGET_64BIT"
-  "vms%B3.vx\t%0,%4,%5%p1"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "spec_restriction" "thv,thv,rvv,rvv")])
-
-(define_insn "*pred_eqne<mode>_extended_scalar_narrow"
-  [(set (match_operand:<VM> 0 "register_operand"                "=vm,   vr,   
vr,  &vr,  &vr")
-       (if_then_else:<VM>
-         (unspec:<VM>
-           [(match_operand:<VM> 1 "vector_mask_operand"       "    
0,vmWc1,vmWc1,vmWc1,vmWc1")
-            (match_operand 6 "vector_length_operand"          "   rK,   rK,   
rK,   rK,   rK")
-            (match_operand 7 "const_int_operand"              "    i,    i,    
i,    i,    i")
-            (match_operand 8 "const_int_operand"              "    i,    i,    
i,    i,    i")
-            (reg:SI VL_REGNUM)
-            (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
-         (match_operator:<VM> 3 "equality_operator"
-            [(vec_duplicate:V_VLSI_D
-               (sign_extend:<VEL>
-                 (match_operand:<VSUBEL> 5 "register_operand" "    r,    r,    
r,    r,    r")))
-             (match_operand:V_VLSI_D 4 "register_operand"         "   vr,    
0,    0,   vr,   vr")])
-         (match_operand:<VM> 2 "vector_merge_operand"         "   vu,   vu,    
0,   vu,    0")))]
-  "TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (<MODE>mode) && 
!TARGET_64BIT"
-  "vms%B3.vx\t%0,%4,%5%p1"
-  [(set_attr "type" "vicmp")
-   (set_attr "mode" "<MODE>")
-   (set_attr "spec_restriction" "none,thv,thv,none,none")])
-
 ;; GE, vmsge.vx/vmsgeu.vx
 ;;
 ;; unmasked va >= x
-- 
2.43.2

Reply via email to