public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-3948] LoongArch: Add tests for SX vector handling and shuffle instructions.
@ 2023-09-14  0:46 LuluCheng
  0 siblings, 0 replies; only message in thread
From: LuluCheng @ 2023-09-14  0:46 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:874868309c6e5f709014a16d472cc79ad5c8c887

commit r14-3948-g874868309c6e5f709014a16d472cc79ad5c8c887
Author: Xiaolong Chen <chenxiaolong@loongson.cn>
Date:   Tue Sep 12 11:34:56 2023 +0800

    LoongArch: Add tests for SX vector handling and shuffle instructions.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.target/loongarch/vector/lsx/lsx-vbsll.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vbsrl.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vextrins.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vilvh.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vilvl.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vinsgr2vr.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vpackev.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vpackod.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vpickev.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vpickod.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vpickve2gr.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vpremi.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vreplgr2vr.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vreplve.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vreplvei.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vshuf.c: New test.
            * gcc.target/loongarch/vector/lsx/lsx-vshuf4i.c: New test.

Diff:
---
 .../gcc.target/loongarch/vector/lsx/lsx-vbsll.c    |  83 ++++
 .../gcc.target/loongarch/vector/lsx/lsx-vbsrl.c    |  55 +++
 .../gcc.target/loongarch/vector/lsx/lsx-vextrins.c | 479 ++++++++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vilvh.c    | 353 +++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vilvl.c    | 327 ++++++++++++++
 .../loongarch/vector/lsx/lsx-vinsgr2vr.c           | 278 ++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vpackev.c  | 452 +++++++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vpackod.c  | 461 +++++++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vpickev.c  | 362 +++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vpickod.c  | 336 ++++++++++++++
 .../loongarch/vector/lsx/lsx-vpickve2gr.c          | 488 +++++++++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vpremi.c   |  20 +
 .../loongarch/vector/lsx/lsx-vreplgr2vr.c          | 212 +++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vreplve.c  | 300 +++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vreplvei.c | 293 +++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vshuf.c    | 394 +++++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vshuf4i.c  | 348 +++++++++++++++
 17 files changed, 5241 insertions(+)

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vbsll.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vbsll.c
new file mode 100644
index 000000000000..34246c5518b3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vbsll.c
@@ -0,0 +1,83 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00ffffff000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffff000000ff00;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128i_result[1]) = 0xff00ff00ff00ff00;
+  *((unsigned long *)&__m128i_result[0]) = 0xff00000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0x17);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000800;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0008000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0x15);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000a000a000a000a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000a000a000a000a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0a00000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0xf);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0141010101410101;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0141010101410101;
+  *((unsigned long *)&__m128i_result[1]) = 0x4101010141010100;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0x19);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000100000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0xc);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0xb);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000158;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000001580000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsll_v (__m128i_op0, 0xa);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vbsrl.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vbsrl.c
new file mode 100644
index 000000000000..986b7d5667e1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vbsrl.c
@@ -0,0 +1,55 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000401000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100000004;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000040100;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010000;
+  __m128i_out = __lsx_vbsrl_v (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000003fffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000003fffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x003fffffff000000;
+  __m128i_out = __lsx_vbsrl_v (__m128i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0005fe0300010101;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000005;
+  *((unsigned long *)&__m128i_result[0]) = 0xfe03000101010000;
+  __m128i_out = __lsx_vbsrl_v (__m128i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vbsrl_v (__m128i_op0, 0x13);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xd3259a2984048c23;
+  *((unsigned long *)&__m128i_op0[0]) = 0xf9796558e39953fd;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000d3259a;
+  __m128i_out = __lsx_vbsrl_v (__m128i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vextrins.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vextrins.c
new file mode 100644
index 000000000000..8d4158b57347
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vextrins.c
@@ -0,0 +1,479 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xbf8000000000ffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xcf00000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff00000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x92);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xc2);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x1c);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0x3d);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0200020002000200;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0200020002000200;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff02000200;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0c03e17edd781b11;
+  *((unsigned long *)&__m128i_op0[0]) = 0x342caf9be55700b5;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000040400000383;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffe000ffff1fff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0c03e17edd781b11;
+  *((unsigned long *)&__m128i_result[0]) = 0x342caf9bffff1fff;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0xcc);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xc6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000a16316b0;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000063636363;
+  *((unsigned long *)&__m128i_op1[1]) = 0x16161616a16316b0;
+  *((unsigned long *)&__m128i_op1[0]) = 0x6363636363636363;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000a16316b0;
+  *((unsigned long *)&__m128i_result[0]) = 0x16161616a16316b0;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0xa7);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfff489b693120950;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffc45a851c40c18;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffc45a851c40c18;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x48);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0xcc);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000005d5d;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x41);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffffffffefefe6a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000c2bac2c2;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000fefefe6a;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000c2bac2c2;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x7c);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7ffffffeffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4080808080808080;
+  *((unsigned long *)&__m128i_result[1]) = 0xff80ffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x7ffffffeffffffff;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xe6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000a000a000a000a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000a000a000a000a;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000a0000000a;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000a00000009;
+  *((unsigned long *)&__m128i_result[1]) = 0x000a000a0000000a;
+  *((unsigned long *)&__m128i_result[0]) = 0x000a000a000a000a;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0xaf);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffff80000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x67);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x004fcfcfd01f9f9f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x9f4fcfcfcf800000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x004fcfcfd01f9f9f;
+  *((unsigned long *)&__m128i_op1[0]) = 0x9f4fcfcfcf800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x004f1fcfd01f9f9f;
+  *((unsigned long *)&__m128i_result[0]) = 0x9f4fcfcfcf800000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xda);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x75b043c4d17db125;
+  *((unsigned long *)&__m128i_op0[0]) = 0xeef8227b596117b1;
+  *((unsigned long *)&__m128i_op1[1]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_result[1]) = 0x75b043c4d17db125;
+  *((unsigned long *)&__m128i_result[0]) = 0xeef8227b4f8017b1;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0x15);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x027c027c000027c0;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000000de32400;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x027c027c000027c0;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0x77);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x6363797c63996399;
+  *((unsigned long *)&__m128i_op0[0]) = 0x171f0a1f6376441f;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x6363797c63990099;
+  *((unsigned long *)&__m128i_result[0]) = 0x171f0a1f6376441f;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0x94);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0bd80bd80bdfffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0bd80bd80bd80000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0bd80bd80bd80000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0xf9);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x41dfbe1f41e0ffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffc2ffe000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000ffc100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x41dfbe1f41e0ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffc100010001;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0xec);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xe93d0bd19ff0c170;
+  *((unsigned long *)&__m128i_op1[0]) = 0x5237c1bac9eadf55;
+  *((unsigned long *)&__m128i_result[1]) = 0x5237c1baffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x7d);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffbd994889;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000000a092444;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000890000000000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0x58);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000fea0000fffe;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffff8607db959f;
+  *((unsigned long *)&__m128i_op1[0]) = 0xff0cff78ff96ff14;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000fea0000fffe;
+  *((unsigned long *)&__m128i_result[0]) = 0xff0cff78ff96ff14;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0xc2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x01ef013f01e701f8;
+  *((unsigned long *)&__m128i_op1[0]) = 0x35bb8d32b2625c00;
+  *((unsigned long *)&__m128i_result[1]) = 0x00008d3200000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0xea);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8003000000020000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x4040ffffc0400004;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x8003000000020000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x64);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x1f);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x74);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffff53d9;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffff0001ffff9515;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffff53d9;
+  *((unsigned long *)&__m128i_result[0]) = 0xff000001ffff9515;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0x67);
+  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]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xf4);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xc1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x71);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x82);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xd5);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0xf3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xbbe5560400010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0xe7e5dabf00010001;
+  *((unsigned long *)&__m128i_op1[1]) = 0xbbe5560400010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0xe7e5dabf00010001;
+  *((unsigned long *)&__m128i_result[1]) = 0xe7e5560400010001;
+  *((unsigned long *)&__m128i_result[0]) = 0xe7e5dabf00010001;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0xf3);
+  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]) = 0x0000000000000002;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x2c);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0x27);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x5d);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010001;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x24);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000101010001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010001;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xb6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x975ca6046e2e4889;
+  *((unsigned long *)&__m128i_op1[0]) = 0x1748c4f9ed1a5870;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x1748c4f9ed1a5870;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x6a);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfffffffffc606ec5;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000014155445;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0x76);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000024170000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x000aa822a79308f6;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000084d12ce;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000084d12ce;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000024170000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x32);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000084d12ce;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000024170000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0x56);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vextrins_b (__m128i_op0, __m128i_op1, 0xc5);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000034;
+  *((unsigned long *)&__m128i_op1[1]) = 0x01017f3c00000148;
+  *((unsigned long *)&__m128i_op1[0]) = 0x117d7f7b093d187f;
+  *((unsigned long *)&__m128i_result[1]) = 0x117d7f7b093d187f;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000034;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x70);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x01533b5e7489ae24;
+  *((unsigned long *)&__m128i_op0[0]) = 0xe519ab7e71e33848;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x01533b5e7489ae24;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffab7e71e33848;
+  __m128i_out = __lsx_vextrins_h (__m128i_op0, __m128i_op1, 0xbc);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffff760386bdae46;
+  *((unsigned long *)&__m128i_op1[0]) = 0xc1fc7941bc7e00ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffff7603;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0xc3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffff2356fe165486;
+  *((unsigned long *)&__m128i_op1[1]) = 0x3a8000003a800000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000ef0000000003b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000003b0000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff2356fe165486;
+  __m128i_out = __lsx_vextrins_w (__m128i_op0, __m128i_op1, 0x70);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vextrins_d (__m128i_op0, __m128i_op1, 0x8a);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvh.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvh.c
new file mode 100644
index 000000000000..aa802b2959e0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvh.c
@@ -0,0 +1,353 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000003;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x007fffff00000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x007fffff00000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x195f307a5d04acbb;
+  *((unsigned long *)&__m128i_op0[0]) = 0x6a1a3fbb3c90260e;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x8000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x195f307a5d04acbb;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8644000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xaed495f03343a685;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfffffffffffffffe;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffbe6ed563;
+  *((unsigned long *)&__m128i_result[1]) = 0x8644ffff0000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000fffe;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff0000ffff0000;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000e0000000e;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000e0000000e;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000001300000013;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000001300000013;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000e13;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000e13;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000a000a000a000a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000a000a000a000a;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000a000a00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x000a000a00000000;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff00ff00ff00ff00;
+  *((unsigned long *)&__m128i_result[0]) = 0xff00ff00ff00ff00;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000004f804f80;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000004f804f80;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_result[1]) = 0x004f0080004f0080;
+  *((unsigned long *)&__m128i_result[0]) = 0x004f0080004f0080;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00007fff00007fff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x000000ffa7f8ff81;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000003f0080ffc0;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000007fff00ff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000a7f87fffff81;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00003f8000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00003f8000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x8000ffff00000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x8000ffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000080003f80ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x2020202020202020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x202020202020ff20;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x2000200020002000;
+  *((unsigned long *)&__m128i_result[0]) = 0x2000200020002000;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  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]) = 0x0008000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0808080808080808;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0808080808080808;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0808ffff0808ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0808ffff0808ffff;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00ff00ff00ff00ff;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000157;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000158;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010058;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100010058;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000ffff;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000200;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000200;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000200;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000008;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0002008360500088;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000008;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000f3040705;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000f3040705;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  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]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff00ff00ff00ff00;
+  *((unsigned long *)&__m128i_result[0]) = 0xff00ff00ff00ff00;
+  __m128i_out = __lsx_vilvh_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vilvh_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvl.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvl.c
new file mode 100644
index 000000000000..88c66f220b8f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvl.c
@@ -0,0 +1,327 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000b0000000b;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000201000000000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x000201000000000b;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffefffefffffffc;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffffefffffffeff;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffffffffffffcff;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x7404443064403aec;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000d6eefefc0498;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffff7f800000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x2d1da85b7f800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x002d001dd6a8ee5b;
+  *((unsigned long *)&__m128i_result[0]) = 0xfe7ffc8004009800;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000800;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0010001000100010;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0010001000100010;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000001000000010;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000001000000010;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000c0000bd49;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000c7fff000c;
+  *((unsigned long *)&__m128i_op1[1]) = 0x1000100010001000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x1000100010001000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000c7fff000c;
+  *((unsigned long *)&__m128i_result[0]) = 0x1000100010001000;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00ff00ff0000007f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000001e8e1d8;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000e400000001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000001e8e1d8;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000e400000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000000000e4e4;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000101;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  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]) = 0x0008000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0008000000000000;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  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]) = 0x00000000ffffffe0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000ffe0;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xbafebb00ffd500fe;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffff80005613;
+  *((unsigned long *)&__m128i_op1[0]) = 0x007f800000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000807f80808000;
+  *((unsigned long *)&__m128i_result[0]) = 0x80006b0000000b00;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000080808000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0080008000800080;
+  *((unsigned long *)&__m128i_result[0]) = 0x0080006b0000000b;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xc0808000c0808000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xc080800000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xc080800000000000;
+  __m128i_out = __lsx_vilvl_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00ff010300ff0103;
+  *((unsigned long *)&__m128i_op1[1]) = 0x7ff0000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x7ff0000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x007ffff001000300;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ff0001000300;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x7ffffffe00000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x7ffffffe00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x007f00ff00ff00fe;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0x8);
+  *((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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0002000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000ff00ff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0014001400140000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000001400000014;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000001400000000;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00009c7c00007176;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000009c007c00;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000071007600;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x9c9c9c9c00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000020;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000020;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000060002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000060002;
+  *((unsigned long *)&__m128i_op1[1]) = 0xe4c8b96e2560afe9;
+  *((unsigned long *)&__m128i_op1[0]) = 0xc001a1867fffa207;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000c0010000a186;
+  *((unsigned long *)&__m128i_result[0]) = 0x00067fff0002a207;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000014414104505;
+  *((unsigned long *)&__m128i_op0[0]) = 0x1011050040004101;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000014414104505;
+  *((unsigned long *)&__m128i_op1[0]) = 0x1011050040004101;
+  *((unsigned long *)&__m128i_result[1]) = 0x1010111105050000;
+  *((unsigned long *)&__m128i_result[0]) = 0x4040000041410101;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vilvl_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffac5cffffac5c;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffac5cffffac5c;
+  *((unsigned long *)&__m128i_op1[1]) = 0x010169d9010169d9;
+  *((unsigned long *)&__m128i_op1[0]) = 0x01010287010146a1;
+  *((unsigned long *)&__m128i_result[1]) = 0xff01ff01ac025c87;
+  *((unsigned long *)&__m128i_result[0]) = 0xff01ff01ac465ca1;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff01ff01ac025c87;
+  *((unsigned long *)&__m128i_op0[0]) = 0xff01ff01ac465ca1;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000004;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff01ff0100000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xac465ca100000000;
+  __m128i_out = __lsx_vilvl_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000000eefff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xf8e1a03affffe3e2;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000246d9755;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000002427c2ee;
+  *((unsigned long *)&__m128i_result[1]) = 0xf8e10000a03a0000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff2427e3e2c2ee;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffe4ffe4ffe4ffe4;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffe4ffe4ffe4ffe4;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000011ff040;
+  *((unsigned long *)&__m128i_result[1]) = 0xff00e400ff00e400;
+  *((unsigned long *)&__m128i_result[0]) = 0xff01e41ffff0e440;
+  __m128i_out = __lsx_vilvl_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff00e400ff00e400;
+  *((unsigned long *)&__m128i_op0[0]) = 0xff01e41ffff0ffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffff000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffff000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff01ffffe41f0000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfff00000ffff0000;
+  __m128i_out = __lsx_vilvl_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vinsgr2vr.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vinsgr2vr.c
new file mode 100644
index 000000000000..2b9dcc0b55b7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vinsgr2vr.c
@@ -0,0 +1,278 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000007942652524;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x4265252400000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_op1 = 0x0000007942652524;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff2524ffffffff;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000017fff9000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000210011084;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000017fff9000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000200000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffffff;
+  long_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vinsgr2vr_d (__m128i_op0, long_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffffff;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffff0000;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0xf);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0080000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0080000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0080000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0080000000000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x9);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffff00000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x5d5d5d5d5d5d5d55;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000001;
+  *((unsigned long *)&__m128i_result[0]) = 0x5d5d5d005d5d5d55;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x4);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x1);
+  *((unsigned long *)&__m128i_op0[1]) = 0x8000000080000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x8000000080000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000000080000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x8000000080000000;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x2);
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffff0000;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000004;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x2020202020202020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x2020202020202020;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x2020202020202020;
+  *((unsigned long *)&__m128i_result[0]) = 0x202020202020ff20;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000800000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00fe01fc0005fff4;
+  int_op1 = 0x0000000020202020;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000820202020;
+  *((unsigned long *)&__m128i_result[0]) = 0x00fe01fc0005fff4;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffbfffffffbf;
+  long_op1 = 0x0000000000003a24;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000003a24;
+  __m128i_out = __lsx_vinsgr2vr_d (__m128i_op0, long_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x7ef8000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7ef8000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x7ef8000000000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100000000;
+  long_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_d (__m128i_op0, long_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff000000ff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000001000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000001000;
+  int_op1 = 0x000000007ff00000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000001000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000001000;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000020006;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000060000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0xd);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000020006;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000600;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000003;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000003;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000ff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000001f1f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00ff000000001f1f;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0xe);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  long_op1 = 0x0000000000000040;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000040;
+  __m128i_out = __lsx_vinsgr2vr_d (__m128i_op0, long_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffff0000;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000ffffff0000;
+  __m128i_out = __lsx_vinsgr2vr_w (__m128i_op0, int_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff000000000000;
+  __m128i_out = __lsx_vinsgr2vr_h (__m128i_op0, int_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x04faf60009f5f092;
+  *((unsigned long *)&__m128i_op0[0]) = 0x04fafa9200000000;
+  int_op1 = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x04faf600fff5f092;
+  *((unsigned long *)&__m128i_result[0]) = 0x04fafa9200000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0xb);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vinsgr2vr_b (__m128i_op0, int_op1, 0x5);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpackev.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpackev.c
new file mode 100644
index 000000000000..030e87fd8c5a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpackev.c
@@ -0,0 +1,452 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00001802041b0013;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00001802041b0013;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000ffff;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000ff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000ff000000ff;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff80000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xff80000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0080000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xf4b6f3f52f4ef4a8;
+  *((unsigned long *)&__m128i_result[1]) = 0xff80000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xf4b6f3f52f4ef4a8;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000ffff;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x10f917d72d3d01e4;
+  *((unsigned long *)&__m128i_op1[0]) = 0x203e16d116de012b;
+  *((unsigned long *)&__m128i_result[1]) = 0x00f900d7003d00e4;
+  *((unsigned long *)&__m128i_result[0]) = 0x003e00d100de002b;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000100000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000010000000000;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xc2f9bafac2fac2fa;
+  *((unsigned long *)&__m128i_op1[1]) = 0xbdf077eee7e20468;
+  *((unsigned long *)&__m128i_op1[0]) = 0xe3b1cc6953e7db29;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000e7e20468;
+  *((unsigned long *)&__m128i_result[0]) = 0xc2fac2fa53e7db29;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xf8f8e018f8f8e810;
+  *((unsigned long *)&__m128i_op1[0]) = 0xf8f8f008f8f8f800;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000e0180000e810;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000f0080000f800;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1211100f11100f0e;
+  *((unsigned long *)&__m128i_op0[0]) = 0x100f0e0d0f0e0d0c;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000002000000020;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000002000000020;
+  *((unsigned long *)&__m128i_result[1]) = 0x11000f2010000e20;
+  *((unsigned long *)&__m128i_result[0]) = 0x0f000d200e000c20;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xe3e3e3e3e3e3e3e3;
+  *((unsigned long *)&__m128i_op1[0]) = 0xe3e3e3e3e3e3e3e3;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xe3e3e3e3e3e3e3e3;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x7ffe7ffe7ffe7ffe;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00007ffe00007ffe;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000001c00ffffe;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00007f7f00007f7f;
+  *((unsigned long *)&__m128i_result[1]) = 0x000001000f00fe00;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000017fff00fe7f;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000f0009d3c;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000016fff9d3d;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfffff000f0008d3c;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffff0016fff8d3d;
+  *((unsigned long *)&__m128i_result[1]) = 0x00ff000000003c3c;
+  *((unsigned long *)&__m128i_result[0]) = 0x00ff0101ffff3d3d;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffff000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000006f00001f0a;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000958affff995d;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000958affff995d;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010001;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000001ca02f854;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000100013fa0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000100013fa0;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffefffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffefffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffefefffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0002fffefffd0001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x1202120212021202;
+  *((unsigned long *)&__m128i_op1[0]) = 0x1202120212021202;
+  *((unsigned long *)&__m128i_result[1]) = 0x0002000200020002;
+  *((unsigned long *)&__m128i_result[0]) = 0x0202fe02fd020102;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x5a6f5c53ebed3faa;
+  *((unsigned long *)&__m128i_op0[0]) = 0xa36aca4435b8b8e1;
+  *((unsigned long *)&__m128i_op1[1]) = 0x5a6f5c53ebed3faa;
+  *((unsigned long *)&__m128i_op1[0]) = 0xa36aca4435b8b8e1;
+  *((unsigned long *)&__m128i_result[1]) = 0x5c535c533faa3faa;
+  *((unsigned long *)&__m128i_result[0]) = 0xca44ca44b8e1b8e1;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0004000400040004;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0004000400040004;
+  *((unsigned long *)&__m128i_op1[1]) = 0x77c0404a4000403a;
+  *((unsigned long *)&__m128i_op1[0]) = 0x77c03fd640003fc6;
+  *((unsigned long *)&__m128i_result[1]) = 0x04c0044a0400043a;
+  *((unsigned long *)&__m128i_result[0]) = 0x04c004d6040004c6;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000006362ffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000d0000000d;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000dffff000d;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000010000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000002002;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000010000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xc000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000200000002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000200000002;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000200000002;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000200000002;
+  *((unsigned long *)&__m128i_result[1]) = 0x0002000200020002;
+  *((unsigned long *)&__m128i_result[0]) = 0x0002000200020002;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000208000002080;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000208000002080;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000208000002080;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000208000002080;
+  *((unsigned long *)&__m128i_result[1]) = 0x2080208020802080;
+  *((unsigned long *)&__m128i_result[0]) = 0x2080208020802080;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x000000000000000b;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000000000000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000000000000b;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000000000000b;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000000001b;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000001b;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000001b0000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000001b0000;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000000053a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfff9000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffc000400000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffc000400000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000002000000020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000001f0000001f;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000002000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000001f00000000;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xe593c8c4e593c8c4;
+  *((unsigned long *)&__m128i_op1[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x8080000080800000;
+  *((unsigned long *)&__m128i_result[0]) = 0x9380c4009380c400;
+  __m128i_out = __lsx_vpackev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffc2007aff230027;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0080005eff600001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x01017f3c00000148;
+  *((unsigned long *)&__m128i_op1[0]) = 0x117d7f7b093d187f;
+  *((unsigned long *)&__m128i_result[1]) = 0xff23002700000148;
+  *((unsigned long *)&__m128i_result[0]) = 0xff600001093d187f;
+  __m128i_out = __lsx_vpackev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff0000ffff0000;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0002711250a27112;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00d2701294027112;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff7112ffff7112;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff7012ffff7112;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x30eb020302101b03;
+  *((unsigned long *)&__m128i_op0[0]) = 0x020310d0c0030220;
+  *((unsigned long *)&__m128i_op1[1]) = 0x30eb020302101b03;
+  *((unsigned long *)&__m128i_op1[0]) = 0x020310d0c0030220;
+  *((unsigned long *)&__m128i_result[1]) = 0x020310d0c0030220;
+  *((unsigned long *)&__m128i_result[0]) = 0x020310d0c0030220;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000000eefff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xf8e1a03affffe3e2;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000000eefff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xf8e1a03affffe3e2;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000efffefff;
+  *((unsigned long *)&__m128i_result[0]) = 0xa03aa03ae3e2e3e2;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x02b010f881a281a2;
+  *((unsigned long *)&__m128i_op1[0]) = 0x27b169bbb8140001;
+  *((unsigned long *)&__m128i_result[1]) = 0x000010f8000081a2;
+  *((unsigned long *)&__m128i_result[0]) = 0x000069bb00000001;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpackod.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpackod.c
new file mode 100644
index 000000000000..783eedae1a18
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpackod.c
@@ -0,0 +1,461 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  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]) = 0x000201000000000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000020100;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000040;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000040;
+  *((unsigned long *)&__m128i_op1[1]) = 0x3ff0000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffc002000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00003ff000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000fffc00000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x03574e3a62407e03;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000001010000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x03574e3a62407e03;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000001010000;
+  *((unsigned long *)&__m128i_result[1]) = 0x03574e3a03574e3a;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  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]) = 0x0000000000000020;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  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]) = 0x00000000000001fe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000001;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000000003a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000100000015;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000800;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000ffff;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xe0404041e0404041;
+  *((unsigned long *)&__m128i_op0[0]) = 0xe0404041e0404041;
+  *((unsigned long *)&__m128i_op1[1]) = 0x803f800080000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xe0404041c0404040;
+  *((unsigned long *)&__m128i_result[1]) = 0xe0404041e0404041;
+  *((unsigned long *)&__m128i_result[0]) = 0x803f800080000000;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  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]) = 0xfe80000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00fe000000000000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfe80ffffffffff02;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xff80000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfe80ff80ffff0000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x11000f2010000e20;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0f000d200e000c20;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x11000f2000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0f000d2000000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x4f8000004f800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x4f8000004f800000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x4f8000004f800000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4f8000004f800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128i_result[0]) = 0x4f804f804f804f80;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000006f00001f0a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000c000ffffc000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000006f00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000c00000000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x40f0001000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x40f0001000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfffcfffcfffcfffc;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffcfffcfffcfffc;
+  *((unsigned long *)&__m128i_result[1]) = 0x40f0001000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffcfffcfffcfffc;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000002000000020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x2222272011111410;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000002000000020;
+  *((unsigned long *)&__m128i_op1[0]) = 0x2222272011111410;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000002000000020;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000002000000020;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000ffff0000ff00;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfffffffffffffef8;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffdfffdfffdffee0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffffffdfffdf;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0010100000100000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x1000100000101000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000001000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0010001000000010;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x21201f1e19181716;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x01203f1e3d1c3b1a;
+  *((unsigned long *)&__m128i_op1[0]) = 0x3918371635143312;
+  *((unsigned long *)&__m128i_result[1]) = 0x21011f3f193d173b;
+  *((unsigned long *)&__m128i_result[0]) = 0xff39ff37ff35ff33;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000003fbf3fbf;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7fff7fff7fff7ff8;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff3fbfffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x7fffffff7fffffff;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffff80806362;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000ff00ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff00008080;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000000000ff;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000100000000fc;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000100000000fc;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000010000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000010000000000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0404050404040404;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0404050404040404;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000004040504;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000004040504;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8000807f80808000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x80006b0000000b00;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000807f00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x80006b0080808080;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000400000004000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00004000ffffffff;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0001000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000080008;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00ff00ff00ff00ff;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00ff000000ff0000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000001400000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000800000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000800000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000800000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000800000000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffefffe00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffefffe00000000;
+  __m128i_out = __lsx_vpackod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xcd636363cd636363;
+  *((unsigned long *)&__m128i_op1[0]) = 0xcd636363cd636363;
+  *((unsigned long *)&__m128i_result[1]) = 0x00cd006300cd0063;
+  *((unsigned long *)&__m128i_result[0]) = 0x00cd006300cd0063;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000aa822a79308f6;
+  *((unsigned long *)&__m128i_op0[0]) = 0x03aa558e1d37b5a1;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000084d12ce;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000ff80fd820000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000aa822a79308f6;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000084d12ce;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  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]) = 0x2e34594c3b000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x002e0059003b0000;
+  __m128i_out = __lsx_vpackod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x001e001e001e001e;
+  *((unsigned long *)&__m128i_op0[0]) = 0x001e001e001e001e;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffaeffaeffaeffae;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffaeffaeffaeffae;
+  *((unsigned long *)&__m128i_result[1]) = 0x001effae001effae;
+  *((unsigned long *)&__m128i_result[0]) = 0x001effae001effae;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000440efffff000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000003b;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000440efffff000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000000000003b;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffff2356fe165486;
+  *((unsigned long *)&__m128i_op1[0]) = 0x5efeb3165bd7653d;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff2356fe165486;
+  __m128i_out = __lsx_vpackod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000cecd00004657;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000c90000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00019d9a00008cae;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000100000000;
+  __m128i_out = __lsx_vpackod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickev.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickev.c
new file mode 100644
index 000000000000..58591f1bb161
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickev.c
@@ -0,0 +1,362 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xc2409edab019323f;
+  *((unsigned long *)&__m128i_op1[0]) = 0x460f3b393ef4be3a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x460f3b393ef4be3a;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  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]) = 0x0004007c00fc0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000fc0000;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  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]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vpickev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffffffffefefefe;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000000000ffff;
+  __m128i_out = __lsx_vpickev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xedfaedfaedfaedfa;
+  *((unsigned long *)&__m128i_op0[0]) = 0xedfaedfaedfaedfa;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000ffff0000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000ffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0xedfaedfaedfaedfa;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffff0000;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x4811fda96793b23a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x8f10624016be82fd;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xfda9b23a624082fd;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffff0000;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op1[1]) = 0xaaaaffebcfb748e0;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfd293eab528e7ebe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_result[0]) = 0xffeb48e03eab7ebe;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xfffffffffffffff7;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffffffffffffff7;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffffffffffffff7;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffff00010000fff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op1[0]) = 0xfffff00010000fff;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffff00010000fff;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffff00010000fff;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000100000001;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000120002000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000100013fa0;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000100013fa0;
+  *((unsigned long *)&__m128i_result[1]) = 0x2000200000013fa0;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000013fa0;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000f7d1000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x773324887fffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000017161515;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000095141311;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000017fffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x1716151595141311;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x4040404040404040;
+  *((unsigned long *)&__m128i_op0[0]) = 0x4040404040404040;
+  *((unsigned long *)&__m128i_op1[1]) = 0x4040404040404040;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4040404040404040;
+  *((unsigned long *)&__m128i_result[1]) = 0x4040404040404040;
+  *((unsigned long *)&__m128i_result[0]) = 0x4040404040404040;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000dfa6e0c6;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000d46cdc13;
+  *((unsigned long *)&__m128i_op1[1]) = 0x7ef400ad21fc7081;
+  *((unsigned long *)&__m128i_op1[0]) = 0x28bf0351ec69b5f2;
+  *((unsigned long *)&__m128i_result[1]) = 0xdfa6e0c6d46cdc13;
+  *((unsigned long *)&__m128i_result[0]) = 0x21fc7081ec69b5f2;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x04c0044a0400043a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x04c004d6040004c6;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0004000400040004;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0004000400040004;
+  *((unsigned long *)&__m128i_result[1]) = 0x044a043a04d604c6;
+  *((unsigned long *)&__m128i_result[0]) = 0x0004000400040004;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00001b4a00007808;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00001b4a00007808;
+  *((unsigned long *)&__m128i_result[1]) = 0x00001b4a00007808;
+  *((unsigned long *)&__m128i_result[0]) = 0x00001b4a00007808;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x3fc03fc000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7f801fe000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000ffff00010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x3fc03fc000000004;
+  *((unsigned long *)&__m128i_result[1]) = 0x7f801fe000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x3fc03fc000000004;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000010000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000010000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffff0000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff0000ffffffff;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  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]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000001000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffffff00;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000103030102ffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffff00ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000010102ffff;
+  __m128i_out = __lsx_vpickev_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x30eb022002101b20;
+  *((unsigned long *)&__m128i_op0[0]) = 0x020310edc003023d;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x020310edc003023d;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x01533b5e7489ae24;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffab7e71e33848;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000000000ffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x3b5eae24ab7e3848;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000009c83e21a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000022001818;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000e21a00001818;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x4f4f4f4f4f4f4f4f;
+  *((unsigned long *)&__m128i_op1[0]) = 0x4f4f4f4f4f4f4f4f;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x4f4f4f4f4f4f4f4f;
+  __m128i_out = __lsx_vpickev_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickod.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickod.c
new file mode 100644
index 000000000000..74269e319b61
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickod.c
@@ -0,0 +1,336 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000401000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000001000001;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffe000ffff1fff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000401000001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000001000001;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfff6fff6fff6fff6;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfff6fff6fff6fff6;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xf436f3f52f4ef4a8;
+  *((unsigned long *)&__m128i_result[1]) = 0xfff6fff6fff6fff6;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0080000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xf4b6f3f52f4ef4a8;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0080000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xf4b6f3f52f4ef4a8;
+  *((unsigned long *)&__m128i_result[1]) = 0x0080000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0080000000000000;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffffffff51cf8da;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffd6040188;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000101fffff8b68;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000b6fffff8095;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffff51cffffd604;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ffff0000ffff;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0xa);
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffff0cffffff18;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfefffefffeff6a0c;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xc2f9bafac2fac2fa;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffffffffefefe6a;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000c2bac2c2;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x11000f2010000e20;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0f000d200e000c20;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x11000f200f000d20;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000805;
+  *((unsigned long *)&__m128i_op0[0]) = 0x978d95ac768d8784;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0001000104000800;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000897957687;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000408;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000003;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000ff91fffffff5;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffff00650001ffb0;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffffffff0001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ca02f854;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000ca02f854;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ca0200000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000ca0200000000;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000c6c6ee22;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000c6c62e8a;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000c6c6ee22;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000c6c62e8a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x21201f1e1d001b1a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x1918171615141312;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x21201f1e19181716;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00ff00ff00000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x000000ff000000ff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000ff000000ff;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0006000000040000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0002000000000007;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0006000000040000;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x6363636363636363;
+  *((unsigned long *)&__m128i_op1[0]) = 0x6363636363636363;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x6363636363636363;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000020000020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000020000020;
+  *((unsigned long *)&__m128i_op1[1]) = 0x000000000000ffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000200000002000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x7f801fe000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3fc03fc000000004;
+  *((unsigned long *)&__m128i_op1[1]) = 0x3fc03fc000000003;
+  *((unsigned long *)&__m128i_op1[0]) = 0x7f7f1fd800000004;
+  *((unsigned long *)&__m128i_result[1]) = 0x7f1f00003f3f0000;
+  *((unsigned long *)&__m128i_result[0]) = 0x3f3f00007f1f0000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff9f017f1fa0b199;
+  *((unsigned long *)&__m128i_op0[0]) = 0x1197817fd839ea3e;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000033;
+  *((unsigned long *)&__m128i_result[1]) = 0xff011fb11181d8ea;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  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]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000080808000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010001;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000fffefffe;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000080;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_b (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x67eb85afb2ebb000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xc8847ef6ed3f2000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000003ddc5dac;
+  *((unsigned long *)&__m128i_result[1]) = 0x67ebb2ebc884ed3f;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000003ddc;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_w (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000000003e2;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000000003e2;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000ebd20000714f;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00012c8a0000a58a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000010000;
+  __m128i_out = __lsx_vpickod_h (__m128i_op0, __m128i_op1);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vpickod_d (__m128i_op0, __m128i_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickve2gr.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickve2gr.c
new file mode 100644
index 000000000000..acca2bee9fa7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpickve2gr.c
@@ -0,0 +1,488 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x7);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0x4);
+  int_result = 0x0000000000000000;
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  long_int_result = 0x0000000000000000;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000ff0000ff0000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x01fc020000fe0100;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x7);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000463fd2902d;
+  *((unsigned long *)&__m128i_op0[0]) = 0x5ccd54bbfcac806c;
+  unsigned_int_result = 0x00000000000000ac;
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x697eba2bedfa9c82;
+  *((unsigned long *)&__m128i_op0[0]) = 0xd705c77a7025c899;
+  unsigned_int_result = 0x000000000000edfa;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x5);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0400040004000400;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0400040004000400;
+  unsigned_int_result = 0x0000000000000400;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x5);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000007d3ac600;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0x7);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dffbfff00000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0200400000000001;
+  unsigned_int_result = 0x0000000000000001;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000003fffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000003fffffff;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000490000004d;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000001ffffffff;
+  long_int_result = 0x00000001ffffffff;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff84fff4ff84fff4;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00a6ffceffb60052;
+  unsigned_int_result = 0x0000000000000084;
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0xa);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  long_int_result = 0x0000000000000000;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x7fffffff7fffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0101010101010101;
+  int_result = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0xc);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  unsigned_int_result = 0x00000000ffffffff;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  long_int_result = 0xffffffffffffffff;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  long_int_result = 0x0000000000000000;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3f8000003f800000;
+  unsigned_long_int_result = 0x3f8000003f800000;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_long_int_result, unsigned_long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0bd80bd80bd80bd8;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0bd80bd80bd80bd8;
+  unsigned_long_int_result = 0x0bd80bd80bd80bd8;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_long_int_result, unsigned_long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0x8);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000c0000bd49;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000c7fff000c;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0xb);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000100c6ffef10c;
+  unsigned_int_result = 0x00000000000000ff;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x2020202020202020;
+  *((unsigned long *)&__m128i_op0[0]) = 0x2020202020207f7f;
+  unsigned_int_result = 0x0000000020202020;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000003a24;
+  *((unsigned long *)&__m128i_op0[0]) = 0x003dbe88077c78c1;
+  int_result = 0x0000000000003a24;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_result = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  unsigned_int_result = 0x00000000000000ff;
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0x9);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0002000200000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0xb);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffe080f6efc100f7;
+  *((unsigned long *)&__m128i_op0[0]) = 0xefd32176ffe100f7;
+  int_result = 0x0000000000002176;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  long_int_result = 0x0000000000000000;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_long_int_result = 0x0000000000000000;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_long_int_result, unsigned_long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000200000002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000200000002;
+  int_result = 0x0000000000000002;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_long_int_result = 0x0000000000000000;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_long_int_result, unsigned_long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00ff00ff00ff00ff;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0x5);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffc0ff80ff800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000005;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x80008000ec82ab51;
+  *((unsigned long *)&__m128i_op0[0]) = 0x8000800089e08000;
+  int_result = 0x0000000089e08000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_result = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x6453f5e01d6e5000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000fdec000000000;
+  int_result = 0x000000001d6e5000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x6453f5e01d6e5000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000fdec000000000;
+  int_result = 0x0000000001d6e5000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00009c7c00007176;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0xe);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_result = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8d78336c83652b86;
+  *((unsigned long *)&__m128i_op0[0]) = 0x39c51f389c0d6112;
+  int_result = 0x000000009c0d6112;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000ff0000857a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x05fafe0101fe000e;
+  unsigned_int_result = 0x000000000000857a;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x4);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x021b7d2449678a35;
+  *((unsigned long *)&__m128i_op0[0]) = 0x030298a621030a49;
+  int_result = 0x00000000ffff8a35;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x4);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x001effae001effae;
+  *((unsigned long *)&__m128i_op0[0]) = 0x001effae001effae;
+  unsigned_int_result = 0x000000000000001e;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00009c7c00007176;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0xe);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_result = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8d78336c83652b86;
+  *((unsigned long *)&__m128i_op0[0]) = 0x39c51f389c0d6112;
+  int_result = 0x000000009c0d6112;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000ff0000857a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x05fafe0101fe000e;
+  unsigned_int_result = 0x000000000000857a;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x4);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x021b7d2449678a35;
+  *((unsigned long *)&__m128i_op0[0]) = 0x030298a621030a49;
+  int_result = 0x00000000ffff8a35;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x4);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x001effae001effae;
+  *((unsigned long *)&__m128i_op0[0]) = 0x001effae001effae;
+  unsigned_int_result = 0x000000000000001e;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0x8);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x000000000000001e;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_int_result = 0x0000000000000000;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x5);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000003ddc5dac;
+  long_int_result = 0x000000003ddc5dac;
+  long_int_out = __lsx_vpickve2gr_d (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, long_int_result, long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x6453f5e01d6e5000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000fdec000000000;
+  int_result = 0x000000001d6e5000;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x2);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00009c7c00007176;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_b (__m128i_op0, 0xe);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  int_result = 0x00000000ffffffff;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8d78336c83652b86;
+  *((unsigned long *)&__m128i_op0[0]) = 0x39c51f389c0d6112;
+  int_result = 0x000000009c0d6112;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000ff0000857a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x05fafe0101fe000e;
+  unsigned_int_result = 0x000000000000857a;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x4);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x1);
+  ASSERTEQ_int (__LINE__, int_out, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x021b7d2449678a35;
+  *((unsigned long *)&__m128i_op0[0]) = 0x030298a621030a49;
+  int_result = 0x00000000ffff8a35;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x4);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x001effae001effae;
+  *((unsigned long *)&__m128i_op0[0]) = 0x001effae001effae;
+  unsigned_int_result = 0x000000000000001e;
+  unsigned_int_out = __lsx_vpickve2gr_hu (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0674c8868a74fc80;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfdce8003090b0906;
+  int_result = 0x00000000090b0906;
+  int_out = __lsx_vpickve2gr_w (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_result = 0x0000000000000000;
+  int_out = __lsx_vpickve2gr_h (__m128i_op0, 0x3);
+  ASSERTEQ_int (__LINE__, int_result, int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000feff23560000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000fd1654860000;
+  unsigned_int_result = 0x00000000000000ff;
+  unsigned_int_out = __lsx_vpickve2gr_bu (__m128i_op0, 0xc);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  unsigned_long_int_result = 0x0000000000000000;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_long_int_result, unsigned_long_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x4f4f00004f4f0000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x4f4f00004f4f0000;
+  unsigned_int_result = 0x000000004f4f0000;
+  unsigned_int_out = __lsx_vpickve2gr_wu (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_int_result, unsigned_int_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000120000000d;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000e0000000e;
+  unsigned_long_int_result = 0x0000000e0000000e;
+  unsigned_long_int_out = __lsx_vpickve2gr_du (__m128i_op0, 0x0);
+  ASSERTEQ_int (__LINE__, unsigned_long_int_result, unsigned_long_int_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpremi.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpremi.c
new file mode 100644
index 000000000000..ef0ad676eb0f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vpremi.c
@@ -0,0 +1,20 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplgr2vr.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplgr2vr.c
new file mode 100644
index 000000000000..a5f02b1b115b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplgr2vr.c
@@ -0,0 +1,212 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  int_op0 = 0x0000000059815d00;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000400;
+  *((unsigned long *)&__m128i_result[1]) = 0x0400040004000400;
+  *((unsigned long *)&__m128i_result[0]) = 0x0400040004000400;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000400;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  long_op0 = 0x0000000000000400;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000400;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000400;
+  __m128i_out = __lsx_vreplgr2vr_d (long_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_w (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  long_op0 = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_result[0]) = 0x3f8000003f800000;
+  __m128i_out = __lsx_vreplgr2vr_d (long_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  long_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_d (long_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000020202020;
+  *((unsigned long *)&__m128i_result[1]) = 0x2020202020202020;
+  *((unsigned long *)&__m128i_result[0]) = 0x2020202020202020;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000ff000000ff;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000ff000000ff;
+  __m128i_out = __lsx_vreplgr2vr_w (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_w (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_w (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  long_op0 = 0x000000007ff00000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000007ff00000;
+  *((unsigned long *)&__m128i_result[0]) = 0x000000007ff00000;
+  __m128i_out = __lsx_vreplgr2vr_d (long_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  long_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_d (long_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00ff00ff00ff00ff;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_w (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x000000000000001e;
+  *((unsigned long *)&__m128i_result[1]) = 0x1e1e1e1e1e1e1e1e;
+  *((unsigned long *)&__m128i_result[0]) = 0x1e1e1e1e1e1e1e1e;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_w (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_h (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  int_op0 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplgr2vr_b (int_op0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplve.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplve.c
new file mode 100644
index 000000000000..463adb48e9e7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplve.c
@@ -0,0 +1,300 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000045eef14fe8;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000080000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000080000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000000000000ac;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_d (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x78c00000ff000000;
+  int_op1 = 0x0000000000000400;
+  *((unsigned long *)&__m128i_result[1]) = 0xff000000ff000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xff000000ff000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x803f800080000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xe0404041c0404040;
+  int_op1 = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0xe0404041e0404041;
+  *((unsigned long *)&__m128i_result[0]) = 0xe0404041e0404041;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000ffffffff0001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_h (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  int_op1 = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[0]) = 0x0001000100010001;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000020006;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_h (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffb4ff;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffb4ff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffb4ff;
+  __m128i_out = __lsx_vreplve_d (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000020202020;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_d (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x000000007ff00000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_d (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000020006;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_h (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffffffffffffff4;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffffffffffffff4;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00ffff00ff00ff00;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00ffff00ff00ff00;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff00ff00ff00ff00;
+  *((unsigned long *)&__m128i_result[0]) = 0xff00ff00ff00ff00;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8000000080000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x8000000080000000;
+  int_op1 = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x8080808080808080;
+  *((unsigned long *)&__m128i_result[0]) = 0x8080808080808080;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x7ff0000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7ff0000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000000001b;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000000000000001b;
+  int_op1 = 0xffffffff89e08000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000001b0000001b;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000001b0000001b;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_h (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfefefefdbffefdfe;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfefefeeffef7fefe;
+  int_op1 = 0xffffffff9c0d6112;
+  *((unsigned long *)&__m128i_result[1]) = 0xbffefdfebffefdfe;
+  *((unsigned long *)&__m128i_result[0]) = 0xbffefdfebffefdfe;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xff800000ff800000;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_result[0]) = 0xff800000ff800000;
+  __m128i_out = __lsx_vreplve_w (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x6363636363636363;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffd27db010d20fbf;
+  int_op1 = 0x0000000000000040;
+  *((unsigned long *)&__m128i_result[1]) = 0x0fbf0fbf0fbf0fbf;
+  *((unsigned long *)&__m128i_result[0]) = 0x0fbf0fbf0fbf0fbf;
+  __m128i_out = __lsx_vreplve_h (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0x00000000090b0906;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_b (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  int_op1 = 0xffffffffffff8a35;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplve_d (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x05dfffc3ffffffc0;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000047fe2f0;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000047fe2f0;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000047fe2f0;
+  __m128i_out = __lsx_vreplve_d (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffefffe011df03e;
+  int_op1 = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xf03ef03ef03ef03e;
+  *((unsigned long *)&__m128i_result[0]) = 0xf03ef03ef03ef03e;
+  __m128i_out = __lsx_vreplve_h (__m128i_op0, int_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplvei.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplvei.c
new file mode 100644
index 000000000000..a81be76f12b5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vreplvei.c
@@ -0,0 +1,293 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000055555501;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000005555555554;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000005555555554;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000005555555554;
+  __m128i_out = __lsx_vreplvei_d (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000036280000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x42a0000042a02000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x697eba2bedfa9c82;
+  *((unsigned long *)&__m128i_op0[0]) = 0xd705c77a7025c899;
+  *((unsigned long *)&__m128i_result[1]) = 0xedfaedfaedfaedfa;
+  *((unsigned long *)&__m128i_result[0]) = 0xedfaedfaedfaedfa;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000200000002;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000300000003;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000a0a08000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x5350a08000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x8000800080008000;
+  *((unsigned long *)&__m128i_result[0]) = 0x8000800080008000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x4);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x80010009816ac5de;
+  *((unsigned long *)&__m128i_op0[0]) = 0x8001000184000bd8;
+  *((unsigned long *)&__m128i_result[1]) = 0x0bd80bd80bd80bd8;
+  *((unsigned long *)&__m128i_result[0]) = 0x0bd80bd80bd80bd8;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_b (__m128i_op0, 0x9);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000100010001007c;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_b (__m128i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_d (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x1149a96eb1a08000;
+  *((unsigned long *)&__m128i_result[1]) = 0xb1a08000b1a08000;
+  *((unsigned long *)&__m128i_result[0]) = 0xb1a08000b1a08000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0808080808080808;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0808080808080808;
+  *((unsigned long *)&__m128i_result[1]) = 0x0808080808080808;
+  *((unsigned long *)&__m128i_result[0]) = 0x0808080808080808;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_d (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffcc9a989a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_b (__m128i_op0, 0xf);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000adadadad;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000adadadad;
+  *((unsigned long *)&__m128i_result[1]) = 0xadadadadadadadad;
+  *((unsigned long *)&__m128i_result[0]) = 0xadadadadadadadad;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_b (__m128i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_d (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x8080808080808080;
+  *((unsigned long *)&__m128i_op0[0]) = 0x8080808080808080;
+  *((unsigned long *)&__m128i_result[1]) = 0x8080808080808080;
+  *((unsigned long *)&__m128i_result[0]) = 0x8080808080808080;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplvei_b (__m128i_op0, 0xb);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffffffffffffffc;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffffffffffffffc;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3131313131313131;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_d (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000a752a55;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0a753500a9fa0d06;
+  *((unsigned long *)&__m128i_result[1]) = 0x0d060d060d060d06;
+  *((unsigned long *)&__m128i_result[0]) = 0x0d060d060d060d06;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_b (__m128i_op0, 0xb);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vreplvei_w (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vreplvei_h (__m128i_op0, 0x4);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
new file mode 100644
index 000000000000..4e7fcc02b127
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf.c
@@ -0,0 +1,394 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000007f00000004;
+  *((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_result[1]) = 0x0404040404040404;
+  *((unsigned long *)&__m128i_result[0]) = 0x0404040404000404;
+  __m128i_out = __lsx_vshuf_b (__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]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000000002f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000029;
+  *((unsigned long *)&__m128i_op1[1]) = 0x000000ff000000ff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x000000ff000000ff;
+  *((unsigned long *)&__m128i_op2[1]) = 0x000000000000002f;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000029;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffff00;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffff00;
+  __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7efefefe82010201;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x418181017dfefdff;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000005;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffff81;
+  __m128i_out = __lsx_vshuf_b (__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_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;
+  __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000005;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000005;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000005;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf_b (__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]) = 0xbfd10d0d7b6b6b73;
+  *((unsigned long *)&__m128i_op1[0]) = 0xc5c534920000c4ed;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xedededededededed;
+  *((unsigned long *)&__m128i_result[0]) = 0xedededededededed;
+  __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000202020200;
+  *((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;
+  __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000001a0000000b;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000080000000ff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf_b (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xff6cffb5ff98ff6e;
+  *((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;
+  __m128i_out = __lsx_vshuf_b (__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]) = 0x000000000000000d;
+  *((unsigned long *)&__m128i_result[1]) = 0x000d000d000d000d;
+  *((unsigned long *)&__m128i_result[0]) = 0x000d000d000d000d;
+  __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_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;
+  __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]) = 0x000000002bfd9461;
+  *((unsigned long *)&__m128i_op2[1]) = 0x00007fff00007fff;
+  *((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]) = 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_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_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[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_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;
+  __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_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[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_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x1f54e0ab00000000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m128i_op2[0]) = 0x010101fe0101fe87;
+  *((unsigned long *)&__m128i_result[1]) = 0x0101fe870101fe87;
+  *((unsigned long *)&__m128i_result[0]) = 0x0101fe8700000000;
+  __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_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000000020000020;
+  *((unsigned long *)&__m128i_op2[0]) = 0x0000000020000020;
+  *((unsigned long *)&__m128i_result[1]) = 0x2000002000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x2000002020000020;
+  __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]) = 0x0000000004870ba0;
+  *((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;
+  __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_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;
+  __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_op1[1]) = 0x021b7d24c9678a35;
+  *((unsigned long *)&__m128i_op1[0]) = 0x030298a6a1030a49;
+  *((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]) = 0x00000000ffffffff;
+  *((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]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __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_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;
+  __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_op1[1]) = 0x0001000100000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op2[0]) = 0xffffffff0015172b;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff0015172b;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff0015172b;
+  __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_op1[1]) = 0x0000000000002000;
+  *((unsigned long *)&__m128i_op1[0]) = 0xf0003000f0003000;
+  *((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_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_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;
+  __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_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;
+  __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_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_d (__m128i_op0, __m128i_op1, __m128i_op2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf4i.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf4i.c
new file mode 100644
index 000000000000..cd441b841a9e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vshuf4i.c
@@ -0,0 +1,348 @@
+/* { dg-do run } */
+/* { dg-options "-mlsx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lsxintrin.h>
+
+int
+main ()
+{
+  __m128i __m128i_op0, __m128i_op1, __m128i_op2, __m128i_out, __m128i_result;
+  __m128 __m128_op0, __m128_op1, __m128_op2, __m128_out, __m128_result;
+  __m128d __m128d_op0, __m128d_op1, __m128d_op2, __m128d_out, __m128d_result;
+
+  int int_op0, int_op1, int_op2, int_out, int_result, i = 1, fail;
+  long int long_op0, long_op1, long_op2, lont_out, lont_result;
+  long int long_int_out, long_int_result;
+  unsigned int unsigned_int_out, unsigned_int_result;
+  unsigned long int unsigned_long_int_out, unsigned_long_int_result;
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000003;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000030000;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0xc9);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0004007c00fc0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x047c0404fc00fcfc;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x8a);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x007fffff00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xff00ff7f00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x32);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x85);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffffffff51cf8da;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffd6040188;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffffffff8f8dada;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff01018888;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x50);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x007d00c50177ac5b;
+  *((unsigned long *)&__m128i_op0[0]) = 0xac82aa88a972a36a;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000c5ac01015b;
+  *((unsigned long *)&__m128i_result[0]) = 0xaaacac88a3a9a96a;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x7c);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000a0000000a;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000a00000009;
+  *((unsigned long *)&__m128i_result[1]) = 0x0a0a0a000a0a0a00;
+  *((unsigned long *)&__m128i_result[0]) = 0x0a0a0a0009090900;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000001000100;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000001000100;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x12);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00003f8000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00003f8000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x003f800000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x003f800000000000;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0xd2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x6c);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x81);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000dffff000d;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000ffffff;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x6b);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x5f675e96e29a5a60;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7fff7fff7fff7fff;
+  *((unsigned long *)&__m128i_result[1]) = 0x965f5e9660e25a60;
+  *((unsigned long *)&__m128i_result[0]) = 0xff7f7fffff7f7fff;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x34);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x131211101211100f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x11100f0e100f0e0d;
+  *((unsigned long *)&__m128i_result[1]) = 0x13101213120f1112;
+  *((unsigned long *)&__m128i_result[0]) = 0x110e1011100d0f10;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0xcb);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000001000110;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000431f851f;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000001011010;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000043431f1f;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0xf0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xc0b4d1a5f8babad3;
+  *((unsigned long *)&__m128i_op0[0]) = 0xbbc8ecc5f3ced5f3;
+  *((unsigned long *)&__m128i_result[1]) = 0xd1c0c0a5baf8f8d3;
+  *((unsigned long *)&__m128i_result[0]) = 0xecbbbbc5d5f3f3f3;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0x7c);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000004;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000454ffff9573;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000004;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000454ffff9573;
+  __m128i_out = __lsx_vshuf4i_b (__m128i_op0, 0xa4);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0xf3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0x2c);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0xd2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x003f000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x007c000d00400000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000003f00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000007c00000040;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0x31);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffff00000000ffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0xb9);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x7ffffffe00000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x7ffffffe00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x7fff00007fff0000;
+  *((unsigned long *)&__m128i_result[0]) = 0x7fff00007fff0000;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0xcd);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffff00000000ffff;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0x93);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000007f7f7f;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x007f007f00007f7f;
+  __m128i_out = __lsx_vshuf4i_h (__m128i_op0, 0x58);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x13);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000010;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000010;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000001000000010;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000080808000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000080808000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x8b);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfffdfffdfffdfffd;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfffdfffdfffdfffd;
+  *((unsigned long *)&__m128i_result[1]) = 0xfffdfffdfffdfffd;
+  *((unsigned long *)&__m128i_result[0]) = 0xfffdfffdfffdfffd;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x7e);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0xfefefefdbffefdfe;
+  *((unsigned long *)&__m128i_op0[0]) = 0xfefefeeffef7fefe;
+  *((unsigned long *)&__m128i_result[1]) = 0xfef7fefebffefdfe;
+  *((unsigned long *)&__m128i_result[0]) = 0xfefefefdfefefeef;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x2d);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x002a001a001a000b;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000002a001a;
+  *((unsigned long *)&__m128i_result[0]) = 0x001a000b00000000;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x78);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x98);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000010f8000081a2;
+  *((unsigned long *)&__m128i_op0[0]) = 0x000069bb00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000001000010f8;
+  __m128i_out = __lsx_vshuf4i_w (__m128i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x44);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x00000000fffff800;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000fffff800;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000fffff800;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x8a);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x000000000000006f;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000001f0a;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x000000000000006f;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x36);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x00000000ffffda6e;
+  *((unsigned long *)&__m128i_op0[0]) = 0x00000000ffffe3d6;
+  *((unsigned long *)&__m128i_op1[1]) = 0xeeb1e4f4bc3763f3;
+  *((unsigned long *)&__m128i_op1[0]) = 0x6f5edf5ada6fe3d7;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffe3d6;
+  *((unsigned long *)&__m128i_result[0]) = 0xeeb1e4f4bc3763f3;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x23);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000100200001;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000100200001;
+  *((unsigned long *)&__m128i_op1[1]) = 0x00001fff00001fff;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x3a);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0xce23d33e43d9736c;
+  *((unsigned long *)&__m128i_op1[0]) = 0x63b2ac27aa076aeb;
+  *((unsigned long *)&__m128i_result[1]) = 0x63b2ac27aa076aeb;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0xc8);
+  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]) = 0x0000000000000158;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000158;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0xc9);
+  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_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0xbf);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x801d5de0000559e0;
+  *((unsigned long *)&__m128i_op0[0]) = 0x77eb86788eebaf00;
+  *((unsigned long *)&__m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x2e);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_op1[1]) = 0x89582bf870006860;
+  *((unsigned long *)&__m128i_op1[0]) = 0x89582bf870006860;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vshuf4i_d (__m128i_op0, __m128i_op1, 0x94);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}

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

only message in thread, other threads:[~2023-09-14  0:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-14  0:46 [gcc r14-3948] LoongArch: Add tests for SX vector handling and shuffle instructions LuluCheng

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