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