From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7877) id 5B286385781F; Thu, 14 Sep 2023 00:47:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5B286385781F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1694652466; bh=LFzIIr+BICBlFMvhsma7SZF0QVlcA+aO9W3nIcLSuqE=; h=From:To:Subject:Date:From; b=gZJqIIZdPOzAGzX1wlTc748gi+oacuripVnZU8EtIXvZE29itSceR209uiOB163no 6OuQfhw+j9H/jOahFBv54bghVfpID1S2NO7Jn8OEtbzgP0Dj1eEk+wsOm7AkCVEPsb lvLJd5Zm5e6HBPVERppvq7DvF/uxLuxVFp/AzFdA= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: LuluCheng To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-3967] LoongArch: Add tests for ASX vector xvabsd/xvavg/xvavgr/xvbsll/xvbsrl/xvneg/ xvsat instructions. X-Act-Checkin: gcc X-Git-Author: Xiaolong Chen X-Git-Refname: refs/heads/master X-Git-Oldrev: 804e9d9436c61d5a0923c942f7972c3cfec9b4ba X-Git-Newrev: ea08f0c3a2b07edb49dfdaf3814243165605350a Message-Id: <20230914004746.5B286385781F@sourceware.org> Date: Thu, 14 Sep 2023 00:47:46 +0000 (GMT) List-Id: https://gcc.gnu.org/g:ea08f0c3a2b07edb49dfdaf3814243165605350a commit r14-3967-gea08f0c3a2b07edb49dfdaf3814243165605350a Author: Xiaolong Chen Date: Tue Sep 12 16:42:49 2023 +0800 LoongArch: Add tests for ASX vector xvabsd/xvavg/xvavgr/xvbsll/xvbsrl/xvneg/ xvsat instructions. gcc/testsuite/ChangeLog: * gcc.target/loongarch/vector/lasx/lasx-xvabsd-1.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvabsd-2.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvavg-1.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvavg-2.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvavgr-1.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvavgr-2.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvbsll_v.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvbsrl_v.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvneg.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvsat-1.c: New test. * gcc.target/loongarch/vector/lasx/lasx-xvsat-2.c: New test. Diff: --- .../loongarch/vector/lasx/lasx-xvabsd-1.c | 485 +++++++++++++ .../loongarch/vector/lasx/lasx-xvabsd-2.c | 650 +++++++++++++++++ .../loongarch/vector/lasx/lasx-xvavg-1.c | 680 ++++++++++++++++++ .../loongarch/vector/lasx/lasx-xvavg-2.c | 560 +++++++++++++++ .../loongarch/vector/lasx/lasx-xvavgr-1.c | 770 +++++++++++++++++++++ .../loongarch/vector/lasx/lasx-xvavgr-2.c | 650 +++++++++++++++++ .../loongarch/vector/lasx/lasx-xvbsll_v.c | 130 ++++ .../loongarch/vector/lasx/lasx-xvbsrl_v.c | 64 ++ .../gcc.target/loongarch/vector/lasx/lasx-xvneg.c | 526 ++++++++++++++ .../loongarch/vector/lasx/lasx-xvsat-1.c | 537 ++++++++++++++ .../loongarch/vector/lasx/lasx-xvsat-2.c | 427 ++++++++++++ 11 files changed, 5479 insertions(+) diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvabsd-1.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvabsd-1.c new file mode 100644 index 000000000000..41fae32df0dc --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvabsd-1.c @@ -0,0 +1,485 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x34598d0fd19314cb; + *((unsigned long *)&__m256i_op0[2]) = 0x1820939b2280fa86; + *((unsigned long *)&__m256i_op0[1]) = 0x4a1c269b8e892a3a; + *((unsigned long *)&__m256i_op0[0]) = 0x063f2bb758abc664; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0xffffc0fcffffcf83; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000288a00003c1c; + *((unsigned long *)&__m256i_result[3]) = 0x3459730f2f6d1435; + *((unsigned long *)&__m256i_result[2]) = 0x19212d61237f2b03; + *((unsigned long *)&__m256i_result[1]) = 0x4a1c266572772a3a; + *((unsigned long *)&__m256i_result[0]) = 0x063f032d58557648; + __m256i_out = __lasx_xvabsd_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_xvabsd_b (__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]) = 0xfe00000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x1cfd000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0xfe00000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x1cfd000000000000; + *((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_xvabsd_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_xvabsd_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]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x000000007f017f01; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x000000007f017f01; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvabsd_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_xvabsd_b (__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]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000050504c4c2362; + *((unsigned long *)&__m256i_op0[2]) = 0x000b2673a90896a4; + *((unsigned long *)&__m256i_op0[1]) = 0x000050504c4c2362; + *((unsigned long *)&__m256i_op0[0]) = 0x000b2673a90896a4; + *((unsigned long *)&__m256i_op1[3]) = 0x0001000100010001; + *((unsigned long *)&__m256i_op1[2]) = 0xd0d8eecf383fdf0d; + *((unsigned long *)&__m256i_op1[1]) = 0x0001000100010001; + *((unsigned long *)&__m256i_op1[0]) = 0xd0d8eecf383fdf0d; + *((unsigned long *)&__m256i_result[3]) = 0x0001504f4c4b2361; + *((unsigned long *)&__m256i_result[2]) = 0x303338a48f374969; + *((unsigned long *)&__m256i_result[1]) = 0x0001504f4c4b2361; + *((unsigned long *)&__m256i_result[0]) = 0x303338a48f374969; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000002; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000002; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000002; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000002; + *((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]) = 0x0000000000000002; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000002; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000002; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000002; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x807c7fffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x80817fff00810000; + *((unsigned long *)&__m256i_op0[1]) = 0x807c7fffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x80817fff00810000; + *((unsigned long *)&__m256i_op1[3]) = 0x0006000000040000; + *((unsigned long *)&__m256i_op1[2]) = 0x0002000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0006000000040000; + *((unsigned long *)&__m256i_op1[0]) = 0x0002000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x80767f0101050101; + *((unsigned long *)&__m256i_result[2]) = 0x80817f01007f0000; + *((unsigned long *)&__m256i_result[1]) = 0x80767f0101050101; + *((unsigned long *)&__m256i_result[0]) = 0x80817f01007f0000; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x437fe01fe01fe020; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x437fe01fe01fe020; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x037fe01f001fe020; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x037fe01f001fe020; + *((unsigned long *)&__m256i_result[3]) = 0x437f201f201f2020; + *((unsigned long *)&__m256i_result[2]) = 0x037f201f001f2020; + *((unsigned long *)&__m256i_result[1]) = 0x437f201f201f2020; + *((unsigned long *)&__m256i_result[0]) = 0x037f201f001f2020; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x1fa0000000080000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x1fa0000000080000; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000010000000100; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000010000000100; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x1f60010000080100; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x1f60010000080100; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + 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_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]) = 0x0101010101010101; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0101010101010101; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvabsd_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000002780; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000002780; + *((unsigned long *)&__m256i_op1[3]) = 0x0000ffff0002fffd; + *((unsigned long *)&__m256i_op1[2]) = 0x04f104f104f504ed; + *((unsigned long *)&__m256i_op1[1]) = 0x0000ffff0002fffd; + *((unsigned long *)&__m256i_op1[0]) = 0x04f104f104f504ed; + *((unsigned long *)&__m256i_result[3]) = 0x0000010100020103; + *((unsigned long *)&__m256i_result[2]) = 0x040f040f040b236d; + *((unsigned long *)&__m256i_result[1]) = 0x0000010100020103; + *((unsigned long *)&__m256i_result[0]) = 0x040f040f040b236d; + __m256i_out = __lasx_xvabsd_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_xvabsd_h (__m256i_op0, __m256i_op1); + 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]) = 0x0000000000000080; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000100010000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000100010000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000100010000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000100010000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000100010000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000100010080; + *((unsigned long *)&__m256i_result[1]) = 0x0000000100010000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000100010080; + __m256i_out = __lasx_xvabsd_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000044444443; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000073333333; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000044444443; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000073333333; + *((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]) = 0x0000000044444443; + *((unsigned long *)&__m256i_result[2]) = 0x0000000073333333; + *((unsigned long *)&__m256i_result[1]) = 0x0000000044444443; + *((unsigned long *)&__m256i_result[0]) = 0x0000000073333333; + __m256i_out = __lasx_xvabsd_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]) = 0x000050fd00000101; + *((unsigned long *)&__m256i_op1[2]) = 0x000040c100000101; + *((unsigned long *)&__m256i_op1[1]) = 0x000050fd00000101; + *((unsigned long *)&__m256i_op1[0]) = 0x000040c100000101; + *((unsigned long *)&__m256i_result[3]) = 0x000050fd00000101; + *((unsigned long *)&__m256i_result[2]) = 0x000040c100000101; + *((unsigned long *)&__m256i_result[1]) = 0x000050fd00000101; + *((unsigned long *)&__m256i_result[0]) = 0x000040c100000101; + __m256i_out = __lasx_xvabsd_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x8000000080000000; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x8000000080000000; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[3]) = 0x01ffff4300fffeff; + *((unsigned long *)&__m256i_op1[2]) = 0xfe0000bcff000100; + *((unsigned long *)&__m256i_op1[1]) = 0x01ffff4300fffeff; + *((unsigned long *)&__m256i_op1[0]) = 0xfe0000bcff000100; + *((unsigned long *)&__m256i_result[3]) = 0x81ff00bd80ff0101; + *((unsigned long *)&__m256i_result[2]) = 0x01ff00bd00ff0101; + *((unsigned long *)&__m256i_result[1]) = 0x81ff00bd80ff0101; + *((unsigned long *)&__m256i_result[0]) = 0x01ff00bd00ff0101; + __m256i_out = __lasx_xvabsd_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_op0[1]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_op1[3]) = 0x00003fef00003fea; + *((unsigned long *)&__m256i_op1[2]) = 0x00003ff000003ff0; + *((unsigned long *)&__m256i_op1[1]) = 0x00003fef00003fea; + *((unsigned long *)&__m256i_op1[0]) = 0x00003ff000003ff0; + *((unsigned long *)&__m256i_result[3]) = 0x00003fea00013feb; + *((unsigned long *)&__m256i_result[2]) = 0x00003fe900014022; + *((unsigned long *)&__m256i_result[1]) = 0x00003fea00013feb; + *((unsigned long *)&__m256i_result[0]) = 0x00003fe900014022; + __m256i_out = __lasx_xvabsd_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0cc08723ff900001; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xcc9b89f2f6cef440; + *((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]) = 0x0cc08723006fffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001; + *((unsigned long *)&__m256i_result[0]) = 0x3364760e09310bc0; + __m256i_out = __lasx_xvabsd_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]) = 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]) = 0x0000000100000000; + __m256i_out = __lasx_xvabsd_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]) = 0x0000000000010001; + *((unsigned long *)&__m256i_op1[2]) = 0x0000017f0000017d; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000010001; + *((unsigned long *)&__m256i_op1[0]) = 0x0000017f0000017f; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000010001; + *((unsigned long *)&__m256i_result[2]) = 0x0000017f0000017d; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000010001; + *((unsigned long *)&__m256i_result[0]) = 0x0000017f0000017f; + __m256i_out = __lasx_xvabsd_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00fe01f000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x00fe01f000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0xbf800000bf800000; + *((unsigned long *)&__m256i_op1[2]) = 0xd662fa0000000000; + *((unsigned long *)&__m256i_op1[1]) = 0xbf800000bf800000; + *((unsigned long *)&__m256i_op1[0]) = 0xd6ef750000000000; + *((unsigned long *)&__m256i_result[3]) = 0x417e01f040800000; + *((unsigned long *)&__m256i_result[2]) = 0x299d060000000000; + *((unsigned long *)&__m256i_result[1]) = 0x417e01f040800000; + *((unsigned long *)&__m256i_result[0]) = 0x29108b0000000000; + __m256i_out = __lasx_xvabsd_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]) = 0x0000000000000017; + *((unsigned long *)&__m256i_op1[2]) = 0x0000001700170017; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000017; + *((unsigned long *)&__m256i_op1[0]) = 0x0000001700170017; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000017; + *((unsigned long *)&__m256i_result[2]) = 0x0000001700170017; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000017; + *((unsigned long *)&__m256i_result[0]) = 0x0000001700170017; + __m256i_out = __lasx_xvabsd_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffefffefffefffe; + *((unsigned long *)&__m256i_op0[2]) = 0xfffa0078fffa0074; + *((unsigned long *)&__m256i_op0[1]) = 0xfffefffefffefffe; + *((unsigned long *)&__m256i_op0[0]) = 0xfffa0078fffa0074; + *((unsigned long *)&__m256i_op1[3]) = 0xfffffffffb79fb74; + *((unsigned long *)&__m256i_op1[2]) = 0xfffffffffffffffa; + *((unsigned long *)&__m256i_op1[1]) = 0xfffffffffb79fb74; + *((unsigned long *)&__m256i_op1[0]) = 0xfffffffffffffffa; + *((unsigned long *)&__m256i_result[3]) = 0x000100010485048a; + *((unsigned long *)&__m256i_result[2]) = 0x0005ff870005ff86; + *((unsigned long *)&__m256i_result[1]) = 0x000100010485048a; + *((unsigned long *)&__m256i_result[0]) = 0x0005ff870005ff86; + __m256i_out = __lasx_xvabsd_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_xvabsd_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000010001; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000010001; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000010001; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000010001; + *((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]) = 0x0000000000010001; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000010001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000010001; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000010001; + __m256i_out = __lasx_xvabsd_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000005; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000005; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[3]) = 0x0000400000004000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000400000004000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000400000004000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000400000004000; + *((unsigned long *)&__m256i_result[3]) = 0x0000400000003ffb; + *((unsigned long *)&__m256i_result[2]) = 0x0000400100004001; + *((unsigned long *)&__m256i_result[1]) = 0x0000400000003ffb; + *((unsigned long *)&__m256i_result[0]) = 0x0000400100004001; + __m256i_out = __lasx_xvabsd_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]) = 0xfffffffe00000000; + *((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]) = 0x0000000200000000; + __m256i_out = __lasx_xvabsd_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]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000ffff00000000; + __m256i_out = __lasx_xvabsd_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-xvabsd-2.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvabsd-2.c new file mode 100644 index 000000000000..bd7a9069da66 --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvabsd-2.c @@ -0,0 +1,650 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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_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_xvabsd_bu (__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_xvabsd_bu (__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_xvabsd_bu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000100010485048a; + *((unsigned long *)&__m256i_op0[2]) = 0x0005ff870005ff86; + *((unsigned long *)&__m256i_op0[1]) = 0x000100010485048a; + *((unsigned long *)&__m256i_op0[0]) = 0x0005ff870005ff86; + *((unsigned long *)&__m256i_op1[3]) = 0xffffffecffffffec; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffecffffffec; + *((unsigned long *)&__m256i_op1[1]) = 0xffffffecffffffec; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffecffffffec; + *((unsigned long *)&__m256i_result[3]) = 0xfffeffebfb7afb62; + *((unsigned long *)&__m256i_result[2]) = 0xfffa0065fffa0066; + *((unsigned long *)&__m256i_result[1]) = 0xfffeffebfb7afb62; + *((unsigned long *)&__m256i_result[0]) = 0xfffa0065fffa0066; + __m256i_out = __lasx_xvabsd_bu (__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_xvabsd_bu (__m256i_op0, __m256i_op1); + 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_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]) = 0x0000000000000009; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000009; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000009; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000009; + __m256i_out = __lasx_xvabsd_bu (__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]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x000000000000ffff; + __m256i_out = __lasx_xvabsd_bu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x7fff7fff05407fff; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x7fff7fff05407fff; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0x3fff3fff3fff3fff; + *((unsigned long *)&__m256i_op1[2]) = 0x000000003fff3fff; + *((unsigned long *)&__m256i_op1[1]) = 0x3fff3fff3fff3fff; + *((unsigned long *)&__m256i_op1[0]) = 0x000000003fff3fff; + *((unsigned long *)&__m256i_result[3]) = 0x400040003abf4000; + *((unsigned long *)&__m256i_result[2]) = 0x000000003fff3fff; + *((unsigned long *)&__m256i_result[1]) = 0x400040003abf4000; + *((unsigned long *)&__m256i_result[0]) = 0x000000003fff3fff; + __m256i_out = __lasx_xvabsd_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0408040800008003; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0408040800008003; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000fff80800; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0408040800008003; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[0]) = 0x04080408fff87803; + __m256i_out = __lasx_xvabsd_hu (__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_xvabsd_hu (__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]) = 0x0606060606060606; + *((unsigned long *)&__m256i_op1[2]) = 0x0606060606060606; + *((unsigned long *)&__m256i_op1[1]) = 0x0606060606060606; + *((unsigned long *)&__m256i_op1[0]) = 0x0606060606060606; + *((unsigned long *)&__m256i_result[3]) = 0xf9f9f9f9f9f9f9f9; + *((unsigned long *)&__m256i_result[2]) = 0xf9f9f9f9f9f9f9f9; + *((unsigned long *)&__m256i_result[1]) = 0xf9f9f9f9f9f9f9f9; + *((unsigned long *)&__m256i_result[0]) = 0xf9f9f9f9f9f9f9f9; + __m256i_out = __lasx_xvabsd_hu (__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_xvabsd_hu (__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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffff0000ffff0001; + *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffff0000ffff0001; + *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffff0000ffff0001; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffff0000ffff0001; + __m256i_out = __lasx_xvabsd_hu (__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_xvabsd_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xff00ff003f003f00; + *((unsigned long *)&__m256i_op0[2]) = 0xff0101fd00010100; + *((unsigned long *)&__m256i_op0[1]) = 0xff00ff003f003f00; + *((unsigned long *)&__m256i_op0[0]) = 0xff0101fd00010100; + *((unsigned long *)&__m256i_op1[3]) = 0xff00ff003f003f00; + *((unsigned long *)&__m256i_op1[2]) = 0xff0101fd00010100; + *((unsigned long *)&__m256i_op1[1]) = 0xff00ff003f003f00; + *((unsigned long *)&__m256i_op1[0]) = 0xff0101fd00010100; + *((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_xvabsd_hu (__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]) = 0x00000000000a0008; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000000a0008; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffffff5fff7; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffffff5fff7; + __m256i_out = __lasx_xvabsd_hu (__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_xvabsd_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000001010000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000001010000; + *((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]) = 0x0000000001010000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000001010000; + __m256i_out = __lasx_xvabsd_hu (__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_xvabsd_hu (__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_xvabsd_wu (__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]) = 0x0000001400000014; + *((unsigned long *)&__m256i_op1[2]) = 0x0000001400000014; + *((unsigned long *)&__m256i_op1[1]) = 0x0000001400000014; + *((unsigned long *)&__m256i_op1[0]) = 0x0000001400000014; + *((unsigned long *)&__m256i_result[3]) = 0x0000001400000014; + *((unsigned long *)&__m256i_result[2]) = 0x0000001400000014; + *((unsigned long *)&__m256i_result[1]) = 0x0000001400000014; + *((unsigned long *)&__m256i_result[0]) = 0x0000001400000014; + __m256i_out = __lasx_xvabsd_wu (__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]) = 0xfbba01c0003f7e3f; + *((unsigned long *)&__m256i_op1[2]) = 0xffc6cc05c64d960e; + *((unsigned long *)&__m256i_op1[1]) = 0xfbd884e7003f7e3f; + *((unsigned long *)&__m256i_op1[0]) = 0xff874dc687870000; + *((unsigned long *)&__m256i_result[3]) = 0xfbba01c0003f7e3f; + *((unsigned long *)&__m256i_result[2]) = 0xffc6cc05c64d960e; + *((unsigned long *)&__m256i_result[1]) = 0xfbd884e7003f7e3f; + *((unsigned long *)&__m256i_result[0]) = 0xff874dc687870000; + __m256i_out = __lasx_xvabsd_wu (__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_xvabsd_wu (__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_xvabsd_wu (__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]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_op1[1]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_op1[0]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_result[3]) = 0x800000007fff0001; + *((unsigned long *)&__m256i_result[2]) = 0x80000000ff7f0001; + *((unsigned long *)&__m256i_result[1]) = 0x800000007fff0001; + *((unsigned long *)&__m256i_result[0]) = 0x80000000ff7f0001; + __m256i_out = __lasx_xvabsd_wu (__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_xvabsd_wu (__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_xvabsd_wu (__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_xvabsd_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x01fe01fe01fe01fe; + *((unsigned long *)&__m256i_op0[2]) = 0x01fe01fe01fe01fe; + *((unsigned long *)&__m256i_op0[1]) = 0x01fe01fe01fe01fe; + *((unsigned long *)&__m256i_op0[0]) = 0x01fe01fe01fe01fe; + *((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]) = 0x01fe01fe01fe01fe; + *((unsigned long *)&__m256i_result[2]) = 0x01fe01fe01fe01fe; + *((unsigned long *)&__m256i_result[1]) = 0x01fe01fe01fe01fe; + *((unsigned long *)&__m256i_result[0]) = 0x01fe01fe01fe01fe; + __m256i_out = __lasx_xvabsd_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((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]) = 0x0000000000080040; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000080040; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000080040; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000080040; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000080040; + *((unsigned long *)&__m256i_result[2]) = 0x0000010000080040; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000080040; + *((unsigned long *)&__m256i_result[0]) = 0x0000010000080040; + __m256i_out = __lasx_xvabsd_wu (__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]) = 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_xvabsd_wu (__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]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvabsd_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffffffffffd; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffffffffffe; + __m256i_out = __lasx_xvabsd_wu (__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_xvabsd_wu (__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]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvabsd_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000003; + *((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]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000003; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvabsd_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_op0[2]) = 0x00ff00ff000c0000; + *((unsigned long *)&__m256i_op0[1]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_op0[0]) = 0x00ff00ff00040000; + *((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]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_result[2]) = 0x00ff00ff000c0000; + *((unsigned long *)&__m256i_result[1]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_result[0]) = 0x00ff00ff00040000; + __m256i_out = __lasx_xvabsd_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000033; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000033; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x00003f3f00004040; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00003f3f00004040; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00003f3f0000400d; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00003f3f0000400d; + __m256i_out = __lasx_xvabsd_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000064; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffff88; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000064; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x00000000000000f0; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000064; + *((unsigned long *)&__m256i_result[1]) = 0xfffffffffffffe98; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000064; + __m256i_out = __lasx_xvabsd_du (__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_xvabsd_du (__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_xvabsd_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x001fffffffe00000; + *((unsigned long *)&__m256i_op0[2]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x001fffffffe00000; + *((unsigned long *)&__m256i_op0[0]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x7f80ffffff808000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x7f80ffffff808000; + *((unsigned long *)&__m256i_result[3]) = 0x001fffffffe00000; + *((unsigned long *)&__m256i_result[2]) = 0x007f0000007f7fff; + *((unsigned long *)&__m256i_result[1]) = 0x001fffffffe00000; + *((unsigned long *)&__m256i_result[0]) = 0x007f0000007f7fff; + __m256i_out = __lasx_xvabsd_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavg-1.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavg-1.c new file mode 100644 index 000000000000..5ce31ebbdc84 --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavg-1.c @@ -0,0 +1,680 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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_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_xvavg_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]) = 0x000000000000003f; + *((unsigned long *)&__m256i_op1[2]) = 0x000000000000003f; + *((unsigned long *)&__m256i_op1[1]) = 0x000000000000003f; + *((unsigned long *)&__m256i_op1[0]) = 0x000000000000003f; + *((unsigned long *)&__m256i_result[3]) = 0x000000000000001f; + *((unsigned long *)&__m256i_result[2]) = 0x000000000000001f; + *((unsigned long *)&__m256i_result[1]) = 0x000000000000001f; + *((unsigned long *)&__m256i_result[0]) = 0x000000000000001f; + __m256i_out = __lasx_xvavg_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000fffffffe; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000fffffffe; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op1[3]) = 0x000100da000100fd; + *((unsigned long *)&__m256i_op1[2]) = 0x0001ffe20001fefd; + *((unsigned long *)&__m256i_op1[1]) = 0x0001009a000100fd; + *((unsigned long *)&__m256i_op1[0]) = 0x0001ff640001fefd; + *((unsigned long *)&__m256i_result[3]) = 0x000000edff00fffd; + *((unsigned long *)&__m256i_result[2]) = 0x0000fff10000ffff; + *((unsigned long *)&__m256i_result[1]) = 0x000000cdff00fffd; + *((unsigned long *)&__m256i_result[0]) = 0x0000ff320000ffff; + __m256i_out = __lasx_xvavg_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffefefeff; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffffff295329; + *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffefefeff; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffff295329; + *((unsigned long *)&__m256i_op1[3]) = 0x00fe01f000010000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000c40086; + *((unsigned long *)&__m256i_op1[1]) = 0x00fe01f000010000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000c40086; + *((unsigned long *)&__m256i_result[3]) = 0xfffe00f7ffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffffff629d7; + *((unsigned long *)&__m256i_result[1]) = 0xfffe00f7ffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffffff629d7; + __m256i_out = __lasx_xvavg_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xa020202020202020; + *((unsigned long *)&__m256i_op0[2]) = 0xa020202020206431; + *((unsigned long *)&__m256i_op0[1]) = 0xa020202020202020; + *((unsigned long *)&__m256i_op0[0]) = 0xa020202020206431; + *((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]) = 0xd010101010101010; + *((unsigned long *)&__m256i_result[2]) = 0xd010101010103218; + *((unsigned long *)&__m256i_result[1]) = 0xd010101010101010; + *((unsigned long *)&__m256i_result[0]) = 0xd010101010103218; + __m256i_out = __lasx_xvavg_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_xvavg_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000ffff00000000; + *((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]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000ffff00000000; + __m256i_out = __lasx_xvavg_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000800200027; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000800200028; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000800200027; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000800000008; + *((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]) = 0x0000000400100013; + *((unsigned long *)&__m256i_result[2]) = 0x0000000400100014; + *((unsigned long *)&__m256i_result[1]) = 0x0000000400100013; + *((unsigned long *)&__m256i_result[0]) = 0x0000000400000004; + __m256i_out = __lasx_xvavg_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]) = 0xfffffefffffffeff; + *((unsigned long *)&__m256i_op1[2]) = 0xfffffefffffffeff; + *((unsigned long *)&__m256i_op1[1]) = 0xfffffefffffffeff; + *((unsigned long *)&__m256i_op1[0]) = 0xfffffefffffffeff; + *((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_xvavg_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000200000002; + *((unsigned long *)&__m256i_op0[2]) = 0x0000ffff00010003; + *((unsigned long *)&__m256i_op0[1]) = 0x0080000200000002; + *((unsigned long *)&__m256i_op0[0]) = 0x0000ffff00010003; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000200000002; + *((unsigned long *)&__m256i_op1[2]) = 0x0000ffff00010002; + *((unsigned long *)&__m256i_op1[1]) = 0x0080000200000002; + *((unsigned long *)&__m256i_op1[0]) = 0x0000ffff00010002; + *((unsigned long *)&__m256i_result[3]) = 0x0000000200000002; + *((unsigned long *)&__m256i_result[2]) = 0x0000ffff00010002; + *((unsigned long *)&__m256i_result[1]) = 0x0080000200000002; + *((unsigned long *)&__m256i_result[0]) = 0x0000ffff00010002; + __m256i_out = __lasx_xvavg_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]) = 0x0010001000100010; + *((unsigned long *)&__m256i_op1[2]) = 0x0010001000100010; + *((unsigned long *)&__m256i_op1[1]) = 0x0010001000100010; + *((unsigned long *)&__m256i_op1[0]) = 0x0010001000100010; + *((unsigned long *)&__m256i_result[3]) = 0x0008000800080008; + *((unsigned long *)&__m256i_result[2]) = 0x0008000800080008; + *((unsigned long *)&__m256i_result[1]) = 0x0008000800080008; + *((unsigned long *)&__m256i_result[0]) = 0x0008000800080008; + __m256i_out = __lasx_xvavg_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x4040404040404040; + *((unsigned long *)&__m256i_op0[2]) = 0x4040404040404040; + *((unsigned long *)&__m256i_op0[1]) = 0x4040404040404040; + *((unsigned long *)&__m256i_op0[0]) = 0x4040404040404040; + *((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]) = 0x2020202020202020; + *((unsigned long *)&__m256i_result[2]) = 0x2020202020202020; + *((unsigned long *)&__m256i_result[1]) = 0x2020202020202020; + *((unsigned long *)&__m256i_result[0]) = 0x2020202020202020; + __m256i_out = __lasx_xvavg_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000007; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000007; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op1[2]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op1[1]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op1[0]) = 0x2020202020202020; + *((unsigned long *)&__m256i_result[3]) = 0x1010101010101013; + *((unsigned long *)&__m256i_result[2]) = 0x1010101010101010; + *((unsigned long *)&__m256i_result[1]) = 0x1010101010101013; + *((unsigned long *)&__m256i_result[0]) = 0x1010101010101010; + __m256i_out = __lasx_xvavg_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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvavg_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]) = 0x0000000000006170; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000006170; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00000000000030b8; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000000030b8; + __m256i_out = __lasx_xvavg_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op0[2]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op0[1]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op0[0]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[3]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[2]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[1]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[0]) = 0x0202010202020102; + *((unsigned long *)&__m256i_result[3]) = 0x0202010202020102; + *((unsigned long *)&__m256i_result[2]) = 0x0202010202020102; + *((unsigned long *)&__m256i_result[1]) = 0x0202010202020102; + *((unsigned long *)&__m256i_result[0]) = 0x0202010202020102; + __m256i_out = __lasx_xvavg_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]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000002; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000002; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000100; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000100; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000001; + __m256i_out = __lasx_xvavg_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]) = 0x0000000001010100; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000405; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000001010100; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000405; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000800080; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000202; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000800080; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000202; + __m256i_out = __lasx_xvavg_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]) = 0x0000002000000020; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000002000000020; + *((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_xvavg_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_xvavg_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xffff0000ffff0000; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xffff0000ffff0000; + *((unsigned long *)&__m256i_op1[3]) = 0x000a000a000a000a; + *((unsigned long *)&__m256i_op1[2]) = 0x000a000a000a000a; + *((unsigned long *)&__m256i_op1[1]) = 0x000a000a000a000a; + *((unsigned long *)&__m256i_op1[0]) = 0x000a000a000a000a; + *((unsigned long *)&__m256i_result[3]) = 0x0004000400040004; + *((unsigned long *)&__m256i_result[2]) = 0x0004000500040005; + *((unsigned long *)&__m256i_result[1]) = 0x0004000400040004; + *((unsigned long *)&__m256i_result[0]) = 0x0004000500040005; + __m256i_out = __lasx_xvavg_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((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]) = 0x8b1414140e0e0e0e; + *((unsigned long *)&__m256i_op1[2]) = 0x00d6c1c830160048; + *((unsigned long *)&__m256i_op1[1]) = 0x36722a7e66972cd6; + *((unsigned long *)&__m256i_op1[0]) = 0xe3aebaf4df958004; + *((unsigned long *)&__m256i_result[3]) = 0xc58a0a0a07070706; + *((unsigned long *)&__m256i_result[2]) = 0x006b60e4180b0023; + *((unsigned long *)&__m256i_result[1]) = 0x1b39153f334b966a; + *((unsigned long *)&__m256i_result[0]) = 0xf1d75d79efcac002; + __m256i_out = __lasx_xvavg_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]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000ffffffff; + __m256i_out = __lasx_xvavg_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_xvavg_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_xvavg_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_xvavg_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]) = 0x00007fff00007fff; + *((unsigned long *)&__m256i_result[2]) = 0x00007fff00007fff; + *((unsigned long *)&__m256i_result[1]) = 0x00007fff00007fff; + *((unsigned long *)&__m256i_result[0]) = 0x00007fff00007fff; + __m256i_out = __lasx_xvavg_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_xvavg_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffe00000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0xffffe00000000000; + *((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]) = 0xfffff00000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0xfffff00000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavg_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_xvavg_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]) = 0x007fffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x007fffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x003fffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x003fffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvavg_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]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000ffff00000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00007fff7fffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00007fff7fffffff; + __m256i_out = __lasx_xvavg_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_xvavg_d (__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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffff00000000; + *((unsigned long *)&__m256i_result[3]) = 0x0080808080808080; + *((unsigned long *)&__m256i_result[2]) = 0x0080808080808080; + *((unsigned long *)&__m256i_result[1]) = 0x0080808100808080; + *((unsigned long *)&__m256i_result[0]) = 0x0080808000808080; + __m256i_out = __lasx_xvavg_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x1111111111111111; + *((unsigned long *)&__m256i_op0[2]) = 0x1111111111111111; + *((unsigned long *)&__m256i_op0[1]) = 0x1111111111111111; + *((unsigned long *)&__m256i_op0[0]) = 0x1111111111111111; + *((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]) = 0x0888888888888888; + *((unsigned long *)&__m256i_result[2]) = 0x0888888888888888; + *((unsigned long *)&__m256i_result[1]) = 0x0888888888888888; + *((unsigned long *)&__m256i_result[0]) = 0x0888888888888888; + __m256i_out = __lasx_xvavg_d (__m256i_op0, __m256i_op1); + 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_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]) = 0x000000007fffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x000000007fffffff; + __m256i_out = __lasx_xvavg_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_xvavg_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x4010000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x3e6ce7d9cb7afb62; + *((unsigned long *)&__m256i_op0[1]) = 0x4010000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x3e6ce7d9cb7afb62; + *((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]) = 0x2008000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x1f3673ece5bd7db1; + *((unsigned long *)&__m256i_result[1]) = 0x2008000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x1f3673ece5bd7db1; + __m256i_out = __lasx_xvavg_d (__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_xvavg_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x8000800080008000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x8000800080008000; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x7fffffff7fffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x7fffffff7fffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000400000003fff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000400000003fff; + __m256i_out = __lasx_xvavg_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000040404000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000040404000; + *((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]) = 0x0000000020202000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000020202000; + __m256i_out = __lasx_xvavg_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]) = 0xfffffffffc01fc01; + *((unsigned long *)&__m256i_op1[2]) = 0x000000003fc03bbc; + *((unsigned long *)&__m256i_op1[1]) = 0xfffffffffc01fc01; + *((unsigned long *)&__m256i_op1[0]) = 0x000000003fc03bbc; + *((unsigned long *)&__m256i_result[3]) = 0xfffffffffe00fe00; + *((unsigned long *)&__m256i_result[2]) = 0x000000001fe01dde; + *((unsigned long *)&__m256i_result[1]) = 0xfffffffffe00fe00; + *((unsigned long *)&__m256i_result[0]) = 0x000000001fe01dde; + __m256i_out = __lasx_xvavg_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]) = 0x0000000000000080; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000100080; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000080; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000100080; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000040; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000080040; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000040; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000080040; + __m256i_out = __lasx_xvavg_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]) = 0x0040000000000003; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op1[1]) = 0x0040000000000003; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000003; + *((unsigned long *)&__m256i_result[3]) = 0x0020000000000001; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[1]) = 0x0020000000000001; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000001; + __m256i_out = __lasx_xvavg_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-xvavg-2.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavg-2.c new file mode 100644 index 000000000000..d04e4275369a --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavg-2.c @@ -0,0 +1,560 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x1d1d1d1d1d1d1d1d; + *((unsigned long *)&__m256i_op0[2]) = 0x1d1d1d1d1d1d1d1d; + *((unsigned long *)&__m256i_op0[1]) = 0x61d849f0c0794ced; + *((unsigned long *)&__m256i_op0[0]) = 0xe75278c187b20039; + *((unsigned long *)&__m256i_op1[3]) = 0xf90c0c0c00000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0ca40c0c0c0c0cc0; + *((unsigned long *)&__m256i_op1[1]) = 0x0c0c0c0c0cb60cc0; + *((unsigned long *)&__m256i_op1[0]) = 0xfbe0b80c960c96d0; + *((unsigned long *)&__m256i_result[3]) = 0x8b1414140e0e0e0e; + *((unsigned long *)&__m256i_result[2]) = 0x146014141414146e; + *((unsigned long *)&__m256i_result[1]) = 0x36722a7e66972cd6; + *((unsigned long *)&__m256i_result[0]) = 0xf19998668e5f4b84; + __m256i_out = __lasx_xvavg_bu (__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]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000ffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000ff00fff0; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000007f7f; + *((unsigned long *)&__m256i_result[2]) = 0x00000000007f7f7f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000007f7f; + *((unsigned long *)&__m256i_result[0]) = 0x000000007f007f78; + __m256i_out = __lasx_xvavg_bu (__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_xvavg_bu (__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]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x00030006fa05f20e; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00030081bd80f90e; + *((unsigned long *)&__m256i_result[3]) = 0x00007f7f7f7f7f7f; + *((unsigned long *)&__m256i_result[2]) = 0x00010003fc827a86; + *((unsigned long *)&__m256i_result[1]) = 0x00007f7f7f7f0000; + *((unsigned long *)&__m256i_result[0]) = 0x7f017fc0ddbf7d86; + __m256i_out = __lasx_xvavg_bu (__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]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[2]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[1]) = 0x0202010202020102; + *((unsigned long *)&__m256i_op1[0]) = 0x0202010202020102; + *((unsigned long *)&__m256i_result[3]) = 0x0101000101010001; + *((unsigned long *)&__m256i_result[2]) = 0x0101000101010001; + *((unsigned long *)&__m256i_result[1]) = 0x0101000101010001; + *((unsigned long *)&__m256i_result[0]) = 0x0101000101010001; + __m256i_out = __lasx_xvavg_bu (__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_xvavg_bu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00ffffffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffff00000000; + *((unsigned long *)&__m256i_op0[1]) = 0x00ffffffffffffff; + *((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]) = 0x007f7f7f7f7f7f7f; + *((unsigned long *)&__m256i_result[2]) = 0x7f7f7f7f00000000; + *((unsigned long *)&__m256i_result[1]) = 0x007f7f7f7f7f7f7f; + *((unsigned long *)&__m256i_result[0]) = 0x7f7f7f7f00000000; + __m256i_out = __lasx_xvavg_bu (__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]) = 0x0000007f00000022; + *((unsigned long *)&__m256i_op1[0]) = 0x0000007f00000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000003f00000011; + *((unsigned long *)&__m256i_result[0]) = 0x0000003f00000000; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x7fff7fff7fff7fff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x7fff7fff7fff7fff; + *((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]) = 0x3fff3fff3fff3fff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x3fff3fff3fff3fff; + __m256i_out = __lasx_xvavg_hu (__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]) = 0x7fff7fff7fff7fff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x7fff7fff7fff7fff; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xfffbfffafffffffe; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffff0000; + *((unsigned long *)&__m256i_op0[0]) = 0xfffbfffaffff0000; + *((unsigned long *)&__m256i_op1[3]) = 0x00fe01fc01fe01fc; + *((unsigned long *)&__m256i_op1[2]) = 0x012c002c001c0006; + *((unsigned long *)&__m256i_op1[1]) = 0x00fe01fc01fe0000; + *((unsigned long *)&__m256i_op1[0]) = 0x012c002c001c000a; + *((unsigned long *)&__m256i_result[3]) = 0x807e80fd80fe80fd; + *((unsigned long *)&__m256i_result[2]) = 0x80938013800d8002; + *((unsigned long *)&__m256i_result[1]) = 0x807e80fd80fe0000; + *((unsigned long *)&__m256i_result[0]) = 0x80938013800d0005; + __m256i_out = __lasx_xvavg_hu (__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_xvavg_hu (__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]) = 0x0002000200020002; + *((unsigned long *)&__m256i_result[3]) = 0x7fff7fff7fff7fff; + *((unsigned long *)&__m256i_result[2]) = 0x7fff7fff7fff7fff; + *((unsigned long *)&__m256i_result[1]) = 0x7fff7fff7fff7fff; + *((unsigned long *)&__m256i_result[0]) = 0x8000800080008000; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x00000000ffffffff; + *((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]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_result[2]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_result[1]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_result[0]) = 0x000000007fff7fff; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000ff810011; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x00000000ff810011; + *((unsigned long *)&__m256i_op1[3]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x3fff7fff7fff7fff; + *((unsigned long *)&__m256i_result[2]) = 0x3fff7fffffc08008; + *((unsigned long *)&__m256i_result[1]) = 0x3fff7fff7fff7fff; + *((unsigned long *)&__m256i_result[0]) = 0x3fff7fffffc08008; + __m256i_out = __lasx_xvavg_hu (__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]) = 0x800000007fff0001; + *((unsigned long *)&__m256i_op1[2]) = 0x80000000ff7f0001; + *((unsigned long *)&__m256i_op1[1]) = 0x800000007fff0001; + *((unsigned long *)&__m256i_op1[0]) = 0x80000000ff7f0001; + *((unsigned long *)&__m256i_result[3]) = 0x800000007fff0000; + *((unsigned long *)&__m256i_result[2]) = 0x80000000ff7f0000; + *((unsigned long *)&__m256i_result[1]) = 0x800000007fff0000; + *((unsigned long *)&__m256i_result[0]) = 0x80000000ff7f0000; + __m256i_out = __lasx_xvavg_hu (__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]) = 0xffc6ffc6003a003a; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffff0000; + *((unsigned long *)&__m256i_op1[1]) = 0xffc6ffc6003a003a; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffff0000; + *((unsigned long *)&__m256i_result[3]) = 0x7fe37fe3001d001d; + *((unsigned long *)&__m256i_result[2]) = 0x7fff7fff7fff0000; + *((unsigned long *)&__m256i_result[1]) = 0x7fe37fe3001d001d; + *((unsigned long *)&__m256i_result[0]) = 0x7fff7fff7fff0000; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + 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_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]) = 0x0000000000000004; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000004; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000004; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000004; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000fc38fc38; + *((unsigned long *)&__m256i_op0[2]) = 0xfc00000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000fc38fc38; + *((unsigned long *)&__m256i_op0[0]) = 0xfc00000000000000; + *((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]) = 0x000000007e1c7e1c; + *((unsigned long *)&__m256i_result[2]) = 0x7e00000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x000000007e1c7e1c; + *((unsigned long *)&__m256i_result[0]) = 0x7e00000000000000; + __m256i_out = __lasx_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000fffe00800022; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000fffe00800022; + *((unsigned long *)&__m256i_op0[0]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x000000000003ffff; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x00007fff00400011; + *((unsigned long *)&__m256i_result[2]) = 0x000000008001ffff; + *((unsigned long *)&__m256i_result[1]) = 0x00007fff00400011; + *((unsigned long *)&__m256i_result[0]) = 0x000000007fff7fff; + __m256i_out = __lasx_xvavg_hu (__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_xvavg_hu (__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_xvavg_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0a09080706050403; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0a09080706050403; + *((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]) = 0x0504840303028201; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0504840303028201; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavg_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000200; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000200; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000200; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000200; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000200; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000200; + __m256i_out = __lasx_xvavg_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000005000000020; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000005000000020; + *((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]) = 0x0000002800000010; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000002800000010; + __m256i_out = __lasx_xvavg_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x40efffe000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x40efffe000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0xff00fe00feff02ff; + *((unsigned long *)&__m256i_op1[2]) = 0xff00fe00feff02ff; + *((unsigned long *)&__m256i_op1[1]) = 0xff00fe00feff02ff; + *((unsigned long *)&__m256i_op1[0]) = 0xff00fe00feff02ff; + *((unsigned long *)&__m256i_result[3]) = 0x9ff87ef07f7f817f; + *((unsigned long *)&__m256i_result[2]) = 0x7f807f007f7f817f; + *((unsigned long *)&__m256i_result[1]) = 0x9ff87ef07f7f817f; + *((unsigned long *)&__m256i_result[0]) = 0x7f807f007f7f817f; + __m256i_out = __lasx_xvavg_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0fffffffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0x111ebb784f9c4100; + *((unsigned long *)&__m256i_op1[2]) = 0x1c386546809f3b50; + *((unsigned long *)&__m256i_op1[1]) = 0x111ebb784f9bf1ac; + *((unsigned long *)&__m256i_op1[0]) = 0x21f6050d955d3f68; + *((unsigned long *)&__m256i_result[3]) = 0x088f5dbc27ce2080; + *((unsigned long *)&__m256i_result[2]) = 0x161c32a2c04f9da7; + *((unsigned long *)&__m256i_result[1]) = 0x088f5dbc27cdf8d6; + *((unsigned long *)&__m256i_result[0]) = 0x10fb02864aae9fb4; + __m256i_out = __lasx_xvavg_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffefffefffeffee; + *((unsigned long *)&__m256i_op0[2]) = 0xfffe0000fffe0012; + *((unsigned long *)&__m256i_op0[1]) = 0xfffefffefffeffee; + *((unsigned long *)&__m256i_op0[0]) = 0xfffe0000fffe0012; + *((unsigned long *)&__m256i_op1[3]) = 0xfffefffefffeffee; + *((unsigned long *)&__m256i_op1[2]) = 0xfffe0000fffe0012; + *((unsigned long *)&__m256i_op1[1]) = 0xfffefffefffeffee; + *((unsigned long *)&__m256i_op1[0]) = 0xfffe0000fffe0012; + *((unsigned long *)&__m256i_result[3]) = 0xfffefffefffeffee; + *((unsigned long *)&__m256i_result[2]) = 0xfffe0000fffe0012; + *((unsigned long *)&__m256i_result[1]) = 0xfffefffefffeffee; + *((unsigned long *)&__m256i_result[0]) = 0xfffe0000fffe0012; + __m256i_out = __lasx_xvavg_wu (__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]) = 0x0000000100000001; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[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_xvavg_wu (__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]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x7fffffffffffffff; + __m256i_out = __lasx_xvavg_du (__m256i_op0, __m256i_op1); + 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_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]) = 0x0000800080008000; + *((unsigned long *)&__m256i_result[2]) = 0x0000800080008000; + *((unsigned long *)&__m256i_result[1]) = 0x0000800080008000; + *((unsigned long *)&__m256i_result[0]) = 0x0000800080008000; + __m256i_out = __lasx_xvavg_du (__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]) = 0x0000000000004444; + *((unsigned long *)&__m256i_op1[2]) = 0x00007bbb0000f777; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000004444; + *((unsigned long *)&__m256i_op1[0]) = 0x00007bbb0000f777; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000002222; + *((unsigned long *)&__m256i_result[2]) = 0x00003ddd80007bbb; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000002222; + *((unsigned long *)&__m256i_result[0]) = 0x00003ddd80007bbb; + __m256i_out = __lasx_xvavg_du (__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]) = 0x000000000000f0f0; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x000000000000f0f0; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000007878; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000007878; + __m256i_out = __lasx_xvavg_du (__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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x7fffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x7fffffffffffffff; + __m256i_out = __lasx_xvavg_du (__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_xvavg_du (__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]) = 0x0000001e00000000; + *((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_xvavg_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavgr-1.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavgr-1.c new file mode 100644 index 000000000000..37b78aa1b088 --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavgr-1.c @@ -0,0 +1,770 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x5555555536aaaaac; + *((unsigned long *)&__m256i_op0[2]) = 0x55555555aaaaaaac; + *((unsigned long *)&__m256i_op0[1]) = 0x5555555536aaaaac; + *((unsigned long *)&__m256i_op0[0]) = 0x55555555aaaaaaac; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffff39ffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffff39ffffff; + *((unsigned long *)&__m256i_result[3]) = 0x2b2b2b2b1bd5d5d6; + *((unsigned long *)&__m256i_result[2]) = 0x2a2a2a2af2d5d5d6; + *((unsigned long *)&__m256i_result[1]) = 0x2b2b2b2b1bd5d5d6; + *((unsigned long *)&__m256i_result[0]) = 0x2a2a2a2af2d5d5d6; + __m256i_out = __lasx_xvavgr_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000080; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000080; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000080; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000080; + *((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]) = 0x00000000000000c0; + *((unsigned long *)&__m256i_result[2]) = 0x00000000000000c0; + *((unsigned long *)&__m256i_result[1]) = 0x00000000000000c0; + *((unsigned long *)&__m256i_result[0]) = 0x00000000000000c0; + __m256i_out = __lasx_xvavgr_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_xvavgr_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]) = 0x0020002000400040; + *((unsigned long *)&__m256i_op1[2]) = 0x0020002000400040; + *((unsigned long *)&__m256i_op1[1]) = 0x0020002000400040; + *((unsigned long *)&__m256i_op1[0]) = 0x0020002000400040; + *((unsigned long *)&__m256i_result[3]) = 0x0010001000200020; + *((unsigned long *)&__m256i_result[2]) = 0x0010001000200020; + *((unsigned long *)&__m256i_result[1]) = 0x0010001000200020; + *((unsigned long *)&__m256i_result[0]) = 0x0010001000200020; + __m256i_out = __lasx_xvavgr_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_xvavgr_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op1[2]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op1[0]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000001; + __m256i_out = __lasx_xvavgr_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]) = 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_xvavgr_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]) = 0x7fe36364661af18f; + *((unsigned long *)&__m256i_op1[2]) = 0x7fe363637fe36363; + *((unsigned long *)&__m256i_op1[1]) = 0x7fe36364661af18f; + *((unsigned long *)&__m256i_op1[0]) = 0x7fe363637fe36363; + *((unsigned long *)&__m256i_result[3]) = 0x40f23232330df9c8; + *((unsigned long *)&__m256i_result[2]) = 0x40f2323240f23232; + *((unsigned long *)&__m256i_result[1]) = 0x40f23232330df9c8; + *((unsigned long *)&__m256i_result[0]) = 0x40f2323240f23232; + __m256i_out = __lasx_xvavgr_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0001000100010001; + *((unsigned long *)&__m256i_op0[2]) = 0x0001000100800000; + *((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]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[2]) = 0x0001000100c00000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfff0ff000000000f; + *((unsigned long *)&__m256i_op0[2]) = 0x000f00f000000000; + *((unsigned long *)&__m256i_op0[1]) = 0xfff0ff000000000f; + *((unsigned long *)&__m256i_op0[0]) = 0x000f00f000000000; + *((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]) = 0x00f8000000000008; + *((unsigned long *)&__m256i_result[2]) = 0x000800f800000000; + *((unsigned long *)&__m256i_result[1]) = 0x00f8000000000008; + *((unsigned long *)&__m256i_result[0]) = 0x000800f800000000; + __m256i_out = __lasx_xvavgr_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]) = 0x00000000090b0906; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000000d6d6d; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000005060503; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000073737; + __m256i_out = __lasx_xvavgr_b (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xbff0000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0xbff0000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0xbff0000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0xbff0000000000000; + *((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]) = 0xdff8000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xdff8000000000000; + *((unsigned long *)&__m256i_result[1]) = 0xdff8000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xdff8000000000000; + __m256i_out = __lasx_xvavgr_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]) = 0xfffffefefffffefe; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0xfffffefefffffefe; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000ff7f0000ff7f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000ff7f0000ff7f; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + 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_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]) = 0x4000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x4000000000000000; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000fd0000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000fd0000; + *((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]) = 0x00000000007f0000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000007f0000; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xbf00bf00bf00bf00; + *((unsigned long *)&__m256i_op0[2]) = 0xbf84bf00bf00bf0e; + *((unsigned long *)&__m256i_op0[1]) = 0xbf00bf00bf00bf00; + *((unsigned long *)&__m256i_op0[0]) = 0xbf84bf00bf00bf0e; + *((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]) = 0xdf80df80df80df80; + *((unsigned long *)&__m256i_result[2]) = 0xdfc2df80df80df87; + *((unsigned long *)&__m256i_result[1]) = 0xdf80df80df80df80; + *((unsigned long *)&__m256i_result[0]) = 0xdfc2df80df80df87; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xbf00bf00bf00bf00; + *((unsigned long *)&__m256i_op0[2]) = 0xbf84bf00bf00bf0e; + *((unsigned long *)&__m256i_op0[1]) = 0xbf00bf00bf00bf00; + *((unsigned long *)&__m256i_op0[0]) = 0xbf84bf00bf00bf0e; + *((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]) = 0xdf80ff20df80ff20; + *((unsigned long *)&__m256i_result[2]) = 0xdfc2ff20df80ffa7; + *((unsigned long *)&__m256i_result[1]) = 0xdf80ff20df80ff20; + *((unsigned long *)&__m256i_result[0]) = 0xdfc2ff20df80ffa7; + __m256i_out = __lasx_xvavgr_h (__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]) = 0x00000000c0000005; + *((unsigned long *)&__m256i_result[2]) = 0x21f8c3c4c0000005; + *((unsigned long *)&__m256i_result[1]) = 0x00000000c0000005; + *((unsigned long *)&__m256i_result[0]) = 0x21f8c3c4c0000005; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x9090909090909090; + *((unsigned long *)&__m256i_op0[2]) = 0x9090909090909090; + *((unsigned long *)&__m256i_op0[1]) = 0x9090909090909090; + *((unsigned long *)&__m256i_op0[0]) = 0x9090909090909090; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x8000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x8000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0xc848c848c848c848; + *((unsigned long *)&__m256i_result[2]) = 0x8848c848c848c848; + *((unsigned long *)&__m256i_result[1]) = 0xc848c848c848c848; + *((unsigned long *)&__m256i_result[0]) = 0x8848c848c848c848; + __m256i_out = __lasx_xvavgr_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]) = 0xffffffffffff0000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffff0000; + *((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_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x7fff80007fff0000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000008000; + *((unsigned long *)&__m256i_op0[1]) = 0x7fff80007fff0000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000008000; + *((unsigned long *)&__m256i_op1[3]) = 0x000000ff800000ff; + *((unsigned long *)&__m256i_op1[2]) = 0x000000ff800000ff; + *((unsigned long *)&__m256i_op1[1]) = 0x000000ff800000ff; + *((unsigned long *)&__m256i_op1[0]) = 0x000000ff800000ff; + *((unsigned long *)&__m256i_result[3]) = 0x4000c08000000080; + *((unsigned long *)&__m256i_result[2]) = 0x00000080c000c080; + *((unsigned long *)&__m256i_result[1]) = 0x4000c08000000080; + *((unsigned long *)&__m256i_result[0]) = 0x00000080c000c080; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x7fffffff7fffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x7fffffff7fffffff; + *((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]) = 0x3fffffff3fffc000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x3fffffff3fffc000; + __m256i_out = __lasx_xvavgr_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]) = 0x007fffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x007fffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x003fffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x003fffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x003fffffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x003fffffffffffff; + *((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]) = 0x001fffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x001fffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvavgr_h (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_op0[1]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_op1[3]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_op1[1]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_result[3]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x00000007ffffffce; + *((unsigned long *)&__m256i_result[1]) = 0x00000005ffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x00000007ffffffce; + __m256i_out = __lasx_xvavgr_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]) = 0x0000000001010101; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000001010101; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000001010101; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000001010101; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000808081; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000808081; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000808081; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000808081; + __m256i_out = __lasx_xvavgr_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]) = 0x0000f18080010000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000f18080010000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x000078c0c0008000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x000078c0c0008000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_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]) = 0x1086658a18ba3594; + *((unsigned long *)&__m256i_op1[2]) = 0x160fe9f000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x1086658a18ba3594; + *((unsigned long *)&__m256i_op1[0]) = 0x160fe9f000000000; + *((unsigned long *)&__m256i_result[3]) = 0x07a232640bfc1a73; + *((unsigned long *)&__m256i_result[2]) = 0x0a66f497ff9effa9; + *((unsigned long *)&__m256i_result[1]) = 0x07a232640bfc1a73; + *((unsigned long *)&__m256i_result[0]) = 0x0a66f497ff9effa9; + __m256i_out = __lasx_xvavgr_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffefefeff; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffffff295329; + *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffefefeff; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffff295329; + *((unsigned long *)&__m256i_op1[3]) = 0x00fe01f000010000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000c40086; + *((unsigned long *)&__m256i_op1[1]) = 0x00fe01f000010000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000c40086; + *((unsigned long *)&__m256i_result[3]) = 0x007f00f8ff7fff80; + *((unsigned long *)&__m256i_result[2]) = 0x00000000fff6a9d8; + *((unsigned long *)&__m256i_result[1]) = 0x007f00f8ff7fff80; + *((unsigned long *)&__m256i_result[0]) = 0x00000000fff6a9d8; + __m256i_out = __lasx_xvavgr_w (__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]) = 0x7ffe7ffe7ffe7ffe; + *((unsigned long *)&__m256i_op1[2]) = 0x000000007ffe7ffe; + *((unsigned long *)&__m256i_op1[1]) = 0x7ffe7ffe7ffe8000; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000807e7ffe; + *((unsigned long *)&__m256i_result[3]) = 0x7ffe7ffe7ffe7ffe; + *((unsigned long *)&__m256i_result[2]) = 0x000000007ffe7ffe; + *((unsigned long *)&__m256i_result[1]) = 0x7ffe7ffe7ffe8000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000807e7ffe; + __m256i_out = __lasx_xvavgr_w (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00ff00ff00fe00fe; + *((unsigned long *)&__m256i_op0[2]) = 0x00ff00ff00fe00fe; + *((unsigned long *)&__m256i_op0[1]) = 0x00ff00ff00fe00fe; + *((unsigned long *)&__m256i_op0[0]) = 0x00ff00ff00fe00fe; + *((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]) = 0x007f8080007f007f; + *((unsigned long *)&__m256i_result[2]) = 0x007f8080007f007f; + *((unsigned long *)&__m256i_result[1]) = 0x007f8080007f007f; + *((unsigned long *)&__m256i_result[0]) = 0x007f8080007f007f; + __m256i_out = __lasx_xvavgr_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]) = 0xffc6ffc6003a003a; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffff0000; + *((unsigned long *)&__m256i_op1[1]) = 0xffc6ffc6003a003a; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffff0000; + *((unsigned long *)&__m256i_result[3]) = 0xffe37fe3001d001d; + *((unsigned long *)&__m256i_result[2]) = 0x00000000ffff8000; + *((unsigned long *)&__m256i_result[1]) = 0xffe37fe3001d001d; + *((unsigned long *)&__m256i_result[0]) = 0x00000000ffff8000; + __m256i_out = __lasx_xvavgr_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_xvavgr_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_xvavgr_w (__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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000700000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_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_xvavgr_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000101; + *((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]) = 0x0000000000000081; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_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_xvavgr_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000004a00000040; + *((unsigned long *)&__m256i_op0[2]) = 0x0000004a0000002a; + *((unsigned long *)&__m256i_op0[1]) = 0x0000004a00000040; + *((unsigned long *)&__m256i_op0[0]) = 0x0000004a0000002a; + *((unsigned long *)&__m256i_op1[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0x0000fffffffefffe; + *((unsigned long *)&__m256i_op1[1]) = 0xff7fffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0x0000fffffffefffe; + *((unsigned long *)&__m256i_result[3]) = 0x0000002500000020; + *((unsigned long *)&__m256i_result[2]) = 0x00008024ffff8014; + *((unsigned long *)&__m256i_result[1]) = 0xffc0002500000020; + *((unsigned long *)&__m256i_result[0]) = 0x00008024ffff8014; + __m256i_out = __lasx_xvavgr_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]) = 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_xvavgr_d (__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]) = 0x0000000000001a00; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000001a00; + *((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_xvavgr_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_xvavgr_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000023a20000a121; + *((unsigned long *)&__m256i_op0[2]) = 0x0000179e0000951d; + *((unsigned long *)&__m256i_op0[1]) = 0x000023a20000a121; + *((unsigned long *)&__m256i_op0[0]) = 0x0000179e0000951d; + *((unsigned long *)&__m256i_op1[3]) = 0x0000010000000100; + *((unsigned long *)&__m256i_op1[2]) = 0x0000010000000100; + *((unsigned long *)&__m256i_op1[1]) = 0x0000010000000100; + *((unsigned long *)&__m256i_op1[0]) = 0x0000010000000100; + *((unsigned long *)&__m256i_result[3]) = 0x0000125100005111; + *((unsigned long *)&__m256i_result[2]) = 0x00000c4f00004b0f; + *((unsigned long *)&__m256i_result[1]) = 0x0000125100005111; + *((unsigned long *)&__m256i_result[0]) = 0x00000c4f00004b0f; + __m256i_out = __lasx_xvavgr_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]) = 0x0001000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000100010001; + *((unsigned long *)&__m256i_op1[1]) = 0x0001000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000100010001; + *((unsigned long *)&__m256i_result[3]) = 0x0000800000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000080008001; + *((unsigned long *)&__m256i_result[1]) = 0x0000800000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000080008001; + __m256i_out = __lasx_xvavgr_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_xvavgr_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000457d607d; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffff457d607f; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000457d607d; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffff457d607f; + *((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]) = 0x0000000022beb03f; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffa2beb040; + *((unsigned long *)&__m256i_result[1]) = 0x0000000022beb03f; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffa2beb040; + __m256i_out = __lasx_xvavgr_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_xvavgr_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]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_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]) = 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_xvavgr_d (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000000005858585a; + *((unsigned long *)&__m256i_op0[2]) = 0x000000005858585a; + *((unsigned long *)&__m256i_op0[1]) = 0x000000005858585a; + *((unsigned long *)&__m256i_op0[0]) = 0x000000005858585a; + *((unsigned long *)&__m256i_op1[3]) = 0x000023a300003fff; + *((unsigned long *)&__m256i_op1[2]) = 0x000023a300003fef; + *((unsigned long *)&__m256i_op1[1]) = 0x000023a300003fff; + *((unsigned long *)&__m256i_op1[0]) = 0x000023a300003fef; + *((unsigned long *)&__m256i_result[3]) = 0x000011d1ac2c4c2d; + *((unsigned long *)&__m256i_result[2]) = 0x000011d1ac2c4c25; + *((unsigned long *)&__m256i_result[1]) = 0x000011d1ac2c4c2d; + *((unsigned long *)&__m256i_result[0]) = 0x000011d1ac2c4c25; + __m256i_out = __lasx_xvavgr_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-xvavgr-2.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavgr-2.c new file mode 100644 index 000000000000..3944a6ac064f --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvavgr-2.c @@ -0,0 +1,650 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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_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]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[2]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[1]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[0]) = 0x8080808080808080; + __m256i_out = __lasx_xvavgr_bu (__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_xvavgr_bu (__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_xvavgr_bu (__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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op1[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[2]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[1]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[0]) = 0x8080808080808080; + __m256i_out = __lasx_xvavgr_bu (__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_xvavgr_bu (__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_xvavgr_bu (__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]) = 0x0000018803100188; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000018803100188; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000014402080144; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000014402080144; + __m256i_out = __lasx_xvavgr_bu (__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]) = 0x000086fe0000403e; + *((unsigned long *)&__m256i_op1[2]) = 0x0000403e00004040; + *((unsigned long *)&__m256i_op1[1]) = 0x000086fe0000403e; + *((unsigned long *)&__m256i_op1[0]) = 0x0000403e00004040; + *((unsigned long *)&__m256i_result[3]) = 0x0000437f0000201f; + *((unsigned long *)&__m256i_result[2]) = 0x0000201f00002020; + *((unsigned long *)&__m256i_result[1]) = 0x0000437f0000201f; + *((unsigned long *)&__m256i_result[0]) = 0x0000201f00002020; + __m256i_out = __lasx_xvavgr_bu (__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_xvavgr_bu (__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]) = 0x0fffffff0fffffff; + *((unsigned long *)&__m256i_op1[2]) = 0x90007fff90008000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0ffffffe90008000; + *((unsigned long *)&__m256i_result[3]) = 0x87ffffff87ffffff; + *((unsigned long *)&__m256i_result[2]) = 0xc880bfffc880c080; + *((unsigned long *)&__m256i_result[1]) = 0x8080808080808080; + *((unsigned long *)&__m256i_result[0]) = 0x87ffffffc880c080; + __m256i_out = __lasx_xvavgr_bu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00fe01f000010000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000c40086; + *((unsigned long *)&__m256i_op0[1]) = 0x00fe01f000010000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000c40086; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000082a54290; + *((unsigned long *)&__m256i_op1[2]) = 0x00000000028aa700; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000082a54290; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000002a54287; + *((unsigned long *)&__m256i_result[3]) = 0x007f00f841532148; + *((unsigned long *)&__m256i_result[2]) = 0x0000000001a753c3; + *((unsigned long *)&__m256i_result[1]) = 0x007f00f841532148; + *((unsigned long *)&__m256i_result[0]) = 0x0000000001b52187; + __m256i_out = __lasx_xvavgr_hu (__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]) = 0x0000000000004444; + *((unsigned long *)&__m256i_op1[2]) = 0x00007bbb0000f777; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000004444; + *((unsigned long *)&__m256i_op1[0]) = 0x00007bbb0000f777; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000002222; + *((unsigned long *)&__m256i_result[2]) = 0x00003dde00007bbc; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000002222; + *((unsigned long *)&__m256i_result[0]) = 0x00003dde00007bbc; + __m256i_out = __lasx_xvavgr_hu (__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]) = 0x9ff87ef07f7f817f; + *((unsigned long *)&__m256i_op1[2]) = 0x7f807f007f7f817f; + *((unsigned long *)&__m256i_op1[1]) = 0x9ff87ef07f7f817f; + *((unsigned long *)&__m256i_op1[0]) = 0x7f807f007f7f817f; + *((unsigned long *)&__m256i_result[3]) = 0x4ffc3f783fc040c0; + *((unsigned long *)&__m256i_result[2]) = 0x3fc03f803fc040c0; + *((unsigned long *)&__m256i_result[1]) = 0x4ffc3f783fc040c0; + *((unsigned long *)&__m256i_result[0]) = 0x3fc03f803fc040c0; + __m256i_out = __lasx_xvavgr_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0505070804040404; + *((unsigned long *)&__m256i_op0[2]) = 0x0504070804040404; + *((unsigned long *)&__m256i_op0[1]) = 0x0505070804040404; + *((unsigned long *)&__m256i_op0[0]) = 0x0504070804040404; + *((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]) = 0x0283038402020202; + *((unsigned long *)&__m256i_result[2]) = 0x0282038402020202; + *((unsigned long *)&__m256i_result[1]) = 0x0283038402020202; + *((unsigned long *)&__m256i_result[0]) = 0x0282038402020202; + __m256i_out = __lasx_xvavgr_hu (__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_xvavgr_hu (__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_xvavgr_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x1010101010001000; + *((unsigned long *)&__m256i_op0[2]) = 0x000000ff000000ff; + *((unsigned long *)&__m256i_op0[1]) = 0x101010100000000e; + *((unsigned long *)&__m256i_op0[0]) = 0x000000ff000000ff; + *((unsigned long *)&__m256i_op1[3]) = 0x0101010101010101; + *((unsigned long *)&__m256i_op1[2]) = 0x0101010101010101; + *((unsigned long *)&__m256i_op1[1]) = 0x0101010101010101; + *((unsigned long *)&__m256i_op1[0]) = 0x0101010101010101; + *((unsigned long *)&__m256i_result[3]) = 0x0889088908810881; + *((unsigned long *)&__m256i_result[2]) = 0x0081010000810100; + *((unsigned long *)&__m256i_result[1]) = 0x0889088900810088; + *((unsigned long *)&__m256i_result[0]) = 0x0081010000810100; + __m256i_out = __lasx_xvavgr_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x7c00000880008000; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x7c00000880008000; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000001d001d; + *((unsigned long *)&__m256i_result[3]) = 0x0000000080008000; + *((unsigned long *)&__m256i_result[2]) = 0x3e00000440004000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000080008000; + *((unsigned long *)&__m256i_result[0]) = 0x3e000004400f400f; + __m256i_out = __lasx_xvavgr_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x0100000001000100; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x0100000001000100; + *((unsigned long *)&__m256i_op1[3]) = 0x7575757575757575; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x7575757575757575; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x3abb3abbbabababa; + *((unsigned long *)&__m256i_result[2]) = 0x0080000000800080; + *((unsigned long *)&__m256i_result[1]) = 0x3abb3abbbabababa; + *((unsigned long *)&__m256i_result[0]) = 0x0080000000800080; + __m256i_out = __lasx_xvavgr_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000000000ff; + *((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]) = 0x0000000000000080; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_hu (__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]) = 0x8000000080000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x8000000080000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xc0008000c0008000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xc0008000c0008000; + __m256i_out = __lasx_xvavgr_hu (__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_xvavgr_hu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffe000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000ffff00010000; + *((unsigned long *)&__m256i_op0[1]) = 0x0001000100020001; + *((unsigned long *)&__m256i_op0[0]) = 0x0000fffffffffffe; + *((unsigned long *)&__m256i_op1[3]) = 0x8b1414140e0e0e0e; + *((unsigned long *)&__m256i_op1[2]) = 0x00d6c1c830160048; + *((unsigned long *)&__m256i_op1[1]) = 0x36722a7e66972cd6; + *((unsigned long *)&__m256i_op1[0]) = 0xe3aebaf4df958004; + *((unsigned long *)&__m256i_result[3]) = 0xc5890a0a07070707; + *((unsigned long *)&__m256i_result[2]) = 0x006be0e4180b8024; + *((unsigned long *)&__m256i_result[1]) = 0x1b399540334c966c; + *((unsigned long *)&__m256i_result[0]) = 0x71d7dd7aefcac001; + __m256i_out = __lasx_xvavgr_wu (__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]) = 0x0000000000808080; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x8000000080000000; + *((unsigned long *)&__m256i_result[2]) = 0x8000000080404040; + *((unsigned long *)&__m256i_result[1]) = 0x8000000080000000; + *((unsigned long *)&__m256i_result[0]) = 0x8000000080000000; + __m256i_out = __lasx_xvavgr_wu (__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_xvavgr_wu (__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_xvavgr_wu (__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]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x000e000e000e000e; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x000e000e000e000e; + *((unsigned long *)&__m256i_result[3]) = 0x0003800400038004; + *((unsigned long *)&__m256i_result[2]) = 0x000a800b000a800b; + *((unsigned long *)&__m256i_result[1]) = 0x0003800400038004; + *((unsigned long *)&__m256i_result[0]) = 0x000a800b000a800b; + __m256i_out = __lasx_xvavgr_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x00f9f9f900000002; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x00f9f9f900000002; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x007cfcfd80000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x007cfcfd80000001; + __m256i_out = __lasx_xvavgr_wu (__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]) = 0xffff000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0xffff8001ffff8001; + *((unsigned long *)&__m256i_op1[1]) = 0xffff000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0xffff8001ffff8001; + *((unsigned long *)&__m256i_result[3]) = 0x7fff800000000000; + *((unsigned long *)&__m256i_result[2]) = 0x7fffc0017fffc001; + *((unsigned long *)&__m256i_result[1]) = 0x7fff800000000000; + *((unsigned long *)&__m256i_result[0]) = 0x7fffc0017fffc001; + __m256i_out = __lasx_xvavgr_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0080000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0080000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[2]) = 0x000000000000000a; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[0]) = 0x000000000000000a; + *((unsigned long *)&__m256i_result[3]) = 0x0040000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000005; + *((unsigned long *)&__m256i_result[1]) = 0x0040000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000005; + __m256i_out = __lasx_xvavgr_wu (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x372e9d75e8aab100; + *((unsigned long *)&__m256i_op0[2]) = 0xc5c085372cfabfba; + *((unsigned long *)&__m256i_op0[1]) = 0x31730b5beb7c99f5; + *((unsigned long *)&__m256i_op0[0]) = 0x0658f2dc0eb21e3c; + *((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]) = 0x1b974ebaf6d64d4e; + *((unsigned long *)&__m256i_result[2]) = 0x62e0429c1b48fed1; + *((unsigned long *)&__m256i_result[1]) = 0x18b985adf63f548c; + *((unsigned long *)&__m256i_result[0]) = 0x032c796ecbdecc3b; + __m256i_out = __lasx_xvavgr_du (__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_xvavgr_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xc600000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0xc600000000000000; + *((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]) = 0x6300000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x6300000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvavgr_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x3a2a3a2a3a2a3a2a; + *((unsigned long *)&__m256i_op0[2]) = 0x3a2a3a2a3aaa45aa; + *((unsigned long *)&__m256i_op0[1]) = 0x3a553f7f7a2a3a2a; + *((unsigned long *)&__m256i_op0[0]) = 0x3a2a3a2a3aaa45aa; + *((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]) = 0x1d949d949d949d95; + *((unsigned long *)&__m256i_result[2]) = 0x1d949d949e1423d4; + *((unsigned long *)&__m256i_result[1]) = 0x1de9a03f3dd41d95; + *((unsigned long *)&__m256i_result[0]) = 0x1d949d949e1423d4; + __m256i_out = __lasx_xvavgr_du (__m256i_op0, __m256i_op1); + 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_op1[3]) = 0x001e001ea1bfa1bf; + *((unsigned long *)&__m256i_op1[2]) = 0x001e001e83e5422e; + *((unsigned long *)&__m256i_op1[1]) = 0x001e001ea1bfa1bf; + *((unsigned long *)&__m256i_op1[0]) = 0x011f011f0244420e; + *((unsigned long *)&__m256i_result[3]) = 0x000f000fd0dfd0df; + *((unsigned long *)&__m256i_result[2]) = 0x000f000f83ef4b4a; + *((unsigned long *)&__m256i_result[1]) = 0x000f000fd0dfd0df; + *((unsigned long *)&__m256i_result[0]) = 0x0110011001224b07; + __m256i_out = __lasx_xvavgr_du (__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_xvavgr_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op1[3]) = 0x0000000000030000; + *((unsigned long *)&__m256i_op1[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000000000030000; + *((unsigned long *)&__m256i_op1[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000018002; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000002; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000018002; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000002; + __m256i_out = __lasx_xvavgr_du (__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]) = 0x223d76f09f3881ff; + *((unsigned long *)&__m256i_op1[2]) = 0x3870ca8d013e76a0; + *((unsigned long *)&__m256i_op1[1]) = 0x223d76f09f37e357; + *((unsigned long *)&__m256i_op1[0]) = 0x43ec0a1b2aba7ed0; + *((unsigned long *)&__m256i_result[3]) = 0x111ebb784f9c4100; + *((unsigned long *)&__m256i_result[2]) = 0x1c386546809f3b50; + *((unsigned long *)&__m256i_result[1]) = 0x111ebb784f9bf1ac; + *((unsigned long *)&__m256i_result[0]) = 0x21f6050d955d3f68; + __m256i_out = __lasx_xvavgr_du (__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_xvavgr_du (__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]) = 0x0000840100000000; + *((unsigned long *)&__m256i_op1[2]) = 0xbffebffec0fe0000; + *((unsigned long *)&__m256i_op1[1]) = 0x0000840100000000; + *((unsigned long *)&__m256i_op1[0]) = 0xbffebffec0fe0000; + *((unsigned long *)&__m256i_result[3]) = 0x0000420080000000; + *((unsigned long *)&__m256i_result[2]) = 0x5fff5fff607f0000; + *((unsigned long *)&__m256i_result[1]) = 0x0000420080000000; + *((unsigned long *)&__m256i_result[0]) = 0x5fff5fff607f0000; + __m256i_out = __lasx_xvavgr_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000001; + *((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_xvavgr_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000457d607d; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffff457d607f; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000457d607d; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffff457d607f; + *((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]) = 0x0000000022beb03f; + *((unsigned long *)&__m256i_result[2]) = 0x7fffffffa2beb040; + *((unsigned long *)&__m256i_result[1]) = 0x0000000022beb03f; + *((unsigned long *)&__m256i_result[0]) = 0x7fffffffa2beb040; + __m256i_out = __lasx_xvavgr_du (__m256i_op0, __m256i_op1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvbsll_v.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvbsll_v.c new file mode 100644 index 000000000000..3c1a8b8e61c2 --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvbsll_v.c @@ -0,0 +1,130 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x555555553f800000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x555555553f800000; + *((unsigned long *)&__m256i_result[3]) = 0x00555555553f8000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x00555555553f8000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvbsll_v (__m256i_op0, 0x17); + 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_xvbsll_v (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvbsll_v (__m256i_op0, 0x1b); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000003; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000003; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000030000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000030000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvbsll_v (__m256i_op0, 0x1a); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op0[2]) = 0x2020202020206431; + *((unsigned long *)&__m256i_op0[1]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op0[0]) = 0x2020202020206431; + *((unsigned long *)&__m256i_result[3]) = 0x2020202020202020; + *((unsigned long *)&__m256i_result[2]) = 0x2020643100000000; + *((unsigned long *)&__m256i_result[1]) = 0x2020202020202020; + *((unsigned long *)&__m256i_result[0]) = 0x2020643100000000; + __m256i_out = __lasx_xvbsll_v (__m256i_op0, 0x4); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000050504c4c2362; + *((unsigned long *)&__m256i_op0[2]) = 0x000b2673a90896a4; + *((unsigned long *)&__m256i_op0[1]) = 0x000050504c4c2362; + *((unsigned long *)&__m256i_op0[0]) = 0x000b2673a90896a4; + *((unsigned long *)&__m256i_result[3]) = 0xa90896a400000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0xa90896a400000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvbsll_v (__m256i_op0, 0xc); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x003f003f003f0040; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x003f003f003f0040; + *((unsigned long *)&__m256i_result[3]) = 0x00003f003f003f00; + *((unsigned long *)&__m256i_result[2]) = 0x4000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x00003f003f003f00; + *((unsigned long *)&__m256i_result[0]) = 0x4000000000000000; + __m256i_out = __lasx_xvbsll_v (__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_xvbsll_v (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvbsll_v (__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_xvbsll_v (__m256i_op0, 0xd); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvbsrl_v.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvbsrl_v.c new file mode 100644 index 000000000000..340f7691b69c --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvbsrl_v.c @@ -0,0 +1,64 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x0000000007d0d0d0; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000007d0d0d0; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x000007d0d0d00000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x000007d0d0d00000; + __m256i_out = __lasx_xvbsrl_v (__m256i_op0, 0x6); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000001fffffffe; + *((unsigned long *)&__m256i_op0[2]) = 0x00000001fffffffe; + *((unsigned long *)&__m256i_op0[1]) = 0x00000001fffffffe; + *((unsigned long *)&__m256i_op0[0]) = 0x00000001fffffffe; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x01fffffffe000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x01fffffffe000000; + __m256i_out = __lasx_xvbsrl_v (__m256i_op0, 0x15); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000018803100188; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000018803100188; + *((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_xvbsrl_v (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvbsrl_v (__m256i_op0, 0x1b); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvneg.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvneg.c new file mode 100644 index 000000000000..3cd1626d419d --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvneg.c @@ -0,0 +1,526 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x002e4db200000000; + *((unsigned long *)&__m256i_op0[2]) = 0x000315ac0000d658; + *((unsigned long *)&__m256i_op0[1]) = 0x00735278007cf94c; + *((unsigned long *)&__m256i_op0[0]) = 0x0003ed8800031b38; + *((unsigned long *)&__m256i_result[3]) = 0xffd1b24e00000000; + *((unsigned long *)&__m256i_result[2]) = 0xfffcea54ffff29a8; + *((unsigned long *)&__m256i_result[1]) = 0xff8cad88ff8306b4; + *((unsigned long *)&__m256i_result[0]) = 0xfffc1278fffce4c8; + __m256i_out = __lasx_xvneg_w (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x8000ffff8000ffff; + *((unsigned long *)&__m256i_op0[2]) = 0x06f880008000ffff; + *((unsigned long *)&__m256i_op0[1]) = 0x8000800080008000; + *((unsigned long *)&__m256i_op0[0]) = 0x800080008000b8f1; + *((unsigned long *)&__m256i_result[3]) = 0x8000010180000101; + *((unsigned long *)&__m256i_result[2]) = 0xfa08800080000101; + *((unsigned long *)&__m256i_result[1]) = 0x8000800080008000; + *((unsigned long *)&__m256i_result[0]) = 0x800080008000480f; + __m256i_out = __lasx_xvneg_b (__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]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[2]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[1]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[0]) = 0x0001000100010001; + __m256i_out = __lasx_xvneg_h (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op0[2]) = 0xfffffffefffffefc; + *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op0[0]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_result[3]) = 0x0101010101010102; + *((unsigned long *)&__m256i_result[2]) = 0x0101010201010204; + *((unsigned long *)&__m256i_result[1]) = 0x0101010101010102; + *((unsigned long *)&__m256i_result[0]) = 0x0101010101010102; + __m256i_out = __lasx_xvneg_b (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xfffffffffffffefd; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0101010101010101; + *((unsigned long *)&__m256i_result[2]) = 0x0101010101010203; + *((unsigned long *)&__m256i_result[1]) = 0x0101010101010101; + *((unsigned long *)&__m256i_result[0]) = 0x0101010101010101; + __m256i_out = __lasx_xvneg_b (__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_xvneg_w (__m256i_op0); + 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_result[3]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000007380; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[0]) = 0x00000000000f1c00; + __m256i_out = __lasx_xvneg_w (__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_xvneg_b (__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_xvneg_w (__m256i_op0); + 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]) = 0x0000000100000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000100000001; + __m256i_out = __lasx_xvneg_w (__m256i_op0); + 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_result[3]) = 0x0000800000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000800000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000800000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000800000000000; + __m256i_out = __lasx_xvneg_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_xvneg_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_xvneg_b (__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_xvneg_w (__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]) = 0xffffffff00000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000100000001; + *((unsigned long *)&__m256i_result[2]) = 0x0000000100000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000100000001; + *((unsigned long *)&__m256i_result[0]) = 0x0000000100000000; + __m256i_out = __lasx_xvneg_w (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x007f00ff007f00ff; + *((unsigned long *)&__m256i_op0[2]) = 0x007f00ff007f00ff; + *((unsigned long *)&__m256i_op0[1]) = 0x007f00ff007f00ff; + *((unsigned long *)&__m256i_op0[0]) = 0x007f00ff007f00ff; + *((unsigned long *)&__m256i_result[3]) = 0x0081000100810001; + *((unsigned long *)&__m256i_result[2]) = 0x0081000100810001; + *((unsigned long *)&__m256i_result[1]) = 0x0081000100810001; + *((unsigned long *)&__m256i_result[0]) = 0x0081000100810001; + __m256i_out = __lasx_xvneg_b (__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]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[2]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[1]) = 0x0001000100010001; + *((unsigned long *)&__m256i_result[0]) = 0x0001000100010001; + __m256i_out = __lasx_xvneg_h (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x223d76f09f3881ff; + *((unsigned long *)&__m256i_op0[2]) = 0x3870ca8d013e76a0; + *((unsigned long *)&__m256i_op0[1]) = 0x223d76f09f37e357; + *((unsigned long *)&__m256i_op0[0]) = 0x43ec0a1b2aba7ed0; + *((unsigned long *)&__m256i_result[3]) = 0xdec38a1061c87f01; + *((unsigned long *)&__m256i_result[2]) = 0xc8903673ffc28a60; + *((unsigned long *)&__m256i_result[1]) = 0xdec38a1061c91da9; + *((unsigned long *)&__m256i_result[0]) = 0xbd14f6e5d6468230; + __m256i_out = __lasx_xvneg_b (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000007e8080; + *((unsigned long *)&__m256i_op0[2]) = 0x00000001fdda7dc4; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000007e8080; + *((unsigned long *)&__m256i_op0[0]) = 0x00000001fdda7dc4; + *((unsigned long *)&__m256i_result[3]) = 0x00000000ff827f80; + *((unsigned long *)&__m256i_result[2]) = 0x0000ffff0226823c; + *((unsigned long *)&__m256i_result[1]) = 0x00000000ff827f80; + *((unsigned long *)&__m256i_result[0]) = 0x0000ffff0226823c; + __m256i_out = __lasx_xvneg_h (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x7fffffff7fffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x7fffffff7fffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x8000000180000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x8000000180000001; + __m256i_out = __lasx_xvneg_w (__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_xvneg_d (__m256i_op0); + 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]) = 0xffffffff00000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xffffffff00000001; + __m256i_out = __lasx_xvneg_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_xvneg_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_xvneg_h (__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_xvneg_h (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x000f000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x000f000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xfff1000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xfff1000000000000; + __m256i_out = __lasx_xvneg_d (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000ffff8000ffa3; + *((unsigned long *)&__m256i_op0[2]) = 0x000000008000165a; + *((unsigned long *)&__m256i_op0[1]) = 0x0000ffff8000ffa3; + *((unsigned long *)&__m256i_op0[0]) = 0x000000008000165a; + *((unsigned long *)&__m256i_result[3]) = 0xffff00017fff005d; + *((unsigned long *)&__m256i_result[2]) = 0x000000007fffe9a6; + *((unsigned long *)&__m256i_result[1]) = 0xffff00017fff005d; + *((unsigned long *)&__m256i_result[0]) = 0x000000007fffe9a6; + __m256i_out = __lasx_xvneg_w (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0808080808080808; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0808080808080808; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0xf7f7f7f7f7f7f7f8; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0xf7f7f7f7f7f7f7f8; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvneg_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_xvneg_w (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x000000ffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x000000ffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xffffff0100000001; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xffffff0100000001; + __m256i_out = __lasx_xvneg_w (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0100010001000100; + *((unsigned long *)&__m256i_op0[2]) = 0x0100004300000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0100010001000100; + *((unsigned long *)&__m256i_op0[0]) = 0x0100004300000000; + *((unsigned long *)&__m256i_result[3]) = 0xff00ff00ff00ff00; + *((unsigned long *)&__m256i_result[2]) = 0xff0000bd00000000; + *((unsigned long *)&__m256i_result[1]) = 0xff00ff00ff00ff00; + *((unsigned long *)&__m256i_result[0]) = 0xff0000bd00000000; + __m256i_out = __lasx_xvneg_b (__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_xvneg_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_xvneg_b (__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_xvneg_w (__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_xvneg_b (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000080040; + *((unsigned long *)&__m256i_op0[2]) = 0x0000010000080040; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000080040; + *((unsigned long *)&__m256i_op0[0]) = 0x0000010000080040; + *((unsigned long *)&__m256i_result[3]) = 0x00000000fff8ffc0; + *((unsigned long *)&__m256i_result[2]) = 0x0000ff00fff8ffc0; + *((unsigned long *)&__m256i_result[1]) = 0x00000000fff8ffc0; + *((unsigned long *)&__m256i_result[0]) = 0x0000ff00fff8ffc0; + __m256i_out = __lasx_xvneg_h (__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]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000010001; + __m256i_out = __lasx_xvneg_h (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000497fe0000080; + *((unsigned long *)&__m256i_op0[2]) = 0x0000683fe0000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000497fe0000080; + *((unsigned long *)&__m256i_op0[0]) = 0x0000683fe0000000; + *((unsigned long *)&__m256i_result[3]) = 0xffffb6811fffff80; + *((unsigned long *)&__m256i_result[2]) = 0xffff97c120000000; + *((unsigned long *)&__m256i_result[1]) = 0xffffb6811fffff80; + *((unsigned long *)&__m256i_result[0]) = 0xffff97c120000000; + __m256i_out = __lasx_xvneg_w (__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_xvneg_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_xvneg_h (__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_xvneg_d (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfefefefefdfdfdfd; + *((unsigned long *)&__m256i_op0[2]) = 0xfefefefefefefefe; + *((unsigned long *)&__m256i_op0[1]) = 0xfefefefefdfdfdfd; + *((unsigned long *)&__m256i_op0[0]) = 0xfefefefefefefefe; + *((unsigned long *)&__m256i_result[3]) = 0x0101010202020203; + *((unsigned long *)&__m256i_result[2]) = 0x0101010201010102; + *((unsigned long *)&__m256i_result[1]) = 0x0101010202020203; + *((unsigned long *)&__m256i_result[0]) = 0x0101010201010102; + __m256i_out = __lasx_xvneg_w (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000032; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000032; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00000000ffffffce; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000ffffffce; + __m256i_out = __lasx_xvneg_w (__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_xvneg_h (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00007fde00007fd4; + *((unsigned long *)&__m256i_op0[2]) = 0x00007fe000007fe0; + *((unsigned long *)&__m256i_op0[1]) = 0x00007fde00007fd4; + *((unsigned long *)&__m256i_op0[0]) = 0x00007fe000007fe0; + *((unsigned long *)&__m256i_result[3]) = 0x000081220000812c; + *((unsigned long *)&__m256i_result[2]) = 0x0000812000008120; + *((unsigned long *)&__m256i_result[1]) = 0x000081220000812c; + *((unsigned long *)&__m256i_result[0]) = 0x0000812000008120; + __m256i_out = __lasx_xvneg_b (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000002780; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000002780; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffd880; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffd880; + __m256i_out = __lasx_xvneg_d (__m256i_op0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsat-1.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsat-1.c new file mode 100644 index 000000000000..b4ac50271f52 --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsat-1.c @@ -0,0 +1,537 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0x8000800000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000800080000000; + *((unsigned long *)&__m256i_op0[1]) = 0xc9d8080067f50020; + *((unsigned long *)&__m256i_op0[0]) = 0xc70000020000c000; + *((unsigned long *)&__m256i_result[3]) = 0xf000f00000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000f000f0000000; + *((unsigned long *)&__m256i_result[1]) = 0xf0f008000ff5000f; + *((unsigned long *)&__m256i_result[0]) = 0xf00000020000f000; + __m256i_out = __lasx_xvsat_b (__m256i_op0, 0x4); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_op0[2]) = 0x000000000000ff80; + *((unsigned long *)&__m256i_op0[1]) = 0x0000ffff0000ffff; + *((unsigned long *)&__m256i_op0[0]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_result[3]) = 0x000000000000ffff; + *((unsigned long *)&__m256i_result[2]) = 0x000000000000fff8; + *((unsigned long *)&__m256i_result[1]) = 0x0000ffff0000ffff; + *((unsigned long *)&__m256i_result[0]) = 0x000000000000ffff; + __m256i_out = __lasx_xvsat_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_xvsat_b (__m256i_op0, 0x6); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x000e000e000e000e; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x000e000e000e000e; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x000e000e000e000e; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x000e000e000e000e; + __m256i_out = __lasx_xvsat_b (__m256i_op0, 0x6); + 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_result[3]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvsat_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_xvsat_b (__m256i_op0, 0x6); + 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_xvsat_b (__m256i_op0, 0x0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00003fea00013fec; + *((unsigned long *)&__m256i_op0[2]) = 0x00003fe50001c013; + *((unsigned long *)&__m256i_op0[1]) = 0x00003fea00013fec; + *((unsigned long *)&__m256i_op0[0]) = 0x00003fe50001c013; + *((unsigned long *)&__m256i_result[3]) = 0x000000ff000000ff; + *((unsigned long *)&__m256i_result[2]) = 0x000000ff0000ff00; + *((unsigned long *)&__m256i_result[1]) = 0x000000ff000000ff; + *((unsigned long *)&__m256i_result[0]) = 0x000000ff0000ff00; + __m256i_out = __lasx_xvsat_b (__m256i_op0, 0x0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000399400003994; + *((unsigned long *)&__m256i_op0[2]) = 0x0000399400003994; + *((unsigned long *)&__m256i_op0[1]) = 0x0000399400003994; + *((unsigned long *)&__m256i_op0[0]) = 0x0000399400003994; + *((unsigned long *)&__m256i_result[3]) = 0x00000fff00000fff; + *((unsigned long *)&__m256i_result[2]) = 0x00000fff00000fff; + *((unsigned long *)&__m256i_result[1]) = 0x00000fff00000fff; + *((unsigned long *)&__m256i_result[0]) = 0x00000fff00000fff; + __m256i_out = __lasx_xvsat_h (__m256i_op0, 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_result[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvsat_h (__m256i_op0, 0xa); + 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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_h (__m256i_op0, 0xf); + 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_result[3]) = 0xffc0ffc0ffc0ffc0; + *((unsigned long *)&__m256i_result[2]) = 0xffc0ffc0ffc0ffc0; + *((unsigned long *)&__m256i_result[1]) = 0xffc0ffc0ffc0ffc0; + *((unsigned long *)&__m256i_result[0]) = 0xffc0ffc0ffc0ffc0; + __m256i_out = __lasx_xvsat_h (__m256i_op0, 0x6); + 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_xvsat_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_xvsat_h (__m256i_op0, 0x0); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00002df900001700; + *((unsigned long *)&__m256i_op0[2]) = 0xfffffe05ffffe911; + *((unsigned long *)&__m256i_op0[1]) = 0x00002df900001700; + *((unsigned long *)&__m256i_op0[0]) = 0xfffffe05ffffe911; + *((unsigned long *)&__m256i_result[3]) = 0x0000000300000003; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffcfffffffc; + *((unsigned long *)&__m256i_result[1]) = 0x0000000300000003; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffcfffffffc; + __m256i_out = __lasx_xvsat_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_xvsat_h (__m256i_op0, 0x7); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffff0001; + *((unsigned long *)&__m256i_op0[2]) = 0xfffffffffdd97dc4; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffff0001; + *((unsigned long *)&__m256i_op0[0]) = 0xfffffffffdd97dc4; + *((unsigned long *)&__m256i_result[3]) = 0xffffffffffff0001; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffffdd97dc4; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffff0001; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffffdd97dc4; + __m256i_out = __lasx_xvsat_h (__m256i_op0, 0xf); + 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_xvsat_h (__m256i_op0, 0xf); + 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000007f007f007f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000007f007f007f; + __m256i_out = __lasx_xvsat_h (__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_xvsat_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_xvsat_h (__m256i_op0, 0xd); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000ffffff; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000ffffff; + *((unsigned long *)&__m256i_result[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x00000000003fffff; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x00000000003fffff; + __m256i_out = __lasx_xvsat_h (__m256i_op0, 0x6); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0002000200000022; + *((unsigned long *)&__m256i_op0[0]) = 0x0049004200000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000007f00000022; + *((unsigned long *)&__m256i_result[0]) = 0x0000007f00000000; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 0x7); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op0[2]) = 0xfffffffefffffefd; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[3]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffefffffefd; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffffffff; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 0x9); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00c200c200c200c2; + *((unsigned long *)&__m256i_op0[2]) = 0x00c200c200c200bb; + *((unsigned long *)&__m256i_op0[1]) = 0x00c200c200c200c2; + *((unsigned long *)&__m256i_op0[0]) = 0x00c200c200c200bb; + *((unsigned long *)&__m256i_result[3]) = 0x007fffff007fffff; + *((unsigned long *)&__m256i_result[2]) = 0x007fffff007fffff; + *((unsigned long *)&__m256i_result[1]) = 0x007fffff007fffff; + *((unsigned long *)&__m256i_result[0]) = 0x007fffff007fffff; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 0x17); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0020002000200020; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0020002000200020; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0001ffff0001ffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0001ffff0001ffff; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 0x11); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000080000001000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000080000000800; + *((unsigned long *)&__m256i_op0[1]) = 0x0000080000001000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000080000000800; + *((unsigned long *)&__m256i_result[3]) = 0x0000000f0000000f; + *((unsigned long *)&__m256i_result[2]) = 0x0000000f0000000f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000f0000000f; + *((unsigned long *)&__m256i_result[0]) = 0x0000000f0000000f; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 0x4); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x000050504c4c2362; + *((unsigned long *)&__m256i_op0[2]) = 0x000b8f81b8c840e4; + *((unsigned long *)&__m256i_op0[1]) = 0x000050504c4c2362; + *((unsigned long *)&__m256i_op0[0]) = 0x000b8f81b8c840e4; + *((unsigned long *)&__m256i_result[3]) = 0x000007ff000007ff; + *((unsigned long *)&__m256i_result[2]) = 0x000007fffffff800; + *((unsigned long *)&__m256i_result[1]) = 0x000007ff000007ff; + *((unsigned long *)&__m256i_result[0]) = 0x000007fffffff800; + __m256i_out = __lasx_xvsat_w (__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_xvsat_w (__m256i_op0, 0x6); + 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_xvsat_w (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_w (__m256i_op0, 0x11); + 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_xvsat_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_xvsat_w (__m256i_op0, 0x13); + 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_xvsat_w (__m256i_op0, 0xf); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x97541c5897541c58; + *((unsigned long *)&__m256i_op0[2]) = 0x97541c5897541c58; + *((unsigned long *)&__m256i_op0[1]) = 0x97541c5897541c58; + *((unsigned long *)&__m256i_op0[0]) = 0x97541c5897541c58; + *((unsigned long *)&__m256i_result[3]) = 0xfffffffc00000000; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffc00000000; + *((unsigned long *)&__m256i_result[1]) = 0xfffffffc00000000; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffc00000000; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x22); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffff5f5c; + *((unsigned long *)&__m256i_op0[2]) = 0xffffffffffff605a; + *((unsigned long *)&__m256i_op0[1]) = 0xffffffffffff5f5c; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffffffff605a; + *((unsigned long *)&__m256i_result[3]) = 0xffffffffffff5f5c; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffff605a; + *((unsigned long *)&__m256i_result[1]) = 0xffffffffffff5f5c; + *((unsigned long *)&__m256i_result[0]) = 0xffffffffffff605a; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x2d); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x001175f10e4330e8; + *((unsigned long *)&__m256i_op0[2]) = 0xff8f0842ff29211e; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0xfffff8d9ffa7103d; + *((unsigned long *)&__m256i_result[3]) = 0x001175f10e4330e8; + *((unsigned long *)&__m256i_result[2]) = 0xff8f0842ff29211e; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xfffff8d9ffa7103d; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x39); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_op0[1]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[3]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000001; + *((unsigned long *)&__m256i_result[1]) = 0xfffffffffffffffe; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000001; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x21); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xc2c2c2c2c2c2c2c2; + *((unsigned long *)&__m256i_op0[2]) = 0xc2c2c2c2c2c2c2c2; + *((unsigned long *)&__m256i_op0[1]) = 0xc2c2c2c2c2c2c2c2; + *((unsigned long *)&__m256i_op0[0]) = 0xc2c2c2c2c2c2c2c2; + *((unsigned long *)&__m256i_result[3]) = 0xfffe000000000000; + *((unsigned long *)&__m256i_result[2]) = 0xfffe000000000000; + *((unsigned long *)&__m256i_result[1]) = 0xfffe000000000000; + *((unsigned long *)&__m256i_result[0]) = 0xfffe000000000000; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x31); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_op0[2]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_op0[1]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_op0[0]) = 0x00ff00ff00ff00ff; + *((unsigned long *)&__m256i_result[3]) = 0x00000001ffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x00000001ffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x00000001ffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x00000001ffffffff; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x21); + 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_xvsat_d (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x1c); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x498000804843ffe0; + *((unsigned long *)&__m256i_op0[2]) = 0x4980008068400000; + *((unsigned long *)&__m256i_op0[1]) = 0x498000804843ffe0; + *((unsigned long *)&__m256i_op0[0]) = 0x4980008068400000; + *((unsigned long *)&__m256i_result[3]) = 0x0fffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x0fffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0fffffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x0fffffffffffffff; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x3c); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xfffeb6839ffffd80; + *((unsigned long *)&__m256i_op0[2]) = 0xfffe97c020010001; + *((unsigned long *)&__m256i_op0[1]) = 0xfffeb6839ffffd80; + *((unsigned long *)&__m256i_op0[0]) = 0xfffe97c020010001; + *((unsigned long *)&__m256i_result[3]) = 0xfffffffffffffff8; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffffffffff8; + *((unsigned long *)&__m256i_result[1]) = 0xfffffffffffffff8; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffffffffff8; + __m256i_out = __lasx_xvsat_d (__m256i_op0, 0x3); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000002c21ffeff; + *((unsigned long *)&__m256i_op0[2]) = 0xc0000000c0000000; + *((unsigned long *)&__m256i_op0[1]) = 0x00000002c21ffeff; + *((unsigned long *)&__m256i_op0[0]) = 0xc0000000c0000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000007; + *((unsigned long *)&__m256i_result[2]) = 0xfffffffffffffff8; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000007; + *((unsigned long *)&__m256i_result[0]) = 0xfffffffffffffff8; + __m256i_out = __lasx_xvsat_d (__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_xvsat_d (__m256i_op0, 0x32); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsat-2.c b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsat-2.c new file mode 100644 index 000000000000..e5ee89debc3b --- /dev/null +++ b/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvsat-2.c @@ -0,0 +1,427 @@ +/* { dg-do run } */ +/* { dg-options "-mlasx -w -fno-strict-aliasing" } */ +#include "../simd_correctness_check.h" +#include + +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]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000ffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xffffffff00000000; + *((unsigned long *)&__m256i_result[3]) = 0x3f3f3f3f3f3f3f3f; + *((unsigned long *)&__m256i_result[2]) = 0x3f3f3f3f3f3f3f3f; + *((unsigned long *)&__m256i_result[1]) = 0x000000003f3f3f3f; + *((unsigned long *)&__m256i_result[0]) = 0x3f3f3f3f00000000; + __m256i_out = __lasx_xvsat_bu (__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_xvsat_bu (__m256i_op0, 0x4); + 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_result[3]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0xffffffffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x000000000000ffff; + __m256i_out = __lasx_xvsat_bu (__m256i_op0, 0x7); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000001ffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xfe00000000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000001ffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xfe00000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x00000000017f7f7f; + *((unsigned long *)&__m256i_result[2]) = 0x7f00000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x00000000017f7f7f; + *((unsigned long *)&__m256i_result[0]) = 0x7f00000000000000; + __m256i_out = __lasx_xvsat_bu (__m256i_op0, 0x6); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000700000007; + *((unsigned long *)&__m256i_op0[2]) = 0x0007ffff0007ffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000700000007; + *((unsigned long *)&__m256i_op0[0]) = 0x0007ffff0007ffff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000700000007; + *((unsigned long *)&__m256i_result[2]) = 0x00071f1f00071f1f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000700000007; + *((unsigned long *)&__m256i_result[0]) = 0x00071f1f00071f1f; + __m256i_out = __lasx_xvsat_bu (__m256i_op0, 0x4); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000000d6d6d; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x00000000000d6d6d; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00000000000d6d6d; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000000d6d6d; + __m256i_out = __lasx_xvsat_bu (__m256i_op0, 0x6); + 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_result[3]) = 0x3fff3fff3fff3fff; + *((unsigned long *)&__m256i_result[2]) = 0x000000003fff3fff; + *((unsigned long *)&__m256i_result[1]) = 0x3fff3fff3fff3fff; + *((unsigned long *)&__m256i_result[0]) = 0x000000003fff3fff; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 0xd); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op0[2]) = 0x2020202020206431; + *((unsigned long *)&__m256i_op0[1]) = 0x2020202020202020; + *((unsigned long *)&__m256i_op0[0]) = 0x2020202020206431; + *((unsigned long *)&__m256i_result[3]) = 0x001f001f001f001f; + *((unsigned long *)&__m256i_result[2]) = 0x001f001f001f001f; + *((unsigned long *)&__m256i_result[1]) = 0x001f001f001f001f; + *((unsigned long *)&__m256i_result[0]) = 0x001f001f001f001f; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 0x4); + 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]) = 0x00001fff00001fff; + *((unsigned long *)&__m256i_result[2]) = 0x00001fff00001fff; + *((unsigned long *)&__m256i_result[1]) = 0x00001fff00001fff; + *((unsigned long *)&__m256i_result[0]) = 0x00001fff00001fff; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 0xa); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x000000007fff7fff; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00000000003f003f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000003f003f; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 0x5); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0xc0090000c0200060; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0xc0090000c0200060; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x007f0000007f0060; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x007f0000007f0060; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 0x6); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x3eab77367fff4848; + *((unsigned long *)&__m256i_op0[2]) = 0x408480007fff0000; + *((unsigned long *)&__m256i_op0[1]) = 0x3eab77367fff4848; + *((unsigned long *)&__m256i_op0[0]) = 0x408480007fff0000; + *((unsigned long *)&__m256i_result[3]) = 0x0003000300030003; + *((unsigned long *)&__m256i_result[2]) = 0x0003000300030000; + *((unsigned long *)&__m256i_result[1]) = 0x0003000300030003; + *((unsigned long *)&__m256i_result[0]) = 0x0003000300030000; + __m256i_out = __lasx_xvsat_hu (__m256i_op0, 0x1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000001fff000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000029170; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000001fff000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000029170; + *((unsigned long *)&__m256i_result[3]) = 0x0000000001ff03ff; + *((unsigned long *)&__m256i_result[2]) = 0x00000000000203ff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000001ff03ff; + *((unsigned long *)&__m256i_result[0]) = 0x00000000000203ff; + __m256i_out = __lasx_xvsat_hu (__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_xvsat_hu (__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_xvsat_hu (__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_xvsat_wu (__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_xvsat_wu (__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_xvsat_wu (__m256i_op0, 0x1b); + 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_xvsat_wu (__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_xvsat_wu (__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_xvsat_wu (__m256i_op0, 0x5); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x457db03e457db03e; + *((unsigned long *)&__m256i_op0[2]) = 0x457db03e45a87310; + *((unsigned long *)&__m256i_op0[1]) = 0x457db03e457db03e; + *((unsigned long *)&__m256i_op0[0]) = 0x457db03e45a87310; + *((unsigned long *)&__m256i_result[3]) = 0x0000000f0000000f; + *((unsigned long *)&__m256i_result[2]) = 0x0000000f0000000f; + *((unsigned long *)&__m256i_result[1]) = 0x0000000f0000000f; + *((unsigned long *)&__m256i_result[0]) = 0x0000000f0000000f; + __m256i_out = __lasx_xvsat_wu (__m256i_op0, 0x3); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000000000077fff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x000000000003ffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_wu (__m256i_op0, 0x11); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x00003fe000000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x00003fe000000000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00003fe000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00003fe000000000; + __m256i_out = __lasx_xvsat_wu (__m256i_op0, 0x15); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00000000fffcfffc; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000fffcfffc; + *((unsigned long *)&__m256i_op0[1]) = 0x00000000fffcfffc; + *((unsigned long *)&__m256i_op0[0]) = 0x00000000fffcfffc; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000003fff; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000003fff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000003fff; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000003fff; + __m256i_out = __lasx_xvsat_wu (__m256i_op0, 0xd); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffffffffffff8000; + *((unsigned long *)&__m256i_op0[2]) = 0x7efefefe80ffffff; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x7efefefe80ffffff; + *((unsigned long *)&__m256i_result[3]) = 0x0fffffff0fffffff; + *((unsigned long *)&__m256i_result[2]) = 0x0fffffff0fffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0fffffff0fffffff; + __m256i_out = __lasx_xvsat_wu (__m256i_op0, 0x1b); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffe000ffffffffff; + *((unsigned long *)&__m256i_op0[2]) = 0xffe000ffffffff08; + *((unsigned long *)&__m256i_op0[1]) = 0xffe000ffffffffff; + *((unsigned long *)&__m256i_op0[0]) = 0xffe000ffffffff08; + *((unsigned long *)&__m256i_result[3]) = 0x0fffffff0fffffff; + *((unsigned long *)&__m256i_result[2]) = 0x0fffffff0fffffff; + *((unsigned long *)&__m256i_result[1]) = 0x0fffffff0fffffff; + *((unsigned long *)&__m256i_result[0]) = 0x0fffffff0fffffff; + __m256i_out = __lasx_xvsat_wu (__m256i_op0, 0x1b); + 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]) = 0x000003ffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x000003ffffffffff; + *((unsigned long *)&__m256i_result[1]) = 0x000003ffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x000003ffffffffff; + __m256i_out = __lasx_xvsat_du (__m256i_op0, 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_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000000; + __m256i_out = __lasx_xvsat_du (__m256i_op0, 0x34); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x00ff00ff00000007; + *((unsigned long *)&__m256i_op0[2]) = 0x00000000000000e7; + *((unsigned long *)&__m256i_op0[1]) = 0x00ff00ff00000007; + *((unsigned long *)&__m256i_op0[0]) = 0x0000000000000007; + *((unsigned long *)&__m256i_result[3]) = 0x0001ffffffffffff; + *((unsigned long *)&__m256i_result[2]) = 0x00000000000000e7; + *((unsigned long *)&__m256i_result[1]) = 0x0001ffffffffffff; + *((unsigned long *)&__m256i_result[0]) = 0x0000000000000007; + __m256i_out = __lasx_xvsat_du (__m256i_op0, 0x30); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x247fe49409620040; + *((unsigned long *)&__m256i_op0[2]) = 0x2475cef801f0ffdd; + *((unsigned long *)&__m256i_op0[1]) = 0x6580668200fe0002; + *((unsigned long *)&__m256i_op0[0]) = 0x419cd5b11c3c5654; + *((unsigned long *)&__m256i_result[3]) = 0x247fe49409620040; + *((unsigned long *)&__m256i_result[2]) = 0x2475cef801f0ffdd; + *((unsigned long *)&__m256i_result[1]) = 0x6580668200fe0002; + *((unsigned long *)&__m256i_result[0]) = 0x419cd5b11c3c5654; + __m256i_out = __lasx_xvsat_du (__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_xvsat_du (__m256i_op0, 0x22); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0xffff800000000000; + *((unsigned long *)&__m256i_op0[2]) = 0xffff800080000000; + *((unsigned long *)&__m256i_op0[1]) = 0xffff800000000000; + *((unsigned long *)&__m256i_op0[0]) = 0xffff800000000000; + *((unsigned long *)&__m256i_result[3]) = 0x00000000000001ff; + *((unsigned long *)&__m256i_result[2]) = 0x00000000000001ff; + *((unsigned long *)&__m256i_result[1]) = 0x00000000000001ff; + *((unsigned long *)&__m256i_result[0]) = 0x00000000000001ff; + __m256i_out = __lasx_xvsat_du (__m256i_op0, 0x8); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x1fa0000000080000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x1fa0000000080000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x00000000007fffff; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00000000007fffff; + __m256i_out = __lasx_xvsat_du (__m256i_op0, 0x16); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + *((unsigned long *)&__m256i_op0[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[2]) = 0x0000017f00000000; + *((unsigned long *)&__m256i_op0[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_op0[0]) = 0x00007f7f03030000; + *((unsigned long *)&__m256i_result[3]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[2]) = 0x0000017f00000000; + *((unsigned long *)&__m256i_result[1]) = 0x0000000000000000; + *((unsigned long *)&__m256i_result[0]) = 0x00007f7f03030000; + __m256i_out = __lasx_xvsat_du (__m256i_op0, 0x37); + 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_xvsat_du (__m256i_op0, 0x1); + ASSERTEQ_64 (__LINE__, __m256i_result, __m256i_out); + + return 0; +}