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