public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] LoongArch: Fix lsx-vshuf.c and lasx-xvshuf_b.c tests fail on LA664 [PR112611]
@ 2023-11-29  3:16 Jiahao Xu
  2023-12-08  8:45 ` chenglulu
  0 siblings, 1 reply; 2+ messages in thread
From: Jiahao Xu @ 2023-11-29  3:16 UTC (permalink / raw)
  To: gcc-patches; +Cc: xry111, i, chenglulu, xuchenghua, Jiahao Xu

For [x]vshuf instructions, if the index value in the selector exceeds 63, it triggers
undefined behavior on LA464, but not on LA664. To ensure compatibility of these two
tests on both LA464 and LA664, we have modified both tests to ensure that the index
value in the selector does not exceed 63.

gcc/testsuite/ChangeLog:

	* gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c: Sure index less than 64.
	* gcc.target/loongarch/vector/lsx/lsx-vshuf.c: Ditto.

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c
index 641ea2315ff..03c479a085c 100644
--- a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c
@@ -44,9 +44,9 @@ main ()
   *((unsigned long *)&__m256i_op1[1]) = 0xfffffefefffffefe;
   *((unsigned long *)&__m256i_op1[0]) = 0xfffffefefffffefe;
   *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0xfffffff8fffffff8;
+  *((unsigned long *)&__m256i_op2[2]) = 0x3f3f3f383f3f3f38;
   *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0xfffffff8fc000000;
+  *((unsigned long *)&__m256i_op2[0]) = 0x3f3f3f383c000000;
   *((unsigned long *)&__m256i_result[3]) = 0xfafafafafafafafa;
   *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_result[1]) = 0xfefefefefefefefe;
@@ -138,33 +138,14 @@ main ()
   *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000ffffffffffff;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000ffff0000ffff;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000ffffffffffff;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op2[3]) = 0x0000111111111111;
+  *((unsigned long *)&__m256i_op2[2]) = 0x0000222200002222;
+  *((unsigned long *)&__m256i_op2[1]) = 0x0000111111111111;
+  *((unsigned long *)&__m256i_op2[0]) = 0x0000222200002222;
   *((unsigned long *)&__m256i_result[3]) = 0xffff000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_result[1]) = 0xffff000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0xffff0000ffff0000;
-  __m256i_out = __lasx_xvshuf_b (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x000000000000ffff;
-  *((unsigned long *)&__m256i_op2[2]) = 0x000000000000ffff;
-  *((unsigned long *)&__m256i_op2[1]) = 0x000000000000ffff;
-  *((unsigned long *)&__m256i_op2[0]) = 0x000000000000ffff;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
   __m256i_out = __lasx_xvshuf_b (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
@@ -177,7 +158,7 @@ main ()
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000077fff;
+  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000032f1f;
   *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
@@ -187,9 +168,9 @@ main ()
   __m256i_out = __lasx_xvshuf_b (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffffffefe;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000101;
-  *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffffffefe;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0011001100110011;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0011001100110011;
   *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000101;
   *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op1[2]) = 0x67eee33567eee435;
@@ -199,35 +180,16 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op2[1]) = 0x00000000ffffffff;
   *((unsigned long *)&__m256i_op2[0]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0022002200000000;
   *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
-  __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
-  *((unsigned long *)&__m256i_op0[3]) = 0xffffffff80000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0xffffffff80000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x001f001f00000000;
   *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
@@ -244,10 +206,10 @@ main ()
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0011001100110011;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0011001100110011;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0011001100110011;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0011001100110011;
   *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
@@ -256,17 +218,17 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op2[1]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op2[0]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[3]) = 0x003f003f003f003f;
+  *((unsigned long *)&__m256i_op0[2]) = 0x003f003f003f003f;
+  *((unsigned long *)&__m256i_op0[1]) = 0x003f003f003f003f;
+  *((unsigned long *)&__m256i_op0[0]) = 0x003f003f003f003f;
   *((unsigned long *)&__m256i_op1[3]) = 0xefdfefdf00000000;
   *((unsigned long *)&__m256i_op1[2]) = 0xefdfefdfefdfefdf;
   *((unsigned long *)&__m256i_op1[1]) = 0xefdfefdf00000000;
@@ -275,36 +237,17 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op2[1]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op2[0]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
-  __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xefdfefdfefdfefdf;
+  *((unsigned long *)&__m256i_result[2]) = 0xefdfefdfefdfefdf;
+  *((unsigned long *)&__m256i_result[1]) = 0xefdfefdfefdfefdf;
+  *((unsigned long *)&__m256i_result[0]) = 0xefdfefdfefdfefdf;
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x7575ffff75757595;
-  *((unsigned long *)&__m256i_op0[2]) = 0x7575ffff7575f575;
-  *((unsigned long *)&__m256i_op0[1]) = 0x7575ffff75757595;
-  *((unsigned long *)&__m256i_op0[0]) = 0x7575ffff7575f575;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0035000000350005;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0035000000350015;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0035000000350025;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0035000000350035;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000003;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000010001;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000003;
@@ -313,10 +256,10 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0x7575757575757575;
   *((unsigned long *)&__m256i_op2[1]) = 0x7575757575757575;
   *((unsigned long *)&__m256i_op2[0]) = 0x7575757575757575;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x7575757575757575;
+  *((unsigned long *)&__m256i_result[2]) = 0x7575757575757575;
+  *((unsigned long *)&__m256i_result[1]) = 0x7575757575757575;
+  *((unsigned long *)&__m256i_result[0]) = 0x7575757575757575;
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
@@ -358,29 +301,10 @@ main ()
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
-  __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
-  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000fffe;
-  *((unsigned long *)&__m256i_op0[2]) = 0x00000000000000f0;
-  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000fffe;
-  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000000f0;
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000003e;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000010;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000003e;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000010;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
@@ -390,16 +314,16 @@ main ()
   *((unsigned long *)&__m256i_op2[1]) = 0x8000000000000000;
   *((unsigned long *)&__m256i_op2[0]) = 0x000000ffff88ff88;
   *((unsigned long *)&__m256i_result[3]) = 0xff88ff88ff880000;
-  *((unsigned long *)&__m256i_result[2]) = 0xff88ff88ff880000;
+  *((unsigned long *)&__m256i_result[2]) = 0xff88ff88ff88ff88;
   *((unsigned long *)&__m256i_result[1]) = 0xff88ff88ff880000;
-  *((unsigned long *)&__m256i_result[0]) = 0xff88ff88ff880000;
+  *((unsigned long *)&__m256i_result[0]) = 0xff88ff88ff88ff88;
   __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x000000010000ffe1;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000101001e18;
-  *((unsigned long *)&__m256i_op0[1]) = 0x000000010000ffe1;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000101001e18;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000011;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100000018;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100000008;
   *((unsigned long *)&__m256i_op1[3]) = 0x98111cca98111cca;
   *((unsigned long *)&__m256i_op1[2]) = 0x98111cca98111cca;
   *((unsigned long *)&__m256i_op1[1]) = 0x98111cca98111cca;
@@ -408,17 +332,17 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0x0000000101001e18;
   *((unsigned long *)&__m256i_op2[1]) = 0x000000010000ffe1;
   *((unsigned long *)&__m256i_op2[0]) = 0x0000000101001e18;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000001;
   *((unsigned long *)&__m256i_result[2]) = 0x0000000101001e18;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001;
   *((unsigned long *)&__m256i_result[0]) = 0x0000000101001e18;
   __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001;
-  *((unsigned long *)&__m256i_op0[2]) = 0x80008000b3e8fef1;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
-  *((unsigned long *)&__m256i_op0[0]) = 0x80008000802ea100;
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000010000001a;  
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000001100000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000002100000010; 
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000310000001f;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
@@ -427,17 +351,17 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000002;
   *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000001;
   *((unsigned long *)&__m256i_op2[0]) = 0x00000000012e2110;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000001;
   *((unsigned long *)&__m256i_result[2]) = 0x0000000200000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x012e2110012e2110;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000012e2110;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
   __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000082a54290;
-  *((unsigned long *)&__m256i_op0[2]) = 0x00000000028aa700;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000082a54290;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000002a54287;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000002f00000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000001a00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000010000001c;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000e0000000c;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x00000000002a542a;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
@@ -448,8 +372,8 @@ main ()
   *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000002a542a;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000002a542a;
   __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
@@ -472,10 +396,10 @@ main ()
   __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000031;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100000031;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000031;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100000031;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
@@ -491,10 +415,10 @@ main ()
   __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0001000100010001;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000200000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000400000003;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000600000005;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000800000007;
   *((unsigned long *)&__m256i_op1[3]) = 0x000000007fc00000;
   *((unsigned long *)&__m256i_op1[2]) = 0x000000007fc00000;
   *((unsigned long *)&__m256i_op1[1]) = 0x000000007fc00000;
@@ -504,7 +428,7 @@ main ()
   *((unsigned long *)&__m256i_op2[1]) = 0xdfffffffdfffffff;
   *((unsigned long *)&__m256i_op2[0]) = 0x8000000080000000;
   *((unsigned long *)&__m256i_result[3]) = 0x8000000080000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x7fc00000dfffffff;
   *((unsigned long *)&__m256i_result[1]) = 0x8000000080000000;
   *((unsigned long *)&__m256i_result[0]) = 0x8000000080000000;
   __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
@@ -530,9 +454,9 @@ main ()
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
   *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0001000104000200;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000002000000030;
   *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0001000104000200;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000001000000000;
   *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
   *((unsigned long *)&__m256i_op1[2]) = 0xffff0000ffff0000;
   *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
@@ -586,10 +510,10 @@ main ()
   __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000fffffe01fe52;
-  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ff01ff02;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000fffffe01fe52;
-  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ff01ff02;
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000003;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000800000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000080008001;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000800000000000;
@@ -598,36 +522,17 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0x000000000000ffff;
   *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op2[0]) = 0x000000000000ffff;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000080008001;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000080008001;
-  __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x000000000000ffff;
   *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000080008001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000800000000000;
   __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
   *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000011;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000022;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000033;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
@@ -643,44 +548,6 @@ main ()
   __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
-  __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[2]) = 0x0008000000000000;
-  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op1[0]) = 0x0008000000000000;
-  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
-  __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
-  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
-
   *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
@@ -701,9 +568,9 @@ main ()
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
   *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000002000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000002000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000010;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000030;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
@@ -719,10 +586,10 @@ main ()
   __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0xfffeb6839ffffd80;
-  *((unsigned long *)&__m256i_op0[2]) = 0xfffeb8649d0d6250;
-  *((unsigned long *)&__m256i_op0[1]) = 0xfffeb6839ffffd80;
-  *((unsigned long *)&__m256i_op0[0]) = 0xfffeb8649d0d6250;
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000000a;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000001b;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000002c;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000003d;
   *((unsigned long *)&__m256i_op1[3]) = 0xfffeb6839ffffd80;
   *((unsigned long *)&__m256i_op1[2]) = 0xfffe97c020010001;
   *((unsigned long *)&__m256i_op1[1]) = 0xfffeb6839ffffd80;
@@ -731,17 +598,17 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0xfffe97c020010001;
   *((unsigned long *)&__m256i_op2[1]) = 0xfffeb6839ffffd80;
   *((unsigned long *)&__m256i_op2[0]) = 0xfffe97c020010001;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xfffe97c020010001;
+  *((unsigned long *)&__m256i_result[2]) = 0xfffeb6839ffffd80;
+  *((unsigned long *)&__m256i_result[1]) = 0xfffe97c020010001;
+  *((unsigned long *)&__m256i_result[0]) = 0xfffeb6839ffffd80;
   __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
-  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000001a;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000001b;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000007;
   *((unsigned long *)&__m256i_op1[3]) = 0x0000000000010001;
   *((unsigned long *)&__m256i_op1[2]) = 0x0000000000010001;
   *((unsigned long *)&__m256i_op1[1]) = 0x0000000000010001;
@@ -750,10 +617,10 @@ main ()
   *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
   *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000010001;
   __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
   ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
 
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
index 4e7fcc02b12..646935c921a 100644
--- a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
@@ -21,7 +21,7 @@ main ()
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000401000001;
   *((unsigned long *)&__m128i_op1[0]) = 0x0001000100000004;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0x00000000007f0000;
+  *((unsigned long *)&__m128i_op2[0]) = 0x00000000003f0000;
   *((unsigned long *)&__m128i_result[1]) = 0x0404040404040404;
   *((unsigned long *)&__m128i_result[0]) = 0x0404040404000404;
   __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
@@ -32,7 +32,7 @@ main ()
   *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op2[0]) = 0x3f2f1f0f00000000;
   *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
   __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
@@ -64,10 +64,10 @@ main ()
   *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
   *((unsigned long *)&__m128i_op1[1]) = 0x52525252adadadad;
   *((unsigned long *)&__m128i_op1[0]) = 0x52525252adadadad;
-  *((unsigned long *)&__m128i_op2[1]) = 0x800000007fffffff;
-  *((unsigned long *)&__m128i_op2[0]) = 0x800000007fffffff;
-  *((unsigned long *)&__m128i_result[1]) = 0x00adadad00000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x00adadad00000000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x2000000004030201;
+  *((unsigned long *)&__m128i_op2[0]) = 0x2000000014131211;
+  *((unsigned long *)&__m128i_result[1]) = 0xadadadad52adadad;
+  *((unsigned long *)&__m128i_result[0]) = 0xadadadadffffffff;
   __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
@@ -97,10 +97,10 @@ main ()
   *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000100;
   *((unsigned long *)&__m128i_op1[1]) = 0x04040403fafafafc;
   *((unsigned long *)&__m128i_op1[0]) = 0x000000000000ff80;
-  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x8080808080808080;
-  *((unsigned long *)&__m128i_result[0]) = 0x8080808080808080;
+  *((unsigned long *)&__m128i_op2[1]) = 0x00101a1b1c1d1e1f;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0807060504030201;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000020202000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfc000000000000ff;
   __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
@@ -119,10 +119,10 @@ main ()
   *((unsigned long *)&__m128i_op0[0]) = 0xffd7ff8dffa4ff7a;
   *((unsigned long *)&__m128i_op1[1]) = 0x34947b4b11684f92;
   *((unsigned long *)&__m128i_op1[0]) = 0xee297a731e5c5f86;
-  *((unsigned long *)&__m128i_op2[1]) = 0x7fffffffffffffff;
-  *((unsigned long *)&__m128i_op2[0]) = 0xffc0000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000868686868686;
+  *((unsigned long *)&__m128i_op2[1]) = 0x1f0710301a2b332d;
+  *((unsigned long *)&__m128i_op2[0]) = 0x1f20000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffee7a7a9811ff7b;
+  *((unsigned long *)&__m128i_result[0]) = 0xff86868686868686;
   __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
@@ -137,19 +137,19 @@ main ()
   __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[1]) = 0x001f002f003f000f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x001f002f003f000f;
   *((unsigned long *)&__m128i_op1[1]) = 0x7fffffffffffffff;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x7fff7fff7fff7fff;
+  *((unsigned long *)&__m128i_result[0]) = 0x7fff7fff7fff7fff;
   __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[1]) = 0x000100040010001f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0002000300110012;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x000000002bfd9461;
   *((unsigned long *)&__m128i_op2[1]) = 0x00007fff00007fff;
@@ -170,74 +170,41 @@ main ()
   __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
-  __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
-  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
-
-  *((unsigned long *)&__m128i_op0[1]) = 0x000300037ff000ff;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0003000300a10003;
+  *((unsigned long *)&__m128i_op0[1]) = 0x000300030000001f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0003000300000003;
   *((unsigned long *)&__m128i_op1[1]) = 0x000300037ff000ff;
   *((unsigned long *)&__m128i_op1[0]) = 0x0003000300a10003;
   *((unsigned long *)&__m128i_op2[1]) = 0x000000007ff000ff;
   *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000003;
   *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
   __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x0909000009090000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0909000009090000;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0019000000090000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0019000000090000;
   *((unsigned long *)&__m128i_op1[1]) = 0x0909000009090000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0909000009090000;
   *((unsigned long *)&__m128i_op2[1]) = 0x002a05a2f059094a;
   *((unsigned long *)&__m128i_op2[0]) = 0x05ad3ba576eae048;
-  *((unsigned long *)&__m128i_result[1]) = 0x0909e0480909e048;
-  *((unsigned long *)&__m128i_result[0]) = 0x0909e0480909e048;
-  __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
-  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
-
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x909e0480909e048;
+  *((unsigned long *)&__m128i_result[0]) = 0x909e0480909e048;
   __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x00000000000000c0;
-  *((unsigned long *)&__m128i_op0[0]) = 0x00000001ffffff29;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000030;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000029;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x00000000000000c0;
   *((unsigned long *)&__m128i_op2[0]) = 0x00000001ffffff29;
-  *((unsigned long *)&__m128i_result[1]) = 0xffffff2900000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffff29ffffff29;
   *((unsigned long *)&__m128i_result[0]) = 0x0000000100000001;
   __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
   *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
-  __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
-  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
-
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000001f;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x1f54e0ab00000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0101010101010101;
@@ -247,19 +214,8 @@ main ()
   __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
-  __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
-  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
-
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000007fff;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000002f0000002f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000001000000000;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000020000020;
@@ -280,30 +236,30 @@ main ()
   __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000004870ba0;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000900000010;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000002000000003;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000001000000010;
   *((unsigned long *)&__m128i_op2[1]) = 0x8000000100000000;
   *((unsigned long *)&__m128i_op2[0]) = 0x8000000000000103;
   *((unsigned long *)&__m128i_result[1]) = 0x0000010300000103;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000010300000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000010380000001;
   __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x000000ff0000857a;
-  *((unsigned long *)&__m128i_op0[0]) = 0x05fafe0101fe000e;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000001000000007;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000002000000001;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0xffffffffffffffff;
   *((unsigned long *)&__m128i_op2[0]) = 0xffffffffffffffff;
   *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
   __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0xada4808924882588;
-  *((unsigned long *)&__m128i_op0[0]) = 0xacad25090caca5a4;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000001a0000001b;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000a0000000b;
   *((unsigned long *)&__m128i_op1[1]) = 0x021b7d24c9678a35;
   *((unsigned long *)&__m128i_op1[0]) = 0x030298a6a1030a49;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
@@ -313,8 +269,8 @@ main ()
   __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffffffff;
-  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000003;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000013;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
@@ -324,14 +280,14 @@ main ()
   __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0xdfa6e0c6d46cdc13;
-  *((unsigned long *)&__m128i_op0[0]) = 0x21fc7081ec69b5f2;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000011;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x000000002c002400;
   *((unsigned long *)&__m128i_op2[1]) = 0xffffb96bffff57c9;
   *((unsigned long *)&__m128i_op2[0]) = 0xffff6080ffff4417;
-  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffb96bffff57c9;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffb96bffff57c9;
   __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
@@ -346,8 +302,8 @@ main ()
   __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000010;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000002000;
   *((unsigned long *)&__m128i_op1[0]) = 0xf0003000f0003000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
@@ -357,30 +313,30 @@ main ()
   __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x021b7d2449678a35;
-  *((unsigned long *)&__m128i_op0[0]) = 0x030298a621030a49;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000007;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000001a;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x7fff7fff7fff7fff;
   *((unsigned long *)&__m128i_op2[1]) = 0x021b7d24c9678a35;
   *((unsigned long *)&__m128i_op2[0]) = 0x030298a6a1030a49;
-  *((unsigned long *)&__m128i_result[1]) = 0x021b7d24c9678a35;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x7fff7fff7fff7fff;
   __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0x7f7f00007f7f0000;
-  *((unsigned long *)&__m128i_op0[0]) = 0x7f7f80807f7f8080;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000fffe0000fffe;
   *((unsigned long *)&__m128i_op2[1]) = 0x7f8000007f800000;
   *((unsigned long *)&__m128i_op2[0]) = 0x7f8000007f800000;
-  *((unsigned long *)&__m128i_result[1]) = 0x7f8000007f800000;
-  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000fffe0000fffe;
+  *((unsigned long *)&__m128i_result[0]) = 0x7f8000007f800000;
   __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
   ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
 
-  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
-  *((unsigned long *)&__m128i_op0[0]) = 0xfffffffffff10000;
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000010;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000020;
   *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
   *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
-- 
2.20.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re:[pushed] [PATCH] LoongArch: Fix lsx-vshuf.c and lasx-xvshuf_b.c tests fail on LA664 [PR112611]
  2023-11-29  3:16 [PATCH] LoongArch: Fix lsx-vshuf.c and lasx-xvshuf_b.c tests fail on LA664 [PR112611] Jiahao Xu
@ 2023-12-08  8:45 ` chenglulu
  0 siblings, 0 replies; 2+ messages in thread
From: chenglulu @ 2023-12-08  8:45 UTC (permalink / raw)
  To: Jiahao Xu, gcc-patches; +Cc: xry111, i, xuchenghua

Pushed to r14-6316.

在 2023/11/29 上午11:16, Jiahao Xu 写道:
> For [x]vshuf instructions, if the index value in the selector exceeds 63, it triggers
> undefined behavior on LA464, but not on LA664. To ensure compatibility of these two
> tests on both LA464 and LA664, we have modified both tests to ensure that the index
> value in the selector does not exceed 63.
>
> gcc/testsuite/ChangeLog:
>
> 	* gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c: Sure index less than 64.
> 	* gcc.target/loongarch/vector/lsx/lsx-vshuf.c: Ditto.
>
> diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c
> index 641ea2315ff..03c479a085c 100644
> --- a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c
> +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvshuf_b.c
> @@ -44,9 +44,9 @@ main ()
>     *((unsigned long *)&__m256i_op1[1]) = 0xfffffefefffffefe;
>     *((unsigned long *)&__m256i_op1[0]) = 0xfffffefefffffefe;
>     *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0xfffffff8fffffff8;
> +  *((unsigned long *)&__m256i_op2[2]) = 0x3f3f3f383f3f3f38;
>     *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0xfffffff8fc000000;
> +  *((unsigned long *)&__m256i_op2[0]) = 0x3f3f3f383c000000;
>     *((unsigned long *)&__m256i_result[3]) = 0xfafafafafafafafa;
>     *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_result[1]) = 0xfefefefefefefefe;
> @@ -138,33 +138,14 @@ main ()
>     *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000ffffffffffff;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000ffff0000ffff;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000ffffffffffff;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000ffff0000ffff;
> +  *((unsigned long *)&__m256i_op2[3]) = 0x0000111111111111;
> +  *((unsigned long *)&__m256i_op2[2]) = 0x0000222200002222;
> +  *((unsigned long *)&__m256i_op2[1]) = 0x0000111111111111;
> +  *((unsigned long *)&__m256i_op2[0]) = 0x0000222200002222;
>     *((unsigned long *)&__m256i_result[3]) = 0xffff000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0xffff0000ffff0000;
> +  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_result[1]) = 0xffff000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0xffff0000ffff0000;
> -  __m256i_out = __lasx_xvshuf_b (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x000000000000ffff;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x000000000000ffff;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x000000000000ffff;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x000000000000ffff;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
>     __m256i_out = __lasx_xvshuf_b (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> @@ -177,7 +158,7 @@ main ()
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000077fff;
> +  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000032f1f;
>     *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
> @@ -187,9 +168,9 @@ main ()
>     __m256i_out = __lasx_xvshuf_b (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffffffefe;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000101;
> -  *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffffffefe;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0011001100110011;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0011001100110011;
>     *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000101;
>     *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op1[2]) = 0x67eee33567eee435;
> @@ -199,35 +180,16 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op2[1]) = 0x00000000ffffffff;
>     *((unsigned long *)&__m256i_op2[0]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0022002200000000;
>     *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> -  __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
> -  *((unsigned long *)&__m256i_op0[3]) = 0xffffffff80000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0xffffffff80000000;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x001f001f00000000;
>     *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
> @@ -244,10 +206,10 @@ main ()
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0011001100110011;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0011001100110011;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0011001100110011;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0011001100110011;
>     *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
> @@ -256,17 +218,17 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op2[1]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op2[0]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x003f003f003f003f;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x003f003f003f003f;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x003f003f003f003f;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x003f003f003f003f;
>     *((unsigned long *)&__m256i_op1[3]) = 0xefdfefdf00000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0xefdfefdfefdfefdf;
>     *((unsigned long *)&__m256i_op1[1]) = 0xefdfefdf00000000;
> @@ -275,36 +237,17 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op2[1]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op2[0]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> -  __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0xefdfefdfefdfefdf;
> +  *((unsigned long *)&__m256i_result[2]) = 0xefdfefdfefdfefdf;
> +  *((unsigned long *)&__m256i_result[1]) = 0xefdfefdfefdfefdf;
> +  *((unsigned long *)&__m256i_result[0]) = 0xefdfefdfefdfefdf;
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x7575ffff75757595;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x7575ffff7575f575;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x7575ffff75757595;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x7575ffff7575f575;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0035000000350005;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0035000000350015;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0035000000350025;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0035000000350035;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000003;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000010001;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000003;
> @@ -313,10 +256,10 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0x7575757575757575;
>     *((unsigned long *)&__m256i_op2[1]) = 0x7575757575757575;
>     *((unsigned long *)&__m256i_op2[0]) = 0x7575757575757575;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0x7575757575757575;
> +  *((unsigned long *)&__m256i_result[2]) = 0x7575757575757575;
> +  *((unsigned long *)&__m256i_result[1]) = 0x7575757575757575;
> +  *((unsigned long *)&__m256i_result[0]) = 0x7575757575757575;
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> @@ -358,29 +301,10 @@ main ()
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> -  __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
> -  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000fffe;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x00000000000000f0;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000fffe;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000000f0;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000003e;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000010;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000003e;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000010;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> @@ -390,16 +314,16 @@ main ()
>     *((unsigned long *)&__m256i_op2[1]) = 0x8000000000000000;
>     *((unsigned long *)&__m256i_op2[0]) = 0x000000ffff88ff88;
>     *((unsigned long *)&__m256i_result[3]) = 0xff88ff88ff880000;
> -  *((unsigned long *)&__m256i_result[2]) = 0xff88ff88ff880000;
> +  *((unsigned long *)&__m256i_result[2]) = 0xff88ff88ff88ff88;
>     *((unsigned long *)&__m256i_result[1]) = 0xff88ff88ff880000;
> -  *((unsigned long *)&__m256i_result[0]) = 0xff88ff88ff880000;
> +  *((unsigned long *)&__m256i_result[0]) = 0xff88ff88ff88ff88;
>     __m256i_out = __lasx_xvshuf_h (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x000000010000ffe1;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000101001e18;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x000000010000ffe1;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000101001e18;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000011;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100000018;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000001;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100000008;
>     *((unsigned long *)&__m256i_op1[3]) = 0x98111cca98111cca;
>     *((unsigned long *)&__m256i_op1[2]) = 0x98111cca98111cca;
>     *((unsigned long *)&__m256i_op1[1]) = 0x98111cca98111cca;
> @@ -408,17 +332,17 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0x0000000101001e18;
>     *((unsigned long *)&__m256i_op2[1]) = 0x000000010000ffe1;
>     *((unsigned long *)&__m256i_op2[0]) = 0x0000000101001e18;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000001;
>     *((unsigned long *)&__m256i_result[2]) = 0x0000000101001e18;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000000;
> +  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001;
>     *((unsigned long *)&__m256i_result[0]) = 0x0000000101001e18;
>     __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x80008000b3e8fef1;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x80008000802ea100;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x000000010000001a;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000001100000001;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000002100000010;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x000000310000001f;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> @@ -427,17 +351,17 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000002;
>     *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000001;
>     *((unsigned long *)&__m256i_op2[0]) = 0x00000000012e2110;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000001;
>     *((unsigned long *)&__m256i_result[2]) = 0x0000000200000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x012e2110012e2110;
> +  *((unsigned long *)&__m256i_result[1]) = 0x00000000012e2110;
> +  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
>     __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000082a54290;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x00000000028aa700;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000082a54290;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000002a54287;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0000002f00000000;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000001a00000000;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x000000010000001c;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000e0000000c;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x00000000002a542a;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> @@ -448,8 +372,8 @@ main ()
>     *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[1]) = 0x00000000002a542a;
> +  *((unsigned long *)&__m256i_result[0]) = 0x00000000002a542a;
>     __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> @@ -472,10 +396,10 @@ main ()
>     __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000031;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100000031;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000031;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100000031;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> @@ -491,10 +415,10 @@ main ()
>     __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0001000100010001;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0001000100010001;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0000000200000001;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000400000003;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000600000005;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000800000007;
>     *((unsigned long *)&__m256i_op1[3]) = 0x000000007fc00000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x000000007fc00000;
>     *((unsigned long *)&__m256i_op1[1]) = 0x000000007fc00000;
> @@ -504,7 +428,7 @@ main ()
>     *((unsigned long *)&__m256i_op2[1]) = 0xdfffffffdfffffff;
>     *((unsigned long *)&__m256i_op2[0]) = 0x8000000080000000;
>     *((unsigned long *)&__m256i_result[3]) = 0x8000000080000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x8000000080000000;
> +  *((unsigned long *)&__m256i_result[2]) = 0x7fc00000dfffffff;
>     *((unsigned long *)&__m256i_result[1]) = 0x8000000080000000;
>     *((unsigned long *)&__m256i_result[0]) = 0x8000000080000000;
>     __m256i_out = __lasx_xvshuf_w (__m256i_op0, __m256i_op1, __m256i_op2);
> @@ -530,9 +454,9 @@ main ()
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
>     *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0001000104000200;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000002000000030;
>     *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0001000104000200;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000001000000000;
>     *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m256i_op1[2]) = 0xffff0000ffff0000;
>     *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
> @@ -586,10 +510,10 @@ main ()
>     __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000fffffe01fe52;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ff01ff02;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000fffffe01fe52;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ff01ff02;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000002;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000003;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000800000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000080008001;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000800000000000;
> @@ -598,36 +522,17 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0x000000000000ffff;
>     *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op2[0]) = 0x000000000000ffff;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000080008001;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000080008001;
> -  __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0x000000000000ffff;
>     *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[1]) = 0x0000000080008001;
> +  *((unsigned long *)&__m256i_result[0]) = 0x0000800000000000;
>     __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
>     *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000011;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000022;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000033;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> @@ -643,44 +548,6 @@ main ()
>     __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> -  __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[2]) = 0x0008000000000000;
> -  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op1[0]) = 0x0008000000000000;
> -  *((unsigned long *)&__m256i_op2[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> -  __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
> -  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
> -
>     *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> @@ -701,9 +568,9 @@ main ()
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
>     *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000002000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000002000000000;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000010;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000020;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000030;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
> @@ -719,10 +586,10 @@ main ()
>     __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0xfffeb6839ffffd80;
> -  *((unsigned long *)&__m256i_op0[2]) = 0xfffeb8649d0d6250;
> -  *((unsigned long *)&__m256i_op0[1]) = 0xfffeb6839ffffd80;
> -  *((unsigned long *)&__m256i_op0[0]) = 0xfffeb8649d0d6250;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000000a;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000001b;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000002c;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000003d;
>     *((unsigned long *)&__m256i_op1[3]) = 0xfffeb6839ffffd80;
>     *((unsigned long *)&__m256i_op1[2]) = 0xfffe97c020010001;
>     *((unsigned long *)&__m256i_op1[1]) = 0xfffeb6839ffffd80;
> @@ -731,17 +598,17 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0xfffe97c020010001;
>     *((unsigned long *)&__m256i_op2[1]) = 0xfffeb6839ffffd80;
>     *((unsigned long *)&__m256i_op2[0]) = 0xfffe97c020010001;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0xfffe97c020010001;
> +  *((unsigned long *)&__m256i_result[2]) = 0xfffeb6839ffffd80;
> +  *((unsigned long *)&__m256i_result[1]) = 0xfffe97c020010001;
> +  *((unsigned long *)&__m256i_result[0]) = 0xfffeb6839ffffd80;
>     __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> -  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000001a;
> +  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000001b;
> +  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000002;
> +  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000007;
>     *((unsigned long *)&__m256i_op1[3]) = 0x0000000000010001;
>     *((unsigned long *)&__m256i_op1[2]) = 0x0000000000010001;
>     *((unsigned long *)&__m256i_op1[1]) = 0x0000000000010001;
> @@ -750,10 +617,10 @@ main ()
>     *((unsigned long *)&__m256i_op2[2]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op2[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m256i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m256i_result[3]) = 0x0000000000010001;
> +  *((unsigned long *)&__m256i_result[2]) = 0x0000000000010001;
> +  *((unsigned long *)&__m256i_result[1]) = 0x0000000000010001;
> +  *((unsigned long *)&__m256i_result[0]) = 0x0000000000010001;
>     __m256i_out = __lasx_xvshuf_d (__m256i_op0, __m256i_op1, __m256i_op2);
>     ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
>   
> diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
> index 4e7fcc02b12..646935c921a 100644
> --- a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
> +++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
> @@ -21,7 +21,7 @@ main ()
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000401000001;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0001000100000004;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x00000000007f0000;
> +  *((unsigned long *)&__m128i_op2[0]) = 0x00000000003f0000;
>     *((unsigned long *)&__m128i_result[1]) = 0x0404040404040404;
>     *((unsigned long *)&__m128i_result[0]) = 0x0404040404000404;
>     __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
> @@ -32,7 +32,7 @@ main ()
>     *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0xffffffff00000000;
> +  *((unsigned long *)&__m128i_op2[0]) = 0x3f2f1f0f00000000;
>     *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
>     __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
> @@ -64,10 +64,10 @@ main ()
>     *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m128i_op1[1]) = 0x52525252adadadad;
>     *((unsigned long *)&__m128i_op1[0]) = 0x52525252adadadad;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x800000007fffffff;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x800000007fffffff;
> -  *((unsigned long *)&__m128i_result[1]) = 0x00adadad00000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x00adadad00000000;
> +  *((unsigned long *)&__m128i_op2[1]) = 0x2000000004030201;
> +  *((unsigned long *)&__m128i_op2[0]) = 0x2000000014131211;
> +  *((unsigned long *)&__m128i_result[1]) = 0xadadadad52adadad;
> +  *((unsigned long *)&__m128i_result[0]) = 0xadadadadffffffff;
>     __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> @@ -97,10 +97,10 @@ main ()
>     *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000100;
>     *((unsigned long *)&__m128i_op1[1]) = 0x04040403fafafafc;
>     *((unsigned long *)&__m128i_op1[0]) = 0x000000000000ff80;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x8080808080808080;
> -  *((unsigned long *)&__m128i_result[0]) = 0x8080808080808080;
> +  *((unsigned long *)&__m128i_op2[1]) = 0x00101a1b1c1d1e1f;
> +  *((unsigned long *)&__m128i_op2[0]) = 0x0807060504030201;
> +  *((unsigned long *)&__m128i_result[1]) = 0x8000020202000000;
> +  *((unsigned long *)&__m128i_result[0]) = 0xfc000000000000ff;
>     __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> @@ -119,10 +119,10 @@ main ()
>     *((unsigned long *)&__m128i_op0[0]) = 0xffd7ff8dffa4ff7a;
>     *((unsigned long *)&__m128i_op1[1]) = 0x34947b4b11684f92;
>     *((unsigned long *)&__m128i_op1[0]) = 0xee297a731e5c5f86;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x7fffffffffffffff;
> -  *((unsigned long *)&__m128i_op2[0]) = 0xffc0000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000868686868686;
> +  *((unsigned long *)&__m128i_op2[1]) = 0x1f0710301a2b332d;
> +  *((unsigned long *)&__m128i_op2[0]) = 0x1f20000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0xffee7a7a9811ff7b;
> +  *((unsigned long *)&__m128i_result[0]) = 0xff86868686868686;
>     __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> @@ -137,19 +137,19 @@ main ()
>     __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x001f002f003f000f;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x001f002f003f000f;
>     *((unsigned long *)&__m128i_op1[1]) = 0x7fffffffffffffff;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0x7fff7fff7fff7fff;
> +  *((unsigned long *)&__m128i_result[0]) = 0x7fff7fff7fff7fff;
>     __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x000100040010001f;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0002000300110012;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x000000002bfd9461;
>     *((unsigned long *)&__m128i_op2[1]) = 0x00007fff00007fff;
> @@ -170,74 +170,41 @@ main ()
>     __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> -  __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
> -  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
> -
> -  *((unsigned long *)&__m128i_op0[1]) = 0x000300037ff000ff;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0003000300a10003;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x000300030000001f;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0003000300000003;
>     *((unsigned long *)&__m128i_op1[1]) = 0x000300037ff000ff;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0003000300a10003;
>     *((unsigned long *)&__m128i_op2[1]) = 0x000000007ff000ff;
>     *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000003;
>     *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
>     __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0909000009090000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0909000009090000;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0019000000090000;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0019000000090000;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0909000009090000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0909000009090000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x002a05a2f059094a;
>     *((unsigned long *)&__m128i_op2[0]) = 0x05ad3ba576eae048;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0909e0480909e048;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0909e0480909e048;
> -  __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
> -  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
> -
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0x909e0480909e048;
> +  *((unsigned long *)&__m128i_result[0]) = 0x909e0480909e048;
>     __m128i_out = __lsx_vshuf_h (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x00000000000000c0;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x00000001ffffff29;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000030;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000029;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x00000000000000c0;
>     *((unsigned long *)&__m128i_op2[0]) = 0x00000001ffffff29;
> -  *((unsigned long *)&__m128i_result[1]) = 0xffffff2900000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0xffffff29ffffff29;
>     *((unsigned long *)&__m128i_result[0]) = 0x0000000100000001;
>     __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
>     *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> -  __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
> -  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
> -
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x00000000000000ff;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000001f;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x1f54e0ab00000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0101010101010101;
> @@ -247,19 +214,8 @@ main ()
>     __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> -  __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
> -  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
> -
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000007fff;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000002f0000002f;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000001000000000;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000020000020;
> @@ -280,30 +236,30 @@ main ()
>     __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000004870ba0;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000900000010;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000002000000003;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000001000000010;
>     *((unsigned long *)&__m128i_op2[1]) = 0x8000000100000000;
>     *((unsigned long *)&__m128i_op2[0]) = 0x8000000000000103;
>     *((unsigned long *)&__m128i_result[1]) = 0x0000010300000103;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000010300000000;
> +  *((unsigned long *)&__m128i_result[0]) = 0x0000010380000001;
>     __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x000000ff0000857a;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x05fafe0101fe000e;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000001000000007;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000002000000001;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m128i_op2[0]) = 0xffffffffffffffff;
>     *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
> +  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
>     __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0xada4808924882588;
> -  *((unsigned long *)&__m128i_op0[0]) = 0xacad25090caca5a4;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000001a0000001b;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000a0000000b;
>     *((unsigned long *)&__m128i_op1[1]) = 0x021b7d24c9678a35;
>     *((unsigned long *)&__m128i_op1[0]) = 0x030298a6a1030a49;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> @@ -313,8 +269,8 @@ main ()
>     __m128i_out = __lsx_vshuf_w (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffffffff;
> -  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000003;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000013;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> @@ -324,14 +280,14 @@ main ()
>     __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0xdfa6e0c6d46cdc13;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x21fc7081ec69b5f2;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000011;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x000000002c002400;
>     *((unsigned long *)&__m128i_op2[1]) = 0xffffb96bffff57c9;
>     *((unsigned long *)&__m128i_op2[0]) = 0xffff6080ffff4417;
> -  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0xffffb96bffff57c9;
> +  *((unsigned long *)&__m128i_result[0]) = 0xffffb96bffff57c9;
>     __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> @@ -346,8 +302,8 @@ main ()
>     __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000020;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000010;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000002000;
>     *((unsigned long *)&__m128i_op1[0]) = 0xf0003000f0003000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
> @@ -357,30 +313,30 @@ main ()
>     __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x021b7d2449678a35;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x030298a621030a49;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000007;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000001a;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x7fff7fff7fff7fff;
>     *((unsigned long *)&__m128i_op2[1]) = 0x021b7d24c9678a35;
>     *((unsigned long *)&__m128i_op2[0]) = 0x030298a6a1030a49;
> -  *((unsigned long *)&__m128i_result[1]) = 0x021b7d24c9678a35;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[0]) = 0x7fff7fff7fff7fff;
>     __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0x7f7f00007f7f0000;
> -  *((unsigned long *)&__m128i_op0[0]) = 0x7f7f80807f7f8080;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000002;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000fffe0000fffe;
>     *((unsigned long *)&__m128i_op2[1]) = 0x7f8000007f800000;
>     *((unsigned long *)&__m128i_op2[0]) = 0x7f8000007f800000;
> -  *((unsigned long *)&__m128i_result[1]) = 0x7f8000007f800000;
> -  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
> +  *((unsigned long *)&__m128i_result[1]) = 0x0000fffe0000fffe;
> +  *((unsigned long *)&__m128i_result[0]) = 0x7f8000007f800000;
>     __m128i_out = __lsx_vshuf_d (__m128i_op0, __m128i_op1, __m128i_op2);
>     ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
>   
> -  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
> -  *((unsigned long *)&__m128i_op0[0]) = 0xfffffffffff10000;
> +  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000010;
> +  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000020;
>     *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
>     *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-12-08  8:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-29  3:16 [PATCH] LoongArch: Fix lsx-vshuf.c and lasx-xvshuf_b.c tests fail on LA664 [PR112611] Jiahao Xu
2023-12-08  8:45 ` chenglulu

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).