public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/meissner/heads/work141-ovpair)] Rename min/max functions. Sort built-ins.
@ 2023-10-27  4:12 Michael Meissner
  0 siblings, 0 replies; only message in thread
From: Michael Meissner @ 2023-10-27  4:12 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:ebc9c652e747356457fe7ae299acc3370ddb0505

commit ebc9c652e747356457fe7ae299acc3370ddb0505
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Oct 27 00:12:32 2023 -0400

    Rename min/max functions.  Sort built-ins.
    
    2023-10-27  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * config/rs6000/rs6000-builtins.def (__builtin_vpair*): Rename the
            min/max built-in functions.  Sort the entries alphabetically.  Add
            comments between the sections.
            * doc/extend.texi (PowerPC vector pair builtins): Likewise.
    
    gcc/testsuite/
    
            * gcc.target/powerpc/vector-pair-01.c: Rename min and max built-in
            functions.
            * gcc.target/powerpc/vector-pair-02.c: Likewise.
            * gcc.target/powerpc/vector-pair-03.c: Likewise.
            * gcc.target/powerpc/vector-pair-04.c: Likewise.
            * gcc.target/powerpc/vector-pair-05.c: Likewise.
            * gcc.target/powerpc/vector-pair-06.c: Likewise.
            * gcc.target/powerpc/vector-pair-07.c: Likewise.
            * gcc.target/powerpc/vector-pair-08.c: Likewise.

Diff:
---
 gcc/config/rs6000/rs6000-builtins.def             | 274 ++++++++++++----------
 gcc/doc/extend.texi                               | 116 ++++-----
 gcc/testsuite/gcc.target/powerpc/vector-pair-01.c |  70 +++---
 gcc/testsuite/gcc.target/powerpc/vector-pair-02.c |  77 +++---
 gcc/testsuite/gcc.target/powerpc/vector-pair-05.c |  54 ++++-
 gcc/testsuite/gcc.target/powerpc/vector-pair-06.c | 111 +++++++--
 gcc/testsuite/gcc.target/powerpc/vector-pair-07.c |  78 +++++-
 gcc/testsuite/gcc.target/powerpc/vector-pair-08.c | 102 ++++++--
 8 files changed, 571 insertions(+), 311 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def
index 026d22c0b47c..5c4a84b8ba90 100644
--- a/gcc/config/rs6000/rs6000-builtins.def
+++ b/gcc/config/rs6000/rs6000-builtins.def
@@ -4138,19 +4138,12 @@
   void __builtin_vsx_stxvp_internal (v256 *, v256);
     STXVP_INTERNAL stxvp_internal {mma}
 
-;; Vector pair built-in functions
+;; General vector pair built-in functions
 
   v256 __builtin_vpair_zero ();
     VPAIR_ZERO vpair_zero {mma}
 
-  vf __builtin_vpair_f32_extract_vector (v256, const int<1>);
-    VPAIR_F32_EXTRACT_VECTOR vpair_extract_vector_v8sf {mma,pair}
-
-  v256 __builtin_vpair_f32_assemble (vf, vf);
-    VPAIR_F32_ASSEMBLE vpair_assemble_v8sf {mma,pair}
-
-  v256 __builtin_vpair_f32_splat (float);
-    VPAIR_F32_SPLAT vpair_splat_v8sf {mma,pair}
+;; vector pair built-in functions for 8 32-bit float values
 
   v256 __builtin_vpair_f32_abs (v256);
     VPAIR_F32_ABS vpair_abs_v8sf2 {mma,pair}
@@ -4158,35 +4151,37 @@
   v256 __builtin_vpair_f32_add (v256, v256);
     VPAIR_F32_ADD vpair_add_v8sf3 {mma,pair}
 
+  float __builtin_vpair_f32_add_elements (v256);
+    VPAIR_F32_ADD_ELEMENTS vpair_reduc_plus_scale_v8sf {mma,pair}
+
+  v256 __builtin_vpair_f32_assemble (vf, vf);
+    VPAIR_F32_ASSEMBLE vpair_assemble_v8sf {mma,pair}
+
+  vf __builtin_vpair_f32_extract_vector (v256, const int<1>);
+    VPAIR_F32_EXTRACT_VECTOR vpair_extract_vector_v8sf {mma,pair}
+
   v256 __builtin_vpair_f32_fma (v256, v256, v256);
     VPAIR_F32_FMA vpair_fma_v8sf4 {mma,pair}
 
+  v256 __builtin_vpair_f32_max (v256, v256);
+    VPAIR_F32_MAX vpair_smax_v8sf3 {mma,pair}
+
+  v256 __builtin_vpair_f32_min (v256, v256);
+    VPAIR_F32_MIN vpair_smin_v8sf3 {mma,pair}
+
   v256 __builtin_vpair_f32_mul (v256, v256);
     VPAIR_F32_MUL vpair_mul_v8sf3 {mma,pair}
 
   v256 __builtin_vpair_f32_neg (v256);
     VPAIR_F32_NEG vpair_neg_v8sf2 {mma,pair}
 
-  v256 __builtin_vpair_f32_smax (v256, v256);
-    VPAIR_F32_SMAX vpair_smax_v8sf3 {mma,pair}
-
-  v256 __builtin_vpair_f32_smin (v256, v256);
-    VPAIR_F32_SMIN vpair_smin_v8sf3 {mma,pair}
+  v256 __builtin_vpair_f32_splat (float);
+    VPAIR_F32_SPLAT vpair_splat_v8sf {mma,pair}
 
   v256 __builtin_vpair_f32_sub (v256, v256);
     VPAIR_F32_SUB vpair_sub_v8sf3 {mma,pair}
 
-  float __builtin_vpair_f32_add_elements (v256);
-    VPAIR_F32_ADD_ELEMENTS vpair_reduc_plus_scale_v8sf {mma,pair}
-
-  vd __builtin_vpair_f64_extract_vector (v256, const int<1>);
-    VPAIR_F64_EXTRACT_VECTOR vpair_extract_vector_v4df {mma,pair}
-
-  v256 __builtin_vpair_f64_assemble (vd, vd);
-    VPAIR_F64_ASSEMBLE vpair_assemble_v4df {mma,pair}
-
-  v256 __builtin_vpair_f64_splat (double);
-    VPAIR_F64_SPLAT vpair_splat_v4df {mma,pair}
+;; vector pair built-in functions for 4 64-bit double values
 
   v256 __builtin_vpair_f64_abs (v256);
     VPAIR_F64_ABS vpair_abs_v4df2 {mma,pair}
@@ -4194,95 +4189,92 @@
   v256 __builtin_vpair_f64_add (v256, v256);
     VPAIR_F64_ADD vpair_add_v4df3 {mma,pair}
 
+  double __builtin_vpair_f64_add_elements (v256);
+    VPAIR_F64_ADD_ELEMENTS vpair_reduc_plus_scale_v4df {mma,pair}
+
+  v256 __builtin_vpair_f64_assemble (vd, vd);
+    VPAIR_F64_ASSEMBLE vpair_assemble_v4df {mma,pair}
+
+  vd __builtin_vpair_f64_extract_vector (v256, const int<1>);
+    VPAIR_F64_EXTRACT_VECTOR vpair_extract_vector_v4df {mma,pair}
+
   v256 __builtin_vpair_f64_fma (v256, v256, v256);
     VPAIR_F64_FMA vpair_fma_v4df4 {mma,pair}
 
+  v256 __builtin_vpair_f64_max (v256, v256);
+    VPAIR_F64_MAX vpair_smax_v4df3 {mma,pair}
+
+  v256 __builtin_vpair_f64_min (v256, v256);
+    VPAIR_F64_MIN vpair_smin_v4df3 {mma,pair}
+
   v256 __builtin_vpair_f64_mul (v256, v256);
     VPAIR_F64_MUL vpair_mul_v4df3 {mma,pair}
 
   v256 __builtin_vpair_f64_neg (v256);
     VPAIR_F64_NEG vpair_neg_v4df2 {mma,pair}
 
-  v256 __builtin_vpair_f64_smax (v256, v256);
-    VPAIR_F64_SMAX vpair_smax_v4df3 {mma,pair}
-
-  v256 __builtin_vpair_f64_smin (v256, v256);
-    VPAIR_F64_SMIN vpair_smin_v4df3 {mma,pair}
+  v256 __builtin_vpair_f64_splat (double);
+    VPAIR_F64_SPLAT vpair_splat_v4df {mma,pair}
 
   v256 __builtin_vpair_f64_sub (v256, v256);
     VPAIR_F64_SUB vpair_sub_v4df3 {mma,pair}
 
-  double __builtin_vpair_f64_add_elements (v256);
-    VPAIR_F64_ADD_ELEMENTS vpair_reduc_plus_scale_v4df {mma,pair}
+;; vector pair built-in functions for 32 8-bit unsigned char or
+;; signed char values
 
-  vuc __builtin_vpair_i8u_extract_vector (v256, const int<1>);
-    VPAIR_I8U_EXTRACT_VECTOR vpair_extract_vector_v32qi {mma,pair}
+  v256 __builtin_vpair_i8_add (v256, v256);
+    VPAIR_I8_ADD vpair_add_v32qi3 {mma,pair}
 
-  v256 __builtin_vpair_i8u_assemble (vuc, vuc);
-    VPAIR_I8U_ASSEMBLE vpair_assemble_v32qi {mma,pair}
+  v256 __builtin_vpair_i8_and (v256, v256);
+    VPAIR_I8_AND vpair_and_v32qi3 {mma,pair}
 
-  v256 __builtin_vpair_i8u_splat (unsigned char);
-    VPAIR_I8U_SPLAT vpair_splat_v32qi {mma,pair}
+  v256 __builtin_vpair_i8_assemble (vsc, vsc);
+    VPAIR_I8_ASSEMBLE vpair_assemble_v32qi {mma,pair}
 
   vsc __builtin_vpair_i8_extract_vector (v256, const int<1>);
     VPAIR_I8_EXTRACT_VECTOR vpair_extract_vector_v32qi {mma,pair}
 
-  v256 __builtin_vpair_i8_assemble (vsc, vsc);
-    VPAIR_I8_ASSEMBLE vpair_assemble_v32qi {mma,pair}
-
   v256 __builtin_vpair_i8_splat (signed char);
     VPAIR_I8_SPLAT vpair_splat_v32qi {mma,pair}
 
-  v256 __builtin_vpair_i8_add (v256, v256);
-    VPAIR_I8_ADD vpair_add_v32qi3 {mma,pair}
-
-  v256 __builtin_vpair_i8_and (v256, v256);
-    VPAIR_I8_AND vpair_and_v32qi3 {mma,pair}
-
   v256 __builtin_vpair_i8_ior (v256, v256);
     VPAIR_I8_IOR vpair_ior_v32qi3 {mma,pair}
 
+  v256 __builtin_vpair_i8_max (v256, v256);
+    VPAIR_I8_MAX vpair_smax_v32qi3 {mma,pair}
+
+  v256 __builtin_vpair_i8_min (v256, v256);
+    VPAIR_I8_MIN vpair_smin_v32qi3 {mma,pair}
+
   v256 __builtin_vpair_i8_neg (v256);
     VPAIR_I8_NEG vpair_neg_v32qi2 {mma,pair}
 
   v256 __builtin_vpair_i8_not (v256);
     VPAIR_I8_NOT vpair_not_v32qi2 {mma,pair}
 
-  v256 __builtin_vpair_i8_smax (v256, v256);
-    VPAIR_I8_SMAX vpair_smax_v32qi3 {mma,pair}
-
-  v256 __builtin_vpair_i8_smin (v256, v256);
-    VPAIR_I8_SMIN vpair_smin_v32qi3 {mma,pair}
-
   v256 __builtin_vpair_i8_sub (v256, v256);
     VPAIR_I8_SUB vpair_sub_v32qi3 {mma,pair}
 
-  v256 __builtin_vpair_i8_umax (v256, v256);
-    VPAIR_I8_UMAX vpair_umax_v32qi3 {mma,pair}
-
-  v256 __builtin_vpair_i8_umin (v256, v256);
-    VPAIR_I8_UMIN vpair_umin_v32qi3 {mma,pair}
-
   v256 __builtin_vpair_i8_xor (v256, v256);
     VPAIR_I8_XOR vpair_xor_v32qi3 {mma,pair}
 
-  vus __builtin_vpair_i16u_extract_vector (v256, const int<1>);
-    VPAIR_I16U_EXTRACT_VECTOR vpair_extract_vector_v16hi {mma,pair}
+  v256 __builtin_vpair_i8u_assemble (vuc, vuc);
+    VPAIR_I8U_ASSEMBLE vpair_assemble_v32qi {mma,pair}
 
-  v256 __builtin_vpair_i16u_assemble (vus, vus);
-    VPAIR_I16U_ASSEMBLE vpair_assemble_v16hi {mma,pair}
+  vuc __builtin_vpair_i8u_extract_vector (v256, const int<1>);
+    VPAIR_I8U_EXTRACT_VECTOR vpair_extract_vector_v32qi {mma,pair}
 
-  v256 __builtin_vpair_i16u_splat (unsigned short);
-    VPAIR_I16U_SPLAT vpair_splat_v16hi {mma,pair}
+  v256 __builtin_vpair_i8u_max (v256, v256);
+    VPAIR_I8U_MAX vpair_umax_v32qi3 {mma,pair}
 
-  vss __builtin_vpair_i16_extract_vector (v256, const int<1>);
-    VPAIR_I16_EXTRACT_VECTOR vpair_extract_vector_v16hi {mma,pair}
+  v256 __builtin_vpair_i8u_min (v256, v256);
+    VPAIR_I8U_MIN vpair_umin_v32qi3 {mma,pair}
 
-  v256 __builtin_vpair_i16_assemble (vss, vss);
-    VPAIR_I16_ASSEMBLE vpair_assemble_v16hi {mma,pair}
+  v256 __builtin_vpair_i8u_splat (unsigned char);
+    VPAIR_I8U_SPLAT vpair_splat_v32qi {mma,pair}
 
-  v256 __builtin_vpair_i16_splat (short);
-    VPAIR_I16_SPLAT vpair_splat_v16hi {mma,pair}
+;; vector pair built-in functions for 16 16-bit unsigned short or
+;; signed short values
 
   v256 __builtin_vpair_i16_add (v256, v256);
     VPAIR_I16_ADD vpair_add_v16hi3 {mma,pair}
@@ -4290,50 +4282,53 @@
   v256 __builtin_vpair_i16_and (v256, v256);
     VPAIR_I16_AND vpair_and_v16hi3 {mma,pair}
 
+  v256 __builtin_vpair_i16_assemble (vss, vss);
+    VPAIR_I16_ASSEMBLE vpair_assemble_v16hi {mma,pair}
+
+  vss __builtin_vpair_i16_extract_vector (v256, const int<1>);
+    VPAIR_I16_EXTRACT_VECTOR vpair_extract_vector_v16hi {mma,pair}
+
   v256 __builtin_vpair_i16_ior (v256, v256);
     VPAIR_I16_IOR vpair_ior_v16hi3 {mma,pair}
 
+  v256 __builtin_vpair_i16_max (v256, v256);
+    VPAIR_I16_MAX vpair_smax_v16hi3 {mma,pair}
+
+  v256 __builtin_vpair_i16_min (v256, v256);
+    VPAIR_I16_MIN vpair_smin_v16hi3 {mma,pair}
+
   v256 __builtin_vpair_i16_neg (v256);
     VPAIR_I16_NEG vpair_neg_v16hi2 {mma,pair}
 
   v256 __builtin_vpair_i16_not (v256);
     VPAIR_I16_NOT vpair_not_v16hi2 {mma,pair}
 
-  v256 __builtin_vpair_i16_smax (v256, v256);
-    VPAIR_I16_SMAX vpair_smax_v16hi3 {mma,pair}
-
-  v256 __builtin_vpair_i16_smin (v256, v256);
-    VPAIR_I16_SMIN vpair_smin_v16hi3 {mma,pair}
+  v256 __builtin_vpair_i16_splat (short);
+    VPAIR_I16_SPLAT vpair_splat_v16hi {mma,pair}
 
   v256 __builtin_vpair_i16_sub (v256, v256);
     VPAIR_I16_SUB vpair_sub_v16hi3 {mma,pair}
 
-  v256 __builtin_vpair_i16_umax (v256, v256);
-    VPAIR_I16_UMAX vpair_umax_v16hi3 {mma,pair}
-
-  v256 __builtin_vpair_i16_umin (v256, v256);
-    VPAIR_I16_UMIN vpair_umin_v16hi3 {mma,pair}
-
   v256 __builtin_vpair_i16_xor (v256, v256);
     VPAIR_I16_XOR vpair_xor_v16hi3 {mma,pair}
 
-  vui __builtin_vpair_i32u_extract_vector (v256, const int<1>);
-    VPAIR_I32U_EXTRACT_VECTOR vpair_extract_vector_v8si {mma,pair}
+  v256 __builtin_vpair_i16u_assemble (vus, vus);
+    VPAIR_I16U_ASSEMBLE vpair_assemble_v16hi {mma,pair}
 
-  v256 __builtin_vpair_i32u_assemble (vui, vui);
-    VPAIR_I32U_ASSEMBLE vpair_assemble_v8si {mma,pair}
+  vus __builtin_vpair_i16u_extract_vector (v256, const int<1>);
+    VPAIR_I16U_EXTRACT_VECTOR vpair_extract_vector_v16hi {mma,pair}
 
-  v256 __builtin_vpair_i32u_splat (unsigned int);
-    VPAIR_I32U_SPLAT vpair_splat_v8si {mma,pair}
+  v256 __builtin_vpair_i16u_max (v256, v256);
+    VPAIR_I16U_MAX vpair_umax_v16hi3 {mma,pair}
 
-  vsi __builtin_vpair_i32_extract_vector (v256, const int<1>);
-    VPAIR_I32_EXTRACT_VECTOR vpair_extract_vector_v8si {mma,pair}
+  v256 __builtin_vpair_i16u_min (v256, v256);
+    VPAIR_I16U_MIN vpair_umin_v16hi3 {mma,pair}
 
-  v256 __builtin_vpair_i32_assemble (vsi, vsi);
-    VPAIR_I32_ASSEMBLE vpair_assemble_v8si {mma,pair}
+  v256 __builtin_vpair_i16u_splat (unsigned short);
+    VPAIR_I16U_SPLAT vpair_splat_v16hi {mma,pair}
 
-  v256 __builtin_vpair_i32_splat (int);
-    VPAIR_I32_SPLAT vpair_splat_v8si {mma,pair}
+;; vector pair built-in functions for 8 32-bit unsigned int or
+;; signed int values
 
   v256 __builtin_vpair_i32_add (v256, v256);
     VPAIR_I32_ADD vpair_add_v8si3 {mma,pair}
@@ -4341,83 +4336,104 @@
   v256 __builtin_vpair_i32_and (v256, v256);
     VPAIR_I32_AND vpair_and_v8si3 {mma,pair}
 
+  v256 __builtin_vpair_i32_assemble (vsi, vsi);
+    VPAIR_I32_ASSEMBLE vpair_assemble_v8si {mma,pair}
+
+  vsi __builtin_vpair_i32_extract_vector (v256, const int<1>);
+    VPAIR_I32_EXTRACT_VECTOR vpair_extract_vector_v8si {mma,pair}
+
   v256 __builtin_vpair_i32_ior (v256, v256);
     VPAIR_I32_IOR vpair_ior_v8si3 {mma,pair}
 
+  v256 __builtin_vpair_i32_max (v256, v256);
+    VPAIR_I32_MAX vpair_smax_v8si3 {mma,pair}
+
+  v256 __builtin_vpair_i32_min (v256, v256);
+    VPAIR_I32_MIN vpair_smin_v8si3 {mma,pair}
+
   v256 __builtin_vpair_i32_neg (v256);
     VPAIR_I32_NEG vpair_neg_v8si2 {mma,pair}
 
   v256 __builtin_vpair_i32_not (v256);
     VPAIR_I32_NOT vpair_not_v8si2 {mma,pair}
 
-  v256 __builtin_vpair_i32_smax (v256, v256);
-    VPAIR_I32_SMAX vpair_smax_v8si3 {mma,pair}
-
-  v256 __builtin_vpair_i32_smin (v256, v256);
-    VPAIR_I32_SMIN vpair_smin_v8si3 {mma,pair}
+  v256 __builtin_vpair_i32_splat (int);
+    VPAIR_I32_SPLAT vpair_splat_v8si {mma,pair}
 
   v256 __builtin_vpair_i32_sub (v256, v256);
     VPAIR_I32_SUB vpair_sub_v8si3 {mma,pair}
 
-  v256 __builtin_vpair_i32_umax (v256, v256);
-    VPAIR_I32_UMAX vpair_umax_v8si3 {mma,pair}
-
-  v256 __builtin_vpair_i32_umin (v256, v256);
-    VPAIR_I32_UMIN vpair_umin_v8si3 {mma,pair}
-
   v256 __builtin_vpair_i32_xor (v256, v256);
     VPAIR_I32_XOR vpair_xor_v8si3 {mma,pair}
 
-  vull __builtin_vpair_i64u_extract_vector (v256, const int<1>);
-    VPAIR_I64U_EXTRACT_VECTOR vpair_extract_vector_v4di {mma,pair}
+  v256 __builtin_vpair_i32u_assemble (vui, vui);
+    VPAIR_I32U_ASSEMBLE vpair_assemble_v8si {mma,pair}
 
-  v256 __builtin_vpair_i64u_assemble (vull, vull);
-    VPAIR_I64U_ASSEMBLE vpair_assemble_v4di {mma,pair}
+  vui __builtin_vpair_i32u_extract_vector (v256, const int<1>);
+    VPAIR_I32U_EXTRACT_VECTOR vpair_extract_vector_v8si {mma,pair}
 
-  v256 __builtin_vpair_i64u_splat (unsigned long long);
-    VPAIR_I64U_SPLAT vpair_splat_v4di {mma,pair}
+  v256 __builtin_vpair_i32u_max (v256, v256);
+    VPAIR_I32U_MAX vpair_umax_v8si3 {mma,pair}
 
-  vsll __builtin_vpair_i64_extract_vector (v256, const int<1>);
-    VPAIR_I64_EXTRACT_VECTOR vpair_extract_vector_v4di {mma,pair}
+  v256 __builtin_vpair_i32u_min (v256, v256);
+    VPAIR_I32U_MIN vpair_umin_v8si3 {mma,pair}
+
+  v256 __builtin_vpair_i32u_splat (unsigned int);
+    VPAIR_I32U_SPLAT vpair_splat_v8si {mma,pair}
+
+;; vector pair built-in functions for 4 64-bit unsigned long long or
+;; signed long long values
 
   v256 __builtin_vpair_i64_assemble (vsll, vsll);
     VPAIR_I64_ASSEMBLE vpair_assemble_v4di {mma,pair}
 
-  v256 __builtin_vpair_i64_splat (long long);
-    VPAIR_I64_SPLAT vpair_splat_v4di {mma,pair}
-
   v256 __builtin_vpair_i64_add (v256, v256);
     VPAIR_I64_ADD vpair_add_v4di3 {mma,pair}
 
+  long long __builtin_vpair_i64_add_elements (v256);
+    VPAIR_I64_ADD_ELEMENTS vpair_reduc_plus_scale_v4di {mma,pair,no32bit}
+
   v256 __builtin_vpair_i64_and (v256, v256);
     VPAIR_I64_AND vpair_and_v4di3 {mma,pair}
 
+  vsll __builtin_vpair_i64_extract_vector (v256, const int<1>);
+    VPAIR_I64_EXTRACT_VECTOR vpair_extract_vector_v4di {mma,pair}
+
   v256 __builtin_vpair_i64_ior (v256, v256);
     VPAIR_I64_IOR vpair_ior_v4di3 {mma,pair}
 
+  v256 __builtin_vpair_i64_max (v256, v256);
+    VPAIR_I64_MAX vpair_smax_v4di3 {mma,pair}
+
+  v256 __builtin_vpair_i64_min (v256, v256);
+    VPAIR_I64_MIN vpair_smin_v4di3 {mma,pair}
+
   v256 __builtin_vpair_i64_neg (v256);
     VPAIR_I64_NEG vpair_neg_v4di2 {mma,pair}
 
   v256 __builtin_vpair_i64_not (v256);
     VPAIR_I64_NOT vpair_not_v4di2 {mma,pair}
 
-  v256 __builtin_vpair_i64_smax (v256, v256);
-    VPAIR_I64_SMAX vpair_smax_v4di3 {mma,pair}
-
-  v256 __builtin_vpair_i64_smin (v256, v256);
-    VPAIR_I64_SMIN vpair_smin_v4di3 {mma,pair}
+  v256 __builtin_vpair_i64_splat (long long);
+    VPAIR_I64_SPLAT vpair_splat_v4di {mma,pair}
 
   v256 __builtin_vpair_i64_sub (v256, v256);
     VPAIR_I64_SUB vpair_sub_v4di3 {mma,pair}
 
-  v256 __builtin_vpair_i64_umax (v256, v256);
-    VPAIR_I64_UMAX vpair_umax_v4di3 {mma,pair}
-
-  v256 __builtin_vpair_i64_umin (v256, v256);
-    VPAIR_I64_UMIN vpair_umin_v4di3 {mma,pair}
-
   v256 __builtin_vpair_i64_xor (v256, v256);
     VPAIR_I64_XOR vpair_xor_v4di3 {mma,pair}
 
-  long long __builtin_vpair_i64_add_elements (v256);
-    VPAIR_I64_ADD_ELEMENTS vpair_reduc_plus_scale_v4di {mma,pair,no32bit}
+  v256 __builtin_vpair_i64u_assemble (vull, vull);
+    VPAIR_I64U_ASSEMBLE vpair_assemble_v4di {mma,pair}
+
+  vull __builtin_vpair_i64u_extract_vector (v256, const int<1>);
+    VPAIR_I64U_EXTRACT_VECTOR vpair_extract_vector_v4di {mma,pair}
+
+  v256 __builtin_vpair_i64u_max (v256, v256);
+    VPAIR_I64U_MAX vpair_umax_v4di3 {mma,pair}
+
+  v256 __builtin_vpair_i64u_min (v256, v256);
+    VPAIR_I64U_MIN vpair_umin_v4di3 {mma,pair}
+
+  v256 __builtin_vpair_i64u_splat (unsigned long long);
+    VPAIR_I64U_SPLAT vpair_splat_v4di {mma,pair}
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 94e132fa1258..42ddbcfa086b 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -21323,136 +21323,140 @@ The following built-in functions operate on pairs of
 @code{vector float} values:
 
 @smallexample
-vector float __builtin_vpair_f32_extract_vector (__vector_pair, int);
-__vector_pair __builtin_vpair_f32_assemble (vector float, vector float);
-__vector_pair __builtin_vpair_f32_splat (float);
 __vector_pair __builtin_vpair_f32_abs (__vector_pair);
 __vector_pair __builtin_vpair_f32_add (__vector_pair, __vector_pair);
+float __builtin_vpair_f32_add_elements (__vector_pair);
+__vector_pair __builtin_vpair_f32_assemble (vector float, vector float);
+vector float __builtin_vpair_f32_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_f32_fma (__vector_pair, __vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_f32_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_f32_min (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_f32_mul (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_f32_neg (__vector_pair);
-__vector_pair __builtin_vpair_f32_smax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_f32_smin (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_f32_splat (float);
 __vector_pair __builtin_vpair_f32_sub (__vector_pair, __vector_pair);
-float __builtin_vpair_f32_add_elements (__vector_pair);
 @end smallexample
 
 The following built-in functions operate on pairs of
 @code{vector double} values:
 
 @smallexample
-vector double __builtin_vpair_f64_extract_vector (__vector_pair, int);
-__vector_pair __builtin_vpair_f64_assemble (vector double, vector double);
-__vector_pair __builtin_vpair_f64_splat (double);
 __vector_pair __builtin_vpair_f64_abs (__vector_pair);
 __vector_pair __builtin_vpair_f64_add (__vector_pair, __vector_pair);
+double __builtin_vpair_f64_add_elements (__vector_pair);
+__vector_pair __builtin_vpair_f64_assemble (vector double, vector double);
+vector double __builtin_vpair_f64_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_f64_fma (__vector_pair, __vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_f64_mul (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_f64_neg (__vector_pair);
-__vector_pair __builtin_vpair_f64_smax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_f64_smin (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_f64_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_f64_min (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_f64_splat (double);
 __vector_pair __builtin_vpair_f64_sub (__vector_pair, __vector_pair);
-double __builtin_vpair_f64_add_elements (__vector_pair);
 @end smallexample
 
 The following built-in functions operate on pairs of
 @code{vector long long} or @code{vector unsigned long long} values:
 
 @smallexample
-vector long long __builtin_vpair_i64_extract_vector (__vector_pair, int);
-vector unsigned long long __builtin_vpair_i64u_extract_vector (__vector_pair, int);
-__vector_pair __builtin_vpair_i64_assemble (vector long long,
-                                            vector long long);
-__vector_pair __builtin_vpair_i64u_assemble (vector unsigned long long,
-                                             vector unsigned long long);
-__vector_pair __builtin_vpair_i64_splat (long long);
-__vector_pair __builtin_vpair_i64u_splat (unsigned long long);
 __vector_pair __builtin_vpair_i64_add (__vector_pair, __vector_pair);
+long long __builtin_vpair_i64_add_elements (__vector_pair);
 __vector_pair __builtin_vpair_i64_and (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i64_assemble (vector long long,
+                                            vector long long);
+vector long long __builtin_vpair_i64_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_i64_ior (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i64_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i64_min (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i64_neg (__vector_pair);
 __vector_pair __builtin_vpair_i64_not (__vector_pair);
-__vector_pair __builtin_vpair_i64_smax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i64_smin (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i64_splat (long long);
 __vector_pair __builtin_vpair_i64_sub (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i64_umax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i64_umin (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i64_xor (__vector_pair, __vector_pair);
-long long __builtin_vpair_i64_add_elements (__vector_pair);
+
+__vector_pair __builtin_vpair_i64u_assemble (vector unsigned long long,
+                                             vector unsigned long long);
+vector unsigned long long __builtin_vpair_i64u_extract_vector (__vector_pair, int);
+__vector_pair __builtin_vpair_i64u_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i64u_min (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i64u_splat (unsigned long long);
 @end smallexample
 
 The following built-in functions operate on pairs of
 @code{vector int} or @code{vector unsigned int} values:
 
 @smallexample
-vector int __builtin_vpair_i32_extract_vector (__vector_pair, int);
-vector unsigned int __builtin_vpair_i32u_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_i32_assemble (vector int, vector int);
-__vector_pair __builtin_vpair_i32u_assemble (vector unsigned int,
-                                             vector unsigned int);
-__vector_pair __builtin_vpair_i32_splat (int);
-__vector_pair __builtin_vpair_i32u_splat (unsigned int);
 __vector_pair __builtin_vpair_i32_add (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i32_and (__vector_pair, __vector_pair);
+vector int __builtin_vpair_i32_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_i32_ior (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i32_neg (__vector_pair);
 __vector_pair __builtin_vpair_i32_not (__vector_pair);
-__vector_pair __builtin_vpair_i32_smax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i32_smin (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i32_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i32_min (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i32_splat (int);
 __vector_pair __builtin_vpair_i32_sub (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i32_umax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i32_umin (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i32_xor (__vector_pair, __vector_pair);
+
+__vector_pair __builtin_vpair_i32u_assemble (vector unsigned int,
+                                             vector unsigned int);
+vector unsigned int __builtin_vpair_i32u_extract_vector (__vector_pair, int);
+__vector_pair __builtin_vpair_i32u_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i32u_min (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i32u_splat (unsigned int);
 @end smallexample
 
 The following built-in functions operate on pairs of
 @code{vector short} or @code{vector unsigned short} values:
 
 @smallexample
-vector short __builtin_vpair_i16_extract_vector (__vector_pair, int);
-vector unsigned short __builtin_vpair_i16u_extract_vector (__vector_pair, int);
+__vector_pair __builtin_vpair_i16_add (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i16_and (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i16_assemble (vector short,
                                             vector short);
-__vector_pair __builtin_vpair_i16u_assemble (vector unsigned short,
-                                             vector unsigned short);
 __vector_pair __builtin_vpair_i16_splat (short);
-__vector_pair __builtin_vpair_i16u_splat (unsigned short);
-__vector_pair __builtin_vpair_i16_add (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i16_and (__vector_pair, __vector_pair);
+vector short __builtin_vpair_i16_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_i16_ior (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i16_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i16_min (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i16_neg (__vector_pair);
 __vector_pair __builtin_vpair_i16_not (__vector_pair);
-__vector_pair __builtin_vpair_i16_smax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i16_smin (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i16_sub (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i16_umax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i16_umin (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i16_xor (__vector_pair, __vector_pair);
+
+__vector_pair __builtin_vpair_i16u_assemble (vector unsigned short,
+                                             vector unsigned short);
+vector unsigned short __builtin_vpair_i16u_extract_vector (__vector_pair, int);
+__vector_pair __builtin_vpair_i16u_splat (unsigned short);
+__vector_pair __builtin_vpair_i16u_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i16u_min (__vector_pair, __vector_pair);
 @end smallexample
 
 The following built-in functions operate on pairs of
 @code{vector signed char} or @code{vector unsigned char} values:
 
 @smallexample
-vector signed char __builtin_vpair_i8_extract_vector (__vector_pair, int);
-vector unsigned char __builtin_vpair_i8u_extract_vector (__vector_pair, int);
+__vector_pair __builtin_vpair_i8_add (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i8_and (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i8_assemble (vector signed char,
                                            vector signed char);
-__vector_pair __builtin_vpair_i8u_assemble (vector unsigned char,
-                                            vector unsigned char4);
+vector signed char __builtin_vpair_i8_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_i8_splat (signed char);
-__vector_pair __builtin_vpair_i8u_splat (unsigned char);
-__vector_pair __builtin_vpair_i8_add (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i8_and (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i8_ior (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i8_max (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i8_min (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i8_neg (__vector_pair);
 __vector_pair __builtin_vpair_i8_not (__vector_pair);
-__vector_pair __builtin_vpair_i8_smax (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i8_smin (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i8_sub (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i8_xor (__vector_pair, __vector_pair);
+
+__vector_pair __builtin_vpair_i8u_assemble (vector unsigned char,
+                                            vector unsigned char4);
+vector unsigned char __builtin_vpair_i8u_extract_vector (__vector_pair, int);
 __vector_pair __builtin_vpair_i8_umax (__vector_pair, __vector_pair);
 __vector_pair __builtin_vpair_i8_umin (__vector_pair, __vector_pair);
-__vector_pair __builtin_vpair_i8_xor (__vector_pair, __vector_pair);
+__vector_pair __builtin_vpair_i8u_splat (unsigned char);
 @end smallexample
 
 @node PowerPC Hardware Transactional Memory Built-in Functions
diff --git a/gcc/testsuite/gcc.target/powerpc/vector-pair-01.c b/gcc/testsuite/gcc.target/powerpc/vector-pair-01.c
index bd23f220f4f7..66f986b181b4 100644
--- a/gcc/testsuite/gcc.target/powerpc/vector-pair-01.c
+++ b/gcc/testsuite/gcc.target/powerpc/vector-pair-01.c
@@ -38,7 +38,7 @@ test_min (__vector_pair *dest,
 	  __vector_pair *y)
 {
   /* 2 lxvp, 2 xvmindp, 1 stxvp.  */
-  *dest = __builtin_vpair_f64_smin (*x, *y);
+  *dest = __builtin_vpair_f64_min (*x, *y);
 }
 
 void
@@ -47,7 +47,7 @@ test_max (__vector_pair *dest,
 	  __vector_pair *y)
 {
   /* 2 lxvp, 2 xvmaxdp, 1 stxvp.  */
-  *dest = __builtin_vpair_f64_smax (*x, *y);
+  *dest = __builtin_vpair_f64_max (*x, *y);
 }
 
 void
@@ -120,53 +120,55 @@ test_nfms (__vector_pair *dest,
 }
 
 void
-test_splat (__vector_pair *dest, double x)
+test_splat_arg (__vector_pair *dest, double x)
 {
   /* 1 xxpermdi, 1 stxvp.  */
   *dest = __builtin_vpair_f64_splat (x);
 }
 
 void
-test_zero (__vector_pair *dest)
+test_splat_mem (__vector_pair *dest, double *p)
 {
-  /* 2 xxspltib, 1 stxvp.  */
-  *dest = __builtin_vpair_zero ();
+  /* 1 lxvdsx, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_f64_splat (*p);
 }
 
-vector double
-test_extract_vector_0 (__vector_pair *x)
+void
+test_splat_const_0 (__vector_pair *dest)
 {
-  /* 1 lxp.  */
-  return __builtin_vpair_f64_extract_vector (*x, 0);
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_f64_splat (0.0);
 }
 
-vector double
-test_extract_vector_1 (__vector_pair *x)
+void
+test_splat_const_1 (__vector_pair *dest)
 {
-  /* 1 lxp.  */
-  return __builtin_vpair_f64_extract_vector (*x, 1);
+  /* 1 xxspltidp, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_f64_splat (1.0);
 }
 
-double
-test_add_elements (__vector_pair *x)
+void
+test_zero (__vector_pair *dest)
 {
-  /* 1 lxvp, 1 xvadddp, 1 xxpermdi, 1 fadd/xsadddp.  */
-  return __builtin_vpair_f64_add_elements (*x);
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_zero ();
 }
 
-/* { dg-final { scan-assembler-times {\mlxv\M}          2 } } */
-/* { dg-final { scan-assembler-times {\mlxvp\M}        26 } } */
-/* { dg-final { scan-assembler-times {\mstxvp\M}       14 } } */
-/* { dg-final { scan-assembler-times {\mxvabsdp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvadddp\M}      3 } } */
-/* { dg-final { scan-assembler-times {\mxvmadd.dp\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxvmindp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvmaxdp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvmsub.dp\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxvmuldp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvnabsdp\M}     2 } } */
-/* { dg-final { scan-assembler-times {\mxvnegdp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvnmadd.dp\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxvnmsub.dp\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxvsubdp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxxpermdi\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mlxvdsx\M}      1 } } */
+/* { dg-final { scan-assembler-times {\mlxvp\M}       25 } } */
+/* { dg-final { scan-assembler-times {\mstxvp\M}      17 } } */
+/* { dg-final { scan-assembler-times {\mxvabsdp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxvadddp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxvmadd.dp\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mxvmaxdp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxvmindp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxvmsub.dp\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mxvmuldp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxvnabsdp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvnegdp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxvnmadd.dp\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mxvnmsub.dp\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mxvsubdp\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mxxpermdi\M}    1 } } */
+/* { dg-final { scan-assembler-times {\mxxspltib\M}    4 } } */
+/* { dg-final { scan-assembler-times {\mxxspltidp\M}   1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/vector-pair-02.c b/gcc/testsuite/gcc.target/powerpc/vector-pair-02.c
index 3ee12f59bf26..9b9bfc4a6f76 100644
--- a/gcc/testsuite/gcc.target/powerpc/vector-pair-02.c
+++ b/gcc/testsuite/gcc.target/powerpc/vector-pair-02.c
@@ -38,7 +38,7 @@ test_max (__vector_pair *dest,
 	  __vector_pair *y)
 {
   /* 2 lxvp, 2 xvmaxsp, 1 stxvp.  */
-  *dest = __builtin_vpair_f32_smax (*x, *y);
+  *dest = __builtin_vpair_f32_max (*x, *y);
 }
 
 void
@@ -47,7 +47,7 @@ test_min (__vector_pair *dest,
 	  __vector_pair *y)
 {
   /* 2 lxvp, 2 xvminsp, 1 stxvp.  */
-  *dest = __builtin_vpair_f32_smin (*x, *y);
+  *dest = __builtin_vpair_f32_min (*x, *y);
 }
 
 void
@@ -120,57 +120,56 @@ test_nfms (__vector_pair *dest,
 }
 
 void
-test_splat (__vector_pair *dest, float x)
+test_splat_arg (__vector_pair *dest, float x)
 {
-  /* 1 xxpermdi, 1 stxvp.  */
+  /* 1 xscvdpspn, 1 xxspltw, 1 stxvp.  */
   *dest = __builtin_vpair_f32_splat (x);
 }
 
 void
-test_zero (__vector_pair *dest)
+test_splat_mem (__vector_pair *dest, float *p)
 {
-  /* 2 xxspltib, 1 stxvp.  */
-  *dest = __builtin_vpair_zero ();
+  /* 1 lxvwsx, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_f32_splat (*p);
 }
 
-vector float
-test_extract_vector_0 (__vector_pair *x)
+void
+test_splat_const_0 (__vector_pair *dest)
 {
-  /* 1 lxp.  */
-  return __builtin_vpair_f32_extract_vector (*x, 0);
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_f32_splat (0.0f);
 }
 
-vector float
-test_extract_vector_1 (__vector_pair *x)
+void
+test_splat_const_1 (__vector_pair *dest)
 {
-  /* 1 lxp.  */
-  return __builtin_vpair_f32_extract_vector (*x, 1);
+  /* 1 xxspltiw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_f32_splat (1.0f);
 }
 
-float
-test_add_elements (__vector_pair *x)
+void
+test_zero (__vector_pair *dest)
 {
-  /* 1 lxp, 3 xvaddsp, 2 vsldoi, 1 xscvspdp.  */
-  return __builtin_vpair_f32_add_elements (*x);
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_zero ();
 }
 
-/* { dg-final { scan-assembler-times {\mlxv\M}          2 } } */
-/* { dg-final { scan-assembler-times {\mlxvp\M}        26 } } */
-/* { dg-final { scan-assembler-times {\mstxvp\M}       14 } } */
-/* { dg-final { scan-assembler-times {\mvsldoi\M}       2 } } */
-/* { dg-final { scan-assembler-times {\mxscvdpspn\M}    1 } } */
-/* { dg-final { scan-assembler-times {\mxscvspdp\M}     1 } } */
-/* { dg-final { scan-assembler-times {\mxvabssp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvaddsp\M}      5 } } */
-/* { dg-final { scan-assembler-times {\mxvmadd.sp\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxvmaxsp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvminsp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvmsub.sp\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxvmulsp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvnabssp\M}     2 } } */
-/* { dg-final { scan-assembler-times {\mxvnegsp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxvnmadd.sp\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxvnmsub.sp\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxvsubsp\M}      2 } } */
-/* { dg-final { scan-assembler-times {\mxxspltib\M}     2 } } */
-/* { dg-final { scan-assembler-times {\mxxspltw\M}      1 } } */
+/* { dg-final { scan-assembler-times {\mlxvp\M}      25 } } */
+/* { dg-final { scan-assembler-times {\mlxvwsx\M}     1 } } */
+/* { dg-final { scan-assembler-times {\mstxvp\M}     17 } } */
+/* { dg-final { scan-assembler-times {\mxscvdpspn\M}  1 } } */
+/* { dg-final { scan-assembler-times {\mxvabssp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvaddsp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvmadd.sp\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mxvmaxsp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvminsp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvmsub.sp\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mxvmulsp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvnabssp\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mxvnegsp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxvnmadd.sp\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mxvnmsub.sp\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mxvsubsp\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxxspltib\M}   4 } } */
+/* { dg-final { scan-assembler-times {\mxxspltiw\M}   1 } } */
+/* { dg-final { scan-assembler-times {\mxxspltw\M}    1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/vector-pair-05.c b/gcc/testsuite/gcc.target/powerpc/vector-pair-05.c
index 820d6b21d057..ed5ca9e3a5a5 100644
--- a/gcc/testsuite/gcc.target/powerpc/vector-pair-05.c
+++ b/gcc/testsuite/gcc.target/powerpc/vector-pair-05.c
@@ -56,7 +56,7 @@ test_smax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxsd, 1 stxvp.  */
-  *dest = __builtin_vpair_i64_smax (*x, *y);
+  *dest = __builtin_vpair_i64_max (*x, *y);
 }
 
 void
@@ -65,7 +65,7 @@ test_smin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminsd, 1 stxvp.  */
-  *dest = __builtin_vpair_i64_smin (*x, *y);
+  *dest = __builtin_vpair_i64_min (*x, *y);
 }
 
 void
@@ -74,7 +74,7 @@ test_umax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxud, 1 stxvp.  */
-  *dest = __builtin_vpair_i64_umax (*x, *y);
+  *dest = __builtin_vpair_i64u_max (*x, *y);
 }
 
 void
@@ -83,7 +83,7 @@ test_umin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminud, 1 stxvp.  */
-  *dest = __builtin_vpair_i64_umin (*x, *y);
+  *dest = __builtin_vpair_i64u_min (*x, *y);
 }
 
 void
@@ -175,7 +175,48 @@ test_nor (__vector_pair *dest,
   *dest = __builtin_vpair_i64_not (a);
 }
 
-/* { dg-final { scan-assembler-times {\mstxvp\M}   18 } } */
+void
+test_splat_arg (__vector_pair *dest, long long x)
+{
+  /* 1 mtvsrdd, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i64_splat (x);
+}
+
+void
+test_splat_mem (__vector_pair *dest, long long *p)
+{
+  /* 1 lxvdsx, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i64_splat (*p);
+}
+
+void
+test_splatu_arg (__vector_pair *dest, unsigned long long x)
+{
+  /* 1 mtvsrdd, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i64u_splat (x);
+}
+
+void
+test_splatu_mem (__vector_pair *dest, unsigned long long *p)
+{
+  /* 1 lxvdsx, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i64u_splat (*p);
+}
+
+void
+test_zero (__vector_pair *dest)
+{
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_zero ();
+}
+
+/* We don't expect an exact count for xxlor, in case the compiler adds some
+   extra vector move instructions.  */
+
+/* { dg-final { scan-assembler-times {\mlxvdsx\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mlxvp\M}    34 } } */
+/* { dg-final { scan-assembler-times {\mmtvsrdd\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mstxvp\M}   23 } } */
 /* { dg-final { scan-assembler-times {\mvaddudm\M}  2 } } */
 /* { dg-final { scan-assembler-times {\mvmaxsd\M}   2 } } */
 /* { dg-final { scan-assembler-times {\mvmaxud\M}   2 } } */
@@ -187,6 +228,7 @@ test_nor (__vector_pair *dest,
 /* { dg-final { scan-assembler-times {\mxxlandc\M}  4 } } */
 /* { dg-final { scan-assembler-times {\mxxlnand\M}  4 } } */
 /* { dg-final { scan-assembler-times {\mxxlnor\M}   4 } } */
-/* { dg-final { scan-assembler-times {\mxxlor\M}    2 } } */
+/* { dg-final { scan-assembler       {\mxxlor\M}      } } */
 /* { dg-final { scan-assembler-times {\mxxlorc\M}   4 } } */
 /* { dg-final { scan-assembler-times {\mxxlxor\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mxxspltib\M} 2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/vector-pair-06.c b/gcc/testsuite/gcc.target/powerpc/vector-pair-06.c
index e61d916adc92..04ed6bd1f9de 100644
--- a/gcc/testsuite/gcc.target/powerpc/vector-pair-06.c
+++ b/gcc/testsuite/gcc.target/powerpc/vector-pair-06.c
@@ -56,7 +56,7 @@ test_smax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxsw, 1 stxvp.  */
-  *dest = __builtin_vpair_i32_smax (*x, *y);
+  *dest = __builtin_vpair_i32_max (*x, *y);
 }
 
 void
@@ -65,7 +65,7 @@ test_smin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminsw, 1 stxvp.  */
-  *dest = __builtin_vpair_i32_smin (*x, *y);
+  *dest = __builtin_vpair_i32_min (*x, *y);
 }
 
 void
@@ -74,7 +74,7 @@ test_umax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxuw, 1 stxvp.  */
-  *dest = __builtin_vpair_i32_umax (*x, *y);
+  *dest = __builtin_vpair_i32u_max (*x, *y);
 }
 
 void
@@ -83,7 +83,7 @@ test_umin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminuw, 1 stxvp.  */
-  *dest = __builtin_vpair_i32_umin (*x, *y);
+  *dest = __builtin_vpair_i32u_min (*x, *y);
 }
 
 void
@@ -175,19 +175,90 @@ test_nor (__vector_pair *dest,
   *dest = __builtin_vpair_i32_not (a);
 }
 
-/* { dg-final { scan-assembler-times {\mlxvp\M}    34 } } */
-/* { dg-final { scan-assembler-times {\mstxvp\M}   18 } } */
-/* { dg-final { scan-assembler-times {\mvadduwm\M}  2 } } */
-/* { dg-final { scan-assembler-times {\mvmaxsw\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvmaxuw\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvminsw\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvminuw\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvnegw\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mvsubuwm\M}  2 } } */
-/* { dg-final { scan-assembler-times {\mxxland\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxxlandc\M}  4 } } */
-/* { dg-final { scan-assembler-times {\mxxlnand\M}  4 } } */
-/* { dg-final { scan-assembler-times {\mxxlnor\M}   4 } } */
-/* { dg-final { scan-assembler-times {\mxxlor\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxxlorc\M}   4 } } */
-/* { dg-final { scan-assembler-times {\mxxlxor\M}   2 } } */
+void
+test_splat_arg (__vector_pair *dest, int x)
+{
+  /* 1 mtvsrws, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32_splat (x);
+}
+
+void
+test_splat_const_1 (__vector_pair *dest)
+{
+  /* 1 vspltisw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32_splat (1);
+}
+
+void
+test_splat_const_512 (__vector_pair *dest)
+{
+  /* 1 xxspltiw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32_splat (512);
+}
+
+void
+test_splat_mem (__vector_pair *dest, int *p)
+{
+  /* 1 lxvwsx, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32_splat (*p);
+}
+
+void
+test_splatu_arg (__vector_pair *dest, unsigned int x)
+{
+  /* 1 mtvsrws, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32u_splat (x);
+}
+
+void
+test_splatu_mem (__vector_pair *dest, unsigned int *p)
+{
+  /* 1 lxvwsx, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32u_splat (*p);
+}
+
+void
+test_splatu_const_1 (__vector_pair *dest)
+{
+  /* 1 vspltisw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32u_splat (1);
+}
+
+void
+test_splatu_const_512 (__vector_pair *dest)
+{
+  /* 1 xxspltiw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i32u_splat (512);
+}
+
+void
+test_zero (__vector_pair *dest)
+{
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_zero ();
+}
+
+/* We don't expect an exact count for xxlor, in case the compiler adds some
+   extra vector move instructions.  */
+
+/* { dg-final { scan-assembler-times {\mlxvp\M}     34 } } */
+/* { dg-final { scan-assembler-times {\mlxvwsx\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mmtvsrws\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mstxvp\M}    27 } } */
+/* { dg-final { scan-assembler-times {\mvadduwm\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mvmaxsw\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvmaxuw\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvminsw\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvminuw\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvnegw\M}     2 } } */
+/* { dg-final { scan-assembler-times {\mvspltisw\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mvsubuwm\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mxxland\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxxlandc\M}   4 } } */
+/* { dg-final { scan-assembler-times {\mxxlnand\M}   4 } } */
+/* { dg-final { scan-assembler-times {\mxxlnor\M}    4 } } */
+/* { dg-final { scan-assembler       {\mxxlor\M}       } } */
+/* { dg-final { scan-assembler-times {\mxxlorc\M}    4 } } */
+/* { dg-final { scan-assembler-times {\mxxlxor\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxxspltib\M}  2 } } */
+/* { dg-final { scan-assembler-times {\mxxspltiw\M}  2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/vector-pair-07.c b/gcc/testsuite/gcc.target/powerpc/vector-pair-07.c
index cc205c66be62..6f8a4e43295d 100644
--- a/gcc/testsuite/gcc.target/powerpc/vector-pair-07.c
+++ b/gcc/testsuite/gcc.target/powerpc/vector-pair-07.c
@@ -56,7 +56,7 @@ test_smax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxsh, 1 stxvp.  */
-  *dest = __builtin_vpair_i16_smax (*x, *y);
+  *dest = __builtin_vpair_i16_max (*x, *y);
 }
 
 void
@@ -65,7 +65,7 @@ test_smin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminsh, 1 stxvp.  */
-  *dest = __builtin_vpair_i16_smin (*x, *y);
+  *dest = __builtin_vpair_i16_min (*x, *y);
 }
 
 void
@@ -74,7 +74,7 @@ test_umax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxuh, 1 stxvp.  */
-  *dest = __builtin_vpair_i16_umax (*x, *y);
+  *dest = __builtin_vpair_i16u_max (*x, *y);
 }
 
 void
@@ -83,7 +83,7 @@ test_umin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminuh, 1 stxvp.  */
-  *dest = __builtin_vpair_i16_umin (*x, *y);
+  *dest = __builtin_vpair_i16u_min (*x, *y);
 }
 
 void
@@ -175,19 +175,83 @@ test_nor (__vector_pair *dest,
   *dest = __builtin_vpair_i16_not (a);
 }
 
+void
+test_splat_const_1 (__vector_pair *dest)
+{
+  /* 1 vspltish, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16_splat (1);
+}
+
+void
+test_splat_const_512 (__vector_pair *dest)
+{
+  /* 1 xxspltiw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16_splat (512);
+}
+
+void
+test_splat_mem (__vector_pair *dest, short *p)
+{
+  /* 1 lxsihzx, 1 vsplth, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16_splat (*p);
+}
+
+void
+test_splatu_arg (__vector_pair *dest, unsigned short x)
+{
+  /* 1 mtvsrd, 1 vsplth, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16u_splat (x);
+}
+
+void
+test_splatu_mem (__vector_pair *dest, unsigned short *p)
+{
+  /* 1 lxsihzx, 1 vsplth, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16u_splat (*p);
+}
+
+void
+test_splatu_const_1 (__vector_pair *dest)
+{
+  /* 1 vspltish, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16u_splat (1);
+}
+
+void
+test_splatu_const_512 (__vector_pair *dest)
+{
+  /* 1 xxspltiw, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i16u_splat (512);
+}
+
+void
+test_zero (__vector_pair *dest)
+{
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_zero ();
+}
+
+/* We don't expect an exact count for xxlor, in case the compiler adds some
+   extra vector move instructions.  */
+
+/* { dg-final { scan-assembler-times {\mlxsihzx\M}   2 } } */
 /* { dg-final { scan-assembler-times {\mlxvp\M}     34 } } */
-/* { dg-final { scan-assembler-times {\mstxvp\M}    18 } } */
+/* { dg-final { scan-assembler-times {\mmtvsrd\M}    1 } } */
+/* { dg-final { scan-assembler-times {\mstxvp\M}    26 } } */
 /* { dg-final { scan-assembler-times {\mvadduhm\M}   2 } } */
 /* { dg-final { scan-assembler-times {\mvmaxsh\M}    2 } } */
 /* { dg-final { scan-assembler-times {\mvmaxuh\M}    2 } } */
 /* { dg-final { scan-assembler-times {\mvminsh\M}    2 } } */
 /* { dg-final { scan-assembler-times {\mvminuh\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvsplth\M}    3 } } */
+/* { dg-final { scan-assembler-times {\mvspltish\M}  2 } } */
 /* { dg-final { scan-assembler-times {\mvsubuhm\M}   4 } } */
 /* { dg-final { scan-assembler-times {\mxxland\M}    2 } } */
 /* { dg-final { scan-assembler-times {\mxxlandc\M}   4 } } */
 /* { dg-final { scan-assembler-times {\mxxlnand\M}   4 } } */
 /* { dg-final { scan-assembler-times {\mxxlnor\M}    4 } } */
-/* { dg-final { scan-assembler-times {\mxxlor\M}     2 } } */
+/* { dg-final { scan-assembler       {\mxxlor\M}       } } */
 /* { dg-final { scan-assembler-times {\mxxlorc\M}    4 } } */
 /* { dg-final { scan-assembler-times {\mxxlxor\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxxspltib\M}  1 } } */
+/* { dg-final { scan-assembler-times {\mxxspltib\M}  3 } } */
+/* { dg-final { scan-assembler-times {\mxxspltiw\M}  2 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/vector-pair-08.c b/gcc/testsuite/gcc.target/powerpc/vector-pair-08.c
index 9e4e4cdfffa7..4af92d7c81b8 100644
--- a/gcc/testsuite/gcc.target/powerpc/vector-pair-08.c
+++ b/gcc/testsuite/gcc.target/powerpc/vector-pair-08.c
@@ -57,7 +57,7 @@ test_smax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxsb, 1 stxvp.  */
-  *dest = __builtin_vpair_i8_smax (*x, *y);
+  *dest = __builtin_vpair_i8_max (*x, *y);
 }
 
 void
@@ -66,7 +66,7 @@ test_smin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminsb, 1 stxvp.  */
-  *dest = __builtin_vpair_i8_smin (*x, *y);
+  *dest = __builtin_vpair_i8_min (*x, *y);
 }
 
 void
@@ -75,7 +75,7 @@ test_umax (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vmaxub, 1 stxvp.  */
-  *dest = __builtin_vpair_i8_umax (*x, *y);
+  *dest = __builtin_vpair_i8u_max (*x, *y);
 }
 
 void
@@ -84,7 +84,7 @@ test_umin (__vector_pair *dest,
 	   __vector_pair *y)
 {
   /* 2 lxvp, 2 vminub, 1 stxvp.  */
-  *dest = __builtin_vpair_i8_umin (*x, *y);
+  *dest = __builtin_vpair_i8u_min (*x, *y);
 }
 
 void
@@ -176,19 +176,81 @@ test_nor (__vector_pair *dest,
   *dest = __builtin_vpair_i8_not (a);
 }
 
-/* { dg-final { scan-assembler-times {\mlxvp\M}    34 } } */
-/* { dg-final { scan-assembler-times {\mstxvp\M}   18 } } */
-/* { dg-final { scan-assembler-times {\mvaddubm\M}  2 } } */
-/* { dg-final { scan-assembler-times {\mvmaxsb\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvmaxub\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvminsb\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvminub\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mvsububm\M}  4 } } */
-/* { dg-final { scan-assembler-times {\mxxland\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxxlandc\M}  4 } } */
-/* { dg-final { scan-assembler-times {\mxxlnand\M}  4 } } */
-/* { dg-final { scan-assembler-times {\mxxlnor\M}   4 } } */
-/* { dg-final { scan-assembler-times {\mxxlor\M}    2 } } */
-/* { dg-final { scan-assembler-times {\mxxlorc\M}   4 } } */
-/* { dg-final { scan-assembler-times {\mxxlxor\M}   2 } } */
-/* { dg-final { scan-assembler-times {\mxxspltib\M} 1 } } */
+void
+test_splat_const_1 (__vector_pair *dest)
+{
+  /* 1 xxspltib, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8_splat (1);
+}
+
+void
+test_splat_const_65 (__vector_pair *dest)
+{
+  /* 1 xxspltib, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8_splat (65);
+}
+
+void
+test_splat_mem (__vector_pair *dest, signed char *p)
+{
+  /* 1 lxsibzx, 1 vsplth, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8_splat (*p);
+}
+
+void
+test_splatu_arg (__vector_pair *dest, unsigned char x)
+{
+  /* 1 mtvsrd, 1 vspltb, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8u_splat (x);
+}
+
+void
+test_splatu_mem (__vector_pair *dest, unsigned char *p)
+{
+  /* 1 lxsibzx, 1 vspltb, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8u_splat (*p);
+}
+
+void
+test_splatu_const_1 (__vector_pair *dest)
+{
+  /* 1 xxspltib, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8u_splat (1);
+}
+
+void
+test_splatu_const_65 (__vector_pair *dest)
+{
+  /* 1 xxspltib, 1 xxlor, 1 stxvp.  */
+  *dest = __builtin_vpair_i8u_splat (65);
+}
+
+void
+test_zero (__vector_pair *dest)
+{
+  /* 2 xxspltib, 1 stxvp.  */
+  *dest = __builtin_vpair_zero ();
+}
+
+/* We don't expect an exact count for xxlor, in case the compiler adds some
+   extra vector move instructions.  */
+
+/* { dg-final { scan-assembler-times {\mlxsibzx\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mlxvp\M}     34 } } */
+/* { dg-final { scan-assembler-times {\mmtvsrd\M}    1 } } */
+/* { dg-final { scan-assembler-times {\mstxvp\M}    26 } } */
+/* { dg-final { scan-assembler-times {\mvaddubm\M}   2 } } */
+/* { dg-final { scan-assembler-times {\mvmaxsb\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvmaxub\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvminsb\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvminub\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mvspltb\M}    3 } } */
+/* { dg-final { scan-assembler-times {\mvsububm\M}   4 } } */
+/* { dg-final { scan-assembler-times {\mxxland\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxxlandc\M}   4 } } */
+/* { dg-final { scan-assembler-times {\mxxlnand\M}   4 } } */
+/* { dg-final { scan-assembler-times {\mxxlnor\M}    4 } } */
+/* { dg-final { scan-assembler       {\mxxlor\M}       } } */
+/* { dg-final { scan-assembler-times {\mxxlorc\M}    4 } } */
+/* { dg-final { scan-assembler-times {\mxxlxor\M}    2 } } */
+/* { dg-final { scan-assembler-times {\mxxspltib\M}  7 } } */

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

only message in thread, other threads:[~2023-10-27  4:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-27  4:12 [gcc(refs/users/meissner/heads/work141-ovpair)] Rename min/max functions. Sort built-ins Michael Meissner

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).