]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
s390: Update vec_(load,store)_len(,_r)
authorStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Mon, 20 Jan 2025 09:01:10 +0000 (10:01 +0100)
committerStefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
Mon, 20 Jan 2025 09:01:10 +0000 (10:01 +0100)
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
gcc/config/s390/s390-c.cc
gcc/config/s390/vecintrin.h

index 24941ed03515ce515a7bc8dcb0a235c7d2b28289..d9af9b13def1b9df474231b6edb6335fee093dd7 100644 (file)
@@ -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)
index bda60ef8670e96eb28a86bcbe6b749b3047d6cca..311d74a275e21ea0fd787c3aea5dff0245c9dcd8 100644 (file)
@@ -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),
index b804eeddba6a98c1dcb4adfb59f795684a7f9f84..bda8471e5b5e64424bdcdd078776b6d871670129 100644 (file)
@@ -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