Reflect latest updates for vec_(load,store)_len(,_r) which means that
all types except character based types are deprecated.
gcc/ChangeLog:
* config/s390/s390-builtins.def (s390_vec_load_len): Deprecate
some overloads.
(s390_vec_store_len): Deprecate some overloads.
(s390_vec_load_len_r): Add.
(s390_vec_store_len_r): Add.
* config/s390/s390-c.cc (s390_vec_load_len_r): Add.
(s390_vec_store_len_r): Add.
* config/s390/vecintrin.h (vec_load_len_r): Redefine.
(vec_store_len_r): Redefine.
---
gcc/config/s390/s390-builtins.def | 40 ++++++++++++++++++-------------
gcc/config/s390/s390-c.cc | 2 ++
gcc/config/s390/vecintrin.h | 6 ++---
3 files changed, 28 insertions(+), 20 deletions(-)
diff --git a/gcc/config/s390/s390-builtins.def
b/gcc/config/s390/s390-builtins.def
index 24941ed0351..d9af9b13def 100644
--- a/gcc/config/s390/s390-builtins.def
+++ b/gcc/config/s390/s390-builtins.def
@@ -529,14 +529,18 @@ OB_DEF_VAR (s390_vec_load_pair_u64, MAX,
0,
OB_DEF (s390_vec_load_len,
s390_vec_load_len_s8,s390_vec_load_len_dbl,B_VX,
BT_FN_OV4SI_INTCONSTPTR_UINT)
OB_DEF_VAR (s390_vec_load_len_s8, s390_vll, 0,
0, BT_OV_V16QI_SCHARCONSTPTR_UINT)
OB_DEF_VAR (s390_vec_load_len_u8, s390_vll, 0,
0, BT_OV_UV16QI_UCHARCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_s16, s390_vll, 0,
0, BT_OV_V8HI_SHORTCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_u16, s390_vll, 0,
0, BT_OV_UV8HI_USHORTCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_s32, s390_vll, 0,
0, BT_OV_V4SI_INTCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_u32, s390_vll, 0,
0, BT_OV_UV4SI_UINTCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_s64, s390_vll, 0,
0, BT_OV_V2DI_LONGLONGCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_u64, s390_vll, 0,
0, BT_OV_UV2DI_ULONGLONGCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_flt, s390_vll, B_VXE,
0, BT_OV_V4SF_FLTCONSTPTR_UINT)
-OB_DEF_VAR (s390_vec_load_len_dbl, s390_vll, 0,
0, BT_OV_V2DF_DBLCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_s16, s390_vll, B_DEP,
0, BT_OV_V8HI_SHORTCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_u16, s390_vll, B_DEP,
0, BT_OV_UV8HI_USHORTCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_s32, s390_vll, B_DEP,
0, BT_OV_V4SI_INTCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_u32, s390_vll, B_DEP,
0, BT_OV_UV4SI_UINTCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_s64, s390_vll, B_DEP,
0, BT_OV_V2DI_LONGLONGCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_u64, s390_vll, B_DEP,
0, BT_OV_UV2DI_ULONGLONGCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_flt, s390_vll, B_DEP | B_VXE,
0, BT_OV_V4SF_FLTCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_dbl, s390_vll, B_DEP,
0, BT_OV_V2DF_DBLCONSTPTR_UINT)
+
+OB_DEF (s390_vec_load_len_r,
s390_vec_load_len_r_s8,s390_vec_load_len_r_u8,B_VXE,
BT_FN_OV4SI_INTCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_r_s8, s390_vlrlr, 0,
0, BT_OV_V16QI_SCHARCONSTPTR_UINT)
+OB_DEF_VAR (s390_vec_load_len_r_u8, s390_vlrlr, 0,
0, BT_OV_UV16QI_UCHARCONSTPTR_UINT)
B_DEF (s390_vll, vllv16qi, 0,
B_VX, 0, BT_FN_V16QI_UINT_VOIDCONSTPTR)
B_DEF (s390_vlrlr, vlrlrv16qi, 0,
B_VXE, 0, BT_FN_V16QI_UINT_VOIDCONSTPTR)
@@ -808,14 +812,18 @@ OB_DEF_VAR (s390_vec_xstw4_flt, MAX,
B_VXE,
OB_DEF (s390_vec_store_len,
s390_vec_store_len_s8,s390_vec_store_len_dbl,B_VX,
BT_FN_VOID_OV4SI_VOIDPTR_UINT)
OB_DEF_VAR (s390_vec_store_len_s8, s390_vstl, 0,
0, BT_OV_VOID_V16QI_SCHARPTR_UINT)
OB_DEF_VAR (s390_vec_store_len_u8, s390_vstl, 0,
0, BT_OV_VOID_UV16QI_UCHARPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_s16, s390_vstl, 0,
0, BT_OV_VOID_V8HI_SHORTPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_u16, s390_vstl, 0,
0, BT_OV_VOID_UV8HI_USHORTPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_s32, s390_vstl, 0,
0, BT_OV_VOID_V4SI_INTPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_u32, s390_vstl, 0,
0, BT_OV_VOID_UV4SI_UINTPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_s64, s390_vstl, 0,
0, BT_OV_VOID_V2DI_LONGLONGPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_u64, s390_vstl, 0,
0, BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_flt, s390_vstl, B_VXE,
0, BT_OV_VOID_V4SF_FLTPTR_UINT)
-OB_DEF_VAR (s390_vec_store_len_dbl, s390_vstl, 0,
0, BT_OV_VOID_V2DF_DBLPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_s16, s390_vstl, B_DEP,
0, BT_OV_VOID_V8HI_SHORTPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_u16, s390_vstl, B_DEP,
0, BT_OV_VOID_UV8HI_USHORTPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_s32, s390_vstl, B_DEP,
0, BT_OV_VOID_V4SI_INTPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_u32, s390_vstl, B_DEP,
0, BT_OV_VOID_UV4SI_UINTPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_s64, s390_vstl, B_DEP,
0, BT_OV_VOID_V2DI_LONGLONGPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_u64, s390_vstl, B_DEP,
0, BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_flt, s390_vstl, B_DEP | B_VXE,
0, BT_OV_VOID_V4SF_FLTPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_dbl, s390_vstl, B_DEP,
0, BT_OV_VOID_V2DF_DBLPTR_UINT)
+
+OB_DEF (s390_vec_store_len_r,
s390_vec_store_len_r_s8,s390_vec_store_len_r_u8,B_VXE,
BT_FN_VOID_OV4SI_VOIDPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_r_s8, s390_vstrlr, 0,
0, BT_OV_VOID_V16QI_SCHARPTR_UINT)
+OB_DEF_VAR (s390_vec_store_len_r_u8, s390_vstrlr, 0,
0, BT_OV_VOID_UV16QI_UCHARPTR_UINT)
B_DEF (s390_vstl, vstlv16qi, 0,
B_VX, 0, BT_FN_VOID_V16QI_UINT_VOIDPTR)
B_DEF (s390_vstrlr, vstrlrv16qi, 0,
B_VXE, 0, BT_FN_VOID_V16QI_UINT_VOIDPTR)
diff --git a/gcc/config/s390/s390-c.cc b/gcc/config/s390/s390-c.cc
index bda60ef8670..311d74a275e 100644
--- a/gcc/config/s390/s390-c.cc
+++ b/gcc/config/s390/s390-c.cc
@@ -706,6 +706,7 @@ s390_adjust_builtin_arglist (unsigned int ob_fcode, tree
decl,
case S390_OVERLOADED_BUILTIN_s390_vec_sel:
case S390_OVERLOADED_BUILTIN_s390_vec_insert:
case S390_OVERLOADED_BUILTIN_s390_vec_load_len:
+ case S390_OVERLOADED_BUILTIN_s390_vec_load_len_r:
/* Swap the first to arguments. It is better to do it here
instead of the header file to avoid operand checking
throwing error messages for a weird operand index. */
@@ -718,6 +719,7 @@ s390_adjust_builtin_arglist (unsigned int ob_fcode, tree
decl,
}
break;
case S390_OVERLOADED_BUILTIN_s390_vec_store_len:
+ case S390_OVERLOADED_BUILTIN_s390_vec_store_len_r:
if (dest_arg_index == 1 || dest_arg_index == 2)
{
folded_args->quick_push (fully_fold_convert (TREE_VALUE
(arg_chain),
diff --git a/gcc/config/s390/vecintrin.h b/gcc/config/s390/vecintrin.h
index b804eeddba6..bda8471e5b5 100644
--- a/gcc/config/s390/vecintrin.h
+++ b/gcc/config/s390/vecintrin.h
@@ -115,10 +115,6 @@ __lcbb(const void *ptr, int bndry)
#define vec_round(X) __builtin_s390_vfi((X), 4, 4)
#define vec_doublee(X) __builtin_s390_vflls((X))
#define vec_floate(X) __builtin_s390_vflrd((X), 0, 0)
-#define vec_load_len_r(X,L) \
- (__vector unsigned char)__builtin_s390_vlrlr((L),(X))
-#define vec_store_len_r(X,Y,L) \
- __builtin_s390_vstrlr((__vector signed char)(X),(L),(Y))
#define vec_all_nan(a) \
__extension__ ({ \
@@ -265,6 +261,7 @@ __lcbb(const void *ptr, int bndry)
#define vec_ld2f __builtin_s390_vec_ld2f
#define vec_load_bndry __builtin_s390_vec_load_bndry
#define vec_load_len __builtin_s390_vec_load_len
+#define vec_load_len_r __builtin_s390_vec_load_len_r
#define vec_load_pair __builtin_s390_vec_load_pair
#define vec_madd __builtin_s390_vec_madd
#define vec_max __builtin_s390_vec_max
@@ -322,6 +319,7 @@ __lcbb(const void *ptr, int bndry)
#define vec_srl __builtin_s390_vec_srl
#define vec_st2f __builtin_s390_vec_st2f
#define vec_store_len __builtin_s390_vec_store_len
+#define vec_store_len_r __builtin_s390_vec_store_len_r
#define vec_sub_u128 __builtin_s390_vec_sub_u128
#define vec_subc __builtin_s390_vec_subc
#define vec_subc_u128 __builtin_s390_vec_subc_u128
--
2.47.0