At the moment there are no extended mnemonics for vclfn(h,l) and vcrnf
defined in the Principles of Operation.  Thus, remove the suffix "s"
from the builtins and expanders and introduce a further operand for the
data type.

gcc/ChangeLog:

        * config/s390/s390-builtin-types.def: Update to reflect latest
        changes.
        * config/s390/s390-builtins.def: Remove suffix s from
        s390_vclfn(h,l)s and s390_vcrnfs.
        * config/s390/s390.md: Similar, remove suffix s from unspec
        definitions.
        * config/s390/vecintrin.h (vec_extend_to_fp32_hi): Redefine.
        (vec_extend_to_fp32_lo): Redefine.
        (vec_round_from_fp32): Redefine.
        * config/s390/vx-builtins.md (vclfnhs_v8hi): Remove suffix s.
        (vclfnh_v8hi): Add with extra operand.
        (vclfnls_v8hi): Remove suffix s.
        (vclfnl_v8hi): Add with extra operand.
        (vcrnfs_v8hi): Remove suffix s.
        (vcrnf_v8hi): Add with extra operand.
---
OK for mainline?

 gcc/config/s390/s390-builtin-types.def |  4 ++--
 gcc/config/s390/s390-builtins.def      |  6 +++---
 gcc/config/s390/s390.md                |  6 +++---
 gcc/config/s390/vecintrin.h            |  6 +++---
 gcc/config/s390/vx-builtins.md         | 27 ++++++++++++++------------
 5 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/gcc/config/s390/s390-builtin-types.def 
b/gcc/config/s390/s390-builtin-types.def
index ce51ae8cd3f..c3d09b42835 100644
--- a/gcc/config/s390/s390-builtin-types.def
+++ b/gcc/config/s390/s390-builtin-types.def
@@ -273,7 +273,6 @@ DEF_FN_TYPE_2 (BT_FN_V2DI_V2DF_V2DF, BT_V2DI, BT_V2DF, 
BT_V2DF)
 DEF_FN_TYPE_2 (BT_FN_V2DI_V2DI_V2DI, BT_V2DI, BT_V2DI, BT_V2DI)
 DEF_FN_TYPE_2 (BT_FN_V2DI_V4SI_V4SI, BT_V2DI, BT_V4SI, BT_V4SI)
 DEF_FN_TYPE_2 (BT_FN_V4SF_FLT_INT, BT_V4SF, BT_FLT, BT_INT)
-DEF_FN_TYPE_2 (BT_FN_V4SF_UV8HI_UINT, BT_V4SF, BT_UV8HI, BT_UINT)
 DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR)
 DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_V4SF, BT_V4SF, BT_V4SF, BT_V4SF)
 DEF_FN_TYPE_2 (BT_FN_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI)
@@ -324,7 +323,6 @@ DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_USHORT_INT, BT_UV8HI, 
BT_UV8HI, BT_USHORT, BT_I
 DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, BT_UV8HI, 
BT_INT)
 DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI_INTPTR, BT_UV8HI, BT_UV8HI, BT_UV8HI, 
BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI, BT_UV8HI, BT_UV8HI, BT_UV8HI, 
BT_UV8HI)
-DEF_FN_TYPE_3 (BT_FN_UV8HI_V4SF_V4SF_UINT, BT_UV8HI, BT_V4SF, BT_V4SF, BT_UINT)
 DEF_FN_TYPE_3 (BT_FN_V16QI_UV16QI_UV16QI_INTPTR, BT_V16QI, BT_UV16QI, 
BT_UV16QI, BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI_INTPTR, BT_V16QI, BT_V16QI, BT_V16QI, 
BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V16QI_V16QI_V16QI_V16QI, BT_V16QI, BT_V16QI, BT_V16QI, 
BT_V16QI)
@@ -340,6 +338,7 @@ DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_INT_INTPTR, BT_V2DI, 
BT_V2DF, BT_INT, BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V2DI_V2DF_V2DF_INTPTR, BT_V2DI, BT_V2DF, BT_V2DF, 
BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V2DI_V2DI_V2DI_INTPTR, BT_V2DI, BT_V2DI, BT_V2DI, 
BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V2DI_V4SI_V4SI_V2DI, BT_V2DI, BT_V4SI, BT_V4SI, BT_V2DI)
+DEF_FN_TYPE_3 (BT_FN_V4SF_UV8HI_UINT_UINT, BT_V4SF, BT_UV8HI, BT_UINT, BT_UINT)
 DEF_FN_TYPE_3 (BT_FN_V4SF_V2DF_INT_INT, BT_V4SF, BT_V2DF, BT_INT, BT_INT)
 DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_FLT_INT, BT_V4SF, BT_V4SF, BT_FLT, BT_INT)
 DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_UCHAR_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR, 
BT_UCHAR)
@@ -377,6 +376,7 @@ DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UINTCONSTPTR_UCHAR, 
BT_UV4SI, BT_UV4SI, B
 DEF_FN_TYPE_4 (BT_FN_UV4SI_UV4SI_UV4SI_UV4SI_INT, BT_UV4SI, BT_UV4SI, 
BT_UV4SI, BT_UV4SI, BT_INT)
 DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_INT_INTPTR, BT_UV8HI, BT_UV8HI, 
BT_UV8HI, BT_INT, BT_INTPTR)
 DEF_FN_TYPE_4 (BT_FN_UV8HI_UV8HI_UV8HI_UV8HI_INT, BT_UV8HI, BT_UV8HI, 
BT_UV8HI, BT_UV8HI, BT_INT)
+DEF_FN_TYPE_4 (BT_FN_UV8HI_V4SF_V4SF_UINT_UINT, BT_UV8HI, BT_V4SF, BT_V4SF, 
BT_UINT, BT_UINT)
 DEF_FN_TYPE_4 (BT_FN_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, 
BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG)
 DEF_FN_TYPE_4 (BT_FN_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, 
BT_UV4SI, BT_UINTPTR, BT_ULONGLONG)
 DEF_FN_TYPE_4 (BT_FN_VOID_V4SI_V4SI_INTPTR_ULONGLONG, BT_VOID, BT_V4SI, 
BT_V4SI, BT_INTPTR, BT_ULONGLONG)
diff --git a/gcc/config/s390/s390-builtins.def 
b/gcc/config/s390/s390-builtins.def
index 02ff516c677..0d4e20ea425 100644
--- a/gcc/config/s390/s390-builtins.def
+++ b/gcc/config/s390/s390-builtins.def
@@ -3025,10 +3025,10 @@ B_DEF      (s390_vstrszf,                vstrszv4si,    
    0,
 
 /* arch 14 builtins */
 
-B_DEF      (s390_vclfnhs,                vclfnhs_v8hi,      0,                 
 B_NNPA,             O2_U4,              BT_FN_V4SF_UV8HI_UINT)
-B_DEF      (s390_vclfnls,                vclfnls_v8hi,      0,                 
 B_NNPA,             O2_U4,              BT_FN_V4SF_UV8HI_UINT)
+B_DEF      (s390_vclfnh,                 vclfnh_v8hi,       0,                 
 B_NNPA,             O2_U4 | O3_U4,      BT_FN_V4SF_UV8HI_UINT_UINT)
+B_DEF      (s390_vclfnl,                 vclfnl_v8hi,       0,                 
 B_NNPA,             O2_U4 | O3_U4,      BT_FN_V4SF_UV8HI_UINT_UINT)
 
-B_DEF      (s390_vcrnfs,                 vcrnfs_v8hi,       0,                 
 B_NNPA,             O3_U4,              BT_FN_UV8HI_V4SF_V4SF_UINT)
+B_DEF      (s390_vcrnf,                  vcrnf_v8hi,        0,                 
 B_NNPA,             O3_U4 | O4_U4,      BT_FN_UV8HI_V4SF_V4SF_UINT_UINT)
 
 B_DEF      (s390_vcfn,                   vcfn_v8hi,         0,                 
 B_NNPA,             O2_U4,              BT_FN_UV8HI_UV8HI_UINT)
 B_DEF      (s390_vcnf,                   vcnf_v8hi,         0,                 
 B_NNPA,             O2_U4,              BT_FN_UV8HI_UV8HI_UINT)
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 8aa40ba5b7f..65d98163193 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -241,9 +241,9 @@
    UNSPEC_VEC_VFMIN
    UNSPEC_VEC_VFMAX
 
-   UNSPEC_NNPA_VCLFNHS_V8HI
-   UNSPEC_NNPA_VCLFNLS_V8HI
-   UNSPEC_NNPA_VCRNFS_V8HI
+   UNSPEC_NNPA_VCLFNH_V8HI
+   UNSPEC_NNPA_VCLFNL_V8HI
+   UNSPEC_NNPA_VCRNF_V8HI
 
    UNSPEC_NNPA_VCFN_V8HI
    UNSPEC_NNPA_VCNF_V8HI
diff --git a/gcc/config/s390/vecintrin.h b/gcc/config/s390/vecintrin.h
index 9abbd761067..c690c41d8e4 100644
--- a/gcc/config/s390/vecintrin.h
+++ b/gcc/config/s390/vecintrin.h
@@ -174,9 +174,9 @@ __lcbb(const void *ptr, int bndry)
 #define vec_vsterf_flt vec_vlerf_flt
 #define vec_vsterg_dbl vec_vlerg_dbl
 
-#define vec_extend_to_fp32_hi __builtin_s390_vclfnhs
-#define vec_extend_to_fp32_lo __builtin_s390_vclfnls
-#define vec_round_from_fp32 __builtin_s390_vcrnfs
+#define vec_extend_to_fp32_hi(X, Y) __builtin_s390_vclfnh((X), 2, (Y))
+#define vec_extend_to_fp32_lo(X, Y) __builtin_s390_vclfnl((X), 2, (Y))
+#define vec_round_from_fp32(X, Y, Z) __builtin_s390_vcrnf((X), (Y), (Z), 2)
 #define vec_convert_to_fp16 __builtin_s390_vcfn
 #define vec_convert_from_fp16 __builtin_s390_vcnf
 #define vec_gather_element __builtin_s390_vec_gather_element
diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md
index 432d81a719f..322756f6d36 100644
--- a/gcc/config/s390/vx-builtins.md
+++ b/gcc/config/s390/vx-builtins.md
@@ -2220,36 +2220,39 @@
 ;; NNPA Facility
 ;;
 
-(define_insn "vclfnhs_v8hi"
+(define_insn "vclfnh_v8hi"
   [(set (match_operand:V4SF                0 "register_operand"  "=v")
        (unspec:V4SF [(vec_select:V4HI
                       (match_operand:V8HI 1 "register_operand"   "v")
                       (parallel [(const_int 0) (const_int 1) (const_int 2) 
(const_int 3)]))
-                     (match_operand:QI    2 "const_mask_operand" "C")]
-                    UNSPEC_NNPA_VCLFNHS_V8HI))]
+                     (match_operand:QI    2 "const_mask_operand" "C")
+                     (match_operand:QI    3 "const_mask_operand" "C")]
+                    UNSPEC_NNPA_VCLFNH_V8HI))]
   "TARGET_NNPA"
-  "vclfnh\t%v0,%v1,2,%2"
+  "vclfnh\t%v0,%v1,%2,%3"
   [(set_attr "op_type" "VRR")])
 
-(define_insn "vclfnls_v8hi"
+(define_insn "vclfnl_v8hi"
   [(set (match_operand:V4SF                0 "register_operand"   "=v")
        (unspec:V4SF [(vec_select:V4HI
                       (match_operand:V8HI 1 "register_operand"   "v")
                       (parallel [(const_int 4) (const_int 5) (const_int 6) 
(const_int 7)]))
-                     (match_operand:QI    2 "const_mask_operand"  "C")]
-                    UNSPEC_NNPA_VCLFNLS_V8HI))]
+                     (match_operand:QI    2 "const_mask_operand"  "C")
+                     (match_operand:QI    3 "const_mask_operand"  "C")]
+                    UNSPEC_NNPA_VCLFNL_V8HI))]
   "TARGET_NNPA"
-  "vclfnl\t%v0,%v1,2,%2"
+  "vclfnl\t%v0,%v1,%2,%3"
   [(set_attr "op_type" "VRR")])
 
-(define_insn "vcrnfs_v8hi"
+(define_insn "vcrnf_v8hi"
   [(set (match_operand:V8HI               0 "register_operand"   "=v")
        (unspec:V8HI [(match_operand:V4SF 1 "register_operand"    "v")
                      (match_operand:V4SF 2 "register_operand"    "v")
-                     (match_operand:QI   3 "const_mask_operand"  "C")]
-                    UNSPEC_NNPA_VCRNFS_V8HI))]
+                     (match_operand:QI   3 "const_mask_operand"  "C")
+                     (match_operand:QI   4 "const_mask_operand"  "C")]
+                    UNSPEC_NNPA_VCRNF_V8HI))]
   "TARGET_NNPA"
-  "vcrnf\t%v0,%v1,%v2,%3,2"
+  "vcrnf\t%v0,%v1,%v2,%3,%4"
   [(set_attr "op_type" "VRR")])
 
 (define_insn "vcfn_v8hi"
-- 
2.43.0

Reply via email to