Hi,

As PR116266 shows, we miss TARGET_P10_VECTOR to guard those
Power10 related vector instructions as well as their
according built-in functions.  This patch is to introduce
TARGET_P10_VECTOR which is actually TARGET_POWER10 &&
TARGET_VSX underlying, it updates many places that should
adopt TARGET_P10_VECTOR rather than TARGET_POWER10.  It
also replaces the existing power10 stanza with power10-vector
since all built-ins under it are all vector related.  When
making this patch, I noticed there are several places which
need extra fixing, like xxswapd_v1ti which shouldn't use
TARGET_POWER10, define floatti<mode>2 etc. which actually
needs TARGET_FLOAT128_HW and so on, I'll make separated
patches for them soon.

Bootstrapped and regtested on powerpc64-linux-gnu P8/P9 and
powerpc64le-linux-gnu P9 and P10.

I'm going to push this next week late if no objections.

BR,
Kewen
-----
        PR target/116266

gcc/ChangeLog:

        * config/rs6000/altivec.md (define_insn altivec_eqv1ti,
        *altivec_gtv1ti, *altivec_gtuv1ti, vs<SLDB_lr>db_<mode>,
        vstrir_direct_<mode>, vstrir_p_direct_<mode>, vstril_direct_<mode>,
        vstril_p_direct_<mode>, altivec_vmuleud, altivec_vmuloud,
        altivec_vmulesd, altivec_vmulosd, altivec_vrlq, altivec_vrlqmi_inst,
        altivec_vrlqnm_inst, altivec_vslq_<mode>, altivec_vsrq_<mode>,
        altivec_vsraq, altivec_vcmpequt_p, *altivec_vcmpgtst_p,
        *altivec_vcmpgtut_p, vcfuged, vclzdm, vctzdm, vpdepd, vpextd, vgnb,
        vclrlb, vclrrb): Replace condition TARGET_POWER10 with
        TARGET_P10_VECTOR.
        (define_expand vstrir_<mode>, vstrir_p_<mode>, vstril_<mode>,
        vstril_p_<mode>, vec_widen_umult_even_v2di, vec_widen_smult_even_v2di,
        vec_widen_umult_odd_v2di, vec_widen_smult_odd_v2di, altivec_vrlqmi,
        altivec_vrlqnm): Likewise.
        * config/rs6000/predicates.md (define_predicate easy_fp_constant,
        easy_vector_constant): Replace TARGET_POWER10 with TARGET_P10_VECTOR.
        (define_predicate easy_vector_constant_ieee128): Replace
        !TARGET_POWER10 || !TARGET_VSX with !TARGET_P10_VECTOR.
        * config/rs6000/rs6000-builtin.cc (rs6000_invalid_builtin): Remove
        the handling for case ENB_P10, add the handling for case ENB_P10V.
        (rs6000_builtin_is_supported): Likewise.
        (rs6000_builtin_md_vectorized_function): Replace TARGET_POWER10 with
        TARGET_P10_VECTOR.
        * config/rs6000/rs6000-builtins.def: Replace stanza [power10] with
        [power10-vector].
        * config/rs6000/rs6000-gen-builtins.cc (enum bif_stanza): Remove
        BSTZ_P10 and add BSTZ_P10V.
        (stanza_map): Remove entry for power10 and add an entry for
        power10-vector.
        (enable_string): Remove ENB_P10 and add ENB_P10V.
        (write_decls): Remove print for ENB_P10 and add print for ENB_P10V.
        * config/rs6000/rs6000-string.cc (expand_block_move): Replace
        TARGET_POWER10 with TARGET_P10_VECTOR for lxvl and stxvl.
        * config/rs6000/rs6000.cc (rs6000_option_override_internal): Replace
        TARGET_POWER10 with TARGET_P10_VECTOR for condition of setting
        param_vect_partial_vector_usage
        (output_vec_const_move): Replace TARGET_POWER10 with TARGET_P10_VECTOR.
        (constant_generates_lxvkq): Likewise.
        * config/rs6000/rs6000.h (TARGET_P10_VECTOR): New define.
        * config/rs6000/rs6000.md (define_attr isa): Add p10v.
        (define_insn udivti3, divti3, umodti3, modti3,
        xxspltidp_<mode>_internal, xxspltiw_<mode>_internal,
        xxspltiw_<mode>_internal): Replace TARGET_POWER10 with
        TARGET_P10_VECTOR.
        * config/rs6000/vector.md (mode_iterator VEC_IC): Replace
        TARGET_POWER10 with TARGET_P10_VECTOR.
        (vector_eq_v1ti_p, vector_ne_v1ti_p, vector_ae_v1ti_p,
        vector_gt_v1ti_p, vashl<mode>3, vlshr<mode>3): Replace TARGET_POWER10
        with TARGET_P10_VECTOR.
        * config/rs6000/vsx.md (vsx_mov<mode>_64bit, *vsx_mov<mode>_32bit):
        Replace isa attr p10 with p10v.
        (define_expand vsx_store_<mode>, xvtlsbbo, xvtlsbbz, xxgenpcvm_<mode>,
        vextractl<mode>, vextractr<mode>, vinsertvl_<mode>, vinsertvr_<mode>,
        vinsertgl_<mode>, vinsertgr_<mode>, vreplace_elt_<mode>, vcmpnet,
        xxspltiw_v4sf, xxspltidp_v2df, xxsplti32dx_v4si, xxsplti32dx_v4sf,
        xxpermx): Replace condition TARGET_POWER10 with TARGET_P10_VECTOR.
        (define_insn vsx_lxvr<wd>x, vsx_stxvr<wd>x, vsx_div_v1ti,
        vsx_udiv_v1ti, vsx_dives_v1ti, vsx_diveu_v1ti, vsx_mods_v1ti,
        vsx_modu_v1ti, *xvtlsbb_internal, xxgenpcvm_<mode>_internal,
        vextractl<mode>_internal, vextractr<mode>_internal,
        vinsertvl_internal_<mode>, vinsertvr_internal_<mode>,
        vinsertgl_internal_<mode>, vinsertgr_internal_<mode>,
        vreplace_elt_<mode>_inst, vreplace_un_<mode>,
        vsx_sign_extend_v2di_v1ti, extendditi2_vector, vsx_<xvcvbf16>,
        vec_mtvsrbmi, vec_mtvsr_<mode>, vec_cntmb_<mode>, vec_extract_<mode>,
        vec_expand_<mode>, dives_<mode>, diveu_<mode>, div<mode>3, udiv<mode>3,
        mod<mode>3, umod<mode>3, smul<mode>3_highpart, umul<mode>3_highpart,
        mulv2di3, xxspltiw_v4si, xxspltiw_v4sf_inst, xxspltidp_v2df_inst,
        xxsplti32dx_v4si_inst, xxsplti32dx_v4sf_inst, xxblend_<mode>,
        xxpermx_inst, xxeval, vmsumcud): Likewise.

gcc/testsuite/ChangeLog:

        * gcc.target/powerpc/pr116266.c: New test.
---
 gcc/config/rs6000/altivec.md                |  78 ++++++------
 gcc/config/rs6000/predicates.md             |   7 +-
 gcc/config/rs6000/rs6000-builtin.cc         |  13 +-
 gcc/config/rs6000/rs6000-builtins.def       |   3 +-
 gcc/config/rs6000/rs6000-gen-builtins.cc    |   8 +-
 gcc/config/rs6000/rs6000-string.cc          |   2 +-
 gcc/config/rs6000/rs6000.cc                 |   8 +-
 gcc/config/rs6000/rs6000.h                  |   3 +
 gcc/config/rs6000/rs6000.md                 |  20 ++--
 gcc/config/rs6000/vector.md                 |  14 +--
 gcc/config/rs6000/vsx.md                    | 124 ++++++++++----------
 gcc/testsuite/gcc.target/powerpc/pr116266.c |  14 +++
 12 files changed, 158 insertions(+), 136 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/powerpc/pr116266.c

diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index aa9d8fffc90..e8495bf4c63 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -623,7 +623,7 @@ (define_insn "altivec_eqv1ti"
   [(set (match_operand:V1TI 0 "altivec_register_operand" "=v")
      (eq:V1TI (match_operand:V1TI 1 "altivec_register_operand" "v")
               (match_operand:V1TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcmpequq %0,%1,%2"
   [(set_attr "type" "veccmpfx")])

@@ -647,7 +647,7 @@ (define_insn "*altivec_gtv1ti"
   [(set (match_operand:V1TI 0 "altivec_register_operand" "=v")
        (gt:V1TI (match_operand:V1TI 1 "altivec_register_operand" "v")
                 (match_operand:V1TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcmpgtsq %0,%1,%2"
   [(set_attr "type" "veccmpfx")])

@@ -663,7 +663,7 @@ (define_insn "*altivec_gtuv1ti"
   [(set (match_operand:V1TI 0 "altivec_register_operand" "=v")
        (gtu:V1TI (match_operand:V1TI 1 "altivec_register_operand" "v")
                  (match_operand:V1TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcmpgtuq %0,%1,%2"
   [(set_attr "type" "veccmpfx")])

@@ -882,7 +882,7 @@ (define_insn "vs<SLDB_lr>db_<mode>"
               (match_operand:VI2 2 "register_operand" "v")
               (match_operand:QI 3 "const_0_to_12_operand" "n")]
              VSHIFT_DBL_LR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vs<SLDB_lr>dbi %0,%1,%2,%3"
   [(set_attr "type" "vecsimple")])

@@ -890,7 +890,7 @@ (define_expand "vstrir_<mode>"
   [(set (match_operand:VIshort 0 "altivec_register_operand")
        (unspec:VIshort [(match_operand:VIshort 1 "altivec_register_operand")]
                        UNSPEC_VSTRIR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_vstrir_direct_<mode> (operands[0], operands[1]));
@@ -904,7 +904,7 @@ (define_insn "vstrir_direct_<mode>"
        (unspec:VIshort
           [(match_operand:VIshort 1 "altivec_register_operand" "v")]
           UNSPEC_VSTRIR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vstri<wd>r %0,%1"
   [(set_attr "type" "vecsimple")])

@@ -915,7 +915,7 @@ (define_insn "vstrir_direct_<mode>"
 (define_expand "vstrir_p_<mode>"
   [(match_operand:SI 0 "gpc_reg_operand")
    (match_operand:VIshort 1 "altivec_register_operand")]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   rtx scratch = gen_reg_rtx (<MODE>mode);
   if (BYTES_BIG_ENDIAN)
@@ -934,7 +934,7 @@ (define_insn "vstrir_p_direct_<mode>"
    (set (reg:CC CR6_REGNO)
        (unspec:CC [(match_dup 1)]
                   UNSPEC_VSTRIR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vstri<wd>r. %0,%1"
   [(set_attr "type" "vecsimple")])

@@ -942,7 +942,7 @@ (define_expand "vstril_<mode>"
   [(set (match_operand:VIshort 0 "altivec_register_operand")
        (unspec:VIshort [(match_operand:VIshort 1 "altivec_register_operand")]
                        UNSPEC_VSTRIR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_vstril_direct_<mode> (operands[0], operands[1]));
@@ -956,7 +956,7 @@ (define_insn "vstril_direct_<mode>"
        (unspec:VIshort
           [(match_operand:VIshort 1 "altivec_register_operand" "v")]
           UNSPEC_VSTRIL))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vstri<wd>l %0,%1"
   [(set_attr "type" "vecsimple")])

@@ -967,7 +967,7 @@ (define_insn "vstril_direct_<mode>"
 (define_expand "vstril_p_<mode>"
   [(match_operand:SI 0 "gpc_reg_operand")
    (match_operand:VIshort 1 "altivec_register_operand")]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   rtx scratch = gen_reg_rtx (<MODE>mode);
   if (BYTES_BIG_ENDIAN)
@@ -986,7 +986,7 @@ (define_insn "vstril_p_direct_<mode>"
    (set (reg:CC CR6_REGNO)
        (unspec:CC [(match_dup 1)]
                   UNSPEC_VSTRIR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vstri<wd>l. %0,%1"
   [(set_attr "type" "vecsimple")])

@@ -1614,7 +1614,7 @@ (define_expand "vec_widen_umult_even_v2di"
   [(use (match_operand:V1TI 0 "register_operand"))
    (use (match_operand:V2DI 1 "register_operand"))
    (use (match_operand:V2DI 2 "register_operand"))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_altivec_vmuleud (operands[0], operands[1], operands[2]));
@@ -1640,7 +1640,7 @@ (define_expand "vec_widen_smult_even_v2di"
   [(use (match_operand:V1TI 0 "register_operand"))
    (use (match_operand:V2DI 1 "register_operand"))
    (use (match_operand:V2DI 2 "register_operand"))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_altivec_vmulesd (operands[0], operands[1], operands[2]));
@@ -1718,7 +1718,7 @@ (define_expand "vec_widen_umult_odd_v2di"
   [(use (match_operand:V1TI 0 "register_operand"))
    (use (match_operand:V2DI 1 "register_operand"))
    (use (match_operand:V2DI 2 "register_operand"))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_altivec_vmuloud (operands[0], operands[1], operands[2]));
@@ -1744,7 +1744,7 @@ (define_expand "vec_widen_smult_odd_v2di"
   [(use (match_operand:V1TI 0 "register_operand"))
    (use (match_operand:V2DI 1 "register_operand"))
    (use (match_operand:V2DI 2 "register_operand"))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_altivec_vmulosd (operands[0], operands[1], operands[2]));
@@ -1839,7 +1839,7 @@ (define_insn "altivec_vmuleud"
        (unspec:V1TI [(match_operand:V2DI 1 "register_operand" "v")
                      (match_operand:V2DI 2 "register_operand" "v")]
                     UNSPEC_VMULEUD))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmuleud %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -1857,7 +1857,7 @@ (define_insn "altivec_vmuloud"
        (unspec:V1TI [(match_operand:V2DI 1 "register_operand" "v")
                      (match_operand:V2DI 2 "register_operand" "v")]
                     UNSPEC_VMULOUD))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmuloud %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -1875,7 +1875,7 @@ (define_insn "altivec_vmulesd"
        (unspec:V1TI [(match_operand:V2DI 1 "register_operand" "v")
                      (match_operand:V2DI 2 "register_operand" "v")]
                     UNSPEC_VMULESD))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmulesd %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -1893,7 +1893,7 @@ (define_insn "altivec_vmulosd"
        (unspec:V1TI [(match_operand:V2DI 1 "register_operand" "v")
                      (match_operand:V2DI 2 "register_operand" "v")]
                     UNSPEC_VMULOSD))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmulosd %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -1994,7 +1994,7 @@ (define_insn "altivec_vrlq"
   [(set (match_operand:V1TI 0 "vsx_register_operand" "=v")
         (rotate:V1TI (match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 ;; rotate amount in needs to be in bits[57:63] of operand2.
   "vrlq %0,%1,%2"
   [(set_attr "type" "vecsimple")])
@@ -2015,7 +2015,7 @@ (define_expand "altivec_vrlqmi"
                      (match_operand:V1TI 2 "vsx_register_operand")
                      (match_operand:V1TI 3 "vsx_register_operand")]
                     UNSPEC_VRLMI))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   /* Mask bit begin, end fields need to be in bits [41:55] of 128-bit operand2.
      Shift amount in needs to be put in bits[57:63] of 128-bit operand2. */
@@ -2033,7 +2033,7 @@ (define_insn "altivec_vrlqmi_inst"
                      (match_operand:V1TI 2 "vsx_register_operand" "0")
                      (match_operand:V1TI 3 "vsx_register_operand" "v")]
                     UNSPEC_VRLMI))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vrlqmi %0,%1,%3"
   [(set_attr "type" "veclogical")])

@@ -2051,7 +2051,7 @@ (define_expand "altivec_vrlqnm"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand")
                      (match_operand:V1TI 2 "vsx_register_operand")]
                     UNSPEC_VRLNM))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   /* Shift amount in needs to be put in bits[57:63] of 128-bit operand2. */
   rtx tmp = gen_reg_rtx (V1TImode);
@@ -2066,7 +2066,7 @@ (define_insn "altivec_vrlqnm_inst"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VRLNM))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   ;; rotate and mask bits need to be in upper 64-bits of operand2.
   "vrlqnm %0,%1,%2"
   [(set_attr "type" "veclogical")])
@@ -2119,7 +2119,7 @@ (define_insn "altivec_vslq_<mode>"
   [(set (match_operand:VEC_TI 0 "vsx_register_operand" "=v")
        (ashift:VEC_TI (match_operand:VEC_TI 1 "vsx_register_operand" "v")
                     (match_operand:VEC_TI 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   /* Shift amount in needs to be in bits[57:63] of 128-bit operand. */
   "vslq %0,%1,%2"
   [(set_attr "type" "vecsimple")])
@@ -2136,7 +2136,7 @@ (define_insn "altivec_vsrq_<mode>"
   [(set (match_operand:VEC_TI 0 "vsx_register_operand" "=v")
        (lshiftrt:VEC_TI (match_operand:VEC_TI 1 "vsx_register_operand" "v")
                           (match_operand:VEC_TI 2 "vsx_register_operand" 
"v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   /* Shift amount in needs to be in bits[57:63] of 128-bit operand. */
   "vsrq %0,%1,%2"
   [(set_attr "type" "vecsimple")])
@@ -2153,7 +2153,7 @@ (define_insn "altivec_vsraq"
   [(set (match_operand:V1TI 0 "vsx_register_operand" "=v")
        (ashiftrt:V1TI (match_operand:V1TI 1 "vsx_register_operand" "v")
                       (match_operand:V1TI 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   /* Shift amount in needs to be in bits[57:63] of 128-bit operand. */
   "vsraq %0,%1,%2"
   [(set_attr "type" "vecsimple")])
@@ -2768,7 +2768,7 @@ (define_insn "altivec_vcmpequt_p"
    (set (match_operand:V1TI 0 "altivec_register_operand" "=v")
        (eq:V1TI (match_dup 1)
                 (match_dup 2)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcmpequq. %0,%1,%2"
   [(set_attr "type" "veccmpfx")])

@@ -2804,7 +2804,7 @@ (define_insn "*altivec_vcmpgtst_p"
    (set (match_operand:V1TI 0 "register_operand" "=v")
        (gt:V1TI (match_dup 1)
                 (match_dup 2)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcmpgtsq. %0,%1,%2"
   [(set_attr "type" "veccmpfx")])

@@ -2828,7 +2828,7 @@ (define_insn "*altivec_vcmpgtut_p"
    (set (match_operand:V1TI 0 "register_operand" "=v")
        (gtu:V1TI (match_dup 1)
                  (match_dup 2)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcmpgtuq. %0,%1,%2"
   [(set_attr "type" "veccmpfx")])

@@ -4583,7 +4583,7 @@ (define_insn "vcfuged"
        (unspec:V2DI [(match_operand:V2DI 1 "altivec_register_operand" "v")
                      (match_operand:V2DI 2 "altivec_register_operand" "v")]
         UNSPEC_VCFUGED))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "vcfuged %0,%1,%2"
    [(set_attr "type" "vecsimple")])

@@ -4592,7 +4592,7 @@ (define_insn "vclzdm"
        (unspec:V2DI [(match_operand:V2DI 1 "altivec_register_operand" "v")
                      (match_operand:V2DI 2 "altivec_register_operand" "v")]
         UNSPEC_VCLZDM))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "vclzdm %0,%1,%2"
    [(set_attr "type" "vecsimple")])

@@ -4601,7 +4601,7 @@ (define_insn "vctzdm"
        (unspec:V2DI [(match_operand:V2DI 1 "altivec_register_operand" "v")
                      (match_operand:V2DI 2 "altivec_register_operand" "v")]
         UNSPEC_VCTZDM))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "vctzdm %0,%1,%2"
    [(set_attr "type" "vecsimple")])

@@ -4610,7 +4610,7 @@ (define_insn "vpdepd"
        (unspec:V2DI [(match_operand:V2DI 1 "altivec_register_operand" "v")
                      (match_operand:V2DI 2 "altivec_register_operand" "v")]
         UNSPEC_VPDEPD))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "vpdepd %0,%1,%2"
    [(set_attr "type" "vecsimple")])

@@ -4619,7 +4619,7 @@ (define_insn "vpextd"
        (unspec:V2DI [(match_operand:V2DI 1 "altivec_register_operand" "v")
                      (match_operand:V2DI 2 "altivec_register_operand" "v")]
         UNSPEC_VPEXTD))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "vpextd %0,%1,%2"
    [(set_attr "type" "vecsimple")])

@@ -4628,7 +4628,7 @@ (define_insn "vgnb"
         (unspec:DI [(match_operand:V2DI 1 "altivec_register_operand" "v")
                    (match_operand:QI 2 "u3bit_cint_operand" "n")]
          UNSPEC_VGNB))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "vgnb %0,%1,%2"
    [(set_attr "type" "vecsimple")])

@@ -4637,7 +4637,7 @@ (define_insn "vclrlb"
        (unspec:V16QI [(match_operand:V16QI 1 "altivec_register_operand" "v")
                       (match_operand:SI 2 "gpc_reg_operand" "r")]
         UNSPEC_VCLRLB))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     return "vclrlb %0,%1,%2";
@@ -4651,7 +4651,7 @@ (define_insn "vclrrb"
        (unspec:V16QI [(match_operand:V16QI 1 "altivec_register_operand" "v")
                       (match_operand:SI 2 "gpc_reg_operand" "r")]
         UNSPEC_VCLRRB))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     return "vclrrb %0,%1,%2";
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index cdfd400f639..de0571a68c0 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -603,7 +603,7 @@ (define_predicate "easy_fp_constant"

   /* Constants that can be generated with ISA 3.1 instructions are easy.  */
   vec_const_128bit_type vsx_const;
-  if (TARGET_POWER10 && vec_const_128bit_to_bytes (op, mode, &vsx_const))
+  if (TARGET_P10_VECTOR && vec_const_128bit_to_bytes (op, mode, &vsx_const))
     {
       if (constant_generates_lxvkq (&vsx_const))
        return true;
@@ -671,8 +671,7 @@ (define_predicate "easy_vector_constant_ieee128"
   vec_const_128bit_type vsx_const;

   /* Can we generate the LXVKQ instruction?  */
-  if (!TARGET_IEEE128_CONSTANT || !TARGET_FLOAT128_HW || !TARGET_POWER10
-      || !TARGET_VSX)
+  if (!TARGET_IEEE128_CONSTANT || !TARGET_FLOAT128_HW || !TARGET_P10_VECTOR)
     return false;

   return (vec_const_128bit_to_bytes (op, mode, &vsx_const)
@@ -732,7 +731,7 @@ (define_predicate "easy_vector_constant"
       /* Constants that can be generated with ISA 3.1 instructions are
          easy.  */
       vec_const_128bit_type vsx_const;
-      if (TARGET_POWER10 && vec_const_128bit_to_bytes (op, mode, &vsx_const))
+      if (TARGET_P10_VECTOR && vec_const_128bit_to_bytes (op, mode, 
&vsx_const))
        {
          if (constant_generates_lxvkq (&vsx_const))
            return true;
diff --git a/gcc/config/rs6000/rs6000-builtin.cc 
b/gcc/config/rs6000/rs6000-builtin.cc
index 099cbc82245..ff1719da93c 100644
--- a/gcc/config/rs6000/rs6000-builtin.cc
+++ b/gcc/config/rs6000/rs6000-builtin.cc
@@ -129,13 +129,14 @@ rs6000_invalid_builtin (enum rs6000_gen_builtins fncode)
     case ENB_HTM:
       error ("%qs requires the %qs option", name, "-mhtm");
       break;
-    case ENB_P10:
-      error ("%qs requires the %qs option", name, "-mcpu=power10");
-      break;
     case ENB_P10_64:
       error ("%qs requires the %qs option and either the %qs or %qs option",
             name, "-mcpu=power10", "-m64", "-mpowerpc64");
       break;
+    case ENB_P10V:
+      error ("%qs requires the %qs and %qs options", name, "-mcpu=power10",
+            "-mvsx");
+      break;
     case ENB_MMA:
       error ("%qs requires the %qs option", name, "-mmma");
       break;
@@ -174,10 +175,10 @@ rs6000_builtin_is_supported (enum rs6000_gen_builtins 
fncode)
       return TARGET_MODULO && TARGET_POWERPC64;
     case ENB_P9V:
       return TARGET_P9_VECTOR;
-    case ENB_P10:
-      return TARGET_POWER10;
     case ENB_P10_64:
       return TARGET_POWER10 && TARGET_POWERPC64;
+    case ENB_P10V:
+      return TARGET_P10_VECTOR;
     case ENB_ALTIVEC:
       return TARGET_ALTIVEC;
     case ENB_VSX:
@@ -301,7 +302,7 @@ rs6000_builtin_md_vectorized_function (tree fndecl, tree 
type_out,
   machine_mode out_vmode = TYPE_MODE (type_out);

   /* Power10 supported vectorized built-in functions.  */
-  if (TARGET_POWER10
+  if (TARGET_P10_VECTOR
       && in_vmode == out_vmode
       && VECTOR_UNIT_ALTIVEC_OR_VSX_P (in_vmode))
     {
diff --git a/gcc/config/rs6000/rs6000-builtins.def 
b/gcc/config/rs6000/rs6000-builtins.def
index 0c3c884c110..d4a4404a261 100644
--- a/gcc/config/rs6000/rs6000-builtins.def
+++ b/gcc/config/rs6000/rs6000-builtins.def
@@ -2906,7 +2906,8 @@
     TTEST ttest {htm,htmcr}


-[power10]
+; Power10 vector builtins.
+[power10-vector]
   const vbq __builtin_altivec_cmpge_1ti (vsq, vsq);
     CMPGE_1TI vector_nltv1ti {}

diff --git a/gcc/config/rs6000/rs6000-gen-builtins.cc 
b/gcc/config/rs6000/rs6000-gen-builtins.cc
index 1e2e780c610..5db5bac1ec3 100644
--- a/gcc/config/rs6000/rs6000-gen-builtins.cc
+++ b/gcc/config/rs6000/rs6000-gen-builtins.cc
@@ -229,8 +229,8 @@ enum bif_stanza
  BSTZ_DFP,
  BSTZ_CRYPTO,
  BSTZ_HTM,
- BSTZ_P10,
  BSTZ_P10_64,
+ BSTZ_P10V,
  BSTZ_MMA,
  NUMBIFSTANZAS
 };
@@ -263,8 +263,8 @@ static stanza_entry stanza_map[NUMBIFSTANZAS] =
     { "dfp",           BSTZ_DFP        },
     { "crypto",                BSTZ_CRYPTO     },
     { "htm",           BSTZ_HTM        },
-    { "power10",       BSTZ_P10        },
     { "power10-64",    BSTZ_P10_64     },
+    { "power10-vector",        BSTZ_P10V       },
     { "mma",           BSTZ_MMA        }
   };

@@ -288,8 +288,8 @@ static const char *enable_string[NUMBIFSTANZAS] =
     "ENB_DFP",
     "ENB_CRYPTO",
     "ENB_HTM",
-    "ENB_P10",
     "ENB_P10_64",
+    "ENB_P10V",
     "ENB_MMA"
   };

@@ -2247,8 +2247,8 @@ write_decls (void)
   fprintf (header_file, "  ENB_DFP,\n");
   fprintf (header_file, "  ENB_CRYPTO,\n");
   fprintf (header_file, "  ENB_HTM,\n");
-  fprintf (header_file, "  ENB_P10,\n");
   fprintf (header_file, "  ENB_P10_64,\n");
+  fprintf (header_file, "  ENB_P10V,\n");
   fprintf (header_file, "  ENB_MMA\n");
   fprintf (header_file, "};\n\n");

diff --git a/gcc/config/rs6000/rs6000-string.cc 
b/gcc/config/rs6000/rs6000-string.cc
index 55b4133b1a3..8abd5416d81 100644
--- a/gcc/config/rs6000/rs6000-string.cc
+++ b/gcc/config/rs6000/rs6000-string.cc
@@ -2803,7 +2803,7 @@ expand_block_move (rtx operands[], bool might_overlap)
        }
       else if (TARGET_BLOCK_OPS_UNALIGNED_VSX
               /* Only use lxvl/stxvl on 64bit POWER10.  */
-              && TARGET_POWER10
+              && TARGET_P10_VECTOR
               && TARGET_64BIT
               && bytes < 16
               && orig_bytes > 16
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 0bcc6a2d0ab..0e101ec7de1 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -4769,7 +4769,7 @@ rs6000_option_override_internal (bool global_init_p)
                           param_max_completely_peeled_insns, 400);

       /* The lxvl/stxvl instructions don't perform well before Power10.  */
-      if (TARGET_POWER10)
+      if (TARGET_P10_VECTOR)
        SET_OPTION_IF_UNSET (&global_options, &global_options_set,
                             param_vect_partial_vector_usage, 1);
       else
@@ -6708,7 +6708,8 @@ output_vec_const_move (rtx *operands)
        }

       vec_const_128bit_type vsx_const;
-      if (TARGET_POWER10 && vec_const_128bit_to_bytes (vec, mode, &vsx_const))
+      if (TARGET_P10_VECTOR
+         && vec_const_128bit_to_bytes (vec, mode, &vsx_const))
        {
          unsigned imm = constant_generates_lxvkq (&vsx_const);
          if (imm)
@@ -29123,8 +29124,7 @@ constant_generates_lxvkq (vec_const_128bit_type 
*vsx_const)
 {
   /* Is the instruction supported with power10 code generation, IEEE 128-bit
      floating point hardware and VSX registers are available.  */
-  if (!TARGET_IEEE128_CONSTANT || !TARGET_FLOAT128_HW || !TARGET_POWER10
-      || !TARGET_VSX)
+  if (!TARGET_IEEE128_CONSTANT || !TARGET_FLOAT128_HW || !TARGET_P10_VECTOR)
     return 0;

   /* All of the constants that are generated by LXVKQ have the bottom 3 words
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 703be908d94..a5b874bc21a 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -501,6 +501,9 @@ extern int rs6000_vector_align[];
 #define TARGET_MINMAX  (TARGET_HARD_FLOAT && TARGET_PPC_GFXOPT         \
                         && (TARGET_P9_MINMAX || !flag_trapping_math))

+/* ISA 3.1 vector instruction support.  */
+#define TARGET_P10_VECTOR (TARGET_POWER10 && TARGET_VSX)
+
 /* In switching from using target_flags to using rs6000_isa_flags, the options
    machinery creates OPTION_MASK_<xxx> instead of MASK_<xxx>.  The MASK_<xxxx>
    options that have not yet been replaced by their OPTION_MASK_<xxx>
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index d352a1431ad..427e45aefbd 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -355,7 +355,7 @@ (define_attr "cpu"
   (const (symbol_ref "(enum attr_cpu) rs6000_tune")))

 ;; The ISA we implement.
-(define_attr "isa" "any,p5,p6,p7,p7v,p8,p8v,p9,p9v,p9kf,p9tf,p10"
+(define_attr "isa" "any,p5,p6,p7,p7v,p8,p8v,p9,p9v,p9kf,p9tf,p10,p10v"
   (const_string "any"))

 ;; Is this alternative enabled for the current CPU/ISA/etc.?
@@ -407,6 +407,10 @@ (define_attr "enabled" ""
      (and (eq_attr "isa" "p10")
          (match_test "TARGET_POWER10"))
      (const_int 1)
+
+     (and (eq_attr "isa" "p10v")
+         (match_test "TARGET_P10_VECTOR"))
+     (const_int 1)
     ] (const_int 0)))

 ;; If this instruction is microcoded on the CELL processor
@@ -3305,7 +3309,7 @@ (define_insn "udivti3"
   [(set (match_operand:TI 0 "altivec_register_operand" "=v")
        (udiv:TI (match_operand:TI 1 "altivec_register_operand" "v")
                 (match_operand:TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10 && TARGET_POWERPC64"
+  "TARGET_P10_VECTOR && TARGET_POWERPC64"
   "vdivuq %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "128")])
@@ -3403,7 +3407,7 @@ (define_insn "divti3"
   [(set (match_operand:TI 0 "altivec_register_operand" "=v")
        (div:TI (match_operand:TI 1 "altivec_register_operand" "v")
                (match_operand:TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10 && TARGET_POWERPC64"
+  "TARGET_P10_VECTOR && TARGET_POWERPC64"
   "vdivsq %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "128")])
@@ -3542,7 +3546,7 @@ (define_insn "umodti3"
   [(set (match_operand:TI 0 "altivec_register_operand" "=v")
        (umod:TI (match_operand:TI 1 "altivec_register_operand" "v")
                 (match_operand:TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10 && TARGET_POWERPC64 && !RS6000_DISABLE_SCALAR_MODULO"
+  "TARGET_P10_VECTOR && TARGET_POWERPC64 && !RS6000_DISABLE_SCALAR_MODULO"
   "vmoduq %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "128")])
@@ -3551,7 +3555,7 @@ (define_insn "modti3"
   [(set (match_operand:TI 0 "altivec_register_operand" "=v")
        (mod:TI (match_operand:TI 1 "altivec_register_operand" "v")
                (match_operand:TI 2 "altivec_register_operand" "v")))]
-  "TARGET_POWER10 && TARGET_POWERPC64 && !RS6000_DISABLE_SCALAR_MODULO"
+  "TARGET_P10_VECTOR && TARGET_POWERPC64 && !RS6000_DISABLE_SCALAR_MODULO"
   "vmodsq %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "128")])
@@ -8690,7 +8694,7 @@ (define_insn "xxspltidp_<mode>_internal"
   [(set (match_operand:SFDF 0 "register_operand" "=wa")
        (unspec:SFDF [(match_operand:SI 1 "c32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTIDP_CONST))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxspltidp %x0,%1"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -8699,7 +8703,7 @@ (define_insn "xxspltiw_<mode>_internal"
   [(set (match_operand:SFDF 0 "register_operand" "=wa")
        (unspec:SFDF [(match_operand:SI 1 "c32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTIW_CONST))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxspltiw %x0,%1"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -8707,7 +8711,7 @@ (define_insn "xxspltiw_<mode>_internal"
 (define_split
   [(set (match_operand:SFDF 0 "vsx_register_operand")
        (match_operand:SFDF 1 "vsx_prefixed_constant"))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   [(pc)]
 {
   rtx dest = operands[0];
diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md
index 524ba87d6d1..495867e2c27 100644
--- a/gcc/config/rs6000/vector.md
+++ b/gcc/config/rs6000/vector.md
@@ -28,7 +28,7 @@ (define_mode_iterator VEC_I [V16QI V8HI V4SI V2DI])

 ;; Vector int modes for comparison, shift and rotation.  ISA 3.1 adds the V1TI 
mode
 ;; for the vector int128 type.
-(define_mode_iterator VEC_IC [V16QI V8HI V4SI V2DI (V1TI "TARGET_POWER10")])
+(define_mode_iterator VEC_IC [V16QI V8HI V4SI V2DI (V1TI "TARGET_P10_VECTOR")])

 ;; 128-bit int modes
 (define_mode_iterator VEC_TI [V1TI TI])
@@ -734,7 +734,7 @@ (define_expand "vector_eq_v1ti_p"
      (set (match_operand:V1TI 0 "vlogical_operand")
          (eq:V1TI (match_dup 1)
                   (match_dup 2)))])]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "")

 ;; This expansion handles the V16QI, V8HI, and V4SI modes in the
@@ -831,7 +831,7 @@ (define_expand "vector_ne_v1ti_p"
    (set (match_operand:SI 0 "register_operand" "=r")
        (eq:SI (reg:CC CR6_REGNO)
               (const_int 0)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   operands[3] = gen_reg_rtx (V1TImode);
 })
@@ -877,7 +877,7 @@ (define_expand "vector_ae_v1ti_p"
    (set (match_dup 0)
        (xor:SI (match_dup 0)
                (const_int 1)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   operands[3] = gen_reg_rtx (V1TImode);
 })
@@ -950,7 +950,7 @@ (define_expand "vector_gt_v1ti_p"
      (set (match_operand:V1TI 0 "vlogical_operand")
          (gt:V1TI (match_dup 1)
                   (match_dup 2)))])]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "")

 (define_expand "vector_ge_<mode>_p"
@@ -1400,7 +1400,7 @@ (define_expand "vashl<mode>3"
   [(set (match_operand:VEC_TI 0 "vsx_register_operand" "=v")
        (ashift:VEC_TI (match_operand:VEC_TI 1 "vsx_register_operand")
                         (match_operand:VEC_TI 2 "vsx_register_operand")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   /* Shift amount in needs to be put in bits[57:63] of 128-bit operand2. */
   rtx tmp = gen_reg_rtx (<MODE>mode);
@@ -1423,7 +1423,7 @@ (define_expand "vlshr<mode>3"
   [(set (match_operand:VEC_TI 0 "vsx_register_operand" "=v")
        (lshiftrt:VEC_TI (match_operand:VEC_TI 1 "vsx_register_operand")
                           (match_operand:VEC_TI 2 "vsx_register_operand")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   /* Shift amount in needs to be put into bits[57:63] of 128-bit operand2. */
   rtx tmp = gen_reg_rtx (<MODE>mode);
diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index 7892477fa92..bfaf617ea15 100644
--- a/gcc/config/rs6000/vsx.md
+++ b/gcc/config/rs6000/vsx.md
@@ -1285,7 +1285,7 @@ (define_insn "vsx_mov<mode>_64bit"
    (set_attr "isa"
                "<VSisa>,   <VSisa>,   <VSisa>,   *,         *,         *,
                 *,         *,         *,         *,         p9v,       *,
-                p10,       p10,
+                p10v,      p10v,
                 <VSisa>,   *,         *,         *,         *")
    (set_attr "prefixed"
                "*,         *,         *,         *,         *,         *,
@@ -1328,7 +1328,7 @@ (define_insn "*vsx_mov<mode>_32bit"
                 *,         *")
    (set_attr "isa"
                "<VSisa>,   <VSisa>,   <VSisa>,   *,         *,         *,
-                p10,       p10,
+                p10v,      p10v,
                 p9v,       *,         <VSisa>,   *,         *,
                 *,         *")
    (set_attr "prefixed"
@@ -1371,7 +1371,7 @@ (define_expand "vsx_store_<mode>"
 (define_insn "vsx_lxvr<wd>x"
   [(set (match_operand:TI 0 "vsx_register_operand" "=wa")
        (zero_extend:TI (match_operand:INT_ISA3  1 "memory_operand" "Z")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "lxvr<wd>x %x0,%y1"
   [(set_attr "type" "vecload")])

@@ -1380,7 +1380,7 @@ (define_insn "vsx_lxvr<wd>x"
 (define_insn "vsx_stxvr<wd>x"
   [(set (match_operand:INT_ISA3 0 "memory_operand" "=Z")
        (truncate:INT_ISA3 (match_operand:TI 1 "vsx_register_operand" "wa")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "stxvr<wd>x %x1,%y0"
   [(set_attr "type" "vecstore")])

@@ -1885,7 +1885,7 @@ (define_insn "vsx_div_v1ti"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VSX_DIVSQ))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdivsq %0,%1,%2"
   [(set_attr "type" "div")])

@@ -1894,7 +1894,7 @@ (define_insn "vsx_udiv_v1ti"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VSX_DIVUQ))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdivuq %0,%1,%2"
   [(set_attr "type" "div")])

@@ -1903,7 +1903,7 @@ (define_insn "vsx_dives_v1ti"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VSX_DIVESQ))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdivesq %0,%1,%2"
   [(set_attr "type" "div")])

@@ -1912,7 +1912,7 @@ (define_insn "vsx_diveu_v1ti"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VSX_DIVEUQ))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdiveuq %0,%1,%2"
   [(set_attr "type" "div")])

@@ -1921,7 +1921,7 @@ (define_insn "vsx_mods_v1ti"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VSX_MODSQ))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmodsq %0,%1,%2"
   [(set_attr "type" "div")])

@@ -1930,7 +1930,7 @@ (define_insn "vsx_modu_v1ti"
        (unspec:V1TI [(match_operand:V1TI 1 "vsx_register_operand" "v")
                      (match_operand:V1TI 2 "vsx_register_operand" "v")]
                     UNSPEC_VSX_MODUQ))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmoduq %0,%1,%2"
   [(set_attr "type" "div")])

@@ -2212,7 +2212,7 @@ (define_insn "*xvtlsbb_internal"
   [(set (match_operand:CC 0 "cc_reg_operand" "=y")
        (unspec:CC [(match_operand:V16QI 1 "vsx_register_operand" "wa")]
         UNSPEC_XVTLSBB))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xvtlsbb %0,%x1"
   [(set_attr "type" "logical")])

@@ -2229,7 +2229,7 @@ (define_expand "xvtlsbbo"
         UNSPEC_XVTLSBB))
    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
        (lt:SI (match_dup 2) (const_int 0)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
    operands[2] = gen_reg_rtx (CCmode);
 })
@@ -2239,7 +2239,7 @@ (define_expand "xvtlsbbz"
         UNSPEC_XVTLSBB))
    (set (match_operand:SI 0 "gpc_reg_operand" "=r")
        (eq:SI (match_dup 2) (const_int 0)))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
    operands[2] = gen_reg_rtx (CCmode);
 })
@@ -3358,7 +3358,7 @@ (define_insn "xxgenpcvm_<mode>_internal"
         [(match_operand:VSX_EXTRACT_I4 1 "altivec_register_operand" "v")
          (match_operand:QI 2 "const_0_to_3_operand" "n")]
         UNSPEC_XXGENPCV))]
-    "TARGET_POWER10"
+    "TARGET_P10_VECTOR"
     "xxgenpcv<wd>m %x0,%1,%2"
     [(set_attr "type" "vecsimple")])

@@ -3366,7 +3366,7 @@ (define_expand "xxgenpcvm_<mode>"
   [(use (match_operand:VSX_EXTRACT_I4 0 "register_operand"))
    (use (match_operand:VSX_EXTRACT_I4 1 "register_operand"))
    (use (match_operand:QI 2 "immediate_operand"))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (!BYTES_BIG_ENDIAN)
     {
@@ -4217,7 +4217,7 @@ (define_expand "vextractl<mode>"
                      (match_operand:VI2 2 "altivec_register_operand")
                      (match_operand:SI 3 "register_operand")]
                     UNSPEC_EXTRACTL))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     {
@@ -4237,7 +4237,7 @@ (define_insn "vextractl<mode>_internal"
                      (match_operand:VEC_I 2 "altivec_register_operand" "v")
                      (match_operand:SI 3 "register_operand" "r")]
                     UNSPEC_EXTRACTL))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vext<du_or_d><wd>vlx %0,%1,%2,%3"
   [(set_attr "type" "vecsimple")])

@@ -4247,7 +4247,7 @@ (define_expand "vextractr<mode>"
                      (match_operand:VI2 2 "altivec_register_operand")
                      (match_operand:SI 3 "register_operand")]
                     UNSPEC_EXTRACTR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     {
@@ -4267,7 +4267,7 @@ (define_insn "vextractr<mode>_internal"
                      (match_operand:VEC_I 2 "altivec_register_operand" "v")
                      (match_operand:SI 3 "register_operand" "r")]
                     UNSPEC_EXTRACTR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vext<du_or_d><wd>vrx %0,%1,%2,%3"
   [(set_attr "type" "vecsimple")])

@@ -4277,7 +4277,7 @@ (define_expand "vinsertvl_<mode>"
                     (match_operand:VI2 2 "altivec_register_operand")
                     (match_operand:SI 3 "register_operand" "r")]
                    UNSPEC_INSERTL))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
      emit_insn (gen_vinsertvl_internal_<mode> (operands[0], operands[3],
@@ -4294,7 +4294,7 @@ (define_insn "vinsertvl_internal_<mode>"
                       (match_operand:VEC_I 2 "altivec_register_operand" "v")
                       (match_operand:VEC_I 3 "altivec_register_operand" "0")]
                      UNSPEC_INSERTL))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vins<wd>vlx %0,%1,%2"
   [(set_attr "type" "vecsimple")])

@@ -4304,7 +4304,7 @@ (define_expand "vinsertvr_<mode>"
                     (match_operand:VI2 2 "altivec_register_operand")
                     (match_operand:SI 3 "register_operand" "r")]
                    UNSPEC_INSERTR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
      emit_insn (gen_vinsertvr_internal_<mode> (operands[0], operands[3],
@@ -4321,7 +4321,7 @@ (define_insn "vinsertvr_internal_<mode>"
                       (match_operand:VEC_I 2 "altivec_register_operand" "v")
                       (match_operand:VEC_I 3 "altivec_register_operand" "0")]
                      UNSPEC_INSERTR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vins<wd>vrx %0,%1,%2"
   [(set_attr "type" "vecsimple")])

@@ -4331,7 +4331,7 @@ (define_expand "vinsertgl_<mode>"
                     (match_operand:VI2 2 "altivec_register_operand")
                     (match_operand:SI 3 "register_operand")]
                    UNSPEC_INSERTL))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_vinsertgl_internal_<mode> (operands[0], operands[3],
@@ -4348,7 +4348,7 @@ (define_insn "vinsertgl_internal_<mode>"
                      (match_operand:SI 2 "register_operand" "r")
                      (match_operand:VEC_I 3 "altivec_register_operand" "0")]
                     UNSPEC_INSERTL))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
  "vins<wd>lx %0,%1,%2"
  [(set_attr "type" "vecsimple")])

@@ -4358,7 +4358,7 @@ (define_expand "vinsertgr_<mode>"
                     (match_operand:VI2 2 "altivec_register_operand")
                     (match_operand:SI 3 "register_operand")]
                    UNSPEC_INSERTR))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_vinsertgr_internal_<mode> (operands[0], operands[3],
@@ -4375,7 +4375,7 @@ (define_insn "vinsertgr_internal_<mode>"
                  (match_operand:SI 2 "register_operand" "r")
                  (match_operand:VEC_I 3 "altivec_register_operand" "0")]
                 UNSPEC_INSERTR))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
  "vins<wd>rx %0,%1,%2"
  [(set_attr "type" "vecsimple")])

@@ -4385,7 +4385,7 @@ (define_expand "vreplace_elt_<mode>"
                         (match_operand:<VEC_base> 2 "register_operand")
                         (match_operand:QI 3 "const_0_to_3_operand")]
                        UNSPEC_REPLACE_ELT))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
 {
    int index;
    /* Immediate value is the word index, convert to byte index and adjust for
@@ -4409,7 +4409,7 @@ (define_insn "vreplace_elt_<mode>_inst"
                         (match_operand:<VEC_base> 2 "register_operand" "r")
                         (match_operand:QI 3 "const_0_to_12_operand" "n")]
                        UNSPEC_REPLACE_ELT))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
  "vins<REPLACE_ELT_char> %0,%2,%3"
  [(set_attr "type" "vecsimple")])

@@ -4419,7 +4419,7 @@ (define_insn "vreplace_un_<mode>"
                 (match_operand:REPLACE_ELT 2 "register_operand" "r")
                 (match_operand:QI 3 "const_0_to_12_operand" "n")]
                UNSPEC_REPLACE_UN))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
  "vins<REPLACE_ELT_char> %0,%2,%3"
  [(set_attr "type" "vecsimple")])

@@ -5084,7 +5084,7 @@ (define_insn "vsx_sign_extend_v2di_v1ti"
   [(set (match_operand:V1TI 0 "vsx_register_operand" "=v")
        (unspec:V1TI [(match_operand:V2DI 1 "vsx_register_operand" "v")]
                     UNSPEC_VSX_SIGN_EXTEND))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
  "vextsd2q %0,%1"
 [(set_attr "type" "vecexts")])

@@ -5183,7 +5183,7 @@ (define_insn "extendditi2_vector"
   [(set (match_operand:TI 0 "gpc_reg_operand" "=v")
        (unspec:TI [(match_operand:TI 1 "gpc_reg_operand" "v")]
                     UNSPEC_EXTENDDITI2))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vextsd2q %0,%1"
   [(set_attr "type" "vecexts")])

@@ -5855,7 +5855,7 @@ (define_expand "vcmpnet"
        (not:V1TI
          (eq:V1TI (match_operand:V1TI 1 "altivec_register_operand")
                   (match_operand:V1TI 2 "altivec_register_operand"))))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
 {
   emit_insn (gen_eqvv1ti3 (operands[0], operands[1], operands[2]));
   emit_insn (gen_one_cmplv1ti2 (operands[0], operands[0]));
@@ -6429,7 +6429,7 @@ (define_insn "vsx_<xvcvbf16>"
   [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa")
        (unspec:V16QI [(match_operand:V16QI 1 "vsx_register_operand" "wa")]
                      XVCVBF16))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "<xvcvbf16> %x0,%x1"
   [(set_attr "type" "vecfloat")])

@@ -6437,7 +6437,7 @@ (define_insn "vec_mtvsrbmi"
   [(set (match_operand:V16QI 0 "altivec_register_operand" "=v")
         (unspec:V16QI [(match_operand:QI 1 "u6bit_cint_operand" "n")]
         UNSPEC_MTVSBM))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "mtvsrbmi %0,%1"
 )

@@ -6445,7 +6445,7 @@ (define_insn "vec_mtvsr_<mode>"
   [(set (match_operand:VSX_MM 0 "altivec_register_operand" "=v")
         (unspec:VSX_MM [(match_operand:DI 1 "gpc_reg_operand" "r")]
         UNSPEC_MTVSBM))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "mtvsr<wd>m %0,%1";
   [(set_attr "type" "vecsimple")])

@@ -6454,7 +6454,7 @@ (define_insn "vec_cntmb_<mode>"
         (unspec:DI [(match_operand:VSX_MM4 1 "altivec_register_operand" "v")
                     (match_operand:QI 2 "const_0_to_1_operand" "n")]
         UNSPEC_VCNTMB))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vcntmb<wd> %0,%1,%2"
   [(set_attr "type" "vecsimple")])

@@ -6462,7 +6462,7 @@ (define_insn "vec_extract_<mode>"
   [(set (match_operand:SI 0 "register_operand" "=r")
        (unspec:SI [(match_operand:VSX_MM 1 "altivec_register_operand" "v")]
        UNSPEC_VEXTRACT))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vextract<wd>m %0,%1"
   [(set_attr "type" "vecsimple")])

@@ -6470,7 +6470,7 @@ (define_insn "vec_expand_<mode>"
   [(set (match_operand:VSX_MM 0 "vsx_register_operand" "=v")
         (unspec:VSX_MM [(match_operand:VSX_MM 1 "vsx_register_operand" "v")]
         UNSPEC_VEXPAND))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vexpand<wd>m %0,%1"
   [(set_attr "type" "vecsimple")])

@@ -6479,7 +6479,7 @@ (define_insn "dives_<mode>"
         (unspec:VIlong [(match_operand:VIlong 1 "vsx_register_operand" "v")
                        (match_operand:VIlong 2 "vsx_register_operand" "v")]
         UNSPEC_VDIVES))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdives<wd> %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "<bits>")])
@@ -6489,7 +6489,7 @@ (define_insn "diveu_<mode>"
         (unspec:VIlong [(match_operand:VIlong 1 "vsx_register_operand" "v")
                        (match_operand:VIlong 2 "vsx_register_operand" "v")]
        UNSPEC_VDIVEU))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdiveu<wd> %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "<bits>")])
@@ -6498,7 +6498,7 @@ (define_insn "div<mode>3"
   [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
        (div:VIlong (match_operand:VIlong 1 "vsx_register_operand" "v")
                    (match_operand:VIlong 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdivs<wd> %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "<bits>")])
@@ -6507,7 +6507,7 @@ (define_insn "udiv<mode>3"
   [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
        (udiv:VIlong (match_operand:VIlong 1 "vsx_register_operand" "v")
                    (match_operand:VIlong 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vdivu<wd> %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "<bits>")])
@@ -6516,7 +6516,7 @@ (define_insn "mod<mode>3"
   [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
        (mod:VIlong (match_operand:VIlong 1 "vsx_register_operand" "v")
                    (match_operand:VIlong 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmods<wd> %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "<bits>")])
@@ -6525,7 +6525,7 @@ (define_insn "umod<mode>3"
   [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
        (umod:VIlong (match_operand:VIlong 1 "vsx_register_operand" "v")
                     (match_operand:VIlong 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmodu<wd> %0,%1,%2"
   [(set_attr "type" "vecdiv")
    (set_attr "size" "<bits>")])
@@ -6538,7 +6538,7 @@ (define_insn "smul<mode>3_highpart"
                     (ashiftrt
                       (match_operand:VIlong 2 "vsx_register_operand" "v")
                       (const_int 32))))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmulhs<wd> %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -6550,7 +6550,7 @@ (define_insn "umul<mode>3_highpart"
                        (ashiftrt
                          (match_operand:VIlong 2 "vsx_register_operand" "v")
                          (const_int 32))))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmulhu<wd> %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -6559,7 +6559,7 @@ (define_insn "mulv2di3"
   [(set (match_operand:V2DI 0 "vsx_register_operand" "=v")
        (mult:V2DI (match_operand:V2DI 1 "vsx_register_operand" "v")
                   (match_operand:V2DI 2 "vsx_register_operand" "v")))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmulld %0,%1,%2"
   [(set_attr "type" "veccomplex")])

@@ -6569,7 +6569,7 @@ (define_insn "xxspltiw_v4si"
   [(set (match_operand:V4SI 0 "register_operand" "=wa")
        (unspec:V4SI [(match_operand:SI 1 "s32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTIW))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
  "xxspltiw %x0,%1"
  [(set_attr "type" "vecperm")
   (set_attr "prefixed" "yes")])
@@ -6578,7 +6578,7 @@ (define_expand "xxspltiw_v4sf"
   [(set (match_operand:V4SF 0 "register_operand" "=wa")
        (unspec:V4SF [(match_operand:SF 1 "const_double_operand" "n")]
                     UNSPEC_XXSPLTIW))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
 {
   long value = rs6000_const_f32_to_i32 (operands[1]);
   emit_insn (gen_xxspltiw_v4sf_inst (operands[0], GEN_INT (value)));
@@ -6589,7 +6589,7 @@ (define_insn "xxspltiw_v4sf_inst"
   [(set (match_operand:V4SF 0 "register_operand" "=wa")
        (unspec:V4SF [(match_operand:SI 1 "c32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTIW))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
  "xxspltiw %x0,%1"
  [(set_attr "type" "vecperm")
   (set_attr "prefixed" "yes")])
@@ -6599,7 +6599,7 @@ (define_expand "xxspltidp_v2df"
   [(set (match_operand:V2DF 0 "register_operand" )
        (unspec:V2DF [(match_operand:SF 1 "const_double_operand")]
                     UNSPEC_XXSPLTIDP))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
 {
   long value = rs6000_const_f32_to_i32 (operands[1]);
   rs6000_emit_xxspltidp_v2df (operands[0], value);
@@ -6610,7 +6610,7 @@ (define_insn "xxspltidp_v2df_inst"
   [(set (match_operand:V2DF 0 "register_operand" "=wa")
        (unspec:V2DF [(match_operand:SI 1 "c32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTIDP))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxspltidp %x0,%1"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -6622,7 +6622,7 @@ (define_expand "xxsplti32dx_v4si"
                      (match_operand:QI 2 "u1bit_cint_operand" "n")
                      (match_operand:SI 3 "s32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTI32DX))]
- "TARGET_POWER10"
+ "TARGET_P10_VECTOR"
 {
   int index = INTVAL (operands[2]);

@@ -6641,7 +6641,7 @@ (define_insn "xxsplti32dx_v4si_inst"
                      (match_operand:QI 2 "u1bit_cint_operand" "n")
                      (match_operand:SI 3 "s32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTI32DX))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxsplti32dx %x0,%2,%3"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -6652,7 +6652,7 @@ (define_expand "xxsplti32dx_v4sf"
                      (match_operand:QI 2 "u1bit_cint_operand" "n")
                      (match_operand:SF 3 "const_double_operand" "n")]
                     UNSPEC_XXSPLTI32DX))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   int index = INTVAL (operands[2]);
   long value = rs6000_const_f32_to_i32 (operands[3]);
@@ -6670,7 +6670,7 @@ (define_insn "xxsplti32dx_v4sf_inst"
                      (match_operand:QI 2 "u1bit_cint_operand" "n")
                      (match_operand:SI 3 "s32bit_cint_operand" "n")]
                     UNSPEC_XXSPLTI32DX))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxsplti32dx %x0,%2,%3"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -6682,7 +6682,7 @@ (define_insn "xxblend_<mode>"
                     (match_operand:VM3 2 "register_operand" "wa")
                     (match_operand:VM3 3 "register_operand" "wa")]
                    UNSPEC_XXBLEND))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxblendv<VM3_char> %x0,%x1,%x2,%x3"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -6695,7 +6695,7 @@ (define_expand "xxpermx"
                      (match_operand:V16QI 3 "register_operand" "wa")
                      (match_operand:QI 4 "u8bit_cint_operand" "n")]
                     UNSPEC_XXPERMX))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
 {
   if (BYTES_BIG_ENDIAN)
     emit_insn (gen_xxpermx_inst (operands[0], operands[1],
@@ -6728,7 +6728,7 @@ (define_insn "xxpermx_inst"
                      (match_operand:V16QI 3 "register_operand" "v")
                      (match_operand:QI 4 "u3bit_cint_operand" "n")]
                     UNSPEC_XXPERMX))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "xxpermx %x0,%x1,%x2,%x3,%4"
   [(set_attr "type" "vecperm")
    (set_attr "prefixed" "yes")])
@@ -6741,7 +6741,7 @@ (define_insn "xxeval"
                      (match_operand:V2DI 3 "register_operand" "wa")
                      (match_operand:QI 4 "u8bit_cint_operand" "n")]
                     UNSPEC_XXEVAL))]
-   "TARGET_POWER10"
+   "TARGET_P10_VECTOR"
    "xxeval %x0,%x1,%x2,%x3,%4"
    [(set_attr "type" "vecperm")
     (set_attr "prefixed" "yes")])
@@ -6770,7 +6770,7 @@ (define_insn "vmsumcud"
                     (match_operand:V2DI 2 "register_operand" "v")
                    (match_operand:V1TI 3 "register_operand" "v")]
                   UNSPEC_VMSUMCUD))]
-  "TARGET_POWER10"
+  "TARGET_P10_VECTOR"
   "vmsumcud %0,%1,%2,%3"
   [(set_attr "type" "veccomplex")]
 )
diff --git a/gcc/testsuite/gcc.target/powerpc/pr116266.c 
b/gcc/testsuite/gcc.target/powerpc/pr116266.c
new file mode 100644
index 00000000000..ab8a7c26f8a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr116266.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_vsx } */
+/* { dg-options "-O2 -mdejagnu-cpu=power10 -mno-vsx" } */
+
+/* Verify there is no ICE, so ignore error messages.  */
+/* { dg-excess-errors "pr116266.c" } */
+
+#include "altivec.h"
+
+vector unsigned char
+foo (vector unsigned char a, vector unsigned char b, vector unsigned char c)
+{
+  return vec_ternarylogic (a, b, c, 128);
+}
--
2.45.2

Reply via email to