]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
s390: Streamline NNPA builtins with their LLVM counterparts
authorStefan Schulze Frielinghaus <stefansf@linux.ibm.com>
Mon, 27 Nov 2023 09:30:54 +0000 (10:30 +0100)
committerStefan Schulze Frielinghaus <stefansf@linux.ibm.com>
Mon, 27 Nov 2023 09:30:54 +0000 (10:30 +0100)
For the opaque NNP-data type prefer unsigned over signed integer types.

gcc/ChangeLog:

* config/s390/s390-builtin-types.def: Add/remove types.
* config/s390/s390-builtins.def
(s390_vclfnhs,s390_vclfnls,s390_vcrnfs,s390_vcfn,s390_vcnf):
Replace type V8HI with UV8HI.

gcc/testsuite/ChangeLog:

* gcc.target/s390/zvector/vec-nnpa-fp16-convert.c: Replace V8HI
types with UV8HI.
* gcc.target/s390/zvector/vec-nnpa-fp32-convert-1.c: Dito.
* gcc.target/s390/zvector/vec_convert_from_fp16.c: Dito.
* gcc.target/s390/zvector/vec_convert_to_fp16.c: Dito.
* gcc.target/s390/zvector/vec_extend_to_fp32_hi.c: Dito.
* gcc.target/s390/zvector/vec_extend_to_fp32_lo.c: Dito.
* gcc.target/s390/zvector/vec_round_from_fp32.c: Dito.

gcc/config/s390/s390-builtin-types.def
gcc/config/s390/s390-builtins.def
gcc/testsuite/gcc.target/s390/zvector/vec-nnpa-fp16-convert.c
gcc/testsuite/gcc.target/s390/zvector/vec-nnpa-fp32-convert-1.c
gcc/testsuite/gcc.target/s390/zvector/vec_convert_from_fp16.c
gcc/testsuite/gcc.target/s390/zvector/vec_convert_to_fp16.c
gcc/testsuite/gcc.target/s390/zvector/vec_extend_to_fp32_hi.c
gcc/testsuite/gcc.target/s390/zvector/vec_extend_to_fp32_lo.c
gcc/testsuite/gcc.target/s390/zvector/vec_round_from_fp32.c

index 22ee348dbbb653b9f0118006a623b493928061d0..6799b883e2996c6e819f6bf34ff835428740d09c 100644 (file)
@@ -265,9 +265,9 @@ 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_V4SF_V8HI_UINT, BT_V4SF, BT_V8HI, BT_UINT)
 DEF_FN_TYPE_2 (BT_FN_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI)
 DEF_FN_TYPE_2 (BT_FN_V4SI_INT_VOIDCONSTPTR, BT_V4SI, BT_INT, BT_VOIDCONSTPTR)
 DEF_FN_TYPE_2 (BT_FN_V4SI_UV4SI_UV4SI, BT_V4SI, BT_UV4SI, BT_UV4SI)
@@ -279,7 +279,6 @@ DEF_FN_TYPE_2 (BT_FN_V8HI_BV8HI_V8HI, BT_V8HI, BT_BV8HI, BT_V8HI)
 DEF_FN_TYPE_2 (BT_FN_V8HI_UV8HI_UV8HI, BT_V8HI, BT_UV8HI, BT_UV8HI)
 DEF_FN_TYPE_2 (BT_FN_V8HI_V16QI_V16QI, BT_V8HI, BT_V16QI, BT_V16QI)
 DEF_FN_TYPE_2 (BT_FN_V8HI_V4SI_V4SI, BT_V8HI, BT_V4SI, BT_V4SI)
-DEF_FN_TYPE_2 (BT_FN_V8HI_V8HI_UINT, BT_V8HI, BT_V8HI, BT_UINT)
 DEF_FN_TYPE_2 (BT_FN_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI)
 DEF_FN_TYPE_2 (BT_FN_VOID_UINT64PTR_UINT64, BT_VOID, BT_UINT64PTR, BT_UINT64)
 DEF_FN_TYPE_2 (BT_FN_VOID_V2DF_FLTPTR, BT_VOID, BT_V2DF, BT_FLTPTR)
@@ -317,6 +316,7 @@ 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)
@@ -347,7 +347,6 @@ DEF_FN_TYPE_3 (BT_FN_V4SI_V4SI_V4SI_V4SI, BT_V4SI, BT_V4SI, BT_V4SI, BT_V4SI)
 DEF_FN_TYPE_3 (BT_FN_V4SI_V8HI_V8HI_V4SI, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI)
 DEF_FN_TYPE_3 (BT_FN_V8HI_UV8HI_UV8HI_INTPTR, BT_V8HI, BT_UV8HI, BT_UV8HI, BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V8HI_V16QI_V16QI_V8HI, BT_V8HI, BT_V16QI, BT_V16QI, BT_V8HI)
-DEF_FN_TYPE_3 (BT_FN_V8HI_V4SF_V4SF_UINT, BT_V8HI, BT_V4SF, BT_V4SF, BT_UINT)
 DEF_FN_TYPE_3 (BT_FN_V8HI_V4SI_V4SI_INTPTR, BT_V8HI, BT_V4SI, BT_V4SI, BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V8HI_V8HI_V8HI_INTPTR, BT_V8HI, BT_V8HI, BT_V8HI, BT_INTPTR)
 DEF_FN_TYPE_3 (BT_FN_V8HI_V8HI_V8HI_V8HI, BT_V8HI, BT_V8HI, BT_V8HI, BT_V8HI)
index c2ae76b1d6df94e86c8bce5ea6cde67c422eb892..f5540106adcd001c1c3fae9158cec69d32b796d1 100644 (file)
@@ -3037,10 +3037,10 @@ B_DEF      (s390_vstrszf,                vstrszv4si,        0,
 
 /* arch 14 builtins */
 
-B_DEF      (s390_vclfnhs,                vclfnhs_v8hi,      0,                  B_NNPA,             O2_U4,              BT_FN_V4SF_V8HI_UINT)
-B_DEF      (s390_vclfnls,                vclfnls_v8hi,      0,                  B_NNPA,             O2_U4,              BT_FN_V4SF_V8HI_UINT)
+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_vcrnfs,                 vcrnfs_v8hi,       0,                  B_NNPA,             O3_U4,              BT_FN_V8HI_V4SF_V4SF_UINT)
+B_DEF      (s390_vcrnfs,                 vcrnfs_v8hi,       0,                  B_NNPA,             O3_U4,              BT_FN_UV8HI_V4SF_V4SF_UINT)
 
-B_DEF      (s390_vcfn,                   vcfn_v8hi,         0,                  B_NNPA,             O2_U4,              BT_FN_V8HI_V8HI_UINT)
-B_DEF      (s390_vcnf,                   vcnf_v8hi,         0,                  B_NNPA,             O2_U4,              BT_FN_V8HI_V8HI_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)
index 5ed7e050194f4a465025db6d1333aad3944378c6..7d7c13e471e05e7da8d650f054adbea872486a44 100644 (file)
@@ -10,10 +10,10 @@ main ()
   vector float fp1 = (vector float){ 1.0f, 2.0f, 3.0f, 4.0f };
   vector float fp2 = (vector float){ 5.0f, 6.0f, 7.0f, 8.0f };
 
-  vector short int tmp1 = vec_round_from_fp32 (fp1, fp2, 0);
+  vector unsigned short int tmp1 = vec_round_from_fp32 (fp1, fp2, 0);
 
-  vector short int tmp2 = vec_convert_to_fp16 (tmp1, 0);
-  vector short int tmp3 = vec_convert_from_fp16 (tmp2, 0);
+  vector unsigned short int tmp2 = vec_convert_to_fp16 (tmp1, 0);
+  vector unsigned short int tmp3 = vec_convert_from_fp16 (tmp2, 0);
 
   vector float fp1_ret = vec_extend_to_fp32_hi (tmp3, 0);
   vector float fp2_ret = vec_extend_to_fp32_lo (tmp3, 0);
index 321488a09ac0f75a91b20fc2895dcf8d5a9f60e5..6dcfad4cada6fa8be924c125108f8dfb41be6057 100644 (file)
@@ -9,7 +9,7 @@ main ()
 {
   vector float fp1 = (vector float){ 1.0f, 2.0f, 3.0f, 4.0f };
   vector float fp2 = (vector float){ 5.0f, 6.0f, 7.0f, 8.0f };
-  vector short int conv = vec_round_from_fp32 (fp1, fp2, 0);
+  vector unsigned short int conv = vec_round_from_fp32 (fp1, fp2, 0);
   vector float fp1_ret = vec_extend_to_fp32_hi (conv, 0);
   vector float fp2_ret = vec_extend_to_fp32_lo (conv, 0);
 
index fc7ccf0ebaad15340ef95c53e5c2eb24d07164c1..86fad2cd987e8632b8603d52be775a6d9d160c9c 100644 (file)
@@ -3,8 +3,8 @@
 
 #include <vecintrin.h>
 
-vector short int
-test_vec_convert_from_fp16 (vector short int a)
+vector unsigned short int
+test_vec_convert_from_fp16 (vector unsigned short int a)
 {
   return vec_convert_from_fp16 (a, 0);
 }
index 7232643f063d31720292cde48ac56c9514262b2a..eda29529f748ea439fcd7b2fb16489ab60b78cf0 100644 (file)
@@ -3,8 +3,8 @@
 
 #include <vecintrin.h>
 
-vector short int
-test_vec_convert_to_fp16 (vector short int a)
+vector unsigned short int
+test_vec_convert_to_fp16 (vector unsigned short int a)
 {
   return vec_convert_to_fp16 (a, 0);
 }
index feb5e784e0cc1f93c9104ded29e65cfa37bbc0ee..feedef82065c720014d02a3567b8f9283941da4b 100644 (file)
@@ -4,7 +4,7 @@
 #include <vecintrin.h>
 
 vector float
-test_vec_extend_to_fp32_hi (vector short int a)
+test_vec_extend_to_fp32_hi (vector unsigned short int a)
 {
   return vec_extend_to_fp32_hi (a, 0);
 }
index 179de17de9e71b45acfc0a98a790943f6c5977a1..dbdf53058398b3d7284230448d61014e808d04bf 100644 (file)
@@ -4,7 +4,7 @@
 #include <vecintrin.h>
 
 vector float
-test_vec_extend_to_fp32_lo (vector short int a)
+test_vec_extend_to_fp32_lo (vector unsigned short int a)
 {
   return vec_extend_to_fp32_lo (a, 0);
 }
index 839245228b9dfe886e5c1f09d0bf1e978356191e..617a8200cd13a6a00a7cce82b033e2261a071829 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <vecintrin.h>
 
-vector short int
+vector unsigned short int
 test_vec_round_from_fp32 (vector float hi, vector float lo)
 {
   return vec_round_from_fp32 (hi, lo, 0);