public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH v4 09/22] LoongArch: Add tests for ASX vector xvextl/xvsra/xvsran/xvsrarn instructions.
@ 2023-09-13  3:40 Xiaolong Chen
  0 siblings, 0 replies; only message in thread
From: Xiaolong Chen @ 2023-09-13  3:40 UTC (permalink / raw)
  To: gcc-patches; +Cc: xry111, i, xuchenghua, chenglulu, Xiaolong Chen

gcc/testsuite/ChangeLog:

	* gcc.target/loongarch/vector/lasx/lasx-xvextl-1.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvextl-2.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsra.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsrai.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsran.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsrani.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsrar.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsrari.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsrarn.c: New test.
	* gcc.target/loongarch/vector/lasx/lasx-xvsrarni.c: New test.
---
 .../loongarch/vector/lasx/lasx-xvextl-1.c     |  86 +++
 .../loongarch/vector/lasx/lasx-xvextl-2.c     | 163 ++++
 .../loongarch/vector/lasx/lasx-xvsra.c        | 545 +++++++++++++
 .../loongarch/vector/lasx/lasx-xvsrai.c       | 504 ++++++++++++
 .../loongarch/vector/lasx/lasx-xvsran.c       | 455 +++++++++++
 .../loongarch/vector/lasx/lasx-xvsrani.c      | 545 +++++++++++++
 .../loongarch/vector/lasx/lasx-xvsrar.c       | 725 ++++++++++++++++++
 .../loongarch/vector/lasx/lasx-xvsrari.c      | 471 ++++++++++++
 .../loongarch/vector/lasx/lasx-xvsrarn.c      | 500 ++++++++++++
 .../loongarch/vector/lasx/lasx-xvsrarni.c     | 636 +++++++++++++++
 10 files changed, 4630 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-1.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-2.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsra.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrai.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsran.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrani.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrar.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrari.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarn.c
 create mode 100644 gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarni.c

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-1.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-1.c
new file mode 100644
index 00000000000..c0d3e8e754c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-1.c
@@ -0,0 +1,86 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_q_d (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_q_d (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_q_d (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x43ef878780000009;
+  __m256i_out = __lasx_xvextl_q_d (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000201220001011c;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000201220001011c;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x000201220001011c;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000201220001011c;
+  __m256i_out = __lasx_xvextl_q_d (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_q_d (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-2.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-2.c
new file mode 100644
index 00000000000..8c7ab4ed307
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvextl-2.c
@@ -0,0 +1,163 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x8000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0101010101010101;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000001010101;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000001010101;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000083f95466;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0101010100005400;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000083f95466;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0101010100005400;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0001000100010001;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x8000000000000000;
+  __m256i_out = __lasx_xvextl_qu_du (__m256i_op0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsra.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsra.c
new file mode 100644
index 00000000000..2bf9ae9c37d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsra.c
@@ -0,0 +1,545 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xc5890a0a07070707;
+  *((unsigned long *)&__m256i_op1[2]) = 0x006be0e4180b8024;
+  *((unsigned long *)&__m256i_op1[1]) = 0x1b399540334c966c;
+  *((unsigned long *)&__m256i_op1[0]) = 0x71d7dd7aefcac001;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffff00000000;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000800;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000800;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000800;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffbf7f7fff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffe651bfff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffbf7f7fff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffe651bfff;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xfc00000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfc00000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0xfc00000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfc00000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffe0000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffe0000000;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000800000004;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000bf6e0000c916;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000030000fff3;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000800000004;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000bf6e0000c916;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000000030000fff3;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffff8c80;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000fff0e400;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000ffff8c80;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000fffffe40;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000ffff8c80;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000fff0e400;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x9cffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x9cffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfe00000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x1cfd000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfe00000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x1cfd000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xfe00000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x1cfd000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xfe00000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x1cfd000000000000;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000017e007ffe02;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00ff00ff017e01fe;
+  *((unsigned long *)&__m256i_op1[1]) = 0x017e00ff017e00ff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00ff00ff017e01fe;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000004500f300fb;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000004500f300fb;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x6161616161616161;
+  *((unsigned long *)&__m256i_op0[2]) = 0x6161616161616161;
+  *((unsigned long *)&__m256i_op0[1]) = 0x6161616161616161;
+  *((unsigned long *)&__m256i_op0[0]) = 0x6161616161616161;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000fffffffa;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000fffffffa;
+  *((unsigned long *)&__m256i_result[3]) = 0x6161616161616161;
+  *((unsigned long *)&__m256i_result[2]) = 0x6161616100000018;
+  *((unsigned long *)&__m256i_result[1]) = 0x6161616161616161;
+  *((unsigned long *)&__m256i_result[0]) = 0x6161616100000018;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000004411;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000004411;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x009f00f8007e00f0;
+  *((unsigned long *)&__m256i_op0[2]) = 0x007f007f0081007f;
+  *((unsigned long *)&__m256i_op0[1]) = 0x009f00f8007e00f0;
+  *((unsigned long *)&__m256i_op0[0]) = 0x007f007f0081007f;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x009f00f8007e00f0;
+  *((unsigned long *)&__m256i_result[2]) = 0x007f007f0081007f;
+  *((unsigned long *)&__m256i_result[1]) = 0x009f00f8007e00f0;
+  *((unsigned long *)&__m256i_result[0]) = 0x007f007f0081007f;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00ff010000ff017e;
+  *((unsigned long *)&__m256i_op0[2]) = 0x01fe01ae00ff00ff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00ff010000ff017e;
+  *((unsigned long *)&__m256i_op0[0]) = 0x01fe01ae00ff00ff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x00ff010000ff017e;
+  *((unsigned long *)&__m256i_result[2]) = 0x01fe01ae00ff00ff;
+  *((unsigned long *)&__m256i_result[1]) = 0x00ff010000ff017e;
+  *((unsigned long *)&__m256i_result[0]) = 0x01fe01ae00ff00ff;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x01ff0020ff1f001f;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7fe1ffe0ffe1ffe0;
+  *((unsigned long *)&__m256i_op0[1]) = 0x01ff0020ff1f001f;
+  *((unsigned long *)&__m256i_op0[0]) = 0x7fe1ffe0ffe1ffe0;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x01ff0020ff1f001f;
+  *((unsigned long *)&__m256i_result[2]) = 0x7fe1ffe0ffe1ffe0;
+  *((unsigned long *)&__m256i_result[1]) = 0x01ff0020ff1f001f;
+  *((unsigned long *)&__m256i_result[0]) = 0x7fe1ffe0ffe1ffe0;
+  __m256i_out = __lasx_xvsra_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0007000700070007;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0007000700070007;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0007000700070007;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0007000700070007;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0007000700070007;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0007000700070007;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0d0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0d0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0d0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0d0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op1[3]) = 0xff0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0d0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op1[1]) = 0xff0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0d0d0d0d0d0d0d0d;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x6018000000000cd1;
+  *((unsigned long *)&__m256i_op0[2]) = 0x6040190d20227a78;
+  *((unsigned long *)&__m256i_op0[1]) = 0x132feeabd2d33b38;
+  *((unsigned long *)&__m256i_op0[0]) = 0x6040190d00000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0004000f00100003;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000400030010000f;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0004000f00100003;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000400030010000f;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000c0300000019a;
+  *((unsigned long *)&__m256i_result[2]) = 0x0c08032100004044;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000265ffa5a6767;
+  *((unsigned long *)&__m256i_result[0]) = 0x0c08032100000000;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000100000001;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000ff88ff88;
+  *((unsigned long *)&__m256i_op1[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000ff88ff88;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000007f433c78;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000007f433c78;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x000000007f433c78;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000000007f433c78;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsra_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00feff0100feff01;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00feff0100feff01;
+  *((unsigned long *)&__m256i_op1[3]) = 0x7fffffff80000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x7fffffff80000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000ffff0000ffff;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffff801000000010;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffff800300000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffff801000000010;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffff800300000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffff801000000010;
+  *((unsigned long *)&__m256i_result[2]) = 0xffff800300000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffff801000000010;
+  *((unsigned long *)&__m256i_result[0]) = 0xffff800300000000;
+  __m256i_out = __lasx_xvsra_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x7fff000000017fff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7fff000000017fff;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsra_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000f00000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000f00000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsra_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrai.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrai.c
new file mode 100644
index 00000000000..a51be899bc6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrai.c
@@ -0,0 +1,504 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00d6c1c830160048;
+  *((unsigned long *)&__m256i_op0[1]) = 0x36722a7e66972cd6;
+  *((unsigned long *)&__m256i_op0[0]) = 0xe3aebaf4df958004;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x006be0e4180b0024;
+  *((unsigned long *)&__m256i_result[1]) = 0x1b39153f334b166b;
+  *((unsigned long *)&__m256i_result[0]) = 0xf1d7dd7aefcac002;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x36);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x555555ab555555ab;
+  *((unsigned long *)&__m256i_op0[2]) = 0x555555ab555555ab;
+  *((unsigned long *)&__m256i_op0[1]) = 0x555555ab555555ab;
+  *((unsigned long *)&__m256i_op0[0]) = 0x555555ab555555ab;
+  *((unsigned long *)&__m256i_result[3]) = 0x1555156a1555156a;
+  *((unsigned long *)&__m256i_result[2]) = 0x1555156a1555156a;
+  *((unsigned long *)&__m256i_result[1]) = 0x1555156a1555156a;
+  *((unsigned long *)&__m256i_result[0]) = 0x1555156a1555156a;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x15);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000bea20000e127;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000c0460000721f;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000de910000f010;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000006f9;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000000000bea20;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000000c0460;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000000de910;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x1c);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000ffff0000ffff;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000003f00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000003f00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xfffff800fffff800;
+  *((unsigned long *)&__m256i_result[2]) = 0xfffff800fffff800;
+  *((unsigned long *)&__m256i_result[1]) = 0xfffff800fffff800;
+  *((unsigned long *)&__m256i_result[0]) = 0xfffff800fffff800;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x14);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000007f017f01;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000007f017f01;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000000007f017f;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000007f017f;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x8);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x1f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0020002000200020;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0020002000200020;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x15);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0fffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffd8ffc7ffdaff8a;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffd8ffc7ffdaff8a;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x3f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0fff01800fff0181;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0fff01800fff0181;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0007ff800007ff80;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0007ff800007ff80;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfff0000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfff0000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xff00000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffff000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xff00000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffff000000000000;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x23);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000f91;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000f91;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xc03ae000ffff6000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xc600000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xc03ae000ffff6000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xc600000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xff00ff00ffff0000;
+  *((unsigned long *)&__m256i_result[2]) = 0xff00000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xff00ff00ffff0000;
+  *((unsigned long *)&__m256i_result[0]) = 0xff00000000000000;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xff00ff00ffff0000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xff00000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xff00ff00ffff0000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xff00000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffc03fffffffc0;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffc00000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffc03fffffffc0;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffc00000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0xa);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000007ffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000007ffffffff;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x1c);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000007f7f7f80;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000007f7f7f80;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x000000000fef0ff0;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000000000fef0ff0;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xc008fa01c0090000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x3f804000c008f404;
+  *((unsigned long *)&__m256i_op0[1]) = 0xc008fa01c0090000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x3f804000c008f404;
+  *((unsigned long *)&__m256i_result[3]) = 0xffe0047d00e00480;
+  *((unsigned long *)&__m256i_result[2]) = 0x001fc0200060047a;
+  *((unsigned long *)&__m256i_result[1]) = 0xffe0047d00e00480;
+  *((unsigned long *)&__m256i_result[0]) = 0x001fc0200060047a;
+  __m256i_out = __lasx_xvsrai_d (__m256i_op0, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffe0047d00e00480;
+  *((unsigned long *)&__m256i_op0[2]) = 0x001fc0200060047a;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffe0047d00e00480;
+  *((unsigned long *)&__m256i_op0[0]) = 0x001fc0200060047a;
+  *((unsigned long *)&__m256i_result[3]) = 0xffff000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000fffe00000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffff000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000fffe00000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op0[2]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op0[1]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op0[0]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_result[3]) = 0x1e9e1e9e1e9e1e9e;
+  *((unsigned long *)&__m256i_result[2]) = 0x1e9e1e9e1e9e1e9e;
+  *((unsigned long *)&__m256i_result[1]) = 0x1e9e1e9e1e9e1e9e;
+  *((unsigned long *)&__m256i_result[0]) = 0x1e9e1e9e1e9e1e9e;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000008;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000008;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000008;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000008;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xe);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrai_b (__m256i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffff800000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffff800000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffc0000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffff0000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffc0000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffff0000;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0001fffe0005fff9;
+  *((unsigned long *)&__m256i_op0[2]) = 0x04f004f204f204f0;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0001fffe0005fff9;
+  *((unsigned long *)&__m256i_op0[0]) = 0x04f004f204f204f0;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000900000009;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000900000009;
+  __m256i_out = __lasx_xvsrai_w (__m256i_op0, 0x17);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x761ed60b5d7f0000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xdc9938afafe904f1;
+  *((unsigned long *)&__m256i_op0[1]) = 0x761ed60b5d7f0000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xdc9938afafe904f1;
+  *((unsigned long *)&__m256i_result[3]) = 0x03b0feb002eb0000;
+  *((unsigned long *)&__m256i_result[2]) = 0xfee401c5fd7f0027;
+  *((unsigned long *)&__m256i_result[1]) = 0x03b0feb002eb0000;
+  *((unsigned long *)&__m256i_result[0]) = 0xfee401c5fd7f0027;
+  __m256i_out = __lasx_xvsrai_h (__m256i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsran.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsran.c
new file mode 100644
index 00000000000..e08934b1262
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsran.c
@@ -0,0 +1,455 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffff00000000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x7f80780000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000004000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x7f80780000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000004000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00000013ffffffec;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000013ffffebd8;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00000013ffffffec;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000013ffffebd8;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfebdff3eff3dff52;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfebdff3eff3dff52;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfebdff3eff3dff52;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfebdff3eff3dff52;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7ffe7ffe7ffe7ffe;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000007ffe7ffe;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7ffe7ffe7ffe8000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000807e7ffe;
+  *((unsigned long *)&__m256i_op1[3]) = 0x8091811081118110;
+  *((unsigned long *)&__m256i_op1[2]) = 0x80a6802680208015;
+  *((unsigned long *)&__m256i_op1[1]) = 0x8091811081110013;
+  *((unsigned long *)&__m256i_op1[0]) = 0x80a6802680200018;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xfffefffe0000feff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xfffeff0000007e7f;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000fffffffe;
+  *((unsigned long *)&__m256i_op1[1]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000800000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000ffff0000ffff;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0010000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0008000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0010000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0008000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0001000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000100010001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0001000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000100010001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000504fffff3271;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffff47b4ffff5879;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000504fffff3271;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffff47b4ffff5879;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffff00000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffff00000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffff00000001;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffff00000001;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffff000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffff000000000000;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000000007c8;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000007c8;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000001fe01fe;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000ff0100;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000001fe01fe;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000ff0100;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000000000c8;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000000000c8;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000014402080144;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000014402080144;
+  *((unsigned long *)&__m256i_op1[3]) = 0x000000000000000e;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000000000000000c;
+  *((unsigned long *)&__m256i_op1[1]) = 0x000000000000000e;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000000000c;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000440800;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000440800;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op0[2]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op0[1]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op0[0]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x3d3d3d3d3d3d3d3d;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x3d3d3d3d3d3d3d3d;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffc01fc01;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000003fc03bbc;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffc01fc01;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000003fc03bbc;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000001010100;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000405;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000001010100;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000405;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xfc01fc0101fe01dd;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xfc01fc0101fe01dd;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000055;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000054;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffff0000ffff0000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffff0000ffff0000;
+  __m256i_out = __lasx_xvsran_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x7fffffff80000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x7fffffff80000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x7fffffff80000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7fffffff80000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsran_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrani.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrani.c
new file mode 100644
index 00000000000..44c20a9544e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrani.c
@@ -0,0 +1,545 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000007;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000003ffffffff;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x1d);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xe1e800002f03988d;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xe1e800002f03988d;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xff0f400001781cc4;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xff0f400001781cc4;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x5);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xc5c4c5c5c5c5c5c5;
+  *((unsigned long *)&__m256i_op0[2]) = 0xc5c545c545c545c5;
+  *((unsigned long *)&__m256i_op0[1]) = 0xc5c4c5c5c5c5c5c5;
+  *((unsigned long *)&__m256i_op0[0]) = 0xc5c545c545c545c5;
+  *((unsigned long *)&__m256i_op1[3]) = 0x000000ff000000f8;
+  *((unsigned long *)&__m256i_op1[2]) = 0xbc8ff0ffffffcff8;
+  *((unsigned long *)&__m256i_op1[1]) = 0x000000ff000000f8;
+  *((unsigned long *)&__m256i_op1[0]) = 0xbc8ff0ffffffcff8;
+  *((unsigned long *)&__m256i_result[3]) = 0xfcfcfcfcfc040404;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000fbfffffc;
+  *((unsigned long *)&__m256i_result[1]) = 0xfcfcfcfcfc040404;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000fbfffffc;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x14131211100f0e0d;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0c0b0a0908070605;
+  *((unsigned long *)&__m256i_op0[1]) = 0x14131211100f0e0d;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0c0b0a0908070605;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0a09080706050403;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0a09080706050403;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfffffefefffffefe;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfffffefefffffefe;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000fffffefd;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000fffffefd;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000ffff0000ffff;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000080;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x40);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000002a542a;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000002a542a;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffff0000ffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000242;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffff0000ffff;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000242;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x4);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0707feb608c9328b;
+  *((unsigned long *)&__m256i_op0[2]) = 0xc237bd65fc892985;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0707feb608c9328b;
+  *((unsigned long *)&__m256i_op0[0]) = 0xc237bd65fc892985;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00150015003a402f;
+  *((unsigned long *)&__m256i_op1[2]) = 0x333568ce26dcd055;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00150015003a402f;
+  *((unsigned long *)&__m256i_op1[0]) = 0x333568ce26dcd055;
+  *((unsigned long *)&__m256i_result[3]) = 0x0e0f1192846ff912;
+  *((unsigned long *)&__m256i_result[2]) = 0x002a0074666a4db9;
+  *((unsigned long *)&__m256i_result[1]) = 0x0e0f1192846ff912;
+  *((unsigned long *)&__m256i_result[0]) = 0x002a0074666a4db9;
+  __m256i_out = __lasx_xvsrani_h_w (__m256i_op0, __m256i_op1, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_op1[1]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfffffffefffffffe;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xfffffdfffffffdff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xfffffdfffffffdff;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x37);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x8080808000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8080808000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x3f7f7f7eff800000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x3f7f7f7eff800000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000001010000;
+  *((unsigned long *)&__m256i_result[2]) = 0x000000007efeff00;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000001010000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000000007efeff00;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xff3eff3eff3eff3e;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xff3eff3eff3eff3e;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffff3e;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffff3e;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x70);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0002000200020018;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0002000200020008;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00c0000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0040000000000000;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrani_h_w (__m256i_op0, __m256i_op1, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x1f001f00000007ef;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00001fff200007ef;
+  *((unsigned long *)&__m256i_result[3]) = 0x000000ff000000ff;
+  *((unsigned long *)&__m256i_result[2]) = 0x000000000f0f0003;
+  *((unsigned long *)&__m256i_result[1]) = 0x000000ff000000ff;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000000f1003;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00000000fc38fc38;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfc00000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00000000fc38fc38;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfc00000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000fefefe000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000fefefe000000;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op1[2]) = 0x01010101010101c9;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op1[0]) = 0x01010101010101c9;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x1010101010101010;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x1010101010101010;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x2c);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[2]) = 0x01010101010101c9;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[0]) = 0x01010101010101c9;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000064;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000781;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000064;
+  *((unsigned long *)&__m256i_result[3]) = 0x0008080808080808;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0008080808080808;
+  *((unsigned long *)&__m256i_result[0]) = 0x000000000000003c;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x45);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x15);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00f3009500db00ff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00f3009500db00ff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00ff00ff00ff00ff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000003cc0;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000003cc0;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x6a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000400100013;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000400100014;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000400100013;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000400000004;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0a0a000000000a0a;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0a0a0a0a00000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0a0a000000000a0a;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0a0a0a0a00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000020200000202;
+  *((unsigned long *)&__m256i_result[2]) = 0x4100004141410000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000020200000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x4100004141410000;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000003;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000003;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000003;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000003;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x1e);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000956a00000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000956a00000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000080;
+  *((unsigned long *)&__m256i_result[3]) = 0x007fffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xb500000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x007fffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xb500000000000000;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x29);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x8000000001010100;
+  *((unsigned long *)&__m256i_op1[2]) = 0x8000000000000405;
+  *((unsigned long *)&__m256i_op1[1]) = 0x8000000001010100;
+  *((unsigned long *)&__m256i_op1[0]) = 0x8000000000000405;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffe00000ffe00000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffe00000ffe00000;
+  __m256i_out = __lasx_xvsrani_h_w (__m256i_op0, __m256i_op1, 0x1a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000013;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000013;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000013;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000013;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_w_d (__m256i_op0, __m256i_op1, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_w_d (__m256i_op0, __m256i_op1, 0x34);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0808080808080808;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000040;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000040;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000040;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000040;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x66);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000ffffffc0;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000ffffffc0;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000000ffffff80;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000000ffffff80;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_b_h (__m256i_op0, __m256i_op1, 0x8);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_h_w (__m256i_op0, __m256i_op1, 0x1a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x4);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffffffce;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ffffffce;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x6b);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000004000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000000040e7;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000004000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000000040e7;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000200000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000200000000000;
+  __m256i_out = __lasx_xvsrani_d_q (__m256i_op0, __m256i_op1, 0x21);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000900000009;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000900000009;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x3ff9fffa3ff9fffa;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x3ff9fffa3ff9fffa;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000007ff3;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000007ff3;
+  __m256i_out = __lasx_xvsrani_w_d (__m256i_op0, __m256i_op1, 0x2f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrar.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrar.c
new file mode 100644
index 00000000000..fb47385c025
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrar.c
@@ -0,0 +1,725 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x38a966b31be83ee9;
+  *((unsigned long *)&__m256i_op0[2]) = 0x5f6108dc25b80001;
+  *((unsigned long *)&__m256i_op0[1]) = 0xf41a56e8a20878d7;
+  *((unsigned long *)&__m256i_op0[0]) = 0x683b8b67e20c0001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x000000000501e99b;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000109973de7;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000001020f22;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000001890b7a39;
+  *((unsigned long *)&__m256i_result[3]) = 0x38a966b301f41ffd;
+  *((unsigned long *)&__m256i_result[2]) = 0x5f6108ee13ff0000;
+  *((unsigned long *)&__m256i_result[1]) = 0xf41a56e8d10201f6;
+  *((unsigned long *)&__m256i_result[0]) = 0x683b8b34f1020001;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000707;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000010200000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000002;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000070300000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x01480000052801a2;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000ffdcff64;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0001000100010001;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x2020000020200000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x2020000020200000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0008000001010000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0101000001010000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x2020000020200000;
+  *((unsigned long *)&__m256i_result[2]) = 0x2020000020200000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0008000001010000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0101000001010000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0020000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0020000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xff01ff3400000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ff83ff01;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xbabababababababa;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xbabababababababa;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffcc8000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffff82037dfd0000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_result[2]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0101010101010101;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000ff0000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000ff0000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0707feb60707b7d0;
+  *((unsigned long *)&__m256i_op0[2]) = 0x45baa7ef6a95a985;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0707feb60707b7d0;
+  *((unsigned long *)&__m256i_op0[0]) = 0x45baa7ef6a95a985;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0707feb60707b7d0;
+  *((unsigned long *)&__m256i_result[2]) = 0x45baa7ef6a95a985;
+  *((unsigned long *)&__m256i_result[1]) = 0x0707feb60707b7d0;
+  *((unsigned long *)&__m256i_result[0]) = 0x45baa7ef6a95a985;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0707feb60707b7d0;
+  *((unsigned long *)&__m256i_op1[2]) = 0x45baa7ef6a95a985;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0707feb60707b7d0;
+  *((unsigned long *)&__m256i_op1[0]) = 0x45baa7ef6a95a985;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000800;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000000d0000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000d0000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000000d0000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000000d0000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x8000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x8000000000000000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000000001dc;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000000001dc;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000001a00;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000001a00;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000001a00;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000001a00;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000ffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffff02ff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000ffffffff0100;
+  *((unsigned long *)&__m256i_op0[0]) = 0xff00fefffeff02ff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00000000ffff0100;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000ffff00000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000ffff00000100;
+  *((unsigned long *)&__m256i_result[0]) = 0xff00feff00000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x2b2a292827262524;
+  *((unsigned long *)&__m256i_op1[2]) = 0x232221201f1e1d1c;
+  *((unsigned long *)&__m256i_op1[1]) = 0x2b2a292827262524;
+  *((unsigned long *)&__m256i_op1[0]) = 0x232221201f1e1d1c;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7171717171717171;
+  *((unsigned long *)&__m256i_op0[2]) = 0x8e8e8e8e8f0e8e8e;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7171717171717171;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8e8e8e8e8f0e8e8e;
+  *((unsigned long *)&__m256i_op1[3]) = 0x000000000007ffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000000000007ffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x000000000007ffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000007ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x7171717171010101;
+  *((unsigned long *)&__m256i_result[2]) = 0x8e8e8e8e8f00ffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x7171717171010101;
+  *((unsigned long *)&__m256i_result[0]) = 0x8e8e8e8e8f00ffff;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000465;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000465;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000465;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000465;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000003;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000010001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000003;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000010001;
+  __m256i_out = __lasx_xvsrar_b (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffe05f8102;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffe05f8102;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffe05f8102;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffe05f8102;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000420080000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x5fff5fff607f0000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000420080000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x5fff5fff607f0000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x8000420080000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x5fff5fff607f0000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x8000420080000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x5fff5fff607f0000;
+  *((unsigned long *)&__m256i_result[3]) = 0x8000420080000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000001607f0000;
+  *((unsigned long *)&__m256i_result[1]) = 0x8000420080000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000001607f0000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000080000009;
+  *((unsigned long *)&__m256i_op0[2]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000080000009;
+  *((unsigned long *)&__m256i_op0[0]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000080000009;
+  *((unsigned long *)&__m256i_result[2]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000080000009;
+  *((unsigned long *)&__m256i_result[0]) = 0x43ef878780000009;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000ffff0000ffa3;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000000000165a;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000ffff0000ffa3;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000165a;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0001000100000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00005053000000ff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0001000100000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00005053000000ff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000ffff0000ffa3;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000ffff0000ffa3;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xffff800000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffff800000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000e0000000e00;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000e0000000e00;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000e000e000e000e;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000e000e000e000e;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000e0000000e00;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000e0000000e00;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x6018000000000cd1;
+  *((unsigned long *)&__m256i_op0[2]) = 0x6040190d00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x6018000000000cd1;
+  *((unsigned long *)&__m256i_op0[0]) = 0x6040190d00000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000800200027;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000800200028;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000800200027;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000800200028;
+  *((unsigned long *)&__m256i_result[3]) = 0x006018000000001a;
+  *((unsigned long *)&__m256i_result[2]) = 0x0060401900000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x006018000000001a;
+  *((unsigned long *)&__m256i_result[0]) = 0x0060401900000000;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrar_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000040404040;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000040404040;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfefefefe3f800000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfefefefe3f800000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000040404040;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000040404040;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x000000ffffff1dff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffff1dffffff1dff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x000000ffffff1dff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffff1dffffff1dff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x7fffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffff1dffffff1dff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffff1dffffff1dff;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000020;
+  *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrar_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrari.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrari.c
new file mode 100644
index 00000000000..63ba92ead1b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrari.c
@@ -0,0 +1,471 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x81f7f2599f0509c2;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x51136d3c78388916;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffc0fcffffcf83;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000288a00003c1c;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x11);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8b1414140e0e0e0e;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00d6c1c830160048;
+  *((unsigned long *)&__m256i_op0[1]) = 0x36722a7e66972cd6;
+  *((unsigned long *)&__m256i_op0[0]) = 0xe3aebaf4df958004;
+  *((unsigned long *)&__m256i_result[3]) = 0xfffe000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000ffff00010000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0001000100020001;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000fffffffffffe;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0xe);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00001f41ffffbf00;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x000000040000fff8;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0xb);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x2a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffffffff6;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfffffffffffffff6;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffffffff6;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfffffffffffffff6;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffff00007dfd;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffff00007dfd;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x14);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000009;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000009;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000009;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000009;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x22);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000907;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000907;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x1f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000fffffffa;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000fffffffa;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x2a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x1a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x14);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x35);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7fefffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7fefffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x20fc000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x20fc000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x007f0000007f0000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x007f0000007f0000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x00000003f8000004;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x00000003f8000004;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x15);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x43ef878780000009;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x10fbe1e2e0000002;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x10fbe1e2e0000002;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfefefefefefefefe;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfefefefefefefefe;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfefefefefefefefe;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfefefefefefefefe;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x10);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x7);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x000000007f7f7f80;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000007f7f7f80;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000040004;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000040004;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0x9);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x4);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x1b);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x5);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x1f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_h (__m256i_op0, 0x6);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffff8000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x11);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000ffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0x26);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x8);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0001000100010001;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000400000004000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000400000004000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000400000004000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000400000004000;
+  __m256i_out = __lasx_xvsrari_w (__m256i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfffefffefffefffe;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrari_b (__m256i_op0, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000010000000100;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7fff81007fff0100;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000010000000100;
+  *((unsigned long *)&__m256i_op0[0]) = 0x7fff81007fff0100;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000008000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0003fffc0803fff8;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000008000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0003fffc0803fff8;
+  __m256i_out = __lasx_xvsrari_d (__m256i_op0, 0xd);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarn.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarn.c
new file mode 100644
index 00000000000..c145f7ff346
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarn.c
@@ -0,0 +1,500 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000010000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000010000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000010000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000010000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x6100000800060005;
+  *((unsigned long *)&__m256i_op0[2]) = 0x5ee1c073b800c916;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7ff0000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x5ff00007fff9fff3;
+  *((unsigned long *)&__m256i_op1[3]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0209fefb08140000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0003fffc00060000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00080000000cc916;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000000000006fff3;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x6100000800060005;
+  *((unsigned long *)&__m256i_op0[2]) = 0x5ee1c073b800c916;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7ff0000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x5ff00007fff9fff3;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00ffff00ff000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000ffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00080005c073c916;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x000100000007fff3;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000100000001;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00050008000e0010;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0007000800100010;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00050008000e0010;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0007000800100010;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000040404040;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000000002affaa;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffff002affaa;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000002affaa;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffd50055;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x002affaa00000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000ffff0000ffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000001f0000001f;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000001f0000ffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00007f7f00007f00;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00007f7f00007fff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0007fff8000ffff0;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000000000007fff8;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0007fff8000ffff0;
+  *((unsigned long *)&__m256i_op1[0]) = 0x000000000007fff8;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x007f000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x007f00ff00000000;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000000aaabffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000aaabffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000aaabffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000aaabffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000abff0000abff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000abff0000abff;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000001000000010;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000001000000010;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000001000000010;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000001000000010;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0020002000200020;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0020000000200000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0020002000200020;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0020000000200000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000001000000010;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000001000000010;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x80000000ff800000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x80000000ff800000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x000000000000ffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffff800000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffff800000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7000700070007000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7000700070007000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000070007000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x7000700070007000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x4040403fd03fd040;
+  *((unsigned long *)&__m256i_op1[2]) = 0x4040403fd03fd040;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffd03fd040;
+  *((unsigned long *)&__m256i_op1[0]) = 0x4040403fd03fd040;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0001010000010100;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000010000010100;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xc800c800c800c800;
+  *((unsigned long *)&__m256i_op1[2]) = 0x8800c800c800c801;
+  *((unsigned long *)&__m256i_op1[1]) = 0xc800c800c800c800;
+  *((unsigned long *)&__m256i_op1[0]) = 0x8800c800c800c801;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000000000c8;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000000c8;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00000000000000ff;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000000000ff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000064;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000086000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00040ff288000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000086000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00040ff288000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x5555555555555555;
+  *((unsigned long *)&__m256i_op1[2]) = 0x5555555555555555;
+  *((unsigned long *)&__m256i_op1[1]) = 0x5555555555555555;
+  *((unsigned long *)&__m256i_op1[0]) = 0x5555555555555555;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000fc300000fc40;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000fc300000fc40;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xc008fa01c0090000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x3f804000c008f404;
+  *((unsigned long *)&__m256i_op0[1]) = 0xc008fa01c0090000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x3f804000c008f404;
+  *((unsigned long *)&__m256i_op1[3]) = 0x82ff902d83000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x7f80000082fe0bd9;
+  *((unsigned long *)&__m256i_op1[1]) = 0x82ff902d83000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7f80000082fe0bd9;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xc0090000c0200060;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xc0090000c0200060;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xf3f3f3f3f3f3f4f3;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xf3f3f3f3f3f3f4f3;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000f3f3f4f3;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000f3f3f4f3;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00000000fff8579f;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00000000fff8579f;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfefefefefefefefe;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfefefefe01010101;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfefefefefefefefe;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfefefefe01010101;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xfefefefe01010101;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xfefefefe01010101;
+  __m256i_out = __lasx_xvsrarn_w_d (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x498000804843ffe0;
+  *((unsigned long *)&__m256i_op1[2]) = 0x4980008068400000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x498000804843ffe0;
+  *((unsigned long *)&__m256i_op1[0]) = 0x4980008068400000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffff010100000001;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffff010100000001;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffff010100000001;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffff010100000001;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000810001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000810001;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0101010101010110;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0101010101010110;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarn_b_h (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0004000400040004;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0004000500040005;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0004000400040004;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0004000500040005;
+  *((unsigned long *)&__m256i_op1[3]) = 0x8282828282828282;
+  *((unsigned long *)&__m256i_op1[2]) = 0x8768876887688769;
+  *((unsigned long *)&__m256i_op1[1]) = 0x8282828282828282;
+  *((unsigned long *)&__m256i_op1[0]) = 0x8768876887688769;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0001000104000200;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0001000104000200;
+  __m256i_out = __lasx_xvsrarn_h_w (__m256i_op0, __m256i_op1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarni.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarni.c
new file mode 100644
index 00000000000..b5c0fca74af
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsrarni.c
@@ -0,0 +1,636 @@
+/* { dg-do run } */
+/* { dg-options "-mlasx -w -fno-strict-aliasing" } */
+#include "../simd_correctness_check.h"
+#include <lasxintrin.h>
+
+int
+main ()
+{
+  __m256i __m256i_op0, __m256i_op1, __m256i_op2, __m256i_out, __m256i_result;
+  __m256 __m256_op0, __m256_op1, __m256_op2, __m256_out, __m256_result;
+  __m256d __m256d_op0, __m256d_op1, __m256d_op2, __m256d_out, __m256d_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 *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000007f007f5;
+  *((unsigned long *)&__m256i_op1[3]) = 0x002e4db200000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x000315ac0000d658;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00735278007cf94c;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0003ed8800031b38;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x3d);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x3d);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x12);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xfffffefefffffefe;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfffffefefffffcfa;
+  *((unsigned long *)&__m256i_op1[1]) = 0xfffffefefffffefe;
+  *((unsigned long *)&__m256i_op1[0]) = 0x8000000080000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xfffffff8fffffff8;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xfffffff8fc000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x25);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000800000008;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7fff7ff77fff7ff7;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000800000008;
+  *((unsigned long *)&__m256i_op0[0]) = 0x7fff7ff77fff7ff7;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000001000010;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000002000000022;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000004;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000002000000022;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000004;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x3e);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x6300000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x6300000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x22);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0xb);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x5980000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x5980000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000016600000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000016600000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x16);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfffffefefffffefe;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfffffefe00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x7f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x12);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000002a5429;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000002a5429;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000055;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000055;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0xa);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000045;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00000000000d0005;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000045;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00000000000d0005;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x50);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x2f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x16);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x20);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00550f0000550f00;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xff00ff00ff00ef32;
+  *((unsigned long *)&__m256i_op1[2]) = 0xff00ff00ff00ef32;
+  *((unsigned long *)&__m256i_op1[1]) = 0xff00ff00ff00ef32;
+  *((unsigned long *)&__m256i_op1[0]) = 0xff00ff00ff00ef32;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000015c015c0;
+  *((unsigned long *)&__m256i_result[2]) = 0xc0c0c0cdc0c0c0cd;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xc0c0c0cdc0c0c0cd;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0x2);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x001f001f001f001f;
+  *((unsigned long *)&__m256i_op0[2]) = 0x001f001f001f001f;
+  *((unsigned long *)&__m256i_op0[1]) = 0x001f001f001f001f;
+  *((unsigned long *)&__m256i_op0[0]) = 0x001f001f001f001f;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0003030300000300;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0003030300000300;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0003030300000100;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0003030300000100;
+  *((unsigned long *)&__m256i_result[3]) = 0x00f800f800f800f8;
+  *((unsigned long *)&__m256i_result[2]) = 0x0018181800181818;
+  *((unsigned long *)&__m256i_result[1]) = 0x00f800f800f800f8;
+  *((unsigned long *)&__m256i_result[0]) = 0x0018181800181818;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x1d);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x43d03bfff827ea21;
+  *((unsigned long *)&__m256i_op1[2]) = 0x43dac1f2a3804ff0;
+  *((unsigned long *)&__m256i_op1[1]) = 0x43d03bfff827e9f9;
+  *((unsigned long *)&__m256i_op1[0]) = 0x43e019c657c7d050;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xe8001411edf9c0f8;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xe80014fdf0e3e428;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xfff0fff0ff01ff14;
+  *((unsigned long *)&__m256i_op0[2]) = 0xfff0fff0fff10003;
+  *((unsigned long *)&__m256i_op0[1]) = 0xfff0fff0ff01ff14;
+  *((unsigned long *)&__m256i_op0[0]) = 0xfff0fff0fff10003;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0xfefee0e3fefefe00;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0xfefee0e3fefefe00;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x00000000001fffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000001fffff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x00000000001fffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000001fffff;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000400000004;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000400000004;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x13);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffff040000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffff040000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x3f8000003f800000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x007f0000007f0000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x007f0000007f0000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x27);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x19);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xf7f8f7f8f800f800;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00003f780000ff80;
+  *((unsigned long *)&__m256i_op0[1]) = 0xf7f8f7f80000fff9;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00003f780000ff80;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x1f001f00000007ef;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x00001fff200007ef;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x23);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7171717171717171;
+  *((unsigned long *)&__m256i_op0[2]) = 0x8e8e8e8e8e8e8e8e;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7171717171717171;
+  *((unsigned long *)&__m256i_op0[0]) = 0x8e8e8e8e8e8e8e8e;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_result[3]) = 0x01c601c6fe3afe3a;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x01c601c6fe3afe3a;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x16);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x00003f3f00003f3f;
+  *((unsigned long *)&__m256i_op1[2]) = 0x00003f3f00004040;
+  *((unsigned long *)&__m256i_op1[1]) = 0x00003f3f00003f3f;
+  *((unsigned long *)&__m256i_op1[0]) = 0x00003f3f00004040;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x00003f3f00004040;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x00003f3f00004040;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x0);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000001;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x1);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x17);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x007f010700c70106;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x007f010700c70106;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000010211921;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000010211921;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0x3);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7fffffff7fffffff;
+  *((unsigned long *)&__m256i_op0[2]) = 0x7ffffffffffffffe;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7fffffff7fffffff;
+  *((unsigned long *)&__m256i_op0[0]) = 0x7ffffffffffffffe;
+  *((unsigned long *)&__m256i_op1[3]) = 0x82ff902d83000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x7f80000082fe0bd9;
+  *((unsigned long *)&__m256i_op1[1]) = 0x82ff902d83000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x7f80000082fe0bd9;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[2]) = 0xffffffff00000001;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001;
+  *((unsigned long *)&__m256i_result[0]) = 0xffffffff00000001;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0x3f);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_w_d (__m256i_op0, __m256i_op1, 0xb);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x7fff000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x00000000000080ff;
+  *((unsigned long *)&__m256i_op0[1]) = 0x7fff000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x00000000000080ff;
+  *((unsigned long *)&__m256i_op1[3]) = 0xfffffffe00000001;
+  *((unsigned long *)&__m256i_op1[2]) = 0xfffffffe00000001;
+  *((unsigned long *)&__m256i_op1[1]) = 0xfffffffe00000001;
+  *((unsigned long *)&__m256i_op1[0]) = 0xfffffffe00000001;
+  *((unsigned long *)&__m256i_result[3]) = 0x08000000000000f8;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x08000000000000f8;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0xc);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x4040404040404040;
+  *((unsigned long *)&__m256i_op1[2]) = 0x4040404040404040;
+  *((unsigned long *)&__m256i_op1[1]) = 0x4040404040404040;
+  *((unsigned long *)&__m256i_op1[0]) = 0x4040404040404040;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x1010101010101010;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x1010101010101010;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x3a);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0xfffffffffffffff8;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0xfffffffffffffff8;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0x1d);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0101010101010101;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x001fffffffe00000;
+  *((unsigned long *)&__m256i_result[2]) = 0x2020000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x001fffffffe00000;
+  *((unsigned long *)&__m256i_result[0]) = 0x2020000000000000;
+  __m256i_out = __lasx_xvsrarni_d_q (__m256i_op0, __m256i_op1, 0xb);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  unsigned_int_out = __lasx_xvpickve2gr_wu (__m256i_op0, 0x4);
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffff8000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x10);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_b_h (__m256i_op0, __m256i_op1, 0xf);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  *((unsigned long *)&__m256i_op0[3]) = 0x03af03af03af03af;
+  *((unsigned long *)&__m256i_op0[2]) = 0x03acfc5303260e81;
+  *((unsigned long *)&__m256i_op0[1]) = 0x03af03af03af03af;
+  *((unsigned long *)&__m256i_op0[0]) = 0x03acfc5303260e81;
+  *((unsigned long *)&__m256i_op1[3]) = 0x03af03af03af03af;
+  *((unsigned long *)&__m256i_op1[2]) = 0x03acfc5303260e81;
+  *((unsigned long *)&__m256i_op1[1]) = 0x03af03af03af03af;
+  *((unsigned long *)&__m256i_op1[0]) = 0x03acfc5303260e81;
+  *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000;
+  *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000;
+  __m256i_out = __lasx_xvsrarni_h_w (__m256i_op0, __m256i_op1, 0x1b);
+  ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out);
+
+  return 0;
+}
-- 
2.20.1


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

only message in thread, other threads:[~2023-09-13  3:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-13  3:40 [PATCH v4 09/22] LoongArch: Add tests for ASX vector xvextl/xvsra/xvsran/xvsrarn 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).