public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] testsuite: Adjust powerpc test case pr83677.c for BE [PR108815]
@ 2023-04-04  5:22 Kewen.Lin
  0 siblings, 0 replies; only message in thread
From: Kewen.Lin @ 2023-04-04  5:22 UTC (permalink / raw)
  To: GCC Patches; +Cc: Segher Boessenkool, David Edelsohn, Peter Bergner

Hi,

The test case gcc.target/powerpc/pr83677.c was written for
LE environment, this patch is to make it work on BE as well.

Tested on BE and LE well, I'm going to push this soon if no
objections.

BR,
Kewen
-----
	PR testsuite/108815

gcc/testsuite/ChangeLog:

	* gcc.target/powerpc/pr83677.c (v_expand_u8, v_expand_u16,
	v_load_deinterleave_f32, v_store_interleave_f32): Adjust some code by
	considering BE.
---
 gcc/testsuite/gcc.target/powerpc/pr83677.c | 30 +++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/gcc.target/powerpc/pr83677.c b/gcc/testsuite/gcc.target/powerpc/pr83677.c
index c1a09687174..8b1caff3f98 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr83677.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr83677.c
@@ -9,14 +9,24 @@

 void v_expand_u8(vector unsigned char* a, vector unsigned short* b0, vector unsigned short* b1)
 {
+#if __LITTLE_ENDIAN__
   *b0 = (vector unsigned short)vec_mergeh(*a, vec_splats((unsigned char)0));
   *b1 = (vector unsigned short)vec_mergel(*a, vec_splats((unsigned char)0));
+#else
+  *b0 = (vector unsigned short)vec_mergeh(vec_splats((unsigned char)0), *a);
+  *b1 = (vector unsigned short)vec_mergel(vec_splats((unsigned char)0), *a);
+#endif
 }

 void v_expand_u16(vector unsigned short* a, vector unsigned int* b0, vector unsigned int* b1)
 {
+#if __LITTLE_ENDIAN__
     *b0 = (vector unsigned int)vec_mergeh(*a, vec_splats((unsigned short)0));
     *b1 = (vector unsigned int)vec_mergel(*a, vec_splats((unsigned short)0));
+#else
+    *b0 = (vector unsigned int)vec_mergeh(vec_splats((unsigned short)0), *a);
+    *b1 = (vector unsigned int)vec_mergel(vec_splats((unsigned short)0), *a);
+#endif
 }

 void v_load_deinterleave_u8(unsigned char *ptr, vector unsigned char* a, vector unsigned char* b, vector unsigned char* c)
@@ -44,13 +54,23 @@ void v_load_deinterleave_f32(float *ptr, vector float* a, vector float* b, vecto
     vector float v2 = vec_xl(16, ptr);
     vector float v3 = vec_xl(32, ptr);

+#if __LITTLE_ENDIAN__
+    vector float t1 = vec_sld(v3, v2, 8);
+    vector float t2 = vec_sld(v1, v3, 8);
+    vector float t3 = vec_sld(v2, v1, 8);
+#else
+    vector float t1 = vec_sld(v2, v3, 8);
+    vector float t2 = vec_sld(v3, v1, 8);
+    vector float t3 = vec_sld(v1, v2, 8);
+#endif
+
     static const vector unsigned char flp = {0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19, 28, 29, 30, 31};
-    *a = vec_perm(v1, vec_sld(v3, v2, 8), flp);
+    *a = vec_perm(v1, t1, flp);

     static const vector unsigned char flp2 = {28, 29, 30, 31, 0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19};
-    *b = vec_perm(v2, vec_sld(v1, v3, 8), flp2);
+    *b = vec_perm(v2, t2, flp2);

-    *c = vec_perm(vec_sld(v2, v1, 8), v3, flp);
+    *c = vec_perm(t3, v3, flp);
 }

 void v_store_interleave_f32(float *ptr, vector float a, vector float b, vector float c)
@@ -61,7 +81,11 @@ void v_store_interleave_f32(float *ptr, vector float a, vector float b, vector f
     vec_xst(vec_perm(a, hbc, ahbc),  0, ptr);

     vector float lab = vec_mergel(a, b);
+#if __LITTLE_ENDIAN__
     vec_xst(vec_sld(lab, hbc, 8), 16, ptr);
+#else
+    vec_xst(vec_sld(hbc, lab, 8), 16, ptr);
+#endif

     static const vector unsigned char clab = {8, 9, 10, 11, 24, 25, 26, 27, 28, 29, 30, 31, 12, 13, 14, 15};
     vec_xst(vec_perm(c, lab, clab), 32, ptr);
--
2.39.1

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-04-04  5:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-04  5:22 [PATCH] testsuite: Adjust powerpc test case pr83677.c for BE [PR108815] Kewen.Lin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).