public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH v4 20/23] LoongArch: Add tests for SX vector vfcmp instructions.
@ 2023-09-13  3:37 Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 21/23] LoongArch: Add tests for SX vector handling and shuffle instructions Xiaolong Chen
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Xiaolong Chen @ 2023-09-13  3:37 UTC (permalink / raw)
  To: gcc-patches; +Cc: xry111, i, xuchenghua, chenglulu, Xiaolong Chen

gcc/testsuite/ChangeLog:

	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_caf.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_ceq.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_cle.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_clt.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_cne.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_cor.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_cun.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_saf.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_seq.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_sle.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_slt.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_sne.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_sor.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfcmp_sun.c: New test.
---
 .../loongarch/vector/lsx/lsx-vfcmp_caf.c      | 244 ++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_ceq.c      | 516 +++++++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_cle.c      | 530 ++++++++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_clt.c      | 476 ++++++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_cne.c      | 378 +++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_cor.c      | 170 ++++++
 .../loongarch/vector/lsx/lsx-vfcmp_cun.c      | 253 +++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_saf.c      | 214 +++++++
 .../loongarch/vector/lsx/lsx-vfcmp_seq.c      | 450 +++++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_sle.c      | 407 ++++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_slt.c      | 512 +++++++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_sne.c      | 398 +++++++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_sor.c      | 269 +++++++++
 .../loongarch/vector/lsx/lsx-vfcmp_sun.c      | 335 +++++++++++
 14 files changed, 5152 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_caf.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_ceq.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cle.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_clt.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cne.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cor.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cun.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_saf.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_seq.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sle.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_slt.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sne.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sor.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sun.c

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_caf.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_caf.c
new file mode 100644
index 00000000000..b448c207629
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_caf.c
@@ -0,0 +1,244 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x01010101;
+  *((int *)&__m128_op0[0]) = 0x01010101;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7ef400ad;
+  *((int *)&__m128_op0[2]) = 0x21fc7081;
+  *((int *)&__m128_op0[1]) = 0x28bf0351;
+  *((int *)&__m128_op0[0]) = 0xec69b5f2;
+  *((int *)&__m128_op1[3]) = 0xff800000;
+  *((int *)&__m128_op1[2]) = 0xff800000;
+  *((int *)&__m128_op1[1]) = 0xff800000;
+  *((int *)&__m128_op1[0]) = 0x7fc00000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x01000100;
+  *((int *)&__m128_op0[0]) = 0x01000100;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x64e464e4;
+  *((int *)&__m128_op1[0]) = 0x64e464e4;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffc0ff80;
+  *((int *)&__m128_op1[2]) = 0xff800000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000005;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xc0800000;
+  *((int *)&__m128_op1[3]) = 0x0000001b;
+  *((int *)&__m128_op1[2]) = 0x0000001b;
+  *((int *)&__m128_op1[1]) = 0x0000001b;
+  *((int *)&__m128_op1[0]) = 0x0000001b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000002;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000002;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x34500292;
+  *((int *)&__m128_op1[0]) = 0x0f3017d6;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00830029;
+  *((int *)&__m128_op0[0]) = 0x0038ff50;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xff7fff80;
+  *((int *)&__m128_op0[2]) = 0xff800001;
+  *((int *)&__m128_op0[1]) = 0xe593d844;
+  *((int *)&__m128_op0[0]) = 0xe593c8c4;
+  *((int *)&__m128_op1[3]) = 0xff800000;
+  *((int *)&__m128_op1[2]) = 0xff800000;
+  *((int *)&__m128_op1[1]) = 0xe593c8c4;
+  *((int *)&__m128_op1[0]) = 0xe593c8c4;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x8a8a8a8a;
+  *((int *)&__m128_op1[2]) = 0x8a8a8a8a;
+  *((int *)&__m128_op1[1]) = 0x8a8a8a8a;
+  *((int *)&__m128_op1[0]) = 0x8a8a8a8a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffff01ff01;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x66b34f643c9c626a;
+  *((unsigned long *)&__m128d_op0[0]) = 0x38d60e366e547876;
+  *((unsigned long *)&__m128d_op1[1]) = 0x66b34f643c9c626a;
+  *((unsigned long *)&__m128d_op1[0]) = 0x38d60e366e547876;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfcfcfcdcfcfcfcdc;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfcfcfcdcfcfcfcdc;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000005;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000005;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000700000004fdff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000300000000fdff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xf2f444429d96dbe1;
+  *((unsigned long *)&__m128d_op0[0]) = 0xddd76c75f2f44442;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m128d_op1[0]) = 0xc1f03e1042208410;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffbfff7fffc000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffff43dfffff81fb;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_caf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_ceq.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_ceq.c
new file mode 100644
index 00000000000..98941b47d8b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_ceq.c
@@ -0,0 +1,516 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00007f00;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x01000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x08fdc221;
+  *((int *)&__m128_op0[2]) = 0xbfdb1927;
+  *((int *)&__m128_op0[1]) = 0x4303c67e;
+  *((int *)&__m128_op0[0]) = 0x9b7fb213;
+  *((int *)&__m128_op1[3]) = 0x0000800c;
+  *((int *)&__m128_op1[2]) = 0x0004300c;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000001;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000800;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00007fff;
+  *((int *)&__m128_op0[2]) = 0x00007fff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x2bfd9461;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x2bfd9461;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x01000000;
+  *((int *)&__m128_op0[0]) = 0x01000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xcd636363;
+  *((int *)&__m128_op1[2]) = 0xcd636363;
+  *((int *)&__m128_op1[1]) = 0xcd636363;
+  *((int *)&__m128_op1[0]) = 0xcd636363;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x007fffff;
+  *((int *)&__m128_op0[1]) = 0x007fffff;
+  *((int *)&__m128_op0[0]) = 0xff800000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x0000cecd;
+  *((int *)&__m128_op1[2]) = 0x00004657;
+  *((int *)&__m128_op1[1]) = 0x0000c900;
+  *((int *)&__m128_op1[0]) = 0x00011197;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xf51df8db;
+  *((int *)&__m128_op0[2]) = 0xd6050189;
+  *((int *)&__m128_op0[1]) = 0x0983e2db;
+  *((int *)&__m128_op0[0]) = 0xf235ed87;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0x3ea5016b;
+  *((int *)&__m128_op1[1]) = 0xfffefffe;
+  *((int *)&__m128_op1[0]) = 0x3f6fb04d;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xffa8ff9f;
+  *((int *)&__m128_op1[1]) = 0x0000ffff;
+  *((int *)&__m128_op1[0]) = 0xffabff99;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x0000ff00;
+  *((int *)&__m128_op1[3]) = 0x40404040;
+  *((int *)&__m128_op1[2]) = 0x40404040;
+  *((int *)&__m128_op1[1]) = 0x40404040;
+  *((int *)&__m128_op1[0]) = 0x40404040;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x3bcc5098;
+  *((int *)&__m128_op1[2]) = 0x703fa5f0;
+  *((int *)&__m128_op1[1]) = 0xab7b3134;
+  *((int *)&__m128_op1[0]) = 0x9703f605;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x000000ff;
+  *((int *)&__m128_op0[0]) = 0xfe01fd02;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x0001fe01;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x000000ff;
+  *((int *)&__m128_op0[0]) = 0xfe01fd02;
+  *((int *)&__m128_op1[3]) = 0x00000001;
+  *((int *)&__m128_op1[2]) = 0x00000100;
+  *((int *)&__m128_op1[1]) = 0x00000001;
+  *((int *)&__m128_op1[0]) = 0x00000100;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00800000;
+  *((int *)&__m128_op0[0]) = 0x00800000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00800000;
+  *((int *)&__m128_op1[0]) = 0x00800000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xc2409edab019323f;
+  *((unsigned long *)&__m128d_op0[0]) = 0x460f3b393ef4be3a;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0100000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000000ff00000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000ff00000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00ffff0000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00ffff0000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000000000ff00;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfffdfffdfffdfffd;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfffdfffdfffdfffd;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000014eb54ab;
+  *((unsigned long *)&__m128d_op0[0]) = 0x14eb6a002a406a00;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000014eb54ab;
+  *((unsigned long *)&__m128d_op1[0]) = 0x14eb6a002a406a00;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfffffffffffffff4;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfffffffffffffff4;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_ceq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0100000001000100;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0100010000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffff000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000006f00001f0a;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000c000ffffc000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000000003dffc2;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000003dffc2;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffe000ffdf;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000010100000101;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000010100000101;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000000000000000b;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000000000000b;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xd78cfd70b5f65d77;
+  *((unsigned long *)&__m128d_op1[0]) = 0x5779108fdedda7e5;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000ff0000ffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000ffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cle.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cle.c
new file mode 100644
index 00000000000..409bce0ecda
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cle.c
@@ -0,0 +1,530 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00001802;
+  *((int *)&__m128_op0[0]) = 0x041b0013;
+  *((int *)&__m128_op1[3]) = 0xff800000;
+  *((int *)&__m128_op1[2]) = 0xff800000;
+  *((int *)&__m128_op1[1]) = 0xff800000;
+  *((int *)&__m128_op1[0]) = 0xc3080000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x17fda829;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000404;
+  *((int *)&__m128_op1[2]) = 0x00000383;
+  *((int *)&__m128_op1[1]) = 0xffffe000;
+  *((int *)&__m128_op1[0]) = 0xffff1fff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x000000fe;
+  *((int *)&__m128_op0[2]) = 0x808000ff;
+  *((int *)&__m128_op0[1]) = 0x000000fe;
+  *((int *)&__m128_op0[0]) = 0x808000fe;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000020;
+  *((int *)&__m128_op0[2]) = 0x00000020;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x0000ffc1;
+  *((int *)&__m128_op1[0]) = 0x00010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000004;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xe0000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x01010001;
+  *((int *)&__m128_op1[2]) = 0x00010001;
+  *((int *)&__m128_op1[1]) = 0x01010301;
+  *((int *)&__m128_op1[0]) = 0x00010001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000001;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0xffffff00;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000001;
+  *((int *)&__m128_op1[2]) = 0x00000001;
+  *((int *)&__m128_op1[1]) = 0x00000001;
+  *((int *)&__m128_op1[0]) = 0x00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000001;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00010001;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00060fbf;
+  *((int *)&__m128_op1[2]) = 0x02040fbf;
+  *((int *)&__m128_op1[1]) = 0x00020fbf;
+  *((int *)&__m128_op1[0]) = 0x02000fbf;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x0a752a55;
+  *((int *)&__m128_op0[1]) = 0x0a753500;
+  *((int *)&__m128_op0[0]) = 0x950fa306;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x380fdfdf;
+  *((int *)&__m128_op1[0]) = 0xc0000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000001;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000007fff800000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000080007f80800;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000001000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000080800000808;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000080800000808;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffff80800001;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffff80800001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x5f675e96a8d359f5;
+  *((unsigned long *)&__m128d_op0[0]) = 0x46387f95d9a68001;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x131211101211100f;
+  *((unsigned long *)&__m128d_op0[0]) = 0x11100f0e100f0e0d;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000000002a000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffff7f8c;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x98147a504d145000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x377b810912c0e000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00009c7c00007176;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfcfcfcfcfcfcfcfd;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfcfcfcfcfcfc0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfffffffff359f358;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfffffffff359f358;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000003ff8;
+  *((unsigned long *)&__m128d_op1[1]) = 0x6363636363636363;
+  *((unsigned long *)&__m128d_op1[0]) = 0x6363636363636363;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000001;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000001;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x4f804f81;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x4f804f80;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7fff0007;
+  *((int *)&__m128_op0[2]) = 0xe215b122;
+  *((int *)&__m128_op0[1]) = 0x7ffeffff;
+  *((int *)&__m128_op0[0]) = 0x7bfff828;
+  *((int *)&__m128_op1[3]) = 0x80010009;
+  *((int *)&__m128_op1[2]) = 0x816ac5de;
+  *((int *)&__m128_op1[1]) = 0x80010001;
+  *((int *)&__m128_op1[0]) = 0x84000bd8;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xfefa0000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x9c9c9c9c;
+  *((int *)&__m128_op1[2]) = 0x9c9c9c9c;
+  *((int *)&__m128_op1[1]) = 0x9c9c9c9c;
+  *((int *)&__m128_op1[0]) = 0x9c9c9c9c;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x0c0b0a09;
+  *((int *)&__m128_op0[2]) = 0x0b0a0908;
+  *((int *)&__m128_op0[1]) = 0x0a090807;
+  *((int *)&__m128_op0[0]) = 0x09080706;
+  *((int *)&__m128_op1[3]) = 0x0c0b0a09;
+  *((int *)&__m128_op1[2]) = 0x0b0a0908;
+  *((int *)&__m128_op1[1]) = 0x0a090807;
+  *((int *)&__m128_op1[0]) = 0x09080706;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000020;
+  *((int *)&__m128_op1[2]) = 0x00000020;
+  *((int *)&__m128_op1[1]) = 0x0000001f;
+  *((int *)&__m128_op1[0]) = 0x0000001f;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7ff80000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x7ff80000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffff80ff0010ff06;
+  *((unsigned long *)&__m128d_op0[0]) = 0x8000000080000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xedfaedfaedfaedfa;
+  *((unsigned long *)&__m128d_op1[0]) = 0xedfaedfaedfaedfa;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_clt.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_clt.c
new file mode 100644
index 00000000000..39c9cf7a7a2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_clt.c
@@ -0,0 +1,476 @@
+/* { 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 *)&__m128_op0[3]) = 0x56411278;
+  *((int *)&__m128_op0[2]) = 0x43c0d41e;
+  *((int *)&__m128_op0[1]) = 0x0124d8f6;
+  *((int *)&__m128_op0[0]) = 0xa494006b;
+  *((int *)&__m128_op1[3]) = 0x7f800000;
+  *((int *)&__m128_op1[2]) = 0xff800000;
+  *((int *)&__m128_op1[1]) = 0xff800000;
+  *((int *)&__m128_op1[0]) = 0xff800000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x84939413;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000002;
+  *((int *)&__m128_op0[0]) = 0xbefcb21e;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xfffefff6;
+  *((int *)&__m128_op0[0]) = 0xfff80002;
+  *((int *)&__m128_op1[3]) = 0x000000c5;
+  *((int *)&__m128_op1[2]) = 0xac01015b;
+  *((int *)&__m128_op1[1]) = 0xaaacac88;
+  *((int *)&__m128_op1[0]) = 0xa3a9a96a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xff84fff4;
+  *((int *)&__m128_op0[2]) = 0xff84fff4;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xfffffff0;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x11000f20;
+  *((int *)&__m128_op0[2]) = 0x10000e20;
+  *((int *)&__m128_op0[1]) = 0x0f000d20;
+  *((int *)&__m128_op0[0]) = 0x0e000c20;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000c00;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00bd003d;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000005;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000005;
+  *((int *)&__m128_op1[3]) = 0xfffefffe;
+  *((int *)&__m128_op1[2]) = 0xfffefffe;
+  *((int *)&__m128_op1[1]) = 0xfffefffe;
+  *((int *)&__m128_op1[0]) = 0xfffefffe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xff800001;
+  *((int *)&__m128_op0[0]) = 0x0f800000;
+  *((int *)&__m128_op1[3]) = 0x00000009;
+  *((int *)&__m128_op1[2]) = 0x00000009;
+  *((int *)&__m128_op1[1]) = 0xff80000a;
+  *((int *)&__m128_op1[0]) = 0x0f800009;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x0000ffff;
+  *((int *)&__m128_op0[1]) = 0x3b5eae24;
+  *((int *)&__m128_op0[0]) = 0xab7e3848;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00003f80;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x63636363;
+  *((int *)&__m128_op0[2]) = 0x3f3e47c1;
+  *((int *)&__m128_op0[1]) = 0x41f8e080;
+  *((int *)&__m128_op0[0]) = 0xf1ef4eaa;
+  *((int *)&__m128_op1[3]) = 0x0000cecd;
+  *((int *)&__m128_op1[2]) = 0x00004657;
+  *((int *)&__m128_op1[1]) = 0x0000c900;
+  *((int *)&__m128_op1[0]) = 0x00011197;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_clt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x454c2996;
+  *((int *)&__m128_op0[2]) = 0x0ffe354e;
+  *((int *)&__m128_op0[1]) = 0x9e063f80;
+  *((int *)&__m128_op0[0]) = 0x2742ba3e;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x42652524;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00070000;
+  *((int *)&__m128_op0[2]) = 0x00050000;
+  *((int *)&__m128_op0[1]) = 0x00030000;
+  *((int *)&__m128_op0[0]) = 0x00010000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xff81007c;
+  *((int *)&__m128_op1[1]) = 0xffb7005f;
+  *((int *)&__m128_op1[0]) = 0x0070007c;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x0000006f;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xfbffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x7bffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xfbffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x7bffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x0002a000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x0002a000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xfc606ec5;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x14155445;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x01030103;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00060fbf;
+  *((int *)&__m128_op0[2]) = 0x02040fbf;
+  *((int *)&__m128_op0[1]) = 0x00020fbf;
+  *((int *)&__m128_op0[0]) = 0x02000fbf;
+  *((int *)&__m128_op1[3]) = 0x63636363;
+  *((int *)&__m128_op1[2]) = 0x63636363;
+  *((int *)&__m128_op1[1]) = 0xffd27db0;
+  *((int *)&__m128_op1[0]) = 0x10d20fbf;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7f800000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000008;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000010000003f;
+  *((unsigned long *)&__m128d_op1[1]) = 0x7fff7fff7fff7fff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000010000003f;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000003;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000036de0000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000003be14000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x1111113111111141;
+  *((unsigned long *)&__m128d_op0[0]) = 0x1111113111111121;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0032000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000080000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xe93d0bd19ff07013;
+  *((unsigned long *)&__m128d_op1[0]) = 0x65017c2ac9ca9fd0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x007f007f007f007e;
+  *((unsigned long *)&__m128d_op1[0]) = 0x007f007f007effc6;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000015800000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000000ffff0000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000158;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x7fff00007fff0000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x7fff00007fff0000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x7fff00007fff0000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7fff00007fff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x7f8100017f810001;
+  *((unsigned long *)&__m128d_op0[0]) = 0x7f8100017f810001;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_clt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x004200a000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x004200a000200001;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7fff00007fff7fff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xff00ff00ff00ff00;
+  *((unsigned long *)&__m128d_op1[0]) = 0xff00ff00ff00ff00;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000000000001e;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000455555555;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000001580000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000002000000020;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000001f0000001f;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cne.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cne.c
new file mode 100644
index 00000000000..c3da43bb499
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cne.c
@@ -0,0 +1,378 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x7ff80000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x0bd80bd8;
+  *((int *)&__m128_op1[2]) = 0x0bdfffff;
+  *((int *)&__m128_op1[1]) = 0x0bd80bd8;
+  *((int *)&__m128_op1[0]) = 0x0bd80000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00ff0077;
+  *((int *)&__m128_op0[2]) = 0x00070077;
+  *((int *)&__m128_op0[1]) = 0x00e600ef;
+  *((int *)&__m128_op0[0]) = 0x00ee01de;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00007fff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00100010;
+  *((int *)&__m128_op0[2]) = 0x00100010;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x000000ff;
+  *((int *)&__m128_op1[0]) = 0xfe01fd02;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xbf800000;
+  *((int *)&__m128_op0[2]) = 0x0000ffff;
+  *((int *)&__m128_op0[1]) = 0xcf000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x003f0000;
+  *((int *)&__m128_op1[2]) = 0x0000003f;
+  *((int *)&__m128_op1[1]) = 0x003f0000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x01ff01ff;
+  *((int *)&__m128_op0[2]) = 0x01ff01ff;
+  *((int *)&__m128_op0[1]) = 0x01ff01ff;
+  *((int *)&__m128_op0[0]) = 0x01ff01ff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x20202020;
+  *((int *)&__m128_op0[2]) = 0x20202020;
+  *((int *)&__m128_op0[1]) = 0x20202020;
+  *((int *)&__m128_op0[0]) = 0x20207fff;
+  *((int *)&__m128_op1[3]) = 0x32d3f35e;
+  *((int *)&__m128_op1[2]) = 0xcd509d13;
+  *((int *)&__m128_op1[1]) = 0x3e081b3c;
+  *((int *)&__m128_op1[0]) = 0x93f6b356;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffff0000;
+  *((int *)&__m128_op0[2]) = 0xffff0000;
+  *((int *)&__m128_op0[1]) = 0x40408010;
+  *((int *)&__m128_op0[0]) = 0x80200110;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x80000000;
+  *((int *)&__m128_op0[2]) = 0x80000008;
+  *((int *)&__m128_op0[1]) = 0xa2f54a1e;
+  *((int *)&__m128_op0[0]) = 0xa2f54a1e;
+  *((int *)&__m128_op1[3]) = 0x80000000;
+  *((int *)&__m128_op1[2]) = 0x80000008;
+  *((int *)&__m128_op1[1]) = 0xa2f54a1e;
+  *((int *)&__m128_op1[0]) = 0xa2f54a1e;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000000000000fc00;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000000000fc00;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0001000100000004;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000020302030;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000020302030;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000100010;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000100010;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x5d7f5d007f6a007f;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7fff7fff7fff7f00;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x7ff000ff6220c0c1;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffe8081000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0001fffe0001fffe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x1c083b1f3b1f3b1f;
+  *((unsigned long *)&__m128d_op0[0]) = 0xf244b948a323ab42;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000100fe000070a1;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000115ffffffa1;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfffffffff8f8da00;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffff01018888;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000000003ea5016c;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfffefefd3f7027c5;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000000000ffce;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x400000003fffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x4000000040000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000014eb54ab;
+  *((unsigned long *)&__m128d_op0[0]) = 0x14eb6a002a406a00;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00007fff7fff8000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cor.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cor.c
new file mode 100644
index 00000000000..5228dbede13
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cor.c
@@ -0,0 +1,170 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_cor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xfffffeff;
+  *((int *)&__m128_op0[2]) = 0xfffffeff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xfffffcff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00800000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xf4b6f3f5;
+  *((int *)&__m128_op0[0]) = 0x2f4ef4a8;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x08080808;
+  *((int *)&__m128_op1[2]) = 0x08080808;
+  *((int *)&__m128_op1[1]) = 0x08080808;
+  *((int *)&__m128_op1[0]) = 0x08080808;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x0000ffce;
+  *((int *)&__m128_op1[3]) = 0xffff0001;
+  *((int *)&__m128_op1[2]) = 0x1cf0c569;
+  *((int *)&__m128_op1[1]) = 0xc0000002;
+  *((int *)&__m128_op1[0]) = 0xb0995850;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x0a752a55;
+  *((int *)&__m128_op0[1]) = 0x0a753500;
+  *((int *)&__m128_op0[0]) = 0x950fa306;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x0a752a55;
+  *((int *)&__m128_op1[1]) = 0x0a753500;
+  *((int *)&__m128_op1[0]) = 0x950fa306;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000003;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000ffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000ffffffdfffdf;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000ffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000ffffffdfffdf;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xd70b30c96ea9f4e8;
+  *((unsigned long *)&__m128d_op0[0]) = 0xa352bfac9269e0aa;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000005;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cun.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cun.c
new file mode 100644
index 00000000000..a2beff53fb4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_cun.c
@@ -0,0 +1,253 @@
+/* { 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 *)&__m128_op0[3]) = 0x0000ffff;
+  *((int *)&__m128_op0[2]) = 0x0000ffff;
+  *((int *)&__m128_op0[1]) = 0x0000ffff;
+  *((int *)&__m128_op0[0]) = 0x0000fffe;
+  *((int *)&__m128_op1[3]) = 0x0000ffff;
+  *((int *)&__m128_op1[2]) = 0x0000ffff;
+  *((int *)&__m128_op1[1]) = 0x0000ffff;
+  *((int *)&__m128_op1[0]) = 0x0000fffe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00200010;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7f800000;
+  *((int *)&__m128_op0[2]) = 0x7f800000;
+  *((int *)&__m128_op0[1]) = 0x7f800000;
+  *((int *)&__m128_op0[0]) = 0x7f800000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x0000fffe;
+  *((int *)&__m128_op0[0]) = 0x0000ffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffff0008;
+  *((int *)&__m128_op1[3]) = 0xffc2ffe0;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x0000ffc1;
+  *((int *)&__m128_op1[0]) = 0x00010001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000008;
+  *((int *)&__m128_op0[1]) = 0x00200020;
+  *((int *)&__m128_op0[0]) = 0x00200020;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xfffefffe;
+  *((int *)&__m128_op0[2]) = 0xfffefffe;
+  *((int *)&__m128_op0[1]) = 0xfffefffe;
+  *((int *)&__m128_op0[0]) = 0xfffefffe;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xf001f001;
+  *((int *)&__m128_op1[0]) = 0x0101f002;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xfeffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xfeffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000fff;
+  *((int *)&__m128_op1[2]) = 0xffffe000;
+  *((int *)&__m128_op1[1]) = 0x00001020;
+  *((int *)&__m128_op1[0]) = 0x20204000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfefd7f7f7f7f7f7e;
+  *((unsigned long *)&__m128d_op0[0]) = 0xdffdbffeba6f5543;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffff3d06ffff4506;
+  *((unsigned long *)&__m128d_op0[0]) = 0x7ffffffe7ffff800;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000003bfb4000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000100010100;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffff00011cf0c569;
+  *((unsigned long *)&__m128d_op0[0]) = 0xc0000002b0995850;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x8080808080808080;
+  *((unsigned long *)&__m128d_op1[0]) = 0x8080808080808080;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00000000084d12ce;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000024170000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000000084d12ce;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000044470000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_cun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_saf.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_saf.c
new file mode 100644
index 00000000000..bfa4914bee6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_saf.c
@@ -0,0 +1,214 @@
+/* { 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 *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0x80000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00a300a3;
+  *((int *)&__m128_op1[2]) = 0x00a300a3;
+  *((int *)&__m128_op1[1]) = 0x00a300a3;
+  *((int *)&__m128_op1[0]) = 0x00a300a3;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xb8ec43be;
+  *((int *)&__m128_op1[2]) = 0xfe38e64b;
+  *((int *)&__m128_op1[1]) = 0x6477d042;
+  *((int *)&__m128_op1[0]) = 0x343cce24;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000010;
+  *((int *)&__m128_op0[2]) = 0x00100010;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00020000;
+  *((int *)&__m128_op0[0]) = 0xffff0001;
+  *((int *)&__m128_op1[3]) = 0x63636363;
+  *((int *)&__m128_op1[2]) = 0x63636363;
+  *((int *)&__m128_op1[1]) = 0x63636363;
+  *((int *)&__m128_op1[0]) = 0x63636363;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x03080401;
+  *((int *)&__m128_op0[2]) = 0x0d090107;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x7ff8000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0a0a0a000a0a0a00;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0a0a0a0009090900;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000000ffffff01;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000000000ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000000007ff000ff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x67157b5100005000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x387c7e0a133f2000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xf359f359f359f359;
+  *((unsigned long *)&__m128d_op0[0]) = 0xf359f359f359f359;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0177fff0fffffff0;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000011ff8bc;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_saf_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_seq.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_seq.c
new file mode 100644
index 00000000000..bc573936dc5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_seq.c
@@ -0,0 +1,450 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xf2f2e5e5;
+  *((int *)&__m128_op0[2]) = 0xe5e5e5e5;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xe5e5e5e5;
+  *((int *)&__m128_op1[2]) = 0xe5e5e5e5;
+  *((int *)&__m128_op1[1]) = 0xe5e5e5e5;
+  *((int *)&__m128_op1[0]) = 0xe4e4e46d;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00800000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x1f400000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x14ccc632;
+  *((int *)&__m128_op0[2]) = 0x0076a4d2;
+  *((int *)&__m128_op0[1]) = 0x685670d2;
+  *((int *)&__m128_op0[0]) = 0x7e00682a;
+  *((int *)&__m128_op1[3]) = 0x14ccc632;
+  *((int *)&__m128_op1[2]) = 0x0076a4d2;
+  *((int *)&__m128_op1[1]) = 0x685670d2;
+  *((int *)&__m128_op1[0]) = 0x7e00682a;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00010001;
+  *((int *)&__m128_op0[2]) = 0x00010001;
+  *((int *)&__m128_op0[1]) = 0x00010001;
+  *((int *)&__m128_op0[0]) = 0x00010001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0xc6c6c6c6;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0xc6c6c6c6;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xc6c6c6c6;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0xc6c6c6c6;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000006;
+  *((int *)&__m128_op1[2]) = 0x00007fff;
+  *((int *)&__m128_op1[1]) = 0x00000008;
+  *((int *)&__m128_op1[0]) = 0xffffa209;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_seq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00fc0000;
+  *((int *)&__m128_op1[3]) = 0xfe07e5fe;
+  *((int *)&__m128_op1[2]) = 0xfefdddfe;
+  *((int *)&__m128_op1[1]) = 0x00020100;
+  *((int *)&__m128_op1[0]) = 0xfedd0c00;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffff0000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x0000fffd;
+  *((int *)&__m128_op1[3]) = 0x7fffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00008000;
+  *((int *)&__m128_op1[2]) = 0x3f80ffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x370bdfec;
+  *((int *)&__m128_op0[2]) = 0xffecffec;
+  *((int *)&__m128_op0[1]) = 0x370bdfec;
+  *((int *)&__m128_op0[0]) = 0xa2eb9931;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000040;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000040;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xc2fc0000;
+  *((int *)&__m128_op1[2]) = 0xc3040000;
+  *((int *)&__m128_op1[1]) = 0xc2fc0000;
+  *((int *)&__m128_op1[0]) = 0xc3040000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00fe00fe;
+  *((int *)&__m128_op0[2]) = 0x000200fe;
+  *((int *)&__m128_op0[1]) = 0x00fe00fe;
+  *((int *)&__m128_op0[0]) = 0x000200fe;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000004;
+  *((int *)&__m128_op1[0]) = 0x55555555;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000158;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffffffa8;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xf3e6586b;
+  *((int *)&__m128_op0[2]) = 0x60d7b152;
+  *((int *)&__m128_op0[1]) = 0xf7077b93;
+  *((int *)&__m128_op0[0]) = 0x4ac0e000;
+  *((int *)&__m128_op1[3]) = 0x1498507a;
+  *((int *)&__m128_op1[2]) = 0x144d0050;
+  *((int *)&__m128_op1[1]) = 0x7b370981;
+  *((int *)&__m128_op1[0]) = 0xc01200e0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffc2007a;
+  *((int *)&__m128_op0[2]) = 0xff230027;
+  *((int *)&__m128_op0[1]) = 0x0080005e;
+  *((int *)&__m128_op0[0]) = 0xff600001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000100010001fffd;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000000004fc04f81;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000004fc04f80;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_seq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x13f9c5b60028a415;
+  *((unsigned long *)&__m128d_op1[0]) = 0x545cab1d81a83bea;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_seq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_seq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfefd7f7f7f7f7f7e;
+  *((unsigned long *)&__m128d_op0[0]) = 0xdffdbffeba6f5543;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfefd7f7f7f7f7f7e;
+  *((unsigned long *)&__m128d_op1[0]) = 0xdffdbffeba6f5543;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfffffff700000009;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfffffff700000009;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x7f8000007f800000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x4fa432d67fc00000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0141010101410101;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0141010101410101;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfffcffff00000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000fffd000a0000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xf0fd800080000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000a00028004000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00820082ff81ff81;
+  *((unsigned long *)&__m128d_op0[0]) = 0xff81ff81ff81ff81;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000100000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000001000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000120002000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000100013fa0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0007000100040102;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0003000100010101;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0007000100040102;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0003000100010101;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x9c9c9c9c9c9c9c9c;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sueq_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sle.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sle.c
new file mode 100644
index 00000000000..87cb8da7ca6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sle.c
@@ -0,0 +1,407 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffdfff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffdfff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffe000;
+  *((int *)&__m128_op1[0]) = 0x01ffe200;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00010002;
+  *((int *)&__m128_op0[2]) = 0x0000fe7d;
+  *((int *)&__m128_op0[1]) = 0x00010002;
+  *((int *)&__m128_op0[0]) = 0x0000fe02;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x0000007b;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x1223dabf;
+  *((int *)&__m128_op0[2]) = 0x4c3b3549;
+  *((int *)&__m128_op0[1]) = 0x8e8f8626;
+  *((int *)&__m128_op0[0]) = 0xf15be124;
+  *((int *)&__m128_op1[3]) = 0xfffffacd;
+  *((int *)&__m128_op1[2]) = 0xb6dbecac;
+  *((int *)&__m128_op1[1]) = 0x1f5533a6;
+  *((int *)&__m128_op1[0]) = 0x94f902c0;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xfbffffff;
+  *((int *)&__m128_op0[0]) = 0x27001517;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x0000ffff;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0xffff53d9;
+  *((int *)&__m128_op0[1]) = 0xffff0001;
+  *((int *)&__m128_op0[0]) = 0xffff9515;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00010001;
+  *((int *)&__m128_op1[2]) = 0x00010001;
+  *((int *)&__m128_op1[1]) = 0x00010001;
+  *((int *)&__m128_op1[0]) = 0x00010001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000080;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00df020f;
+  *((int *)&__m128_op0[0]) = 0x0078007f;
+  *((int *)&__m128_op1[3]) = 0x0037ffd4;
+  *((int *)&__m128_op1[2]) = 0x0083ffe5;
+  *((int *)&__m128_op1[1]) = 0x001e0052;
+  *((int *)&__m128_op1[0]) = 0x001ffff9;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00ff00ff;
+  *((int *)&__m128_op0[0]) = 0x00ff00ff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x05452505;
+  *((int *)&__m128_op0[1]) = 0x00000004;
+  *((int *)&__m128_op0[0]) = 0x442403e4;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000101;
+  *((int *)&__m128_op0[2]) = 0x00000101;
+  *((int *)&__m128_op0[1]) = 0x00000101;
+  *((int *)&__m128_op0[0]) = 0x00000101;
+  *((int *)&__m128_op1[3]) = 0x00000002;
+  *((int *)&__m128_op1[2]) = 0x00000002;
+  *((int *)&__m128_op1[1]) = 0x00000002;
+  *((int *)&__m128_op1[0]) = 0x00000002;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00010000;
+  *((int *)&__m128_op0[2]) = 0x00010000;
+  *((int *)&__m128_op0[1]) = 0x0000cd63;
+  *((int *)&__m128_op0[0]) = 0x0000cd63;
+  *((int *)&__m128_op1[3]) = 0xffffcd63;
+  *((int *)&__m128_op1[2]) = 0xffffcd63;
+  *((int *)&__m128_op1[1]) = 0xffffd765;
+  *((int *)&__m128_op1[0]) = 0xffffd765;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffff00ff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffff0000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0x0000ffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffff0c8000c212;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfefffeff7f002d06;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00f0008100800080;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00f000807000009e;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfffe00029f9f6061;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffc0800000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000c0010000a186;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00067fff0002a207;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sle_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffff80000001;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x7fffffff7fffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x3fbf3fbf00007fff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000000003fbf3fbf;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7fff7fff7fff7ff8;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000000013ec13e;
+  *((unsigned long *)&__m128d_op1[0]) = 0xc03fc03fc0ff00ff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffff00018d8b;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x67eb85af0000b000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xc8847ef6ed3f2000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfe3bfb01fe3bfe01;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfe03fe3ffe01fa21;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sule_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_slt.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_slt.c
new file mode 100644
index 00000000000..3845e8ec359
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_slt.c
@@ -0,0 +1,512 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x0000ffff;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x0000ffff;
+  *((int *)&__m128_op1[0]) = 0x0000ffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7f800000;
+  *((int *)&__m128_op0[2]) = 0x7f800000;
+  *((int *)&__m128_op0[1]) = 0x7f800000;
+  *((int *)&__m128_op0[0]) = 0x7f800000;
+  *((int *)&__m128_op1[3]) = 0x7f800000;
+  *((int *)&__m128_op1[2]) = 0x7f800000;
+  *((int *)&__m128_op1[1]) = 0x7f800000;
+  *((int *)&__m128_op1[0]) = 0x7f800000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000001;
+  *((int *)&__m128_op0[2]) = 0x00007f01;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffff02;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x05452505;
+  *((int *)&__m128_op1[1]) = 0x00000004;
+  *((int *)&__m128_op1[0]) = 0x442403e4;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x5f675e96;
+  *((int *)&__m128_op0[2]) = 0xe29a5a60;
+  *((int *)&__m128_op0[1]) = 0x7fff7fff;
+  *((int *)&__m128_op0[0]) = 0x7fff7fff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x5e695e95;
+  *((int *)&__m128_op1[0]) = 0xe1cb5a01;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00800080;
+  *((int *)&__m128_op0[2]) = 0x00800080;
+  *((int *)&__m128_op0[1]) = 0x0080006b;
+  *((int *)&__m128_op0[0]) = 0x0000000b;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x80808080;
+  *((int *)&__m128_op1[0]) = 0x806b000b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7f800000;
+  *((int *)&__m128_op0[2]) = 0x7f800000;
+  *((int *)&__m128_op0[1]) = 0x7f800000;
+  *((int *)&__m128_op0[0]) = 0x7f800000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xff800000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xff800000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xfffefffe;
+  *((int *)&__m128_op0[0]) = 0xfffffffc;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xfffefffe;
+  *((int *)&__m128_op1[0]) = 0xfffffffc;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffc2ffe7;
+  *((int *)&__m128_op0[2]) = 0x00000007;
+  *((int *)&__m128_op0[1]) = 0x0000ffc1;
+  *((int *)&__m128_op0[0]) = 0x00010001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0xfffff1a0;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x153e3e49;
+  *((int *)&__m128_op0[2]) = 0x307d0771;
+  *((int *)&__m128_op0[1]) = 0x0d8e3670;
+  *((int *)&__m128_op0[0]) = 0x6ac02b9b;
+  *((int *)&__m128_op1[3]) = 0x55aa55c3;
+  *((int *)&__m128_op1[2]) = 0xd5aa55c4;
+  *((int *)&__m128_op1[1]) = 0xaa55556f;
+  *((int *)&__m128_op1[0]) = 0xd5aaaac1;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0x0015172b;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xfffffffe;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xfffffffe;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffff0000;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00010001;
+  *((int *)&__m128_op0[2]) = 0x00010001;
+  *((int *)&__m128_op0[1]) = 0x00010001;
+  *((int *)&__m128_op0[0]) = 0x00010001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x86dd8341;
+  *((int *)&__m128_op1[2]) = 0xb164f12b;
+  *((int *)&__m128_op1[1]) = 0x9611c398;
+  *((int *)&__m128_op1[0]) = 0x5b3159f5;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sult_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000000000001f;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000200000002;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000300000003;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xe93d0bd19ff07013;
+  *((unsigned long *)&__m128d_op0[0]) = 0x65017c2ac9ca9fd0;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00d3012acc56f9bb;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000001021;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffb4ff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffb4ff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x14ccc6320176a4d2;
+  *((unsigned long *)&__m128d_op0[0]) = 0x685670d37e80682a;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x003fffff00000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x003fffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000001000000010;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000001000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0080000000800000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x345002920f3017d6;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_slt_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfffffffffffffffe;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffff8607db959f;
+  *((unsigned long *)&__m128d_op0[0]) = 0xff0cff78ff96ff14;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000005;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7ef8000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x14ccc6320176a4d2;
+  *((unsigned long *)&__m128d_op0[0]) = 0x685670d37e80682a;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffff00000000ffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffff00000001;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffee00000004;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x80808080806b000b;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sult_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sne.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sne.c
new file mode 100644
index 00000000000..964eff79f42
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sne.c
@@ -0,0 +1,398 @@
+/* { 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 *)&__m128_op0[3]) = 0x00003fee;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000004;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000002;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x03574e3a;
+  *((int *)&__m128_op1[2]) = 0x03574e3a;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00010400;
+  *((int *)&__m128_op1[3]) = 0x10f917d7;
+  *((int *)&__m128_op1[2]) = 0x2d3d01e4;
+  *((int *)&__m128_op1[1]) = 0x203e16d1;
+  *((int *)&__m128_op1[0]) = 0x16de012b;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x0000101f;
+  *((int *)&__m128_op0[2]) = 0xffff8b68;
+  *((int *)&__m128_op0[1]) = 0x00000b6f;
+  *((int *)&__m128_op0[0]) = 0xffff8095;
+  *((int *)&__m128_op1[3]) = 0x10f917d7;
+  *((int *)&__m128_op1[2]) = 0x2d3d01e4;
+  *((int *)&__m128_op1[1]) = 0x203e16d1;
+  *((int *)&__m128_op1[0]) = 0x16de012b;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x11000f20;
+  *((int *)&__m128_op0[2]) = 0x10000e20;
+  *((int *)&__m128_op0[1]) = 0x0f000d20;
+  *((int *)&__m128_op0[0]) = 0x0e000c20;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00050005;
+  *((int *)&__m128_op0[2]) = 0x00050005;
+  *((int *)&__m128_op0[1]) = 0x00050005;
+  *((int *)&__m128_op0[0]) = 0x00050005;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x15d926c7;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x0000e41b;
+  *((int *)&__m128_op1[3]) = 0xfffffacd;
+  *((int *)&__m128_op1[2]) = 0xb6dbecac;
+  *((int *)&__m128_op1[1]) = 0x1f5533a6;
+  *((int *)&__m128_op1[0]) = 0x94f902c0;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x04040504;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x04040504;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x0001000c;
+  *((int *)&__m128_op0[2]) = 0xfffffff2;
+  *((int *)&__m128_op0[1]) = 0x0001000d;
+  *((int *)&__m128_op0[0]) = 0xfffffff1;
+  *((int *)&__m128_op1[3]) = 0xffff8a17;
+  *((int *)&__m128_op1[2]) = 0xffffc758;
+  *((int *)&__m128_op1[1]) = 0xffff69bb;
+  *((int *)&__m128_op1[0]) = 0xffffad3b;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xff800000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xff800000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffff1739;
+  *((int *)&__m128_op1[2]) = 0xffff48aa;
+  *((int *)&__m128_op1[1]) = 0xffff2896;
+  *((int *)&__m128_op1[0]) = 0xffff5b88;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000003;
+  *((int *)&__m128_op0[0]) = 0x0000003f;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000003;
+  *((int *)&__m128_op1[0]) = 0x0000003f;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x084d12ce;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x24170000;
+  *((unsigned long *)&__m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x7474f6fd7474fefe;
+  *((unsigned long *)&__m128d_op0[0]) = 0xf474f6fef474f6fe;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000001fffffffe;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffff000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x1817161517161514;
+  *((unsigned long *)&__m128d_op1[0]) = 0x1615141315141312;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0101fe870101fe87;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0101fe8700000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x62cbf96e4acfaf40;
+  *((unsigned long *)&__m128d_op1[0]) = 0xf0bc9a5278285a4a;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000000007fffa9ed;
+  *((unsigned long *)&__m128d_op0[0]) = 0x7f8000017fffca8b;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000000ffff7603;
+  *((unsigned long *)&__m128d_op1[1]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sne_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x1111113111111141;
+  *((unsigned long *)&__m128d_op1[0]) = 0x1111113111111121;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00ff000100ff00fe;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00ff003000ff00a0;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000000005e695e95;
+  *((unsigned long *)&__m128d_op1[0]) = 0x5e695e96c396b402;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x000300037ff000ff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0003000300a10003;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0001000101010001;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000008000000080;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000008000000080;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000003ff8;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x01533b5e7489ae24;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffab7e71e33848;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sune_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sor.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sor.c
new file mode 100644
index 00000000000..ea47baf40df
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sor.c
@@ -0,0 +1,269 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x0000007f;
+  *((int *)&__m128_op0[2]) = 0x0000007f;
+  *((int *)&__m128_op0[1]) = 0x0000007f;
+  *((int *)&__m128_op0[0]) = 0x0000007f;
+  *((int *)&__m128_op1[3]) = 0x3ff00000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xfffc0020;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x2757de72;
+  *((int *)&__m128_op0[2]) = 0x33d771a3;
+  *((int *)&__m128_op0[1]) = 0x166891d5;
+  *((int *)&__m128_op0[0]) = 0x1e8b7eff;
+  *((int *)&__m128_op1[3]) = 0x2757de72;
+  *((int *)&__m128_op1[2]) = 0x33d771a3;
+  *((int *)&__m128_op1[1]) = 0x166891d5;
+  *((int *)&__m128_op1[0]) = 0x1e8b7eff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00fe00ff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000001;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xfffffffe;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0xffffff02;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x0000000d;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xfffffe03;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xfffffe03;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xbafebb00;
+  *((int *)&__m128_op1[2]) = 0xffd500fe;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xbffffffe;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x80000000;
+  *((int *)&__m128_op0[2]) = 0x80000000;
+  *((int *)&__m128_op0[1]) = 0x80000000;
+  *((int *)&__m128_op0[0]) = 0x80000000;
+  *((int *)&__m128_op1[3]) = 0x000000ff;
+  *((int *)&__m128_op1[2]) = 0x0000857a;
+  *((int *)&__m128_op1[1]) = 0x05fafe01;
+  *((int *)&__m128_op1[0]) = 0x01fe000e;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x7fff7fff;
+  *((int *)&__m128_op0[2]) = 0x7fff7fff;
+  *((int *)&__m128_op0[1]) = 0xbf6b8101;
+  *((int *)&__m128_op0[0]) = 0x81018101;
+  *((int *)&__m128_op1[3]) = 0xe3636363;
+  *((int *)&__m128_op1[2]) = 0x63abdf16;
+  *((int *)&__m128_op1[1]) = 0x41f8e080;
+  *((int *)&__m128_op1[0]) = 0x16161198;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000005d5d;
+  *((unsigned long *)&__m128d_op1[1]) = 0x08fdc221bfdb1927;
+  *((unsigned long *)&__m128d_op1[0]) = 0x4303c67e9b7fb213;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x7fffffff7ffffffb;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000040002;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000158;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfffffff000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000d00000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sor_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sun.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sun.c
new file mode 100644
index 00000000000..68cb5a52fbd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfcmp_sun.c
@@ -0,0 +1,335 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xe17fe003;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0x0000ffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffffff;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00190819;
+  *((int *)&__m128_op1[2]) = 0x00190019;
+  *((int *)&__m128_op1[1]) = 0x00190819;
+  *((int *)&__m128_op1[0]) = 0x00190019;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xfe800000;
+  *((int *)&__m128_op0[0]) = 0x00000001;
+  *((int *)&__m128_op1[3]) = 0x7fffffff;
+  *((int *)&__m128_op1[2]) = 0x82bb9784;
+  *((int *)&__m128_op1[1]) = 0x7fffffff;
+  *((int *)&__m128_op1[0]) = 0xc6bb97ac;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x7f3f0180;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0xa2321469;
+  *((int *)&__m128_op0[0]) = 0x7fd03f7f;
+  *((int *)&__m128_op1[3]) = 0x00000406;
+  *((int *)&__m128_op1[2]) = 0x00000406;
+  *((int *)&__m128_op1[1]) = 0x02020202;
+  *((int *)&__m128_op1[0]) = 0x0202fe02;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0xfffffff5;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x00000000ffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000014;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000014;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0xfffc0004;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffff00000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x67eb85b0;
+  *((int *)&__m128_op0[2]) = 0xb2ebb001;
+  *((int *)&__m128_op0[1]) = 0xc8847ef6;
+  *((int *)&__m128_op0[0]) = 0xed3f2000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0x0002de46;
+  *((int *)&__m128_op0[2]) = 0x682de060;
+  *((int *)&__m128_op0[1]) = 0x09b50da6;
+  *((int *)&__m128_op0[0]) = 0xe67b8fc0;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x084d12ce;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x24170000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0x00ffffff;
+  *((int *)&__m128_op0[0]) = 0x00ffffff;
+  *((int *)&__m128_op1[3]) = 0x0000feff;
+  *((int *)&__m128_op1[2]) = 0x23560000;
+  *((int *)&__m128_op1[1]) = 0x0000fd16;
+  *((int *)&__m128_op1[0]) = 0x54860000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xfffffffe;
+  *((int *)&__m128_op0[0]) = 0xfffff784;
+  *((int *)&__m128_op1[3]) = 0x0177fff0;
+  *((int *)&__m128_op1[2]) = 0xfffffff0;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x011ff8bc;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_s (__m128_op0, __m128_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0002000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0002000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00ff00ff00ff00fe;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffe5;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffe5;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x7fff7fff7fff7fff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000007fff7fff;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfffffffffffff800;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00ff000000ff0000;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfffebd06fffe820c;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7fff7ffe7fff3506;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7ffffffeffffffff;
+  *((unsigned long *)&__m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128d_op0[0]) = 0x4f804f804f804f80;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00007fff00007fff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000000000000002f;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000029;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000003a24;
+  *((unsigned long *)&__m128d_op1[0]) = 0x003dbe88077c78c1;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0001fffe0001fefc;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0007000000050000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0003000100010001;
+  *((unsigned long *)&__m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vfcmp_sun_d (__m128d_op0, __m128d_op1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
-- 
2.20.1


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

* [PATCH v4 21/23] LoongArch: Add tests for SX vector handling and shuffle instructions.
  2023-09-13  3:37 [PATCH v4 20/23] LoongArch: Add tests for SX vector vfcmp instructions Xiaolong Chen
@ 2023-09-13  3:37 ` Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 22/23] LoongArch: Add tests for SX vector vand/vandi/vandn/vor/vori/vnor/ vnori/vxor/vxori instructions Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 23/23] LoongArch: Add tests for SX vector vfmadd/vfnmadd/vld/vst instructions Xiaolong Chen
  2 siblings, 0 replies; 4+ messages in thread
From: Xiaolong Chen @ 2023-09-13  3:37 UTC (permalink / raw)
  To: gcc-patches; +Cc: xry111, i, xuchenghua, chenglulu, Xiaolong Chen

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

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 00000000000..34246c5518b
--- /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 00000000000..986b7d5667e
--- /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 00000000000..8d4158b5734
--- /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 00000000000..aa802b2959e
--- /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 00000000000..88c66f220b8
--- /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 00000000000..2b9dcc0b55b
--- /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 00000000000..030e87fd8c5
--- /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 00000000000..783eedae1a1
--- /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 00000000000..58591f1bb16
--- /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 00000000000..74269e319b6
--- /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 00000000000..acca2bee9fa
--- /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 00000000000..ef0ad676eb0
--- /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 00000000000..a5f02b1b115
--- /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 00000000000..463adb48e9e
--- /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 00000000000..a81be76f12b
--- /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 00000000000..4e7fcc02b12
--- /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 00000000000..cd441b841a9
--- /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;
+}
-- 
2.20.1


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

* [PATCH v4 22/23] LoongArch: Add tests for SX vector vand/vandi/vandn/vor/vori/vnor/ vnori/vxor/vxori instructions.
  2023-09-13  3:37 [PATCH v4 20/23] LoongArch: Add tests for SX vector vfcmp instructions Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 21/23] LoongArch: Add tests for SX vector handling and shuffle instructions Xiaolong Chen
@ 2023-09-13  3:37 ` Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 23/23] LoongArch: Add tests for SX vector vfmadd/vfnmadd/vld/vst instructions Xiaolong Chen
  2 siblings, 0 replies; 4+ messages in thread
From: Xiaolong Chen @ 2023-09-13  3:37 UTC (permalink / raw)
  To: gcc-patches; +Cc: xry111, i, xuchenghua, chenglulu, Xiaolong Chen

gcc/testsuite/ChangeLog:

	* gcc.target/loongarch/vector/lsx/lsx-vand.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vandi.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vandn.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vnor.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vnori.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vor.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vori.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vorn.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vxor.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vxori.c: New test.
---
 .../loongarch/vector/lsx/lsx-vand.c           | 159 ++++++++++++++++
 .../loongarch/vector/lsx/lsx-vandi.c          |  67 +++++++
 .../loongarch/vector/lsx/lsx-vandn.c          | 129 +++++++++++++
 .../loongarch/vector/lsx/lsx-vnor.c           | 109 +++++++++++
 .../loongarch/vector/lsx/lsx-vnori.c          |  91 ++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vor.c | 169 ++++++++++++++++++
 .../loongarch/vector/lsx/lsx-vori.c           | 123 +++++++++++++
 .../loongarch/vector/lsx/lsx-vorn.c           | 109 +++++++++++
 .../loongarch/vector/lsx/lsx-vxor.c           |  79 ++++++++
 .../loongarch/vector/lsx/lsx-vxori.c          |  67 +++++++
 10 files changed, 1102 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vand.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandi.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandn.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnor.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnori.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vor.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vori.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vorn.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxor.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxori.c

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vand.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vand.c
new file mode 100644
index 00000000000..1597749b546
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vand.c
@@ -0,0 +1,159 @@
+/* { 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_vand_v(__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]) = 0x03574e3a62407e03;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000001010000;
+  *((unsigned long*)& __m128i_result[1]) = 0x03574e3a62407e03;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vand_v(__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]) = 0x001fffff001fffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0x001fffff001fffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x001fffff001fffff;
+  *((unsigned long*)& __m128i_result[0]) = 0x001fffff001fffff;
+  __m128i_out = __lsx_vand_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00000000003dffc2;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00000000003dffc2;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0008000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vand_v(__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_vand_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00000000ffff53d9;
+  *((unsigned long*)& __m128i_op0[0]) = 0xffff0001ffff9515;
+  *((unsigned long*)& __m128i_op1[1]) = 0x00000000ffff53d9;
+  *((unsigned long*)& __m128i_op1[0]) = 0xffff0001ffff9515;
+  *((unsigned long*)& __m128i_result[1]) = 0x00000000ffff53d9;
+  *((unsigned long*)& __m128i_result[0]) = 0xffff0001ffff9515;
+  __m128i_out = __lsx_vand_v(__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_vand_v(__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]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vand_v(__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_vand_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x67eb85af0000b000;
+  *((unsigned long*)& __m128i_op0[0]) = 0xc8847ef6ed3f2000;
+  *((unsigned long*)& __m128i_op1[1]) = 0x67eb85af0000b000;
+  *((unsigned long*)& __m128i_op1[0]) = 0xc8847ef6ed3f2000;
+  *((unsigned long*)& __m128i_result[1]) = 0x67eb85af0000b000;
+  *((unsigned long*)& __m128i_result[0]) = 0xc8847ef6ed3f2000;
+  __m128i_out = __lsx_vand_v(__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_vand_v(__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]) = 0x0313100003131000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0313100003131000;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vand_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000200000002;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0007000000050000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0003000100010001;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vand_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00007a8000000480;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00000485000004cc;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0a0000000a000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0a0000000a000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vand_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandi.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandi.c
new file mode 100644
index 00000000000..906da69caf7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandi.c
@@ -0,0 +1,67 @@
+/* { 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_vandi_b(__m128i_op0,0x36);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000800;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000800;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vandi_b(__m128i_op0,0x39);
+  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_vandi_b(__m128i_op0,0x27);
+  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_vandi_b(__m128i_op0,0x25);
+  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_vandi_b(__m128i_op0,0xbd);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000a95afc60a5c5;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000b6e414157f84;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000204264602444;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000266404046604;
+  __m128i_out = __lsx_vandi_b(__m128i_op0,0x66);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandn.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandn.c
new file mode 100644
index 00000000000..3ae2d769421
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vandn.c
@@ -0,0 +1,129 @@
+/* { 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]) = 0x000000017fff9000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000210011084;
+  *((unsigned long*)& __m128i_result[1]) = 0x000000017fff9000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000210011084;
+  __m128i_out = __lsx_vandn_v(__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_vandn_v(__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]) = 0x00000049000000c0;
+  *((unsigned long*)& __m128i_op1[0]) = 0x00000001ffffff29;
+  *((unsigned long*)& __m128i_result[1]) = 0x00000049000000c0;
+  *((unsigned long*)& __m128i_result[0]) = 0x00000000ffffff29;
+  __m128i_out = __lsx_vandn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x010f00000111fffc;
+  *((unsigned long*)& __m128i_op0[0]) = 0x016700dc0176003a;
+  *((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_vandn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0003000000010000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0002000000010000;
+  *((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_vandn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x8000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0xfffffffffffff000;
+  *((unsigned long*)& __m128i_op1[1]) = 0x8000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0xfffffffffffff000;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vandn_v(__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]) = 0x62cbf96e4acfaf40;
+  *((unsigned long*)& __m128i_op1[0]) = 0xf0bc9a5278285a4a;
+  *((unsigned long*)& __m128i_result[1]) = 0x62cbf96e4acfaf40;
+  *((unsigned long*)& __m128i_result[0]) = 0xf0bc9a5278285a4a;
+  __m128i_out = __lsx_vandn_v(__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_vandn_v(__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]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vandn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0xfffe0004fffe0004;
+  *((unsigned long*)& __m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vandn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x9c7c266e71768fa4;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x9c7c266e71768fa4;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vandn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnor.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnor.c
new file mode 100644
index 00000000000..a7a3acce933
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnor.c
@@ -0,0 +1,109 @@
+/* { 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]) = 0x00000000fff8fff8;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00000000fff80000;
+  *((unsigned long*)& __m128i_op1[1]) = 0x00000000fff8fff8;
+  *((unsigned long*)& __m128i_op1[0]) = 0x00000000fff80000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffff00070007;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffff0007ffff;
+  __m128i_out = __lsx_vnor_v(__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]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vnor_v(__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]) = 0x0000000000000000;
+  __m128i_out = __lsx_vnor_v(__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]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vnor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0xce23d33e43d9736c;
+  *((unsigned long*)& __m128i_op0[0]) = 0x63b2ac27aa076aeb;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x31dc2cc1bc268c93;
+  *((unsigned long*)& __m128i_result[0]) = 0x9c4d53d855f89514;
+  __m128i_out = __lsx_vnor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x000000000000000c;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xfffffffffffffff3;
+  __m128i_out = __lsx_vnor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000400080003fff;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000bc2000007e04;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000400080003fff;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000bc2000007e04;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffbfff7fffc000;
+  *((unsigned long*)& __m128i_result[0]) = 0xffff43dfffff81fb;
+  __m128i_out = __lsx_vnor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x021b7d24c9678a35;
+  *((unsigned long*)& __m128i_op0[0]) = 0x030298a6a1030a49;
+  *((unsigned long*)& __m128i_op1[1]) = 0x5252525252525252;
+  *((unsigned long*)& __m128i_op1[0]) = 0x5252525252525252;
+  *((unsigned long*)& __m128i_result[1]) = 0xada4808924882588;
+  *((unsigned long*)& __m128i_result[0]) = 0xacad25090caca5a4;
+  __m128i_out = __lsx_vnor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0xfffefffe0000ff18;
+  *((unsigned long*)& __m128i_op1[1]) = 0xffff000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x00000000ffffffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000ffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0x0001000100000000;
+  __m128i_out = __lsx_vnor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnori.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnori.c
new file mode 100644
index 00000000000..a07a02ab212
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vnori.c
@@ -0,0 +1,91 @@
+/* { 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]) = 0x00000000ffff0000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00000000ffff0000;
+  *((unsigned long*)& __m128i_result[1]) = 0xcccccccc0000cccc;
+  *((unsigned long*)& __m128i_result[0]) = 0xcccccccc0000cccc;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0x33);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0xa6);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x3e035e51522f0799;
+  *((unsigned long*)& __m128i_result[1]) = 0x9292929292929292;
+  *((unsigned long*)& __m128i_result[0]) = 0x8090808280909002;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0x6d);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00000000000ffc2f;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00201df000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x3838383838300010;
+  *((unsigned long*)& __m128i_result[0]) = 0x3818200838383838;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0xc7);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x2020202020202020;
+  *((unsigned long*)& __m128i_op0[0]) = 0x2020202020207f7f;
+  *((unsigned long*)& __m128i_result[1]) = 0x5d5d5d5d5d5d5d5d;
+  *((unsigned long*)& __m128i_result[0]) = 0x5d5d5d5d5d5d0000;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0xa2);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x8080808080808080;
+  *((unsigned long*)& __m128i_result[0]) = 0x8080808080808080;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0x7f);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x8080808080808080;
+  *((unsigned long*)& __m128i_op0[0]) = 0x8080808080808080;
+  *((unsigned long*)& __m128i_result[1]) = 0x1313131313131313;
+  *((unsigned long*)& __m128i_result[0]) = 0x1313131313131313;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0xec);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x9d9d9d9d9d9d9d9d;
+  *((unsigned long*)& __m128i_result[0]) = 0x9d9d9d9d9d9d9d9d;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0x62);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00f525682ffd27f2;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00365c60317ff930;
+  *((unsigned long*)& __m128i_result[1]) = 0xe500c085c000c005;
+  *((unsigned long*)& __m128i_result[0]) = 0xe5c1a185c48004c5;
+  __m128i_out = __lsx_vnori_b(__m128i_op0,0x1a);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vor.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vor.c
new file mode 100644
index 00000000000..537a1bb3b64
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vor.c
@@ -0,0 +1,169 @@
+/* { 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]) = 0x7e44bde9b842ff23;
+  *((unsigned long*)& __m128i_op1[0]) = 0x00011e80007edff8;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vor_v(__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_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000001;
+  *((unsigned long*)& __m128i_op1[0]) = 0xfffc001fffffffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xfffc001fffffffff;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000200010;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000200010;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000200010;
+  __m128i_out = __lsx_vor_v(__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_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x4f804f804f804f80;
+  *((unsigned long*)& __m128i_op0[0]) = 0x4f804f804f804f80;
+  *((unsigned long*)& __m128i_op1[1]) = 0x4f804f804f804f80;
+  *((unsigned long*)& __m128i_op1[0]) = 0x4f804f804f804f80;
+  *((unsigned long*)& __m128i_result[1]) = 0x4f804f804f804f80;
+  *((unsigned long*)& __m128i_result[0]) = 0x4f804f804f804f80;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x3e035e51522f0799;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x3e035e51522f0799;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x3e035e51522f0799;
+  __m128i_out = __lsx_vor_v(__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]) = 0xffff0000ffff0000;
+  *((unsigned long*)& __m128i_op1[0]) = 0xffff000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffff0000ffff0000;
+  *((unsigned long*)& __m128i_result[0]) = 0xffff000000000000;
+  __m128i_out = __lsx_vor_v(__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]) = 0xffffffff00000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffff00000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000000000000;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0xfffb00fdfdf7ffff;
+  *((unsigned long*)& __m128i_op0[0]) = 0xfff8000000000000;
+  *((unsigned long*)& __m128i_op1[1]) = 0xfffb00fdfdf7ffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0xfff8000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xfffb00fdfdf7ffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xfff8000000000000;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0xffffffff80005613;
+  *((unsigned long*)& __m128i_op0[0]) = 0x81000080806b000b;
+  *((unsigned long*)& __m128i_op1[1]) = 0xffff00011cf0c569;
+  *((unsigned long*)& __m128i_op1[0]) = 0xc0000002b0995850;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffff9cf0d77b;
+  *((unsigned long*)& __m128i_result[0]) = 0xc1000082b0fb585b;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0xfffffffffffbfff8;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x80808080806b000b;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0xfffffffffffbfffb;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0001000101010001;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0001000100010001;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000ffff0000ffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000ffff0000ffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x0001ffff0101ffff;
+  *((unsigned long*)& __m128i_result[0]) = 0x0001ffff0001ffff;
+  __m128i_out = __lsx_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0xffffffffc105d1aa;
+  *((unsigned long*)& __m128i_op0[0]) = 0xffffffffbc19ecca;
+  *((unsigned long*)& __m128i_op1[1]) = 0xc0b4d1a5f8babad3;
+  *((unsigned long*)& __m128i_op1[0]) = 0xbbc8ecc5f3ced5f3;
+  *((unsigned long*)& __m128i_result[1]) = 0xfffffffff9bffbfb;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffdffdfb;
+  __m128i_out = __lsx_vor_v(__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_vor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vori.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vori.c
new file mode 100644
index 00000000000..8a6e035c93b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vori.c
@@ -0,0 +1,123 @@
+/* { 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]) = 0x8282828282828282;
+  *((unsigned long*)& __m128i_result[0]) = 0x8282828282828282;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x82);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x7505853d654185f5;
+  *((unsigned long*)& __m128i_op0[0]) = 0x01010000fefe0101;
+  *((unsigned long*)& __m128i_result[1]) = 0x7545c57d6541c5f5;
+  *((unsigned long*)& __m128i_result[0]) = 0x41414040fefe4141;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x40);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000c2f90000bafa;
+  *((unsigned long*)& __m128i_op0[0]) = 0x8000c2fa8000c2fa;
+  *((unsigned long*)& __m128i_result[1]) = 0x7474f6fd7474fefe;
+  *((unsigned long*)& __m128i_result[0]) = 0xf474f6fef474f6fe;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x74);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long*)& __m128i_result[0]) = 0x3d3d3d3d3d3d3d3d;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x3d);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0xfffffacdb6dbecac;
+  *((unsigned long*)& __m128i_op0[0]) = 0x1f5533a694f902c0;
+  *((unsigned long*)& __m128i_result[1]) = 0xfffffadffedbfefe;
+  *((unsigned long*)& __m128i_result[0]) = 0x5f5f7bfedefb5ada;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x5a);
+  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_vori_b(__m128i_op0,0x38);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0d1202e19235e2bc;
+  *((unsigned long*)& __m128i_op0[0]) = 0xea38e0f75f6e56d1;
+  *((unsigned long*)& __m128i_result[1]) = 0x2f3626e7b637e6be;
+  *((unsigned long*)& __m128i_result[0]) = 0xee3ee6f77f6e76f7;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x26);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0003c853c843c87e;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0003c853c843c87e;
+  *((unsigned long*)& __m128i_result[1]) = 0xd6d7ded7ded7defe;
+  *((unsigned long*)& __m128i_result[0]) = 0xd6d7ded7ded7defe;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0xd6);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0xfffe0000fffe0000;
+  *((unsigned long*)& __m128i_result[1]) = 0x7777777777777777;
+  *((unsigned long*)& __m128i_result[0]) = 0xffff7777ffff7777;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x77);
+  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_vori_b(__m128i_op0,0x55);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x8000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x8000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xd454545454545454;
+  *((unsigned long*)& __m128i_result[0]) = 0xd454545454545454;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x54);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x4f4f4f4f4f4f4f4f;
+  *((unsigned long*)& __m128i_result[0]) = 0x4f4f4f4f4f4f4f4f;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x4f);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x8a8a8a8a8a8a8a8a;
+  *((unsigned long*)& __m128i_result[0]) = 0x8a8a8a8a8a8a8a8a;
+  __m128i_out = __lsx_vori_b(__m128i_op0,0x8a);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vorn.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vorn.c
new file mode 100644
index 00000000000..bb59bc312b8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vorn.c
@@ -0,0 +1,109 @@
+/* { 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]) = 0x0001000100010001;
+  *((unsigned long*)& __m128i_op0[0]) = 0x000100010001fffe;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vorn_v(__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]) = 0x00d3012b015700bb;
+  *((unsigned long*)& __m128i_op1[0]) = 0x00010000ffca0070;
+  *((unsigned long*)& __m128i_result[1]) = 0xff2cfed4fea8ff44;
+  *((unsigned long*)& __m128i_result[0]) = 0xfffeffff0035ff8f;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00fe00fe00fe00fe;
+  *((unsigned long*)& __m128i_op0[0]) = 0x00fe00fe00fe0045;
+  *((unsigned long*)& __m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[1]) = 0x00fe00fe00fe00fe;
+  *((unsigned long*)& __m128i_result[0]) = 0x00fe00fe00fe0045;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000010000010101;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0101000001000100;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000010000010101;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0101000001000100;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vorn_v(__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]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000002;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000002;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x33f5c2d7d975d7fe;
+  *((unsigned long*)& __m128i_op0[0]) = 0xe4423f7b769f8ffe;
+  *((unsigned long*)& __m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x33f5c2d7d975d7fe;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00050eb00000fffa;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000f8a50000f310;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00bbfff7fffffff7;
+  *((unsigned long*)& __m128i_op0[0]) = 0xffffffff008ff820;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0001000100010012;
+  *((unsigned long*)& __m128i_op1[0]) = 0x00000000ffe1ffc0;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffff009ff83f;
+  __m128i_out = __lsx_vorn_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxor.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxor.c
new file mode 100644
index 00000000000..72fa9717489
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxor.c
@@ -0,0 +1,79 @@
+/* { 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]) = 0x00000000f4012ceb;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x00000000f4012ceb;
+  __m128i_out = __lsx_vxor_v(__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]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_result[0]) = 0xffffffffffffffff;
+  __m128i_out = __lsx_vxor_v(__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_vxor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x3ff0000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x40f3fa0000000000;
+  *((unsigned long*)& __m128i_op1[1]) = 0x0000000000000001;
+  *((unsigned long*)& __m128i_op1[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x3ff0000000000001;
+  *((unsigned long*)& __m128i_result[0]) = 0x40f3fa0000000000;
+  __m128i_out = __lsx_vxor_v(__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]) = 0x0000000080000068;
+  *((unsigned long*)& __m128i_result[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[0]) = 0x0000000080000068;
+  __m128i_out = __lsx_vxor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00000000ffff53d9;
+  *((unsigned long*)& __m128i_op0[0]) = 0xff000001ffff9515;
+  *((unsigned long*)& __m128i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long*)& __m128i_op1[0]) = 0xffff0001ffff9514;
+  *((unsigned long*)& __m128i_result[1]) = 0xffffffff0000ac26;
+  *((unsigned long*)& __m128i_result[0]) = 0x00ff000000000001;
+  __m128i_out = __lsx_vxor_v(__m128i_op0,__m128i_op1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxori.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxori.c
new file mode 100644
index 00000000000..cc823d4ba2e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vxori.c
@@ -0,0 +1,67 @@
+/* { 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]) = 0x0404040404040404;
+  *((unsigned long*)& __m128i_result[0]) = 0x0404040404040404;
+  __m128i_out = __lsx_vxori_b(__m128i_op0,0x4);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000001000100;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000001000100;
+  *((unsigned long*)& __m128i_result[1]) = 0x5a5a5a5a5b5a5b5a;
+  *((unsigned long*)& __m128i_result[0]) = 0x5a5a5a5a5b5a5b5a;
+  __m128i_out = __lsx_vxori_b(__m128i_op0,0x5a);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0xe3e3e3e3e3e3e3e3;
+  *((unsigned long*)& __m128i_result[0]) = 0xe3e3e3e3e3e3e3e3;
+  __m128i_out = __lsx_vxori_b(__m128i_op0,0xe3);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0020002000200020;
+  *((unsigned long*)& __m128i_result[1]) = 0x9a9a9a9a9a9a9a9a;
+  *((unsigned long*)& __m128i_result[0]) = 0x9aba9aba9aba9aba;
+  __m128i_out = __lsx_vxori_b(__m128i_op0,0x9a);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000000000000;
+  *((unsigned long*)& __m128i_result[1]) = 0x9090909090909090;
+  *((unsigned long*)& __m128i_result[0]) = 0x9090909090909090;
+  __m128i_out = __lsx_vxori_b(__m128i_op0,0x90);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  *((unsigned long*)& __m128i_op0[1]) = 0x00000000b81c8382;
+  *((unsigned long*)& __m128i_op0[0]) = 0x0000000077af9450;
+  *((unsigned long*)& __m128i_result[1]) = 0xf1f1f1f149ed7273;
+  *((unsigned long*)& __m128i_result[0]) = 0xf1f1f1f1865e65a1;
+  __m128i_out = __lsx_vxori_b(__m128i_op0,0xf1);
+  ASSERTEQ_64(__LINE__, __m128i_result, __m128i_out);
+
+
+  return 0;
+}
-- 
2.20.1


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

* [PATCH v4 23/23] LoongArch: Add tests for SX vector vfmadd/vfnmadd/vld/vst instructions.
  2023-09-13  3:37 [PATCH v4 20/23] LoongArch: Add tests for SX vector vfcmp instructions Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 21/23] LoongArch: Add tests for SX vector handling and shuffle instructions Xiaolong Chen
  2023-09-13  3:37 ` [PATCH v4 22/23] LoongArch: Add tests for SX vector vand/vandi/vandn/vor/vori/vnor/ vnori/vxor/vxori instructions Xiaolong Chen
@ 2023-09-13  3:37 ` Xiaolong Chen
  2 siblings, 0 replies; 4+ messages in thread
From: Xiaolong Chen @ 2023-09-13  3:37 UTC (permalink / raw)
  To: gcc-patches; +Cc: xry111, i, xuchenghua, chenglulu, Xiaolong Chen

gcc/testsuite/ChangeLog:

	* gcc.target/loongarch/vector/lsx/lsx-vfmadd_d.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfmadd_s.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfnmadd_d.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vfnmadd_s.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vld.c: New test.
	* gcc.target/loongarch/vector/lsx/lsx-vst.c: New test.
---
 .../loongarch/vector/lsx/lsx-vfmadd_d.c       | 251 ++++++++++++
 .../loongarch/vector/lsx/lsx-vfmadd_s.c       | 381 ++++++++++++++++++
 .../loongarch/vector/lsx/lsx-vfnmadd_d.c      | 196 +++++++++
 .../loongarch/vector/lsx/lsx-vfnmadd_s.c      | 381 ++++++++++++++++++
 .../gcc.target/loongarch/vector/lsx/lsx-vld.c |  62 +++
 .../gcc.target/loongarch/vector/lsx/lsx-vst.c |  70 ++++
 6 files changed, 1341 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_d.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_s.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_d.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_s.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vld.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vst.c

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_d.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_d.c
new file mode 100644
index 00000000000..c5de1ac7ae9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_d.c
@@ -0,0 +1,251 @@
+/* { 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 *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x8a228acac14e440a;
+  *((unsigned long *)&__m128d_op1[0]) = 0xc77c47cdc0f16549;
+  *((unsigned long *)&__m128d_op2[1]) = 0xffffffffd24271c4;
+  *((unsigned long *)&__m128d_op2[0]) = 0x2711bad1e8e309ed;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffffd24271c4;
+  *((unsigned long *)&__m128d_result[0]) = 0x2711bad1e8e309ed;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op2[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op2[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000040400000383;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffe000ffff1fff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000040400000383;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffe000ffff1fff;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000001000001;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0001000100000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000001000001;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffe000ffff1fff;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x00000000003f80b0;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000ff800000;
+  *((unsigned long *)&__m128d_op2[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op2[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0080200000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000401000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000080000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000080000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000080000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000080000000000;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000000000000;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000000000001e;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000000000000;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x7fff7fff7fff7fff;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[0]) = 0x3fff3fff3fff3fff;
+  *((unsigned long *)&__m128d_op2[1]) = 0xfffb00fdfdf7ffff;
+  *((unsigned long *)&__m128d_op2[0]) = 0xfff8000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0xfffb00fdfdf7ffff;
+  *((unsigned long *)&__m128d_result[0]) = 0xfff8000000000000;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000009000900;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000009000900;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000009000900;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000009000900;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000200000002;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000200000002;
+  *((unsigned long *)&__m128d_op2[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op2[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x9c83e21a22001818;
+  *((unsigned long *)&__m128d_op0[0]) = 0xdd3b8b02563b2d7b;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x7f7f7f007f7f7f00;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x7f7f7f007f7f7f00;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0xfff0000000000000;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xff00e400ff00e400;
+  *((unsigned long *)&__m128d_op0[0]) = 0xff01e41ffff0ffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x5555000054100000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x5555000154100155;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0xfff0000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0xfff0000000000000;
+  __m128d_out = __lsx_vfmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000010;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000010;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000010;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfc01fcfefc02fdf7;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfe00fcfffe01fd01;
+  *((unsigned long *)&__m128d_op1[1]) = 0xfc01fd1300000001;
+  *((unsigned long *)&__m128d_op1[0]) = 0xfe00fd1400010000;
+  *((unsigned long *)&__m128d_op2[1]) = 0xfc01fcfefc02fdf7;
+  *((unsigned long *)&__m128d_op2[0]) = 0xfe00fcfffe01fd01;
+  *((unsigned long *)&__m128d_result[1]) = 0x7ff0000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x7ff0000000000000;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000bd3d00000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000000000000;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0038d800ff000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00fffe00fffffe00;
+  *((unsigned long *)&__m128d_op2[1]) = 0x8000008000008080;
+  *((unsigned long *)&__m128d_op2[0]) = 0x8080800000800080;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000008000008080;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000000000000;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00ff80ff00ff80ff;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000900000009;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x000000007ff000ff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000000000000;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffff7ffffffffe;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00000000fffffffe;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffff7ffffffffe;
+  *((unsigned long *)&__m128d_result[0]) = 0x0000000000000000;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x67eb85afb2ebb000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xc8847ef6ed3f2000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000100000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000103;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000100000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000103;
+  __m128d_out = __lsx_vfmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_s.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_s.c
new file mode 100644
index 00000000000..6b85e87bdce
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfmadd_s.c
@@ -0,0 +1,381 @@
+/* { 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 *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000002;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0x00000002;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x0028e0a1;
+  *((int *)&__m128_op0[2]) = 0xa000a041;
+  *((int *)&__m128_op0[1]) = 0x01000041;
+  *((int *)&__m128_op0[0]) = 0x00010001;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x01000001;
+  *((int *)&__m128_op1[1]) = 0x00010001;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x01000001;
+  *((int *)&__m128_op2[1]) = 0xffffe000;
+  *((int *)&__m128_op2[0]) = 0xffff1fff;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x01000001;
+  *((int *)&__m128_result[1]) = 0xffffe000;
+  *((int *)&__m128_result[0]) = 0xffff1fff;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x7f800000;
+  *((int *)&__m128_op0[2]) = 0x7f800000;
+  *((int *)&__m128_op0[1]) = 0x7f800000;
+  *((int *)&__m128_op0[0]) = 0x7f800000;
+  *((int *)&__m128_op1[3]) = 0x00000002;
+  *((int *)&__m128_op1[2]) = 0x00000002;
+  *((int *)&__m128_op1[1]) = 0x00000003;
+  *((int *)&__m128_op1[0]) = 0x00000003;
+  *((int *)&__m128_op2[3]) = 0x3fc00000;
+  *((int *)&__m128_op2[2]) = 0x3fc00000;
+  *((int *)&__m128_op2[1]) = 0x3fc00000;
+  *((int *)&__m128_op2[0]) = 0x3fc00000;
+  *((int *)&__m128_result[3]) = 0x7f800000;
+  *((int *)&__m128_result[2]) = 0x7f800000;
+  *((int *)&__m128_result[1]) = 0x7f800000;
+  *((int *)&__m128_result[0]) = 0x7f800000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xc1bdceee;
+  *((int *)&__m128_op0[2]) = 0x242070db;
+  *((int *)&__m128_op0[1]) = 0xe8c7b756;
+  *((int *)&__m128_op0[0]) = 0xd76aa478;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0x00000000;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x7f400000;
+  *((int *)&__m128_op0[2]) = 0x7f040000;
+  *((int *)&__m128_op0[1]) = 0x7f020000;
+  *((int *)&__m128_op0[0]) = 0x7f020000;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0x0014002c;
+  *((int *)&__m128_op1[1]) = 0xfffefffe;
+  *((int *)&__m128_op1[0]) = 0x003b0013;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0x3ea5016b;
+  *((int *)&__m128_result[1]) = 0xfffefffe;
+  *((int *)&__m128_result[0]) = 0x3f6fb04d;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x004f0080;
+  *((int *)&__m128_op0[2]) = 0x004f0080;
+  *((int *)&__m128_op0[1]) = 0x004f0080;
+  *((int *)&__m128_op0[0]) = 0x004f0080;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x7fff7fff;
+  *((int *)&__m128_op2[2]) = 0x7fff7fff;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x7fff7fff;
+  *((int *)&__m128_result[2]) = 0x7fff7fff;
+  *((int *)&__m128_result[1]) = 0x00000000;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x3d3d3d3d;
+  *((int *)&__m128_op0[2]) = 0x3d3d3d3d;
+  *((int *)&__m128_op0[1]) = 0x3d3d3d3d;
+  *((int *)&__m128_op0[0]) = 0x3d3d3d3d;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00100000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0x0000bd3d;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00050005;
+  *((int *)&__m128_op1[2]) = 0x00050005;
+  *((int *)&__m128_op1[1]) = 0x00050005;
+  *((int *)&__m128_op1[0]) = 0x00050005;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0x00000000;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xe500c085;
+  *((int *)&__m128_op0[2]) = 0xc000c005;
+  *((int *)&__m128_op0[1]) = 0xe5c1a185;
+  *((int *)&__m128_op0[0]) = 0xc48004c5;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffc000;
+  *((int *)&__m128_op1[0]) = 0xffffc005;
+  *((int *)&__m128_op2[3]) = 0xff550025;
+  *((int *)&__m128_op2[2]) = 0x002a004b;
+  *((int *)&__m128_op2[1]) = 0x00590013;
+  *((int *)&__m128_op2[0]) = 0x005cffca;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xffffffff;
+  *((int *)&__m128_result[1]) = 0xffffc000;
+  *((int *)&__m128_result[0]) = 0xffffc005;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00fe0001;
+  *((int *)&__m128_op1[2]) = 0x00cf005f;
+  *((int *)&__m128_op1[1]) = 0x7fff7fff;
+  *((int *)&__m128_op1[0]) = 0x7fff7f00;
+  *((int *)&__m128_op2[3]) = 0x5d7f5d00;
+  *((int *)&__m128_op2[2]) = 0x7f6a007f;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x5d7f5d00;
+  *((int *)&__m128_result[2]) = 0x7f6a007f;
+  *((int *)&__m128_result[1]) = 0x7fff7fff;
+  *((int *)&__m128_result[0]) = 0x7fff7f00;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00680486;
+  *((int *)&__m128_op0[2]) = 0xffffffda;
+  *((int *)&__m128_op0[1]) = 0xffff913b;
+  *((int *)&__m128_op0[0]) = 0xb9951901;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x01030103;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00200060;
+  *((int *)&__m128_op2[0]) = 0x00200060;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0xffffffda;
+  *((int *)&__m128_result[1]) = 0xffff913b;
+  *((int *)&__m128_result[0]) = 0x001fed4d;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x001a001a;
+  *((int *)&__m128_op0[2]) = 0x001a0008;
+  *((int *)&__m128_op0[1]) = 0x001a001a;
+  *((int *)&__m128_op0[0]) = 0x001a000b;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xff800001;
+  *((int *)&__m128_op1[0]) = 0x0f800000;
+  *((int *)&__m128_op2[3]) = 0xff800000;
+  *((int *)&__m128_op2[2]) = 0xff800000;
+  *((int *)&__m128_op2[1]) = 0xff800000;
+  *((int *)&__m128_op2[0]) = 0xff800000;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xffffffff;
+  *((int *)&__m128_result[1]) = 0xffc00001;
+  *((int *)&__m128_result[0]) = 0xff800000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xfe3bfb01;
+  *((int *)&__m128_op0[2]) = 0xfe3bfe01;
+  *((int *)&__m128_op0[1]) = 0xfe03fe3f;
+  *((int *)&__m128_op0[0]) = 0xfe01fa21;
+  *((int *)&__m128_op1[3]) = 0xfe3bfb01;
+  *((int *)&__m128_op1[2]) = 0xfe3bfe01;
+  *((int *)&__m128_op1[1]) = 0xfe03fe3f;
+  *((int *)&__m128_op1[0]) = 0xfe01fa21;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x7f800000;
+  *((int *)&__m128_result[2]) = 0x7f800000;
+  *((int *)&__m128_result[1]) = 0x7f800000;
+  *((int *)&__m128_result[0]) = 0x7f800000;
+  __m128_out = __lsx_vfmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0x00000000;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffe001;
+  *((int *)&__m128_op0[2]) = 0xffffe001;
+  *((int *)&__m128_op0[1]) = 0xffffe001;
+  *((int *)&__m128_op0[0]) = 0xffffe001;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0xffffe000;
+  *((int *)&__m128_op1[0]) = 0x01ffe200;
+  *((int *)&__m128_op2[3]) = 0x04040383;
+  *((int *)&__m128_op2[2]) = 0x83838404;
+  *((int *)&__m128_op2[1]) = 0x04040383;
+  *((int *)&__m128_op2[0]) = 0x83838404;
+  *((int *)&__m128_result[3]) = 0xffffe001;
+  *((int *)&__m128_result[2]) = 0xffffe001;
+  *((int *)&__m128_result[1]) = 0xffffe001;
+  *((int *)&__m128_result[0]) = 0xffffe001;
+  __m128_out = __lsx_vfmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x18171615;
+  *((int *)&__m128_op0[2]) = 0x17161514;
+  *((int *)&__m128_op0[1]) = 0x16151413;
+  *((int *)&__m128_op0[0]) = 0x151d3756;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x39412488;
+  *((int *)&__m128_op1[0]) = 0x80000000;
+  *((int *)&__m128_op2[3]) = 0x3ff00000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x40f3fa00;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0xbff00000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0xc0f3fa00;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000005;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x00000000;
+  *((int *)&__m128_result[2]) = 0x00000000;
+  *((int *)&__m128_result[1]) = 0x00000000;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x3ddc5dac;
+  *((int *)&__m128_op1[3]) = 0xffffffff;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xffffffff;
+  *((int *)&__m128_result[1]) = 0x00000000;
+  *((int *)&__m128_result[0]) = 0x00000000;
+  __m128_out = __lsx_vfmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x63636b6a;
+  *((int *)&__m128_op0[2]) = 0xfe486741;
+  *((int *)&__m128_op0[1]) = 0x41f8e880;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0xe3636363;
+  *((int *)&__m128_op1[2]) = 0x63abdf16;
+  *((int *)&__m128_op1[1]) = 0x41f8e080;
+  *((int *)&__m128_op1[0]) = 0x16161198;
+  *((int *)&__m128_op2[3]) = 0x00c27580;
+  *((int *)&__m128_op2[2]) = 0x00bccf42;
+  *((int *)&__m128_op2[1]) = 0x00a975be;
+  *((int *)&__m128_op2[0]) = 0x00accf03;
+  *((int *)&__m128_result[3]) = 0xff800000;
+  *((int *)&__m128_result[2]) = 0xff800000;
+  *((int *)&__m128_result[1]) = 0x4471fb84;
+  *((int *)&__m128_result[0]) = 0xffffffff;
+  __m128_out = __lsx_vfmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_d.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_d.c
new file mode 100644
index 00000000000..96b14aad6c4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_d.c
@@ -0,0 +1,196 @@
+/* { 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 *)&__m128d_op0[1]) = 0xef0179a47c793879;
+  *((unsigned long *)&__m128d_op0[0]) = 0x9f9e7e3e9ea3ff41;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x7fc000007fc00000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x1e801ffc7fc00000;
+  *((unsigned long *)&__m128d_result[1]) = 0xffc000007fc00000;
+  *((unsigned long *)&__m128d_result[0]) = 0x9e801ffc7fc00000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000ffff00000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000ffff00000000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128d_op0[0]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000008800022;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffff00000001;
+  *((unsigned long *)&__m128d_op2[1]) = 0xb8ec43befe38e64b;
+  *((unsigned long *)&__m128d_op2[0]) = 0x6477d042343cce24;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffbfffffffbf;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffbfffffffbf;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfffffffffffff000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000060000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0xfffffffffffff000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xfffffffafffffffa;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfffffffafffffffa;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op2[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xf8f8f8f8f8f8f8f8;
+  *((unsigned long *)&__m128d_op1[0]) = 0xf8f8f8f8f8f8f8f8;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000008000000080;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000008000000080;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xff80ffa2fff0ff74;
+  *((unsigned long *)&__m128d_op0[0]) = 0xff76ffd8ffe6ffaa;
+  *((unsigned long *)&__m128d_op1[1]) = 0xff80ffa2fff0ff74;
+  *((unsigned long *)&__m128d_op1[0]) = 0xff76ffd8ffe6ffaa;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0303030303030303;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0303030303030303;
+  *((unsigned long *)&__m128d_result[1]) = 0xfff0000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0xfff0000000000000;
+  __m128d_out = __lsx_vfnmadd_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000000;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0001ffff00000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0001ffff0001ffff;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000000;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m128d_op0[0]) = 0xfffffffffffffffe;
+  *((unsigned long *)&__m128d_op1[1]) = 0xff800000ff800000;
+  *((unsigned long *)&__m128d_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x3c600000ff800000;
+  *((unsigned long *)&__m128d_result[0]) = 0xfffffffffffffffe;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x000000000000000d;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x000000000000000d;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x00000000b5207f80;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x00000000b5207f80;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0xffffffffffffffff;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000009000900;
+  *((unsigned long *)&__m128d_op1[0]) = 0x0000000009000900;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x8000000000000000;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  *((unsigned long *)&__m128d_op0[1]) = 0x00c2758000bccf42;
+  *((unsigned long *)&__m128d_op0[0]) = 0x00a975be00accf03;
+  *((unsigned long *)&__m128d_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op1[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_op2[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m128d_op2[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m128d_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m128d_result[0]) = 0x00000000ffffffff;
+  __m128d_out = __lsx_vfnmsub_d (__m128d_op0, __m128d_op1, __m128d_op2);
+  ASSERTEQ_64 (__LINE__, __m128d_result, __m128d_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_s.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_s.c
new file mode 100644
index 00000000000..bf8414b492c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vfnmadd_s.c
@@ -0,0 +1,381 @@
+/* { 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 *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xfffffffe;
+  *((int *)&__m128_op0[0]) = 0xbe6ed565;
+  *((int *)&__m128_op1[3]) = 0x195f307a;
+  *((int *)&__m128_op1[2]) = 0x5d04acbb;
+  *((int *)&__m128_op1[1]) = 0x6a1a3fbb;
+  *((int *)&__m128_op1[0]) = 0x3c90260e;
+  *((int *)&__m128_op2[3]) = 0xffffffff;
+  *((int *)&__m128_op2[2]) = 0xffffffff;
+  *((int *)&__m128_op2[1]) = 0xfffffffe;
+  *((int *)&__m128_op2[0]) = 0xbe6ed565;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xffffffff;
+  *((int *)&__m128_result[1]) = 0xfffffffe;
+  *((int *)&__m128_result[0]) = 0x3e730941;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffffffff;
+  *((int *)&__m128_op0[1]) = 0xffffffff;
+  *((int *)&__m128_op0[0]) = 0xff01ff01;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0xffffffff;
+  *((int *)&__m128_op2[2]) = 0xffffffff;
+  *((int *)&__m128_op2[1]) = 0xffffffff;
+  *((int *)&__m128_op2[0]) = 0xff01ff01;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xffffffff;
+  *((int *)&__m128_result[1]) = 0xffffffff;
+  *((int *)&__m128_result[0]) = 0x7f01ff01;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0xffffffff;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0xffffffff;
+  *((int *)&__m128_op2[3]) = 0x00307028;
+  *((int *)&__m128_op2[2]) = 0x003f80b0;
+  *((int *)&__m128_op2[1]) = 0x0040007f;
+  *((int *)&__m128_op2[0]) = 0xff800000;
+  *((int *)&__m128_result[3]) = 0x80307028;
+  *((int *)&__m128_result[2]) = 0xffffffff;
+  *((int *)&__m128_result[1]) = 0x8040007f;
+  *((int *)&__m128_result[0]) = 0xffffffff;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000049;
+  *((int *)&__m128_op0[2]) = 0x0000004d;
+  *((int *)&__m128_op0[1]) = 0x00000001;
+  *((int *)&__m128_op0[0]) = 0xffffffff;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000001;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000001;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000001;
+  *((int *)&__m128_result[0]) = 0xffffffff;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xffffffff;
+  *((int *)&__m128_op0[2]) = 0xffff0000;
+  *((int *)&__m128_op0[1]) = 0x00ff0000;
+  *((int *)&__m128_op0[0]) = 0x00ff0000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000800;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0xffffffff;
+  *((int *)&__m128_op2[2]) = 0xfffff800;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xfffff800;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00030000;
+  *((int *)&__m128_op0[2]) = 0x00010000;
+  *((int *)&__m128_op0[1]) = 0x00020000;
+  *((int *)&__m128_op0[0]) = 0x00010000;
+  *((int *)&__m128_op1[3]) = 0x3f800000;
+  *((int *)&__m128_op1[2]) = 0x3f800000;
+  *((int *)&__m128_op1[1]) = 0x3f800000;
+  *((int *)&__m128_op1[0]) = 0x3f800000;
+  *((int *)&__m128_op2[3]) = 0x00030000;
+  *((int *)&__m128_op2[2]) = 0x00010000;
+  *((int *)&__m128_op2[1]) = 0x00020000;
+  *((int *)&__m128_op2[0]) = 0x00010000;
+  *((int *)&__m128_result[3]) = 0x80060000;
+  *((int *)&__m128_result[2]) = 0x80020000;
+  *((int *)&__m128_result[1]) = 0x80040000;
+  *((int *)&__m128_result[0]) = 0x80020000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000008;
+  *((int *)&__m128_op0[2]) = 0x97957687;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000408;
+  *((int *)&__m128_op1[3]) = 0x00000008;
+  *((int *)&__m128_op1[2]) = 0x97957687;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000408;
+  *((int *)&__m128_op2[3]) = 0x00010001;
+  *((int *)&__m128_op2[2]) = 0x00010001;
+  *((int *)&__m128_op2[1]) = 0x00010001;
+  *((int *)&__m128_op2[0]) = 0x04000800;
+  *((int *)&__m128_result[3]) = 0x80010001;
+  *((int *)&__m128_result[2]) = 0x80010001;
+  *((int *)&__m128_result[1]) = 0x80010001;
+  *((int *)&__m128_result[0]) = 0x84000800;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xffc2ffe7;
+  *((int *)&__m128_op0[2]) = 0x00000007;
+  *((int *)&__m128_op0[1]) = 0x0000ffc1;
+  *((int *)&__m128_op0[0]) = 0x00010001;
+  *((int *)&__m128_op1[3]) = 0xffc2ffe7;
+  *((int *)&__m128_op1[2]) = 0x00000007;
+  *((int *)&__m128_op1[1]) = 0x0000ffc1;
+  *((int *)&__m128_op1[0]) = 0x00010001;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x000ffc2f;
+  *((int *)&__m128_op2[1]) = 0x00201df0;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0xffc2ffe7;
+  *((int *)&__m128_result[2]) = 0x800ffc2f;
+  *((int *)&__m128_result[1]) = 0x80201df0;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000005;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x80808080;
+  *((int *)&__m128_op0[2]) = 0x80808080;
+  *((int *)&__m128_op0[1]) = 0x80808080;
+  *((int *)&__m128_op0[0]) = 0x80800008;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x31313131;
+  *((int *)&__m128_op0[0]) = 0x31313131;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x31313131;
+  *((int *)&__m128_op1[0]) = 0x31313131;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000008;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000008;
+  *((int *)&__m128_result[1]) = 0xa2f54a1e;
+  *((int *)&__m128_result[0]) = 0xa2f54a1e;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmadd_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0xa486c90f;
+  *((int *)&__m128_op0[2]) = 0x157ca12e;
+  *((int *)&__m128_op0[1]) = 0x58bcc201;
+  *((int *)&__m128_op0[0]) = 0x2e635d65;
+  *((int *)&__m128_op1[3]) = 0x6d564875;
+  *((int *)&__m128_op1[2]) = 0xf8760005;
+  *((int *)&__m128_op1[1]) = 0x8dc5a4d1;
+  *((int *)&__m128_op1[0]) = 0x79ffa22f;
+  *((int *)&__m128_op2[3]) = 0xffffffff;
+  *((int *)&__m128_op2[2]) = 0xd2436487;
+  *((int *)&__m128_op2[1]) = 0x0fa96b88;
+  *((int *)&__m128_op2[0]) = 0x5f94ab13;
+  *((int *)&__m128_result[3]) = 0xffffffff;
+  *((int *)&__m128_result[2]) = 0xd24271c4;
+  *((int *)&__m128_result[1]) = 0x2711bad1;
+  *((int *)&__m128_result[0]) = 0xe8e309ed;
+  __m128_out = __lsx_vfnmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x00000000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x80000000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x007ffd00;
+  *((int *)&__m128_op2[0]) = 0x01400840;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x007ffd00;
+  *((int *)&__m128_result[0]) = 0x01400840;
+  __m128_out = __lsx_vfnmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0x00000000;
+  *((int *)&__m128_op2[2]) = 0x00000000;
+  *((int *)&__m128_op2[1]) = 0x7f800000;
+  *((int *)&__m128_op2[0]) = 0x00000000;
+  *((int *)&__m128_result[3]) = 0x80000000;
+  *((int *)&__m128_result[2]) = 0x80000000;
+  *((int *)&__m128_result[1]) = 0x7f800000;
+  *((int *)&__m128_result[0]) = 0x80000000;
+  __m128_out = __lsx_vfnmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  *((int *)&__m128_op0[3]) = 0x00000000;
+  *((int *)&__m128_op0[2]) = 0x00000000;
+  *((int *)&__m128_op0[1]) = 0x00000000;
+  *((int *)&__m128_op0[0]) = 0x00000000;
+  *((int *)&__m128_op1[3]) = 0x00000000;
+  *((int *)&__m128_op1[2]) = 0x00000000;
+  *((int *)&__m128_op1[1]) = 0x00000000;
+  *((int *)&__m128_op1[0]) = 0x00000000;
+  *((int *)&__m128_op2[3]) = 0xcd636363;
+  *((int *)&__m128_op2[2]) = 0xcd636363;
+  *((int *)&__m128_op2[1]) = 0xcd636363;
+  *((int *)&__m128_op2[0]) = 0xcd636363;
+  *((int *)&__m128_result[3]) = 0xcd636363;
+  *((int *)&__m128_result[2]) = 0xcd636363;
+  *((int *)&__m128_result[1]) = 0xcd636363;
+  *((int *)&__m128_result[0]) = 0xcd636363;
+  __m128_out = __lsx_vfnmsub_s (__m128_op0, __m128_op1, __m128_op2);
+  ASSERTEQ_32 (__LINE__, __m128_result, __m128_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vld.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vld.c
new file mode 100644
index 00000000000..7cd9abb7c69
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vld.c
@@ -0,0 +1,62 @@
+/* { 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]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_result[0]) = 0x3ab7a3fc47a5c31a;
+  __m128i_out = __lsx_vld ((unsigned long *)&__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_result[0]) = 0x3ab7a3fc47a5c31a;
+  __m128i_out = __lsx_vldx ((unsigned long *)&__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0xc3c3c3c3c3c3c3c3;
+  *((unsigned long *)&__m128i_result[0]) = 0xc3c3c3c3c3c3c3c3;
+  __m128i_out = __lsx_vldrepl_b ((unsigned long *)&__m128i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0xc31ac31ac31ac31a;
+  *((unsigned long *)&__m128i_result[0]) = 0xc31ac31ac31ac31a;
+  __m128i_out = __lsx_vldrepl_h ((unsigned long *)&__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x47a5c31a47a5c31a;
+  *((unsigned long *)&__m128i_result[0]) = 0x47a5c31a47a5c31a;
+  __m128i_out = __lsx_vldrepl_w ((unsigned long *)&__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[0]) = 0x3ab7a3fc47a5c31a;
+  __m128i_out = __lsx_vldrepl_d ((unsigned long *)&__m128i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vst.c b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vst.c
new file mode 100644
index 00000000000..8afdffa508a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vst.c
@@ -0,0 +1,70 @@
+/* { 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]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0;
+  *((unsigned long *)&__m128i_result[0]) = 0x0;
+  __lsx_vst (__m128i_op0, (unsigned long *)&__m128i_result, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_op0, __m128i_result);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0;
+  *((unsigned long *)&__m128i_result[0]) = 0x0;
+  __lsx_vstx (__m128i_op0, (unsigned long *)&__m128i_result, 0x0);
+  ASSERTEQ_64 (__LINE__, __m128i_op0, __m128i_result);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0;
+  *((unsigned long *)&__m128i_result[0]) = 0x05;
+  *((unsigned long *)&__m128i_out[1]) = 0x0;
+  *((unsigned long *)&__m128i_out[0]) = 0x0;
+  __lsx_vstelm_b (__m128i_op0, (unsigned long *)&__m128i_out, 0x0, 0x8);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0;
+  *((unsigned long *)&__m128i_result[0]) = 0x5c05;
+  *((unsigned long *)&__m128i_out[1]) = 0x0;
+  *((unsigned long *)&__m128i_out[0]) = 0x0;
+  __lsx_vstelm_h (__m128i_op0, (unsigned long *)&__m128i_out, 0x0, 0x4);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0;
+  *((unsigned long *)&__m128i_result[0]) = 0xc9d85c05;
+  *((unsigned long *)&__m128i_out[1]) = 0x0;
+  *((unsigned long *)&__m128i_out[0]) = 0x0;
+  __lsx_vstelm_w (__m128i_op0, (unsigned long *)&__m128i_out, 0x0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  *((unsigned long *)&__m128i_op0[1]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_op0[0]) = 0x3ab7a3fc47a5c31a;
+  *((unsigned long *)&__m128i_result[1]) = 0x0;
+  *((unsigned long *)&__m128i_result[0]) = 0x1dcc4255c9d85c05;
+  *((unsigned long *)&__m128i_out[1]) = 0x0;
+  *((unsigned long *)&__m128i_out[0]) = 0x0;
+  __lsx_vstelm_d (__m128i_op0, (unsigned long *)&__m128i_out, 0x0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m128i_result, __m128i_out);
+
+  return 0;
+}
-- 
2.20.1


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

end of thread, other threads:[~2023-09-13  3:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-13  3:37 [PATCH v4 20/23] LoongArch: Add tests for SX vector vfcmp instructions Xiaolong Chen
2023-09-13  3:37 ` [PATCH v4 21/23] LoongArch: Add tests for SX vector handling and shuffle instructions Xiaolong Chen
2023-09-13  3:37 ` [PATCH v4 22/23] LoongArch: Add tests for SX vector vand/vandi/vandn/vor/vori/vnor/ vnori/vxor/vxori instructions Xiaolong Chen
2023-09-13  3:37 ` [PATCH v4 23/23] LoongArch: Add tests for SX vector vfmadd/vfnmadd/vld/vst instructions Xiaolong Chen

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