diff mbox series

testsuite: Fix vec_extractm testcase for power10 BE[127148]

Message ID 7c7a2ff4-d91b-40ca-abd4-75e556a4b644@linux.ibm.com
State New
Headers show
Series testsuite: Fix vec_extractm testcase for power10 BE[127148] | expand

Commit Message

jeevitha Sept. 2, 2026, 5:16 a.m. UTC
Hi All,

The following patch has been bootstrapped and regtested on
powerpc64le-linux and powerpc64-linux.

The vec_extractm testcase assumes little-endian ordering when checking
the expected result.  On big-endian targets, the vector layout differs
causing the char and word tests to fail.

Use endian-dependent expected values for the char and word tests.
Also use an result and expected_result variable consistently for all
vec_extractm tests and remove unused variables.

2026-09-02  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>

gcc/testsuite/
	PR target/127148
	* gcc.target/powerpc/vsx_mask-extract-runnable.c: Fix expected
	results for vec_extractm on big-endian targets. Also remove
	unused variables.

Comments

jeevitha Sept. 8, 2026, 7:03 a.m. UTC | #1
Gentle Ping!

please review.

Thanks & Regards
Jeevitha

On 02/09/26 10:46 am, jeevitha wrote:
> 
> Hi All,
> 
> The following patch has been bootstrapped and regtested on
> powerpc64le-linux and powerpc64-linux.
> 
> The vec_extractm testcase assumes little-endian ordering when checking
> the expected result.  On big-endian targets, the vector layout differs
> causing the char and word tests to fail.
> 
> Use endian-dependent expected values for the char and word tests.
> Also use an result and expected_result variable consistently for all
> vec_extractm tests and remove unused variables.
> 
> 2026-09-02  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
> 
> gcc/testsuite/
> 	PR target/127148
> 	* gcc.target/powerpc/vsx_mask-extract-runnable.c: Fix expected
> 	results for vec_extractm on big-endian targets. Also remove
> 	unused variables.
> 
> diff --git a/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c b/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
> index 9e257f5de7b..9a3b8565fb8 100644
> --- a/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
> +++ b/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
> @@ -25,18 +25,7 @@ void abort (void);
>  
>  int main ()
>  {
> -  int i, num_elements;
> -  unsigned long long arg1;
> -  
> -  vector unsigned char  vbc_result_bi, vbc_expected_result_bi;
> -  vector unsigned short vbc_result_hi, vbc_expected_result_hi;
> -  vector unsigned int  vbc_result_wi, vbc_expected_result_wi;
> -  vector unsigned long long vbc_result_di, vbc_expected_result_di;
> -  vector __uint128_t vbc_result_qi, vbc_expected_result_qi;
> -
> -  unsigned int result_wi, expected_result_wi;
>    unsigned long long result, expected_result;
> -  const unsigned char mp=1;
>    vector unsigned char vbc_bi_src;
>    vector unsigned short vbc_hi_src;
>    vector unsigned int vbc_wi_src;
> @@ -44,7 +33,6 @@ int main ()
>    vector __uint128_t vbc_qi_src;
>    
>  /* vextractbm */
> -  num_elements = 8;
>    vbc_bi_src[0] = 0xFF;
>    vbc_bi_src[1] = 0xFF;
>    vbc_bi_src[2] = 0x0;
> @@ -62,13 +50,17 @@ int main ()
>    vbc_bi_src[14] = 0xFF;
>    vbc_bi_src[15] = 0xFF;
>  
> -  expected_result_wi = 0b1101111111000011;
> +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
> +  expected_result = 0b1100001111111011;
> +#else
> +  expected_result = 0b1101111111000011;
> +#endif
>  
> -  result_wi = vec_extractm (vbc_bi_src);
> +  result = vec_extractm (vbc_bi_src);
>    
> -  if (result_wi != expected_result_wi) {
> +  if (result != expected_result) {
>  #if DEBUG
> -    printf("ERROR: short vec_extractm(%d) ", vbc_bi_src);
> +    printf("ERROR: char vec_extractm(%d) ", vbc_bi_src);
>      printf("result %llu does not match expected result = %llu\n",
>  	   result, expected_result);
>  #else
> @@ -77,7 +69,6 @@ int main ()
>    }
>  
>      /* vextracthm */
> -  num_elements = 8;
>    vbc_hi_src[0] = 0xFFFF;
>    vbc_hi_src[1] = 0xFFFF;
>    vbc_hi_src[2] = 0x0;
> @@ -87,11 +78,11 @@ int main ()
>    vbc_hi_src[6] = 0xFFFF;
>    vbc_hi_src[7] = 0xFFFF;
>  
> -  expected_result_wi = 0b11000011;
> +  expected_result = 0b11000011;
>  
> -  result_wi = vec_extractm (vbc_hi_src);
> +  result = vec_extractm (vbc_hi_src);
>    
> -  if (result_wi != expected_result_wi) {
> +  if (result != expected_result) {
>  #if DEBUG
>      printf("ERROR: short vec_extractm(%d) ", vbc_hi_src);
>      printf("result %llu does not match expected result = %llu\n",
> @@ -102,17 +93,20 @@ int main ()
>    }
>  
>    /* vextractwm */
> -  num_elements = 4;
>    vbc_wi_src[0] = 0xFFFFFFFF;
>    vbc_wi_src[1] = 0xFFFFFFFF;
>    vbc_wi_src[2] = 0x0;
>    vbc_wi_src[3] = 0x0;
>  
> -  expected_result_wi = 0b0011;
> +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
> +  expected_result = 0b1100;
> +#else
> +  expected_result = 0b0011;
> +#endif
>  
> -  result_wi = vec_extractm (vbc_wi_src);
> -  
> -  if (result_wi != expected_result_wi) {
> +  result = vec_extractm (vbc_wi_src);
> +
> +  if (result != expected_result) {
>  #if DEBUG
>      printf("ERROR: word vec_extractm(%d) ", vbc_wi_src);
>      printf("result %llu does not match expected result = %llu\n",
> @@ -123,15 +117,14 @@ int main ()
>    }
>  
>    /* vextractdm */
> -  num_elements = 2;
>    vbc_di_src[0] = 0xFFFFFFFFFFFFFFFF;
>    vbc_di_src[1] = 0xFFFFFFFFFFFFFFFF;
>  
> -  expected_result_wi = 0b11;
> +  expected_result = 0b11;
>  
> -  result_wi = vec_extractm (vbc_di_src);
> +  result = vec_extractm (vbc_di_src);
>    
> -  if (result_wi != expected_result_wi) {
> +  if (result != expected_result) {
>  #if DEBUG
>      printf("ERROR: double vec_extractm(%lld) ", vbc_di_src);
>      printf("result %llu does not match expected result = %llu\n",
> @@ -142,15 +135,14 @@ int main ()
>    }
>  
>    /* vextractqm */
> -  num_elements = 1;
>    vbc_qi_src[0] = 0x1;
>    vbc_qi_src[0] = vbc_qi_src[0] << 127;
>    
> -  expected_result_wi = 1;
> +  expected_result = 1;
>  
> -  result_wi = vec_extractm (vbc_qi_src);
> +  result = vec_extractm (vbc_qi_src);
>    
> -  if (result_wi != expected_result_wi) {
> +  if (result != expected_result) {
>  #if DEBUG
>      printf("ERROR: quad vec_extractm(arg) ");
>      printf("result 0x%x does not match expected result = 0x%x\n",
>
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c b/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
index 9e257f5de7b..9a3b8565fb8 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
+++ b/gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
@@ -25,18 +25,7 @@  void abort (void);
 
 int main ()
 {
-  int i, num_elements;
-  unsigned long long arg1;
-  
-  vector unsigned char  vbc_result_bi, vbc_expected_result_bi;
-  vector unsigned short vbc_result_hi, vbc_expected_result_hi;
-  vector unsigned int  vbc_result_wi, vbc_expected_result_wi;
-  vector unsigned long long vbc_result_di, vbc_expected_result_di;
-  vector __uint128_t vbc_result_qi, vbc_expected_result_qi;
-
-  unsigned int result_wi, expected_result_wi;
   unsigned long long result, expected_result;
-  const unsigned char mp=1;
   vector unsigned char vbc_bi_src;
   vector unsigned short vbc_hi_src;
   vector unsigned int vbc_wi_src;
@@ -44,7 +33,6 @@  int main ()
   vector __uint128_t vbc_qi_src;
   
 /* vextractbm */
-  num_elements = 8;
   vbc_bi_src[0] = 0xFF;
   vbc_bi_src[1] = 0xFF;
   vbc_bi_src[2] = 0x0;
@@ -62,13 +50,17 @@  int main ()
   vbc_bi_src[14] = 0xFF;
   vbc_bi_src[15] = 0xFF;
 
-  expected_result_wi = 0b1101111111000011;
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+  expected_result = 0b1100001111111011;
+#else
+  expected_result = 0b1101111111000011;
+#endif
 
-  result_wi = vec_extractm (vbc_bi_src);
+  result = vec_extractm (vbc_bi_src);
   
-  if (result_wi != expected_result_wi) {
+  if (result != expected_result) {
 #if DEBUG
-    printf("ERROR: short vec_extractm(%d) ", vbc_bi_src);
+    printf("ERROR: char vec_extractm(%d) ", vbc_bi_src);
     printf("result %llu does not match expected result = %llu\n",
 	   result, expected_result);
 #else
@@ -77,7 +69,6 @@  int main ()
   }
 
     /* vextracthm */
-  num_elements = 8;
   vbc_hi_src[0] = 0xFFFF;
   vbc_hi_src[1] = 0xFFFF;
   vbc_hi_src[2] = 0x0;
@@ -87,11 +78,11 @@  int main ()
   vbc_hi_src[6] = 0xFFFF;
   vbc_hi_src[7] = 0xFFFF;
 
-  expected_result_wi = 0b11000011;
+  expected_result = 0b11000011;
 
-  result_wi = vec_extractm (vbc_hi_src);
+  result = vec_extractm (vbc_hi_src);
   
-  if (result_wi != expected_result_wi) {
+  if (result != expected_result) {
 #if DEBUG
     printf("ERROR: short vec_extractm(%d) ", vbc_hi_src);
     printf("result %llu does not match expected result = %llu\n",
@@ -102,17 +93,20 @@  int main ()
   }
 
   /* vextractwm */
-  num_elements = 4;
   vbc_wi_src[0] = 0xFFFFFFFF;
   vbc_wi_src[1] = 0xFFFFFFFF;
   vbc_wi_src[2] = 0x0;
   vbc_wi_src[3] = 0x0;
 
-  expected_result_wi = 0b0011;
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+  expected_result = 0b1100;
+#else
+  expected_result = 0b0011;
+#endif
 
-  result_wi = vec_extractm (vbc_wi_src);
-  
-  if (result_wi != expected_result_wi) {
+  result = vec_extractm (vbc_wi_src);
+
+  if (result != expected_result) {
 #if DEBUG
     printf("ERROR: word vec_extractm(%d) ", vbc_wi_src);
     printf("result %llu does not match expected result = %llu\n",
@@ -123,15 +117,14 @@  int main ()
   }
 
   /* vextractdm */
-  num_elements = 2;
   vbc_di_src[0] = 0xFFFFFFFFFFFFFFFF;
   vbc_di_src[1] = 0xFFFFFFFFFFFFFFFF;
 
-  expected_result_wi = 0b11;
+  expected_result = 0b11;
 
-  result_wi = vec_extractm (vbc_di_src);
+  result = vec_extractm (vbc_di_src);
   
-  if (result_wi != expected_result_wi) {
+  if (result != expected_result) {
 #if DEBUG
     printf("ERROR: double vec_extractm(%lld) ", vbc_di_src);
     printf("result %llu does not match expected result = %llu\n",
@@ -142,15 +135,14 @@  int main ()
   }
 
   /* vextractqm */
-  num_elements = 1;
   vbc_qi_src[0] = 0x1;
   vbc_qi_src[0] = vbc_qi_src[0] << 127;
   
-  expected_result_wi = 1;
+  expected_result = 1;
 
-  result_wi = vec_extractm (vbc_qi_src);
+  result = vec_extractm (vbc_qi_src);
   
-  if (result_wi != expected_result_wi) {
+  if (result != expected_result) {
 #if DEBUG
     printf("ERROR: quad vec_extractm(arg) ");
     printf("result 0x%x does not match expected result = 0x%x\n",