#define SIMDE_TEST_ARM_NEON_INSN copy_lane

#include "test-neon.h"
#include "../../../simde/arm/neon/copy_lane.h"
#include "../../../simde/arm/neon/reinterpret.h"

static int
test_simde_vcopy_lane_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int8_t a[8];
    int8_t b[8];
    int8_t r00[8];
    int8_t r13[8];
    int8_t r35[8];
    int8_t r67[8];
    int8_t r71[8];
  } test_vec[] = {
    { { -INT8_C(    78), -INT8_C(    72),  INT8_C(    48),  INT8_C(    97),
        -INT8_C(    62),  INT8_C(   121), -INT8_C(    59), -INT8_C(   109) },
      { -INT8_C(    56), -INT8_C(    86),  INT8_C(   123),  INT8_C(   105),
        -INT8_C(    32),  INT8_C(    96), -INT8_C(    23),  INT8_C(   105) },
      { -INT8_C(    56), -INT8_C(    72),  INT8_C(    48),  INT8_C(    97),
        -INT8_C(    62),  INT8_C(   121), -INT8_C(    59), -INT8_C(   109) },
      { -INT8_C(    78),  INT8_C(   105),  INT8_C(    48),  INT8_C(    97),
        -INT8_C(    62),  INT8_C(   121), -INT8_C(    59), -INT8_C(   109) },
      { -INT8_C(    78), -INT8_C(    72),  INT8_C(    48),  INT8_C(    96),
        -INT8_C(    62),  INT8_C(   121), -INT8_C(    59), -INT8_C(   109) },
      { -INT8_C(    78), -INT8_C(    72),  INT8_C(    48),  INT8_C(    97),
        -INT8_C(    62),  INT8_C(   121),  INT8_C(   105), -INT8_C(   109) },
      { -INT8_C(    78), -INT8_C(    72),  INT8_C(    48),  INT8_C(    97),
        -INT8_C(    62),  INT8_C(   121), -INT8_C(    59), -INT8_C(    86) } },
    { { -INT8_C(   117), -INT8_C(    45), -INT8_C(    85),  INT8_C(     8),
        -INT8_C(    53),  INT8_C(    73),  INT8_C(    39),  INT8_C(    87) },
      { -INT8_C(    93), -INT8_C(    73),  INT8_C(    58),  INT8_C(    17),
         INT8_C(    48),  INT8_C(    96), -INT8_C(   107),  INT8_C(    12) },
      { -INT8_C(    93), -INT8_C(    45), -INT8_C(    85),  INT8_C(     8),
        -INT8_C(    53),  INT8_C(    73),  INT8_C(    39),  INT8_C(    87) },
      { -INT8_C(   117),  INT8_C(    17), -INT8_C(    85),  INT8_C(     8),
        -INT8_C(    53),  INT8_C(    73),  INT8_C(    39),  INT8_C(    87) },
      { -INT8_C(   117), -INT8_C(    45), -INT8_C(    85),  INT8_C(    96),
        -INT8_C(    53),  INT8_C(    73),  INT8_C(    39),  INT8_C(    87) },
      { -INT8_C(   117), -INT8_C(    45), -INT8_C(    85),  INT8_C(     8),
        -INT8_C(    53),  INT8_C(    73),  INT8_C(    12),  INT8_C(    87) },
      { -INT8_C(   117), -INT8_C(    45), -INT8_C(    85),  INT8_C(     8),
        -INT8_C(    53),  INT8_C(    73),  INT8_C(    39), -INT8_C(    73) } },
    { {  INT8_C(   115),  INT8_C(    81), -INT8_C(    94),  INT8_C(   115),
        -INT8_C(    26),  INT8_C(    33),  INT8_C(   109), -INT8_C(   113) },
      {  INT8_C(   115), -INT8_C(     5),  INT8_C(     1),  INT8_C(     9),
         INT8_C(    47), -INT8_C(    57),  INT8_C(     3), -INT8_C(    50) },
      {  INT8_C(   115),  INT8_C(    81), -INT8_C(    94),  INT8_C(   115),
        -INT8_C(    26),  INT8_C(    33),  INT8_C(   109), -INT8_C(   113) },
      {  INT8_C(   115),  INT8_C(     9), -INT8_C(    94),  INT8_C(   115),
        -INT8_C(    26),  INT8_C(    33),  INT8_C(   109), -INT8_C(   113) },
      {  INT8_C(   115),  INT8_C(    81), -INT8_C(    94), -INT8_C(    57),
        -INT8_C(    26),  INT8_C(    33),  INT8_C(   109), -INT8_C(   113) },
      {  INT8_C(   115),  INT8_C(    81), -INT8_C(    94),  INT8_C(   115),
        -INT8_C(    26),  INT8_C(    33), -INT8_C(    50), -INT8_C(   113) },
      {  INT8_C(   115),  INT8_C(    81), -INT8_C(    94),  INT8_C(   115),
        -INT8_C(    26),  INT8_C(    33),  INT8_C(   109), -INT8_C(     5) } },
    { { -INT8_C(    90),  INT8_C(    59), -INT8_C(   106), -INT8_C(   127),
         INT8_C(     1),  INT8_C(    70),  INT8_C(    24), -INT8_C(    55) },
      { -INT8_C(    85),  INT8_C(    64), -INT8_C(    70),  INT8_C(    88),
         INT8_C(   110), -INT8_C(    17),  INT8_C(    56), -INT8_C(    81) },
      { -INT8_C(    85),  INT8_C(    59), -INT8_C(   106), -INT8_C(   127),
         INT8_C(     1),  INT8_C(    70),  INT8_C(    24), -INT8_C(    55) },
      { -INT8_C(    90),  INT8_C(    88), -INT8_C(   106), -INT8_C(   127),
         INT8_C(     1),  INT8_C(    70),  INT8_C(    24), -INT8_C(    55) },
      { -INT8_C(    90),  INT8_C(    59), -INT8_C(   106), -INT8_C(    17),
         INT8_C(     1),  INT8_C(    70),  INT8_C(    24), -INT8_C(    55) },
      { -INT8_C(    90),  INT8_C(    59), -INT8_C(   106), -INT8_C(   127),
         INT8_C(     1),  INT8_C(    70), -INT8_C(    81), -INT8_C(    55) },
      { -INT8_C(    90),  INT8_C(    59), -INT8_C(   106), -INT8_C(   127),
         INT8_C(     1),  INT8_C(    70),  INT8_C(    24),  INT8_C(    64) } },
    { { -INT8_C(    69), -INT8_C(    46), -INT8_C(   114),  INT8_C(    40),
        -INT8_C(    68),  INT8_C(    99), -INT8_C(    54),  INT8_C(    24) },
      { -INT8_C(     6),  INT8_C(    13),  INT8_C(    89), -INT8_C(   127),
         INT8_C(    11), -INT8_C(   122),  INT8_C(    51), -INT8_C(    46) },
      { -INT8_C(     6), -INT8_C(    46), -INT8_C(   114),  INT8_C(    40),
        -INT8_C(    68),  INT8_C(    99), -INT8_C(    54),  INT8_C(    24) },
      { -INT8_C(    69), -INT8_C(   127), -INT8_C(   114),  INT8_C(    40),
        -INT8_C(    68),  INT8_C(    99), -INT8_C(    54),  INT8_C(    24) },
      { -INT8_C(    69), -INT8_C(    46), -INT8_C(   114), -INT8_C(   122),
        -INT8_C(    68),  INT8_C(    99), -INT8_C(    54),  INT8_C(    24) },
      { -INT8_C(    69), -INT8_C(    46), -INT8_C(   114),  INT8_C(    40),
        -INT8_C(    68),  INT8_C(    99), -INT8_C(    46),  INT8_C(    24) },
      { -INT8_C(    69), -INT8_C(    46), -INT8_C(   114),  INT8_C(    40),
        -INT8_C(    68),  INT8_C(    99), -INT8_C(    54),  INT8_C(    13) } },
    { {  INT8_C(   118), -INT8_C(    13),  INT8_C(     7), -INT8_C(    30),
        -INT8_C(    56), -INT8_C(   127),  INT8_C(    34),  INT8_C(     6) },
      {  INT8_C(   118),  INT8_C(    56), -INT8_C(    47),  INT8_C(    71),
        -INT8_C(    67), -INT8_C(   102), -INT8_C(    49),  INT8_C(    23) },
      {  INT8_C(   118), -INT8_C(    13),  INT8_C(     7), -INT8_C(    30),
        -INT8_C(    56), -INT8_C(   127),  INT8_C(    34),  INT8_C(     6) },
      {  INT8_C(   118),  INT8_C(    71),  INT8_C(     7), -INT8_C(    30),
        -INT8_C(    56), -INT8_C(   127),  INT8_C(    34),  INT8_C(     6) },
      {  INT8_C(   118), -INT8_C(    13),  INT8_C(     7), -INT8_C(   102),
        -INT8_C(    56), -INT8_C(   127),  INT8_C(    34),  INT8_C(     6) },
      {  INT8_C(   118), -INT8_C(    13),  INT8_C(     7), -INT8_C(    30),
        -INT8_C(    56), -INT8_C(   127),  INT8_C(    23),  INT8_C(     6) },
      {  INT8_C(   118), -INT8_C(    13),  INT8_C(     7), -INT8_C(    30),
        -INT8_C(    56), -INT8_C(   127),  INT8_C(    34),  INT8_C(    56) } },
    { {  INT8_C(    23), -INT8_C(    45),  INT8_C(    85),  INT8_C(    18),
         INT8_C(   119),        INT8_MAX,  INT8_C(    70),  INT8_C(   119) },
      { -INT8_C(    13), -INT8_C(   123), -INT8_C(     4),  INT8_C(    87),
         INT8_C(    21),  INT8_C(    63),  INT8_C(   115),  INT8_C(     3) },
      { -INT8_C(    13), -INT8_C(    45),  INT8_C(    85),  INT8_C(    18),
         INT8_C(   119),        INT8_MAX,  INT8_C(    70),  INT8_C(   119) },
      {  INT8_C(    23),  INT8_C(    87),  INT8_C(    85),  INT8_C(    18),
         INT8_C(   119),        INT8_MAX,  INT8_C(    70),  INT8_C(   119) },
      {  INT8_C(    23), -INT8_C(    45),  INT8_C(    85),  INT8_C(    63),
         INT8_C(   119),        INT8_MAX,  INT8_C(    70),  INT8_C(   119) },
      {  INT8_C(    23), -INT8_C(    45),  INT8_C(    85),  INT8_C(    18),
         INT8_C(   119),        INT8_MAX,  INT8_C(     3),  INT8_C(   119) },
      {  INT8_C(    23), -INT8_C(    45),  INT8_C(    85),  INT8_C(    18),
         INT8_C(   119),        INT8_MAX,  INT8_C(    70), -INT8_C(   123) } },
    { {  INT8_C(    93), -INT8_C(   117), -INT8_C(    15),  INT8_C(    74),
        -INT8_C(    71),  INT8_C(    82),  INT8_C(    67), -INT8_C(    59) },
      { -INT8_C(    24),  INT8_C(   126),  INT8_C(    78), -INT8_C(   104),
        -INT8_C(   114), -INT8_C(    31),  INT8_C(     4),  INT8_C(     6) },
      { -INT8_C(    24), -INT8_C(   117), -INT8_C(    15),  INT8_C(    74),
        -INT8_C(    71),  INT8_C(    82),  INT8_C(    67), -INT8_C(    59) },
      {  INT8_C(    93), -INT8_C(   104), -INT8_C(    15),  INT8_C(    74),
        -INT8_C(    71),  INT8_C(    82),  INT8_C(    67), -INT8_C(    59) },
      {  INT8_C(    93), -INT8_C(   117), -INT8_C(    15), -INT8_C(    31),
        -INT8_C(    71),  INT8_C(    82),  INT8_C(    67), -INT8_C(    59) },
      {  INT8_C(    93), -INT8_C(   117), -INT8_C(    15),  INT8_C(    74),
        -INT8_C(    71),  INT8_C(    82),  INT8_C(     6), -INT8_C(    59) },
      {  INT8_C(    93), -INT8_C(   117), -INT8_C(    15),  INT8_C(    74),
        -INT8_C(    71),  INT8_C(    82),  INT8_C(    67),  INT8_C(   126) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int8x8_t a = simde_vld1_s8(test_vec[i].a);
    simde_int8x8_t b = simde_vld1_s8(test_vec[i].b);

    simde_int8x8_t r00 = simde_vcopy_lane_s8(a, 0, b, 0);
    simde_int8x8_t r13 = simde_vcopy_lane_s8(a, 1, b, 3);
    simde_int8x8_t r35 = simde_vcopy_lane_s8(a, 3, b, 5);
    simde_int8x8_t r67 = simde_vcopy_lane_s8(a, 6, b, 7);
    simde_int8x8_t r71 = simde_vcopy_lane_s8(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_i8x8(r00, simde_vld1_s8(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_i8x8(r13, simde_vld1_s8(test_vec[i].r13));
    simde_test_arm_neon_assert_equal_i8x8(r35, simde_vld1_s8(test_vec[i].r35));
    simde_test_arm_neon_assert_equal_i8x8(r67, simde_vld1_s8(test_vec[i].r67));
    simde_test_arm_neon_assert_equal_i8x8(r71, simde_vld1_s8(test_vec[i].r71));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int8x8_t a = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t r00 = simde_vcopy_lane_s8(a, 0, b, 0);
    simde_int8x8_t r13 = simde_vcopy_lane_s8(a, 1, b, 3);
    simde_int8x8_t r35 = simde_vcopy_lane_s8(a, 3, b, 5);
    simde_int8x8_t r67 = simde_vcopy_lane_s8(a, 6, b, 7);
    simde_int8x8_t r71 = simde_vcopy_lane_s8(a, 7, b, 1);

    simde_test_arm_neon_write_i8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r35, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r67, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r71, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t a[4];
    int16_t b[4];
    int16_t r00[4];
    int16_t r01[4];
    int16_t r13[4];
    int16_t r22[4];
    int16_t r33[4];
  } test_vec[] = {
    { { -INT16_C(  16325),  INT16_C(  17773), -INT16_C(  20430),  INT16_C(  27334) },
      { -INT16_C(  32517), -INT16_C(  27026),  INT16_C(  30460),  INT16_C(  14613) },
      { -INT16_C(  32517),  INT16_C(  17773), -INT16_C(  20430),  INT16_C(  27334) },
      { -INT16_C(  27026),  INT16_C(  17773), -INT16_C(  20430),  INT16_C(  27334) },
      { -INT16_C(  16325),  INT16_C(  14613), -INT16_C(  20430),  INT16_C(  27334) },
      { -INT16_C(  16325),  INT16_C(  17773),  INT16_C(  30460),  INT16_C(  27334) },
      { -INT16_C(  16325),  INT16_C(  17773), -INT16_C(  20430),  INT16_C(  14613) } },
    { {  INT16_C(  10522), -INT16_C(  20353), -INT16_C(  11907),  INT16_C(  29433) },
      {  INT16_C(  26264), -INT16_C(  19178),  INT16_C(  29217),  INT16_C(   9061) },
      {  INT16_C(  26264), -INT16_C(  20353), -INT16_C(  11907),  INT16_C(  29433) },
      { -INT16_C(  19178), -INT16_C(  20353), -INT16_C(  11907),  INT16_C(  29433) },
      {  INT16_C(  10522),  INT16_C(   9061), -INT16_C(  11907),  INT16_C(  29433) },
      {  INT16_C(  10522), -INT16_C(  20353),  INT16_C(  29217),  INT16_C(  29433) },
      {  INT16_C(  10522), -INT16_C(  20353), -INT16_C(  11907),  INT16_C(   9061) } },
    { { -INT16_C(   4995),  INT16_C(  14378), -INT16_C(   3303), -INT16_C(  17484) },
      { -INT16_C(  10776),  INT16_C(  28644), -INT16_C(  30101),  INT16_C(   2823) },
      { -INT16_C(  10776),  INT16_C(  14378), -INT16_C(   3303), -INT16_C(  17484) },
      {  INT16_C(  28644),  INT16_C(  14378), -INT16_C(   3303), -INT16_C(  17484) },
      { -INT16_C(   4995),  INT16_C(   2823), -INT16_C(   3303), -INT16_C(  17484) },
      { -INT16_C(   4995),  INT16_C(  14378), -INT16_C(  30101), -INT16_C(  17484) },
      { -INT16_C(   4995),  INT16_C(  14378), -INT16_C(   3303),  INT16_C(   2823) } },
    { {  INT16_C(   5225),  INT16_C(  28725), -INT16_C(   5626), -INT16_C(  26400) },
      { -INT16_C(   7612),  INT16_C(  17719),  INT16_C(   9923), -INT16_C(  31132) },
      { -INT16_C(   7612),  INT16_C(  28725), -INT16_C(   5626), -INT16_C(  26400) },
      {  INT16_C(  17719),  INT16_C(  28725), -INT16_C(   5626), -INT16_C(  26400) },
      {  INT16_C(   5225), -INT16_C(  31132), -INT16_C(   5626), -INT16_C(  26400) },
      {  INT16_C(   5225),  INT16_C(  28725),  INT16_C(   9923), -INT16_C(  26400) },
      {  INT16_C(   5225),  INT16_C(  28725), -INT16_C(   5626), -INT16_C(  31132) } },
    { {  INT16_C(  17703),  INT16_C(  16816), -INT16_C(  29954),  INT16_C(  20252) },
      { -INT16_C(   9088), -INT16_C(  13417), -INT16_C(   6695), -INT16_C(  24796) },
      { -INT16_C(   9088),  INT16_C(  16816), -INT16_C(  29954),  INT16_C(  20252) },
      { -INT16_C(  13417),  INT16_C(  16816), -INT16_C(  29954),  INT16_C(  20252) },
      {  INT16_C(  17703), -INT16_C(  24796), -INT16_C(  29954),  INT16_C(  20252) },
      {  INT16_C(  17703),  INT16_C(  16816), -INT16_C(   6695),  INT16_C(  20252) },
      {  INT16_C(  17703),  INT16_C(  16816), -INT16_C(  29954), -INT16_C(  24796) } },
    { {  INT16_C(    666),  INT16_C(  31820), -INT16_C(  16597), -INT16_C(  19256) },
      {  INT16_C(  22386), -INT16_C(  16949), -INT16_C(   7283), -INT16_C(  15292) },
      {  INT16_C(  22386),  INT16_C(  31820), -INT16_C(  16597), -INT16_C(  19256) },
      { -INT16_C(  16949),  INT16_C(  31820), -INT16_C(  16597), -INT16_C(  19256) },
      {  INT16_C(    666), -INT16_C(  15292), -INT16_C(  16597), -INT16_C(  19256) },
      {  INT16_C(    666),  INT16_C(  31820), -INT16_C(   7283), -INT16_C(  19256) },
      {  INT16_C(    666),  INT16_C(  31820), -INT16_C(  16597), -INT16_C(  15292) } },
    { {  INT16_C(  10439),  INT16_C(   1873),  INT16_C(   4081),  INT16_C(  17141) },
      {  INT16_C(  16281), -INT16_C(  18813),  INT16_C(    988),  INT16_C(  29177) },
      {  INT16_C(  16281),  INT16_C(   1873),  INT16_C(   4081),  INT16_C(  17141) },
      { -INT16_C(  18813),  INT16_C(   1873),  INT16_C(   4081),  INT16_C(  17141) },
      {  INT16_C(  10439),  INT16_C(  29177),  INT16_C(   4081),  INT16_C(  17141) },
      {  INT16_C(  10439),  INT16_C(   1873),  INT16_C(    988),  INT16_C(  17141) },
      {  INT16_C(  10439),  INT16_C(   1873),  INT16_C(   4081),  INT16_C(  29177) } },
    { {  INT16_C(  20517), -INT16_C(   1538),  INT16_C(   8824), -INT16_C(     86) },
      { -INT16_C(   3854), -INT16_C(  18339), -INT16_C(   7976), -INT16_C(  23518) },
      { -INT16_C(   3854), -INT16_C(   1538),  INT16_C(   8824), -INT16_C(     86) },
      { -INT16_C(  18339), -INT16_C(   1538),  INT16_C(   8824), -INT16_C(     86) },
      {  INT16_C(  20517), -INT16_C(  23518),  INT16_C(   8824), -INT16_C(     86) },
      {  INT16_C(  20517), -INT16_C(   1538), -INT16_C(   7976), -INT16_C(     86) },
      {  INT16_C(  20517), -INT16_C(   1538),  INT16_C(   8824), -INT16_C(  23518) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int16x4_t a = simde_vld1_s16(test_vec[i].a);
    simde_int16x4_t b = simde_vld1_s16(test_vec[i].b);

    simde_int16x4_t r00 = simde_vcopy_lane_s16(a, 0, b, 0);
    simde_int16x4_t r01 = simde_vcopy_lane_s16(a, 0, b, 1);
    simde_int16x4_t r13 = simde_vcopy_lane_s16(a, 1, b, 3);
    simde_int16x4_t r22 = simde_vcopy_lane_s16(a, 2, b, 2);
    simde_int16x4_t r33 = simde_vcopy_lane_s16(a, 3, b, 3);

    simde_test_arm_neon_assert_equal_i16x4(r00, simde_vld1_s16(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_i16x4(r01, simde_vld1_s16(test_vec[i].r01));
    simde_test_arm_neon_assert_equal_i16x4(r13, simde_vld1_s16(test_vec[i].r13));
    simde_test_arm_neon_assert_equal_i16x4(r22, simde_vld1_s16(test_vec[i].r22));
    simde_test_arm_neon_assert_equal_i16x4(r33, simde_vld1_s16(test_vec[i].r33));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int16x4_t a = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t r00 = simde_vcopy_lane_s16(a, 0, b, 0);
    simde_int16x4_t r01 = simde_vcopy_lane_s16(a, 0, b, 1);
    simde_int16x4_t r13 = simde_vcopy_lane_s16(a, 1, b, 3);
    simde_int16x4_t r22 = simde_vcopy_lane_s16(a, 2, b, 2);
    simde_int16x4_t r33 = simde_vcopy_lane_s16(a, 3, b, 3);

    simde_test_arm_neon_write_i16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r22, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r33, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t a[2];
    int32_t b[2];
    int32_t r00[2];
    int32_t r01[2];
    int32_t r10[2];
    int32_t r11[2];
  } test_vec[] = {
    { { -INT32_C(   161600086),  INT32_C(   847429630) },
      {  INT32_C(   258110270),  INT32_C(   589323412) },
      {  INT32_C(   258110270),  INT32_C(   847429630) },
      {  INT32_C(   589323412),  INT32_C(   847429630) },
      { -INT32_C(   161600086),  INT32_C(   258110270) },
      { -INT32_C(   161600086),  INT32_C(   589323412) } },
    { {  INT32_C(  1335877463), -INT32_C(  1387277215) },
      {  INT32_C(  1261596096),  INT32_C(   118232150) },
      {  INT32_C(  1261596096), -INT32_C(  1387277215) },
      {  INT32_C(   118232150), -INT32_C(  1387277215) },
      {  INT32_C(  1335877463),  INT32_C(  1261596096) },
      {  INT32_C(  1335877463),  INT32_C(   118232150) } },
    { {  INT32_C(  1784099357),  INT32_C(  1027096747) },
      { -INT32_C(   326542255), -INT32_C(   973205552) },
      { -INT32_C(   326542255),  INT32_C(  1027096747) },
      { -INT32_C(   973205552),  INT32_C(  1027096747) },
      {  INT32_C(  1784099357), -INT32_C(   326542255) },
      {  INT32_C(  1784099357), -INT32_C(   973205552) } },
    { {  INT32_C(   587291785), -INT32_C(  2004974741) },
      { -INT32_C(  1494547193), -INT32_C(   402964197) },
      { -INT32_C(  1494547193), -INT32_C(  2004974741) },
      { -INT32_C(   402964197), -INT32_C(  2004974741) },
      {  INT32_C(   587291785), -INT32_C(  1494547193) },
      {  INT32_C(   587291785), -INT32_C(   402964197) } },
    { {  INT32_C(  1305831887),  INT32_C(   923587366) },
      {  INT32_C(  1791728394),  INT32_C(   259186719) },
      {  INT32_C(  1791728394),  INT32_C(   923587366) },
      {  INT32_C(   259186719),  INT32_C(   923587366) },
      {  INT32_C(  1305831887),  INT32_C(  1791728394) },
      {  INT32_C(  1305831887),  INT32_C(   259186719) } },
    { { -INT32_C(  2137273571),  INT32_C(  1583898736) },
      { -INT32_C(  1494663023), -INT32_C(    99880334) },
      { -INT32_C(  1494663023),  INT32_C(  1583898736) },
      { -INT32_C(    99880334),  INT32_C(  1583898736) },
      { -INT32_C(  2137273571), -INT32_C(  1494663023) },
      { -INT32_C(  2137273571), -INT32_C(    99880334) } },
    { {  INT32_C(  1186905933), -INT32_C(   783851572) },
      { -INT32_C(   589687716), -INT32_C(  1794063581) },
      { -INT32_C(   589687716), -INT32_C(   783851572) },
      { -INT32_C(  1794063581), -INT32_C(   783851572) },
      {  INT32_C(  1186905933), -INT32_C(   589687716) },
      {  INT32_C(  1186905933), -INT32_C(  1794063581) } },
    { { -INT32_C(  1701680446), -INT32_C(  1171445663) },
      {  INT32_C(   225795531), -INT32_C(  1238600191) },
      {  INT32_C(   225795531), -INT32_C(  1171445663) },
      { -INT32_C(  1238600191), -INT32_C(  1171445663) },
      { -INT32_C(  1701680446),  INT32_C(   225795531) },
      { -INT32_C(  1701680446), -INT32_C(  1238600191) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int32x2_t a = simde_vld1_s32(test_vec[i].a);
    simde_int32x2_t b = simde_vld1_s32(test_vec[i].b);

    simde_int32x2_t r00 = simde_vcopy_lane_s32(a, 0, b, 0);
    simde_int32x2_t r01 = simde_vcopy_lane_s32(a, 0, b, 1);
    simde_int32x2_t r10 = simde_vcopy_lane_s32(a, 1, b, 0);
    simde_int32x2_t r11 = simde_vcopy_lane_s32(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_i32x2(r00, simde_vld1_s32(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_i32x2(r01, simde_vld1_s32(test_vec[i].r01));
    simde_test_arm_neon_assert_equal_i32x2(r10, simde_vld1_s32(test_vec[i].r10));
    simde_test_arm_neon_assert_equal_i32x2(r11, simde_vld1_s32(test_vec[i].r11));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int32x2_t a = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t r00 = simde_vcopy_lane_s32(a, 0, b, 0);
    simde_int32x2_t r01 = simde_vcopy_lane_s32(a, 0, b, 1);
    simde_int32x2_t r10 = simde_vcopy_lane_s32(a, 1, b, 0);
    simde_int32x2_t r11 = simde_vcopy_lane_s32(a, 1, b, 1);

    simde_test_arm_neon_write_i32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r11, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t a[1];
    int64_t b[1];
    int64_t r00[1];
  } test_vec[] = {
    { {  INT64_C(8113828097391158095) },
      { -INT64_C(590582389174642709) },
      { -INT64_C(590582389174642709) } },
    { { -INT64_C(139101902982008402) },
      { -INT64_C(2324368737080581745) },
      { -INT64_C(2324368737080581745) } },
    { {  INT64_C(1501602908344634063) },
      {  INT64_C(567943954333098302) },
      {  INT64_C(567943954333098302) } },
    { { -INT64_C(3453637575015359548) },
      {  INT64_C(3441876951233273467) },
      {  INT64_C(3441876951233273467) } },
    { { -INT64_C(4915331051121941957) },
      {  INT64_C(8920438462121261266) },
      {  INT64_C(8920438462121261266) } },
    { {  INT64_C(7630574466277382030) },
      { -INT64_C(7035549761693185500) },
      { -INT64_C(7035549761693185500) } },
    { { -INT64_C(8761313260935879654) },
      { -INT64_C(4811158338647994587) },
      { -INT64_C(4811158338647994587) } },
    { {  INT64_C(2316745406423380095) },
      {  INT64_C(1501791097429643221) },
      {  INT64_C(1501791097429643221) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int64x1_t a = simde_vld1_s64(test_vec[i].a);
    simde_int64x1_t b = simde_vld1_s64(test_vec[i].b);

    simde_int64x1_t r00 = simde_vcopy_lane_s64(a, 0, b, 0);

    simde_test_arm_neon_assert_equal_i64x1(r00, simde_vld1_s64(test_vec[i].r00));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int64x1_t a = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t b = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t r00 = simde_vcopy_lane_s64(a, 0, b, 0);

    simde_test_arm_neon_write_i64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, r00, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t a[8];
    uint8_t b[8];
    uint8_t r00[8];
    uint8_t r13[8];
    uint8_t r35[8];
    uint8_t r67[8];
    uint8_t r71[8];
  } test_vec[] = {
    { {  UINT8_C(   28),  UINT8_C(  131),  UINT8_C(  188),  UINT8_C(   60),
         UINT8_C(  207),  UINT8_C(  214),  UINT8_C(    8),  UINT8_C(  235) },
      {  UINT8_C(   28),  UINT8_C(   32),  UINT8_C(  205),  UINT8_C(  168),
         UINT8_C(  242),  UINT8_C(  204),  UINT8_C(   93),  UINT8_C(  235) },
      {  UINT8_C(   28),  UINT8_C(  131),  UINT8_C(  188),  UINT8_C(   60),
         UINT8_C(  207),  UINT8_C(  214),  UINT8_C(    8),  UINT8_C(  235) },
      {  UINT8_C(   28),  UINT8_C(  168),  UINT8_C(  188),  UINT8_C(   60),
         UINT8_C(  207),  UINT8_C(  214),  UINT8_C(    8),  UINT8_C(  235) },
      {  UINT8_C(   28),  UINT8_C(  131),  UINT8_C(  188),  UINT8_C(  204),
         UINT8_C(  207),  UINT8_C(  214),  UINT8_C(    8),  UINT8_C(  235) },
      {  UINT8_C(   28),  UINT8_C(  131),  UINT8_C(  188),  UINT8_C(   60),
         UINT8_C(  207),  UINT8_C(  214),  UINT8_C(  235),  UINT8_C(  235) },
      {  UINT8_C(   28),  UINT8_C(  131),  UINT8_C(  188),  UINT8_C(   60),
         UINT8_C(  207),  UINT8_C(  214),  UINT8_C(    8),  UINT8_C(   32) } },
    { {  UINT8_C(  101),  UINT8_C(   32),  UINT8_C(   14),  UINT8_C(  224),
         UINT8_C(  185),  UINT8_C(  161),  UINT8_C(   63),  UINT8_C(  202) },
      {  UINT8_C(   60),  UINT8_C(  130),  UINT8_C(   95),  UINT8_C(  209),
         UINT8_C(  229),  UINT8_C(  184),  UINT8_C(  227),  UINT8_C(   12) },
      {  UINT8_C(   60),  UINT8_C(   32),  UINT8_C(   14),  UINT8_C(  224),
         UINT8_C(  185),  UINT8_C(  161),  UINT8_C(   63),  UINT8_C(  202) },
      {  UINT8_C(  101),  UINT8_C(  209),  UINT8_C(   14),  UINT8_C(  224),
         UINT8_C(  185),  UINT8_C(  161),  UINT8_C(   63),  UINT8_C(  202) },
      {  UINT8_C(  101),  UINT8_C(   32),  UINT8_C(   14),  UINT8_C(  184),
         UINT8_C(  185),  UINT8_C(  161),  UINT8_C(   63),  UINT8_C(  202) },
      {  UINT8_C(  101),  UINT8_C(   32),  UINT8_C(   14),  UINT8_C(  224),
         UINT8_C(  185),  UINT8_C(  161),  UINT8_C(   12),  UINT8_C(  202) },
      {  UINT8_C(  101),  UINT8_C(   32),  UINT8_C(   14),  UINT8_C(  224),
         UINT8_C(  185),  UINT8_C(  161),  UINT8_C(   63),  UINT8_C(  130) } },
    { {  UINT8_C(  172),  UINT8_C(   54),  UINT8_C(  173),  UINT8_C(  209),
         UINT8_C(  185),  UINT8_C(   49),  UINT8_C(   13),  UINT8_C(   59) },
      {  UINT8_C(   88),  UINT8_C(  109),  UINT8_C(  203),  UINT8_C(   38),
         UINT8_C(  153),  UINT8_C(  233),  UINT8_C(   84),  UINT8_C(   56) },
      {  UINT8_C(   88),  UINT8_C(   54),  UINT8_C(  173),  UINT8_C(  209),
         UINT8_C(  185),  UINT8_C(   49),  UINT8_C(   13),  UINT8_C(   59) },
      {  UINT8_C(  172),  UINT8_C(   38),  UINT8_C(  173),  UINT8_C(  209),
         UINT8_C(  185),  UINT8_C(   49),  UINT8_C(   13),  UINT8_C(   59) },
      {  UINT8_C(  172),  UINT8_C(   54),  UINT8_C(  173),  UINT8_C(  233),
         UINT8_C(  185),  UINT8_C(   49),  UINT8_C(   13),  UINT8_C(   59) },
      {  UINT8_C(  172),  UINT8_C(   54),  UINT8_C(  173),  UINT8_C(  209),
         UINT8_C(  185),  UINT8_C(   49),  UINT8_C(   56),  UINT8_C(   59) },
      {  UINT8_C(  172),  UINT8_C(   54),  UINT8_C(  173),  UINT8_C(  209),
         UINT8_C(  185),  UINT8_C(   49),  UINT8_C(   13),  UINT8_C(  109) } },
    { {  UINT8_C(  128),  UINT8_C(  179),  UINT8_C(  226),  UINT8_C(  249),
         UINT8_C(   55),  UINT8_C(   53),  UINT8_C(  195),  UINT8_C(  252) },
      {  UINT8_C(  137),  UINT8_C(  122),  UINT8_C(  243),  UINT8_C(   28),
         UINT8_C(  171),  UINT8_C(  202),  UINT8_C(  109),  UINT8_C(   75) },
      {  UINT8_C(  137),  UINT8_C(  179),  UINT8_C(  226),  UINT8_C(  249),
         UINT8_C(   55),  UINT8_C(   53),  UINT8_C(  195),  UINT8_C(  252) },
      {  UINT8_C(  128),  UINT8_C(   28),  UINT8_C(  226),  UINT8_C(  249),
         UINT8_C(   55),  UINT8_C(   53),  UINT8_C(  195),  UINT8_C(  252) },
      {  UINT8_C(  128),  UINT8_C(  179),  UINT8_C(  226),  UINT8_C(  202),
         UINT8_C(   55),  UINT8_C(   53),  UINT8_C(  195),  UINT8_C(  252) },
      {  UINT8_C(  128),  UINT8_C(  179),  UINT8_C(  226),  UINT8_C(  249),
         UINT8_C(   55),  UINT8_C(   53),  UINT8_C(   75),  UINT8_C(  252) },
      {  UINT8_C(  128),  UINT8_C(  179),  UINT8_C(  226),  UINT8_C(  249),
         UINT8_C(   55),  UINT8_C(   53),  UINT8_C(  195),  UINT8_C(  122) } },
    { {  UINT8_C(  197),  UINT8_C(  148),  UINT8_C(   89),  UINT8_C(  212),
         UINT8_C(  240),  UINT8_C(   71),  UINT8_C(  254),  UINT8_C(  179) },
      {  UINT8_C(   30),  UINT8_C(  170),  UINT8_C(   21),  UINT8_C(  164),
         UINT8_C(  167),  UINT8_C(   25),  UINT8_C(   80),  UINT8_C(   95) },
      {  UINT8_C(   30),  UINT8_C(  148),  UINT8_C(   89),  UINT8_C(  212),
         UINT8_C(  240),  UINT8_C(   71),  UINT8_C(  254),  UINT8_C(  179) },
      {  UINT8_C(  197),  UINT8_C(  164),  UINT8_C(   89),  UINT8_C(  212),
         UINT8_C(  240),  UINT8_C(   71),  UINT8_C(  254),  UINT8_C(  179) },
      {  UINT8_C(  197),  UINT8_C(  148),  UINT8_C(   89),  UINT8_C(   25),
         UINT8_C(  240),  UINT8_C(   71),  UINT8_C(  254),  UINT8_C(  179) },
      {  UINT8_C(  197),  UINT8_C(  148),  UINT8_C(   89),  UINT8_C(  212),
         UINT8_C(  240),  UINT8_C(   71),  UINT8_C(   95),  UINT8_C(  179) },
      {  UINT8_C(  197),  UINT8_C(  148),  UINT8_C(   89),  UINT8_C(  212),
         UINT8_C(  240),  UINT8_C(   71),  UINT8_C(  254),  UINT8_C(  170) } },
    { {  UINT8_C(    5),  UINT8_C(   43),  UINT8_C(   38),  UINT8_C(  233),
         UINT8_C(  100),  UINT8_C(  180),  UINT8_C(   31),  UINT8_C(   55) },
      {  UINT8_C(   70),  UINT8_C(  169),  UINT8_C(  168),  UINT8_C(  163),
         UINT8_C(   92),  UINT8_C(   80),  UINT8_C(   39),  UINT8_C(  246) },
      {  UINT8_C(   70),  UINT8_C(   43),  UINT8_C(   38),  UINT8_C(  233),
         UINT8_C(  100),  UINT8_C(  180),  UINT8_C(   31),  UINT8_C(   55) },
      {  UINT8_C(    5),  UINT8_C(  163),  UINT8_C(   38),  UINT8_C(  233),
         UINT8_C(  100),  UINT8_C(  180),  UINT8_C(   31),  UINT8_C(   55) },
      {  UINT8_C(    5),  UINT8_C(   43),  UINT8_C(   38),  UINT8_C(   80),
         UINT8_C(  100),  UINT8_C(  180),  UINT8_C(   31),  UINT8_C(   55) },
      {  UINT8_C(    5),  UINT8_C(   43),  UINT8_C(   38),  UINT8_C(  233),
         UINT8_C(  100),  UINT8_C(  180),  UINT8_C(  246),  UINT8_C(   55) },
      {  UINT8_C(    5),  UINT8_C(   43),  UINT8_C(   38),  UINT8_C(  233),
         UINT8_C(  100),  UINT8_C(  180),  UINT8_C(   31),  UINT8_C(  169) } },
    { {  UINT8_C(    4),  UINT8_C(  200),  UINT8_C(  242),  UINT8_C(  164),
         UINT8_C(  145),  UINT8_C(  212),  UINT8_C(   35),  UINT8_C(  159) },
      {  UINT8_C(  208),  UINT8_C(   92),  UINT8_C(   52),  UINT8_C(   62),
         UINT8_C(   71),  UINT8_C(  150),  UINT8_C(  218),  UINT8_C(  187) },
      {  UINT8_C(  208),  UINT8_C(  200),  UINT8_C(  242),  UINT8_C(  164),
         UINT8_C(  145),  UINT8_C(  212),  UINT8_C(   35),  UINT8_C(  159) },
      {  UINT8_C(    4),  UINT8_C(   62),  UINT8_C(  242),  UINT8_C(  164),
         UINT8_C(  145),  UINT8_C(  212),  UINT8_C(   35),  UINT8_C(  159) },
      {  UINT8_C(    4),  UINT8_C(  200),  UINT8_C(  242),  UINT8_C(  150),
         UINT8_C(  145),  UINT8_C(  212),  UINT8_C(   35),  UINT8_C(  159) },
      {  UINT8_C(    4),  UINT8_C(  200),  UINT8_C(  242),  UINT8_C(  164),
         UINT8_C(  145),  UINT8_C(  212),  UINT8_C(  187),  UINT8_C(  159) },
      {  UINT8_C(    4),  UINT8_C(  200),  UINT8_C(  242),  UINT8_C(  164),
         UINT8_C(  145),  UINT8_C(  212),  UINT8_C(   35),  UINT8_C(   92) } },
    { {  UINT8_C(  182),  UINT8_C(   17),  UINT8_C(  219),  UINT8_C(   25),
         UINT8_C(  214),  UINT8_C(  210),  UINT8_C(  208),  UINT8_C(   22) },
      {  UINT8_C(  183),  UINT8_C(   91),  UINT8_C(  242),  UINT8_C(   21),
         UINT8_C(  129),  UINT8_C(  215),  UINT8_C(   52),  UINT8_C(  219) },
      {  UINT8_C(  183),  UINT8_C(   17),  UINT8_C(  219),  UINT8_C(   25),
         UINT8_C(  214),  UINT8_C(  210),  UINT8_C(  208),  UINT8_C(   22) },
      {  UINT8_C(  182),  UINT8_C(   21),  UINT8_C(  219),  UINT8_C(   25),
         UINT8_C(  214),  UINT8_C(  210),  UINT8_C(  208),  UINT8_C(   22) },
      {  UINT8_C(  182),  UINT8_C(   17),  UINT8_C(  219),  UINT8_C(  215),
         UINT8_C(  214),  UINT8_C(  210),  UINT8_C(  208),  UINT8_C(   22) },
      {  UINT8_C(  182),  UINT8_C(   17),  UINT8_C(  219),  UINT8_C(   25),
         UINT8_C(  214),  UINT8_C(  210),  UINT8_C(  219),  UINT8_C(   22) },
      {  UINT8_C(  182),  UINT8_C(   17),  UINT8_C(  219),  UINT8_C(   25),
         UINT8_C(  214),  UINT8_C(  210),  UINT8_C(  208),  UINT8_C(   91) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
    simde_uint8x8_t b = simde_vld1_u8(test_vec[i].b);

    simde_uint8x8_t r00 = simde_vcopy_lane_u8(a, 0, b, 0);
    simde_uint8x8_t r13 = simde_vcopy_lane_u8(a, 1, b, 3);
    simde_uint8x8_t r35 = simde_vcopy_lane_u8(a, 3, b, 5);
    simde_uint8x8_t r67 = simde_vcopy_lane_u8(a, 6, b, 7);
    simde_uint8x8_t r71 = simde_vcopy_lane_u8(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_u8x8(r00, simde_vld1_u8(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_u8x8(r13, simde_vld1_u8(test_vec[i].r13));
    simde_test_arm_neon_assert_equal_u8x8(r35, simde_vld1_u8(test_vec[i].r35));
    simde_test_arm_neon_assert_equal_u8x8(r67, simde_vld1_u8(test_vec[i].r67));
    simde_test_arm_neon_assert_equal_u8x8(r71, simde_vld1_u8(test_vec[i].r71));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t b = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t r00 = simde_vcopy_lane_u8(a, 0, b, 0);
    simde_uint8x8_t r13 = simde_vcopy_lane_u8(a, 1, b, 3);
    simde_uint8x8_t r35 = simde_vcopy_lane_u8(a, 3, b, 5);
    simde_uint8x8_t r67 = simde_vcopy_lane_u8(a, 6, b, 7);
    simde_uint8x8_t r71 = simde_vcopy_lane_u8(a, 7, b, 1);

    simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r35, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r67, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r71, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t a[4];
    uint16_t b[4];
    uint16_t r00[4];
    uint16_t r01[4];
    uint16_t r13[4];
    uint16_t r22[4];
    uint16_t r33[4];
  } test_vec[] = {
    { {  UINT16_C(   48859),  UINT16_C(   37110),  UINT16_C(   57365),  UINT16_C(   56893) },
      {  UINT16_C(   44198),  UINT16_C(   17208),  UINT16_C(   42682),  UINT16_C(   14084) },
      {  UINT16_C(   44198),  UINT16_C(   37110),  UINT16_C(   57365),  UINT16_C(   56893) },
      {  UINT16_C(   17208),  UINT16_C(   37110),  UINT16_C(   57365),  UINT16_C(   56893) },
      {  UINT16_C(   48859),  UINT16_C(   14084),  UINT16_C(   57365),  UINT16_C(   56893) },
      {  UINT16_C(   48859),  UINT16_C(   37110),  UINT16_C(   42682),  UINT16_C(   56893) },
      {  UINT16_C(   48859),  UINT16_C(   37110),  UINT16_C(   57365),  UINT16_C(   14084) } },
    { {  UINT16_C(   32518),  UINT16_C(   27430),  UINT16_C(   25434),  UINT16_C(   15734) },
      {  UINT16_C(   17681),  UINT16_C(    1758),  UINT16_C(   14425),  UINT16_C(   18152) },
      {  UINT16_C(   17681),  UINT16_C(   27430),  UINT16_C(   25434),  UINT16_C(   15734) },
      {  UINT16_C(    1758),  UINT16_C(   27430),  UINT16_C(   25434),  UINT16_C(   15734) },
      {  UINT16_C(   32518),  UINT16_C(   18152),  UINT16_C(   25434),  UINT16_C(   15734) },
      {  UINT16_C(   32518),  UINT16_C(   27430),  UINT16_C(   14425),  UINT16_C(   15734) },
      {  UINT16_C(   32518),  UINT16_C(   27430),  UINT16_C(   25434),  UINT16_C(   18152) } },
    { {  UINT16_C(   35029),  UINT16_C(   40800),  UINT16_C(   57927),  UINT16_C(   58796) },
      {  UINT16_C(   38243),  UINT16_C(   28472),  UINT16_C(   61138),  UINT16_C(   52923) },
      {  UINT16_C(   38243),  UINT16_C(   40800),  UINT16_C(   57927),  UINT16_C(   58796) },
      {  UINT16_C(   28472),  UINT16_C(   40800),  UINT16_C(   57927),  UINT16_C(   58796) },
      {  UINT16_C(   35029),  UINT16_C(   52923),  UINT16_C(   57927),  UINT16_C(   58796) },
      {  UINT16_C(   35029),  UINT16_C(   40800),  UINT16_C(   61138),  UINT16_C(   58796) },
      {  UINT16_C(   35029),  UINT16_C(   40800),  UINT16_C(   57927),  UINT16_C(   52923) } },
    { {  UINT16_C(   14462),  UINT16_C(   31329),  UINT16_C(   44021),  UINT16_C(   37135) },
      {  UINT16_C(   36643),  UINT16_C(    8499),  UINT16_C(   55329),  UINT16_C(   45901) },
      {  UINT16_C(   36643),  UINT16_C(   31329),  UINT16_C(   44021),  UINT16_C(   37135) },
      {  UINT16_C(    8499),  UINT16_C(   31329),  UINT16_C(   44021),  UINT16_C(   37135) },
      {  UINT16_C(   14462),  UINT16_C(   45901),  UINT16_C(   44021),  UINT16_C(   37135) },
      {  UINT16_C(   14462),  UINT16_C(   31329),  UINT16_C(   55329),  UINT16_C(   37135) },
      {  UINT16_C(   14462),  UINT16_C(   31329),  UINT16_C(   44021),  UINT16_C(   45901) } },
    { {  UINT16_C(   18155),  UINT16_C(   29451),  UINT16_C(    9594),  UINT16_C(   47476) },
      {  UINT16_C(   36782),  UINT16_C(   10647),  UINT16_C(   14223),  UINT16_C(    3446) },
      {  UINT16_C(   36782),  UINT16_C(   29451),  UINT16_C(    9594),  UINT16_C(   47476) },
      {  UINT16_C(   10647),  UINT16_C(   29451),  UINT16_C(    9594),  UINT16_C(   47476) },
      {  UINT16_C(   18155),  UINT16_C(    3446),  UINT16_C(    9594),  UINT16_C(   47476) },
      {  UINT16_C(   18155),  UINT16_C(   29451),  UINT16_C(   14223),  UINT16_C(   47476) },
      {  UINT16_C(   18155),  UINT16_C(   29451),  UINT16_C(    9594),  UINT16_C(    3446) } },
    { {  UINT16_C(   39055),  UINT16_C(   58824),  UINT16_C(   16709),  UINT16_C(   26292) },
      {  UINT16_C(   52894),  UINT16_C(   53794),  UINT16_C(   27364),  UINT16_C(    9410) },
      {  UINT16_C(   52894),  UINT16_C(   58824),  UINT16_C(   16709),  UINT16_C(   26292) },
      {  UINT16_C(   53794),  UINT16_C(   58824),  UINT16_C(   16709),  UINT16_C(   26292) },
      {  UINT16_C(   39055),  UINT16_C(    9410),  UINT16_C(   16709),  UINT16_C(   26292) },
      {  UINT16_C(   39055),  UINT16_C(   58824),  UINT16_C(   27364),  UINT16_C(   26292) },
      {  UINT16_C(   39055),  UINT16_C(   58824),  UINT16_C(   16709),  UINT16_C(    9410) } },
    { {  UINT16_C(    3714),  UINT16_C(   45544),  UINT16_C(   10782),  UINT16_C(   53336) },
      {  UINT16_C(   53247),  UINT16_C(   29686),  UINT16_C(   23527),  UINT16_C(   52801) },
      {  UINT16_C(   53247),  UINT16_C(   45544),  UINT16_C(   10782),  UINT16_C(   53336) },
      {  UINT16_C(   29686),  UINT16_C(   45544),  UINT16_C(   10782),  UINT16_C(   53336) },
      {  UINT16_C(    3714),  UINT16_C(   52801),  UINT16_C(   10782),  UINT16_C(   53336) },
      {  UINT16_C(    3714),  UINT16_C(   45544),  UINT16_C(   23527),  UINT16_C(   53336) },
      {  UINT16_C(    3714),  UINT16_C(   45544),  UINT16_C(   10782),  UINT16_C(   52801) } },
    { {  UINT16_C(     956),  UINT16_C(   38216),  UINT16_C(   64583),  UINT16_C(   19844) },
      {  UINT16_C(   55529),  UINT16_C(    5655),  UINT16_C(   39007),  UINT16_C(   36038) },
      {  UINT16_C(   55529),  UINT16_C(   38216),  UINT16_C(   64583),  UINT16_C(   19844) },
      {  UINT16_C(    5655),  UINT16_C(   38216),  UINT16_C(   64583),  UINT16_C(   19844) },
      {  UINT16_C(     956),  UINT16_C(   36038),  UINT16_C(   64583),  UINT16_C(   19844) },
      {  UINT16_C(     956),  UINT16_C(   38216),  UINT16_C(   39007),  UINT16_C(   19844) },
      {  UINT16_C(     956),  UINT16_C(   38216),  UINT16_C(   64583),  UINT16_C(   36038) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
    simde_uint16x4_t b = simde_vld1_u16(test_vec[i].b);

    simde_uint16x4_t r00 = simde_vcopy_lane_u16(a, 0, b, 0);
    simde_uint16x4_t r01 = simde_vcopy_lane_u16(a, 0, b, 1);
    simde_uint16x4_t r13 = simde_vcopy_lane_u16(a, 1, b, 3);
    simde_uint16x4_t r22 = simde_vcopy_lane_u16(a, 2, b, 2);
    simde_uint16x4_t r33 = simde_vcopy_lane_u16(a, 3, b, 3);

    simde_test_arm_neon_assert_equal_u16x4(r00, simde_vld1_u16(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_u16x4(r01, simde_vld1_u16(test_vec[i].r01));
    simde_test_arm_neon_assert_equal_u16x4(r13, simde_vld1_u16(test_vec[i].r13));
    simde_test_arm_neon_assert_equal_u16x4(r22, simde_vld1_u16(test_vec[i].r22));
    simde_test_arm_neon_assert_equal_u16x4(r33, simde_vld1_u16(test_vec[i].r33));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t b = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t r00 = simde_vcopy_lane_u16(a, 0, b, 0);
    simde_uint16x4_t r01 = simde_vcopy_lane_u16(a, 0, b, 1);
    simde_uint16x4_t r13 = simde_vcopy_lane_u16(a, 1, b, 3);
    simde_uint16x4_t r22 = simde_vcopy_lane_u16(a, 2, b, 2);
    simde_uint16x4_t r33 = simde_vcopy_lane_u16(a, 3, b, 3);

    simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r22, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r33, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t a[2];
    uint32_t b[2];
    uint32_t r00[2];
    uint32_t r01[2];
    uint32_t r10[2];
    uint32_t r11[2];
  } test_vec[] = {
    { {  UINT32_C(  1845930776),  UINT32_C(  3844134345) },
      {  UINT32_C(  1849881073),  UINT32_C(  3913321945) },
      {  UINT32_C(  1849881073),  UINT32_C(  3844134345) },
      {  UINT32_C(  3913321945),  UINT32_C(  3844134345) },
      {  UINT32_C(  1845930776),  UINT32_C(  1849881073) },
      {  UINT32_C(  1845930776),  UINT32_C(  3913321945) } },
    { {  UINT32_C(  2795833089),  UINT32_C(  3073381716) },
      {  UINT32_C(  3744189582),  UINT32_C(  2223479106) },
      {  UINT32_C(  3744189582),  UINT32_C(  3073381716) },
      {  UINT32_C(  2223479106),  UINT32_C(  3073381716) },
      {  UINT32_C(  2795833089),  UINT32_C(  3744189582) },
      {  UINT32_C(  2795833089),  UINT32_C(  2223479106) } },
    { {  UINT32_C(   850448814),  UINT32_C(  3018325402) },
      {  UINT32_C(  4276357940),  UINT32_C(  1105496326) },
      {  UINT32_C(  4276357940),  UINT32_C(  3018325402) },
      {  UINT32_C(  1105496326),  UINT32_C(  3018325402) },
      {  UINT32_C(   850448814),  UINT32_C(  4276357940) },
      {  UINT32_C(   850448814),  UINT32_C(  1105496326) } },
    { {  UINT32_C(   316065699),  UINT32_C(  3151513231) },
      {  UINT32_C(   361459012),  UINT32_C(  3957792290) },
      {  UINT32_C(   361459012),  UINT32_C(  3151513231) },
      {  UINT32_C(  3957792290),  UINT32_C(  3151513231) },
      {  UINT32_C(   316065699),  UINT32_C(   361459012) },
      {  UINT32_C(   316065699),  UINT32_C(  3957792290) } },
    { {  UINT32_C(  4188653768),  UINT32_C(  4220115240) },
      {  UINT32_C(   923671752),  UINT32_C(  2829963684) },
      {  UINT32_C(   923671752),  UINT32_C(  4220115240) },
      {  UINT32_C(  2829963684),  UINT32_C(  4220115240) },
      {  UINT32_C(  4188653768),  UINT32_C(   923671752) },
      {  UINT32_C(  4188653768),  UINT32_C(  2829963684) } },
    { {  UINT32_C(  2782303633),  UINT32_C(  2680224312) },
      {  UINT32_C(  2278952676),  UINT32_C(  3042603857) },
      {  UINT32_C(  2278952676),  UINT32_C(  2680224312) },
      {  UINT32_C(  3042603857),  UINT32_C(  2680224312) },
      {  UINT32_C(  2782303633),  UINT32_C(  2278952676) },
      {  UINT32_C(  2782303633),  UINT32_C(  3042603857) } },
    { {  UINT32_C(  2497286721),  UINT32_C(  2408904758) },
      {  UINT32_C(  1300967812),  UINT32_C(  2801168690) },
      {  UINT32_C(  1300967812),  UINT32_C(  2408904758) },
      {  UINT32_C(  2801168690),  UINT32_C(  2408904758) },
      {  UINT32_C(  2497286721),  UINT32_C(  1300967812) },
      {  UINT32_C(  2497286721),  UINT32_C(  2801168690) } },
    { {  UINT32_C(  3765890668),  UINT32_C(  3157704832) },
      {  UINT32_C(  3135164014),  UINT32_C(  1487743293) },
      {  UINT32_C(  3135164014),  UINT32_C(  3157704832) },
      {  UINT32_C(  1487743293),  UINT32_C(  3157704832) },
      {  UINT32_C(  3765890668),  UINT32_C(  3135164014) },
      {  UINT32_C(  3765890668),  UINT32_C(  1487743293) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
    simde_uint32x2_t b = simde_vld1_u32(test_vec[i].b);

    simde_uint32x2_t r00 = simde_vcopy_lane_u32(a, 0, b, 0);
    simde_uint32x2_t r01 = simde_vcopy_lane_u32(a, 0, b, 1);
    simde_uint32x2_t r10 = simde_vcopy_lane_u32(a, 1, b, 0);
    simde_uint32x2_t r11 = simde_vcopy_lane_u32(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_u32x2(r00, simde_vld1_u32(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_u32x2(r01, simde_vld1_u32(test_vec[i].r01));
    simde_test_arm_neon_assert_equal_u32x2(r10, simde_vld1_u32(test_vec[i].r10));
    simde_test_arm_neon_assert_equal_u32x2(r11, simde_vld1_u32(test_vec[i].r11));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t b = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t r00 = simde_vcopy_lane_u32(a, 0, b, 0);
    simde_uint32x2_t r01 = simde_vcopy_lane_u32(a, 0, b, 1);
    simde_uint32x2_t r10 = simde_vcopy_lane_u32(a, 1, b, 0);
    simde_uint32x2_t r11 = simde_vcopy_lane_u32(a, 1, b, 1);

    simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r11, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t a[1];
    uint64_t b[1];
    uint64_t r00[1];
  } test_vec[] = {
    { {  UINT64_C( 3055880545951251893) },
      {  UINT64_C( 4769400864024572261) },
      {  UINT64_C( 4769400864024572261) } },
    { {  UINT64_C(10022377050862213090) },
      {  UINT64_C(  709100166864470872) },
      {  UINT64_C(  709100166864470872) } },
    { {  UINT64_C(14501613329003973833) },
      {  UINT64_C( 1949783300048066942) },
      {  UINT64_C( 1949783300048066942) } },
    { {  UINT64_C( 4269142848878481025) },
      {  UINT64_C(13395296486420650805) },
      {  UINT64_C(13395296486420650805) } },
    { {  UINT64_C(16135277955010204355) },
      {  UINT64_C( 8074912141013526827) },
      {  UINT64_C( 8074912141013526827) } },
    { {  UINT64_C( 2540591871860474721) },
      {  UINT64_C( 3018004574689373093) },
      {  UINT64_C( 3018004574689373093) } },
    { {  UINT64_C( 6078212644320502818) },
      {  UINT64_C( 5640613611397537144) },
      {  UINT64_C( 5640613611397537144) } },
    { {  UINT64_C(17738531384755593185) },
      {  UINT64_C(12574375413058459129) },
      {  UINT64_C(12574375413058459129) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
    simde_uint64x1_t b = simde_vld1_u64(test_vec[i].b);

    simde_uint64x1_t r00 = simde_vcopy_lane_u64(a, 0, b, 0);

    simde_test_arm_neon_assert_equal_u64x1(r00, simde_vld1_u64(test_vec[i].r00));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t b = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t r00 = simde_vcopy_lane_u64(a, 0, b, 0);

    simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, r00, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32_t a[2];
    simde_float32_t b[2];
    simde_float32_t r00[2];
    simde_float32_t r01[2];
    simde_float32_t r10[2];
    simde_float32_t r11[2];
  } test_vec[] = {
    { { -SIMDE_FLOAT32_C(7872.434), -SIMDE_FLOAT32_C(5331.952) },
      { -SIMDE_FLOAT32_C( 676.709),  SIMDE_FLOAT32_C(3911.896) },
      { -SIMDE_FLOAT32_C( 676.709), -SIMDE_FLOAT32_C(5331.952) },
      {  SIMDE_FLOAT32_C(3911.896), -SIMDE_FLOAT32_C(5331.952) },
      { -SIMDE_FLOAT32_C(7872.434), -SIMDE_FLOAT32_C( 676.709) },
      { -SIMDE_FLOAT32_C(7872.434),  SIMDE_FLOAT32_C(3911.896) } },
    { { -SIMDE_FLOAT32_C(7795.166),  SIMDE_FLOAT32_C(5870.333) },
      {  SIMDE_FLOAT32_C(7542.590),  SIMDE_FLOAT32_C(9623.578) },
      {  SIMDE_FLOAT32_C(7542.590),  SIMDE_FLOAT32_C(5870.333) },
      {  SIMDE_FLOAT32_C(9623.578),  SIMDE_FLOAT32_C(5870.333) },
      { -SIMDE_FLOAT32_C(7795.166),  SIMDE_FLOAT32_C(7542.590) },
      { -SIMDE_FLOAT32_C(7795.166),  SIMDE_FLOAT32_C(9623.578) } },
    { {  SIMDE_FLOAT32_C(9280.762), -SIMDE_FLOAT32_C(9574.360) },
      {  SIMDE_FLOAT32_C(1067.386),  SIMDE_FLOAT32_C(4955.505) },
      {  SIMDE_FLOAT32_C(1067.386), -SIMDE_FLOAT32_C(9574.360) },
      {  SIMDE_FLOAT32_C(4955.505), -SIMDE_FLOAT32_C(9574.360) },
      {  SIMDE_FLOAT32_C(9280.762),  SIMDE_FLOAT32_C(1067.386) },
      {  SIMDE_FLOAT32_C(9280.762),  SIMDE_FLOAT32_C(4955.505) } },
    { { -SIMDE_FLOAT32_C(5985.849),  SIMDE_FLOAT32_C(4135.134) },
      { -SIMDE_FLOAT32_C(1607.159), -SIMDE_FLOAT32_C(7509.242) },
      { -SIMDE_FLOAT32_C(1607.159),  SIMDE_FLOAT32_C(4135.134) },
      { -SIMDE_FLOAT32_C(7509.242),  SIMDE_FLOAT32_C(4135.134) },
      { -SIMDE_FLOAT32_C(5985.849), -SIMDE_FLOAT32_C(1607.159) },
      { -SIMDE_FLOAT32_C(5985.849), -SIMDE_FLOAT32_C(7509.242) } },
    { { -SIMDE_FLOAT32_C(4353.862),  SIMDE_FLOAT32_C(3343.175) },
      {  SIMDE_FLOAT32_C(6301.056),  SIMDE_FLOAT32_C(6250.665) },
      {  SIMDE_FLOAT32_C(6301.056),  SIMDE_FLOAT32_C(3343.175) },
      {  SIMDE_FLOAT32_C(6250.665),  SIMDE_FLOAT32_C(3343.175) },
      { -SIMDE_FLOAT32_C(4353.862),  SIMDE_FLOAT32_C(6301.056) },
      { -SIMDE_FLOAT32_C(4353.862),  SIMDE_FLOAT32_C(6250.665) } },
    { { -SIMDE_FLOAT32_C(2707.744), -SIMDE_FLOAT32_C(8746.154) },
      { -SIMDE_FLOAT32_C(4845.834), -SIMDE_FLOAT32_C(5771.376) },
      { -SIMDE_FLOAT32_C(4845.834), -SIMDE_FLOAT32_C(8746.154) },
      { -SIMDE_FLOAT32_C(5771.376), -SIMDE_FLOAT32_C(8746.154) },
      { -SIMDE_FLOAT32_C(2707.744), -SIMDE_FLOAT32_C(4845.834) },
      { -SIMDE_FLOAT32_C(2707.744), -SIMDE_FLOAT32_C(5771.376) } },
    { { -SIMDE_FLOAT32_C(5351.658),  SIMDE_FLOAT32_C(4436.026) },
      {  SIMDE_FLOAT32_C( 568.685),  SIMDE_FLOAT32_C(2344.722) },
      {  SIMDE_FLOAT32_C( 568.685),  SIMDE_FLOAT32_C(4436.026) },
      {  SIMDE_FLOAT32_C(2344.722),  SIMDE_FLOAT32_C(4436.026) },
      { -SIMDE_FLOAT32_C(5351.658),  SIMDE_FLOAT32_C( 568.685) },
      { -SIMDE_FLOAT32_C(5351.658),  SIMDE_FLOAT32_C(2344.722) } },
    { { -SIMDE_FLOAT32_C(4624.979), -SIMDE_FLOAT32_C(3015.579) },
      {  SIMDE_FLOAT32_C(7762.184),  SIMDE_FLOAT32_C(3041.834) },
      {  SIMDE_FLOAT32_C(7762.184), -SIMDE_FLOAT32_C(3015.579) },
      {  SIMDE_FLOAT32_C(3041.834), -SIMDE_FLOAT32_C(3015.579) },
      { -SIMDE_FLOAT32_C(4624.979),  SIMDE_FLOAT32_C(7762.184) },
      { -SIMDE_FLOAT32_C(4624.979),  SIMDE_FLOAT32_C(3041.834) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32x2_t a = simde_vld1_f32(test_vec[i].a);
    simde_float32x2_t b = simde_vld1_f32(test_vec[i].b);

    simde_float32x2_t r00 = simde_vcopy_lane_f32(a, 0, b, 0);
    simde_float32x2_t r01 = simde_vcopy_lane_f32(a, 0, b, 1);
    simde_float32x2_t r10 = simde_vcopy_lane_f32(a, 1, b, 0);
    simde_float32x2_t r11 = simde_vcopy_lane_f32(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_f32x2(r00, simde_vld1_f32(test_vec[i].r00), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x2(r01, simde_vld1_f32(test_vec[i].r01), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x2(r10, simde_vld1_f32(test_vec[i].r10), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x2(r11, simde_vld1_f32(test_vec[i].r11), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float32x2_t a = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t r00 = simde_vcopy_lane_f32(a, 0, b, 0);
    simde_float32x2_t r01 = simde_vcopy_lane_f32(a, 0, b, 1);
    simde_float32x2_t r10 = simde_vcopy_lane_f32(a, 1, b, 0);
    simde_float32x2_t r11 = simde_vcopy_lane_f32(a, 1, b, 1);

    simde_test_arm_neon_write_f32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r10, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r11, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64_t a[1];
    simde_float64_t b[1];
    simde_float64_t r00[1];
  } test_vec[] = {
    { {  SIMDE_FLOAT64_C(   75436.250) },
      { -SIMDE_FLOAT64_C(  308233.375) },
      { -SIMDE_FLOAT64_C(  308233.375) } },
    { {  SIMDE_FLOAT64_C(  679840.750) },
      { -SIMDE_FLOAT64_C(  665586.875) },
      { -SIMDE_FLOAT64_C(  665586.875) } },
    { {  SIMDE_FLOAT64_C(  211015.500) },
      { -SIMDE_FLOAT64_C(  944742.812) },
      { -SIMDE_FLOAT64_C(  944742.812) } },
    { { -SIMDE_FLOAT64_C(  696791.812) },
      {  SIMDE_FLOAT64_C(  948299.000) },
      {  SIMDE_FLOAT64_C(  948299.000) } },
    { { -SIMDE_FLOAT64_C(  100363.250) },
      {  SIMDE_FLOAT64_C(  741415.125) },
      {  SIMDE_FLOAT64_C(  741415.125) } },
    { {  SIMDE_FLOAT64_C(  832180.750) },
      {  SIMDE_FLOAT64_C(  235085.625) },
      {  SIMDE_FLOAT64_C(  235085.625) } },
    { { -SIMDE_FLOAT64_C(  800552.562) },
      { -SIMDE_FLOAT64_C(  864425.500) },
      { -SIMDE_FLOAT64_C(  864425.500) } },
    { {  SIMDE_FLOAT64_C(  434821.625) },
      {  SIMDE_FLOAT64_C(  765610.500) },
      {  SIMDE_FLOAT64_C(  765610.500) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64x1_t a = simde_vld1_f64(test_vec[i].a);
    simde_float64x1_t b = simde_vld1_f64(test_vec[i].b);

    simde_float64x1_t r00 = simde_vcopy_lane_f64(a, 0, b, 0);

    simde_test_arm_neon_assert_equal_f64x1(r00, simde_vld1_f64(test_vec[i].r00), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float64x1_t a = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x1_t b = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x1_t r00 = simde_vcopy_lane_f64(a, 0, b, 0);

    simde_test_arm_neon_write_f64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, r00, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int8_t a[8];
    int8_t b[16];
    int8_t r0_0[8];
    int8_t r1_3[8];
    int8_t r3_8[8];
    int8_t r6_12[8];
    int8_t r7_15[8];
  } test_vec[] = {
    { { -INT8_C(    35),  INT8_C(   102), -INT8_C(    10), -INT8_C(    58),
         INT8_C(    85),  INT8_C(    88),  INT8_C(     9), -INT8_C(    69) },
      { -INT8_C(    55), -INT8_C(     1), -INT8_C(    62),  INT8_C(   105),
         INT8_C(    72), -INT8_C(    82), -INT8_C(    33),  INT8_C(    53),
         INT8_C(    74), -INT8_C(    56),  INT8_C(    88),  INT8_C(    16),
        -INT8_C(    32),  INT8_C(    35),  INT8_C(    39), -INT8_C(     2) },
      { -INT8_C(    55),  INT8_C(   102), -INT8_C(    10), -INT8_C(    58),
         INT8_C(    85),  INT8_C(    88),  INT8_C(     9), -INT8_C(    69) },
      { -INT8_C(    35),  INT8_C(   105), -INT8_C(    10), -INT8_C(    58),
         INT8_C(    85),  INT8_C(    88),  INT8_C(     9), -INT8_C(    69) },
      { -INT8_C(    35),  INT8_C(   102), -INT8_C(    10),  INT8_C(    74),
         INT8_C(    85),  INT8_C(    88),  INT8_C(     9), -INT8_C(    69) },
      { -INT8_C(    35),  INT8_C(   102), -INT8_C(    10), -INT8_C(    58),
         INT8_C(    85),  INT8_C(    88), -INT8_C(    32), -INT8_C(    69) },
      { -INT8_C(    35),  INT8_C(   102), -INT8_C(    10), -INT8_C(    58),
         INT8_C(    85),  INT8_C(    88),  INT8_C(     9), -INT8_C(     2) } },
    { { -INT8_C(    65), -INT8_C(   111),  INT8_C(     3), -INT8_C(    57),
        -INT8_C(    57),        INT8_MIN, -INT8_C(   116), -INT8_C(    29) },
      { -INT8_C(   115), -INT8_C(    86), -INT8_C(    27),  INT8_C(   110),
         INT8_C(    88),  INT8_C(    80),  INT8_C(   102), -INT8_C(     9),
        -INT8_C(    78), -INT8_C(    88), -INT8_C(    17), -INT8_C(   111),
         INT8_C(   124), -INT8_C(     6),  INT8_C(    54),  INT8_C(    36) },
      { -INT8_C(   115), -INT8_C(   111),  INT8_C(     3), -INT8_C(    57),
        -INT8_C(    57),        INT8_MIN, -INT8_C(   116), -INT8_C(    29) },
      { -INT8_C(    65),  INT8_C(   110),  INT8_C(     3), -INT8_C(    57),
        -INT8_C(    57),        INT8_MIN, -INT8_C(   116), -INT8_C(    29) },
      { -INT8_C(    65), -INT8_C(   111),  INT8_C(     3), -INT8_C(    78),
        -INT8_C(    57),        INT8_MIN, -INT8_C(   116), -INT8_C(    29) },
      { -INT8_C(    65), -INT8_C(   111),  INT8_C(     3), -INT8_C(    57),
        -INT8_C(    57),        INT8_MIN,  INT8_C(   124), -INT8_C(    29) },
      { -INT8_C(    65), -INT8_C(   111),  INT8_C(     3), -INT8_C(    57),
        -INT8_C(    57),        INT8_MIN, -INT8_C(   116),  INT8_C(    36) } },
    { { -INT8_C(     1), -INT8_C(     3), -INT8_C(    46), -INT8_C(    19),
        -INT8_C(    58),  INT8_C(    65), -INT8_C(    22), -INT8_C(   118) },
      { -INT8_C(    30),  INT8_C(   120),  INT8_C(    48), -INT8_C(   112),
        -INT8_C(   117), -INT8_C(    67),  INT8_C(    61),  INT8_C(    19),
         INT8_C(    99),  INT8_C(   114),  INT8_C(   100), -INT8_C(    50),
         INT8_C(   110),  INT8_C(    89),  INT8_C(    99), -INT8_C(    65) },
      { -INT8_C(    30), -INT8_C(     3), -INT8_C(    46), -INT8_C(    19),
        -INT8_C(    58),  INT8_C(    65), -INT8_C(    22), -INT8_C(   118) },
      { -INT8_C(     1), -INT8_C(   112), -INT8_C(    46), -INT8_C(    19),
        -INT8_C(    58),  INT8_C(    65), -INT8_C(    22), -INT8_C(   118) },
      { -INT8_C(     1), -INT8_C(     3), -INT8_C(    46),  INT8_C(    99),
        -INT8_C(    58),  INT8_C(    65), -INT8_C(    22), -INT8_C(   118) },
      { -INT8_C(     1), -INT8_C(     3), -INT8_C(    46), -INT8_C(    19),
        -INT8_C(    58),  INT8_C(    65),  INT8_C(   110), -INT8_C(   118) },
      { -INT8_C(     1), -INT8_C(     3), -INT8_C(    46), -INT8_C(    19),
        -INT8_C(    58),  INT8_C(    65), -INT8_C(    22), -INT8_C(    65) } },
    { {  INT8_C(    19),  INT8_C(    70),  INT8_C(    77),  INT8_C(     8),
         INT8_C(    50), -INT8_C(   109),  INT8_C(    80),  INT8_C(    45) },
      {  INT8_C(   118), -INT8_C(    88),  INT8_C(   104),  INT8_C(    19),
        -INT8_C(   118), -INT8_C(   113), -INT8_C(    59),  INT8_C(     8),
        -INT8_C(    64), -INT8_C(    37),  INT8_C(    34), -INT8_C(    33),
        -INT8_C(   123), -INT8_C(    39),  INT8_C(     7),  INT8_C(    35) },
      {  INT8_C(   118),  INT8_C(    70),  INT8_C(    77),  INT8_C(     8),
         INT8_C(    50), -INT8_C(   109),  INT8_C(    80),  INT8_C(    45) },
      {  INT8_C(    19),  INT8_C(    19),  INT8_C(    77),  INT8_C(     8),
         INT8_C(    50), -INT8_C(   109),  INT8_C(    80),  INT8_C(    45) },
      {  INT8_C(    19),  INT8_C(    70),  INT8_C(    77), -INT8_C(    64),
         INT8_C(    50), -INT8_C(   109),  INT8_C(    80),  INT8_C(    45) },
      {  INT8_C(    19),  INT8_C(    70),  INT8_C(    77),  INT8_C(     8),
         INT8_C(    50), -INT8_C(   109), -INT8_C(   123),  INT8_C(    45) },
      {  INT8_C(    19),  INT8_C(    70),  INT8_C(    77),  INT8_C(     8),
         INT8_C(    50), -INT8_C(   109),  INT8_C(    80),  INT8_C(    35) } },
    { { -INT8_C(    20),  INT8_C(    35), -INT8_C(    98),  INT8_C(   102),
         INT8_C(   105), -INT8_C(    62), -INT8_C(    46),  INT8_C(     1) },
      { -INT8_C(    49), -INT8_C(    82),  INT8_C(   116),  INT8_C(    35),
        -INT8_C(    40), -INT8_C(   127), -INT8_C(    23), -INT8_C(    22),
         INT8_C(    94), -INT8_C(    63), -INT8_C(    77),  INT8_C(   101),
         INT8_C(   123), -INT8_C(    24), -INT8_C(    51),  INT8_C(    56) },
      { -INT8_C(    49),  INT8_C(    35), -INT8_C(    98),  INT8_C(   102),
         INT8_C(   105), -INT8_C(    62), -INT8_C(    46),  INT8_C(     1) },
      { -INT8_C(    20),  INT8_C(    35), -INT8_C(    98),  INT8_C(   102),
         INT8_C(   105), -INT8_C(    62), -INT8_C(    46),  INT8_C(     1) },
      { -INT8_C(    20),  INT8_C(    35), -INT8_C(    98),  INT8_C(    94),
         INT8_C(   105), -INT8_C(    62), -INT8_C(    46),  INT8_C(     1) },
      { -INT8_C(    20),  INT8_C(    35), -INT8_C(    98),  INT8_C(   102),
         INT8_C(   105), -INT8_C(    62),  INT8_C(   123),  INT8_C(     1) },
      { -INT8_C(    20),  INT8_C(    35), -INT8_C(    98),  INT8_C(   102),
         INT8_C(   105), -INT8_C(    62), -INT8_C(    46),  INT8_C(    56) } },
    { { -INT8_C(    83), -INT8_C(    91), -INT8_C(   122), -INT8_C(    55),
         INT8_C(    71), -INT8_C(    34),  INT8_C(     2), -INT8_C(    43) },
      {  INT8_C(    36),  INT8_C(    74),  INT8_C(    23),  INT8_C(     4),
         INT8_C(    54), -INT8_C(     8), -INT8_C(    68), -INT8_C(    46),
         INT8_C(   110),  INT8_C(     0),  INT8_C(    46), -INT8_C(   123),
         INT8_C(    54),  INT8_C(    39),  INT8_C(   121), -INT8_C(    55) },
      {  INT8_C(    36), -INT8_C(    91), -INT8_C(   122), -INT8_C(    55),
         INT8_C(    71), -INT8_C(    34),  INT8_C(     2), -INT8_C(    43) },
      { -INT8_C(    83),  INT8_C(     4), -INT8_C(   122), -INT8_C(    55),
         INT8_C(    71), -INT8_C(    34),  INT8_C(     2), -INT8_C(    43) },
      { -INT8_C(    83), -INT8_C(    91), -INT8_C(   122),  INT8_C(   110),
         INT8_C(    71), -INT8_C(    34),  INT8_C(     2), -INT8_C(    43) },
      { -INT8_C(    83), -INT8_C(    91), -INT8_C(   122), -INT8_C(    55),
         INT8_C(    71), -INT8_C(    34),  INT8_C(    54), -INT8_C(    43) },
      { -INT8_C(    83), -INT8_C(    91), -INT8_C(   122), -INT8_C(    55),
         INT8_C(    71), -INT8_C(    34),  INT8_C(     2), -INT8_C(    55) } },
    { { -INT8_C(    48), -INT8_C(    42), -INT8_C(   114), -INT8_C(   127),
         INT8_C(     2), -INT8_C(    91), -INT8_C(     1),  INT8_C(    31) },
      {  INT8_C(    72), -INT8_C(    60),  INT8_C(    68),  INT8_C(    40),
         INT8_C(   103),  INT8_C(    92), -INT8_C(   104), -INT8_C(   105),
         INT8_C(     5), -INT8_C(    10),  INT8_C(   101),  INT8_C(    15),
        -INT8_C(   100),  INT8_C(   101), -INT8_C(    12), -INT8_C(    31) },
      {  INT8_C(    72), -INT8_C(    42), -INT8_C(   114), -INT8_C(   127),
         INT8_C(     2), -INT8_C(    91), -INT8_C(     1),  INT8_C(    31) },
      { -INT8_C(    48),  INT8_C(    40), -INT8_C(   114), -INT8_C(   127),
         INT8_C(     2), -INT8_C(    91), -INT8_C(     1),  INT8_C(    31) },
      { -INT8_C(    48), -INT8_C(    42), -INT8_C(   114),  INT8_C(     5),
         INT8_C(     2), -INT8_C(    91), -INT8_C(     1),  INT8_C(    31) },
      { -INT8_C(    48), -INT8_C(    42), -INT8_C(   114), -INT8_C(   127),
         INT8_C(     2), -INT8_C(    91), -INT8_C(   100),  INT8_C(    31) },
      { -INT8_C(    48), -INT8_C(    42), -INT8_C(   114), -INT8_C(   127),
         INT8_C(     2), -INT8_C(    91), -INT8_C(     1), -INT8_C(    31) } },
    { { -INT8_C(   117), -INT8_C(    59), -INT8_C(   110), -INT8_C(   122),
         INT8_C(    97), -INT8_C(    17),  INT8_C(    15),  INT8_C(   106) },
      {  INT8_C(    81), -INT8_C(    59),  INT8_C(   121), -INT8_C(    42),
         INT8_C(    97), -INT8_C(    50), -INT8_C(   102), -INT8_C(    32),
         INT8_C(    49), -INT8_C(   103), -INT8_C(    84),  INT8_C(     2),
        -INT8_C(    33),        INT8_MIN, -INT8_C(    60),  INT8_C(    81) },
      {  INT8_C(    81), -INT8_C(    59), -INT8_C(   110), -INT8_C(   122),
         INT8_C(    97), -INT8_C(    17),  INT8_C(    15),  INT8_C(   106) },
      { -INT8_C(   117), -INT8_C(    42), -INT8_C(   110), -INT8_C(   122),
         INT8_C(    97), -INT8_C(    17),  INT8_C(    15),  INT8_C(   106) },
      { -INT8_C(   117), -INT8_C(    59), -INT8_C(   110),  INT8_C(    49),
         INT8_C(    97), -INT8_C(    17),  INT8_C(    15),  INT8_C(   106) },
      { -INT8_C(   117), -INT8_C(    59), -INT8_C(   110), -INT8_C(   122),
         INT8_C(    97), -INT8_C(    17), -INT8_C(    33),  INT8_C(   106) },
      { -INT8_C(   117), -INT8_C(    59), -INT8_C(   110), -INT8_C(   122),
         INT8_C(    97), -INT8_C(    17),  INT8_C(    15),  INT8_C(    81) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int8x8_t a = simde_vld1_s8(test_vec[i].a);
    simde_int8x16_t b = simde_vld1q_s8(test_vec[i].b);

    simde_int8x8_t r0_0 = simde_vcopy_laneq_s8(a, 0, b, 0);
    simde_int8x8_t r1_3 = simde_vcopy_laneq_s8(a, 1, b, 3);
    simde_int8x8_t r3_8 = simde_vcopy_laneq_s8(a, 3, b, 8);
    simde_int8x8_t r6_12 = simde_vcopy_laneq_s8(a, 6, b, 12);
    simde_int8x8_t r7_15 = simde_vcopy_laneq_s8(a, 7, b, 15);

    simde_test_arm_neon_assert_equal_i8x8(r0_0, simde_vld1_s8(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_i8x8(r1_3, simde_vld1_s8(test_vec[i].r1_3));
    simde_test_arm_neon_assert_equal_i8x8(r3_8, simde_vld1_s8(test_vec[i].r3_8));
    simde_test_arm_neon_assert_equal_i8x8(r6_12, simde_vld1_s8(test_vec[i].r6_12));
    simde_test_arm_neon_assert_equal_i8x8(r7_15, simde_vld1_s8(test_vec[i].r7_15));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int8x8_t a = simde_test_arm_neon_random_i8x8();
    simde_int8x16_t b = simde_test_arm_neon_random_i8x16();
    simde_int8x8_t r0_0 = simde_vcopy_laneq_s8(a, 0, b, 0);
    simde_int8x8_t r1_3 = simde_vcopy_laneq_s8(a, 1, b, 3);
    simde_int8x8_t r3_8 = simde_vcopy_laneq_s8(a, 3, b, 8);
    simde_int8x8_t r6_12 = simde_vcopy_laneq_s8(a, 6, b, 12);
    simde_int8x8_t r7_15 = simde_vcopy_laneq_s8(a, 7, b, 15);

    simde_test_arm_neon_write_i8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r3_8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r6_12, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, r7_15, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t a[4];
    int16_t b[8];
    int16_t r0_0[4];
    int16_t r1_3[4];
    int16_t r2_5[4];
    int16_t r3_7[4];
  } test_vec[] = {
    { {  INT16_C(   11568),  INT16_C(    1189), -INT16_C(   31827), -INT16_C(   15215) },
      { -INT16_C(    7146), -INT16_C(    9374), -INT16_C(   14179),  INT16_C(   15036),
        -INT16_C(   20968),  INT16_C(   10399), -INT16_C(   25296), -INT16_C(   27806) },
      { -INT16_C(    7146),  INT16_C(    1189), -INT16_C(   31827), -INT16_C(   15215) },
      {  INT16_C(   11568),  INT16_C(   15036), -INT16_C(   31827), -INT16_C(   15215) },
      {  INT16_C(   11568),  INT16_C(    1189),  INT16_C(   10399), -INT16_C(   15215) },
      {  INT16_C(   11568),  INT16_C(    1189), -INT16_C(   31827), -INT16_C(   27806) } },
    { { -INT16_C(   29466),  INT16_C(   12540), -INT16_C(   32471),  INT16_C(   25566) },
      {  INT16_C(    3723),  INT16_C(   12785), -INT16_C(   31701), -INT16_C(   20907),
        -INT16_C(   15423),  INT16_C(    7301),  INT16_C(   23738),  INT16_C(   27813) },
      {  INT16_C(    3723),  INT16_C(   12540), -INT16_C(   32471),  INT16_C(   25566) },
      { -INT16_C(   29466), -INT16_C(   20907), -INT16_C(   32471),  INT16_C(   25566) },
      { -INT16_C(   29466),  INT16_C(   12540),  INT16_C(    7301),  INT16_C(   25566) },
      { -INT16_C(   29466),  INT16_C(   12540), -INT16_C(   32471),  INT16_C(   27813) } },
    { { -INT16_C(   26183), -INT16_C(    5597), -INT16_C(    2230), -INT16_C(   10015) },
      {  INT16_C(   26576), -INT16_C(    8824), -INT16_C(   28847),  INT16_C(    4173),
         INT16_C(   25260),  INT16_C(   12404),  INT16_C(   31395),  INT16_C(   21002) },
      {  INT16_C(   26576), -INT16_C(    5597), -INT16_C(    2230), -INT16_C(   10015) },
      { -INT16_C(   26183),  INT16_C(    4173), -INT16_C(    2230), -INT16_C(   10015) },
      { -INT16_C(   26183), -INT16_C(    5597),  INT16_C(   12404), -INT16_C(   10015) },
      { -INT16_C(   26183), -INT16_C(    5597), -INT16_C(    2230),  INT16_C(   21002) } },
    { {  INT16_C(    6672),  INT16_C(   15408), -INT16_C(    2985), -INT16_C(   17248) },
      {  INT16_C(    7532), -INT16_C(    4273),  INT16_C(   31970), -INT16_C(    3753),
         INT16_C(   17390),  INT16_C(   14312),  INT16_C(    5983), -INT16_C(   19903) },
      {  INT16_C(    7532),  INT16_C(   15408), -INT16_C(    2985), -INT16_C(   17248) },
      {  INT16_C(    6672), -INT16_C(    3753), -INT16_C(    2985), -INT16_C(   17248) },
      {  INT16_C(    6672),  INT16_C(   15408),  INT16_C(   14312), -INT16_C(   17248) },
      {  INT16_C(    6672),  INT16_C(   15408), -INT16_C(    2985), -INT16_C(   19903) } },
    { {  INT16_C(   10634),  INT16_C(   13785), -INT16_C(   21124),  INT16_C(   18819) },
      { -INT16_C(   23606), -INT16_C(   23575),  INT16_C(   23736), -INT16_C(   14515),
        -INT16_C(   28372), -INT16_C(   21675), -INT16_C(   29450), -INT16_C(    8419) },
      { -INT16_C(   23606),  INT16_C(   13785), -INT16_C(   21124),  INT16_C(   18819) },
      {  INT16_C(   10634), -INT16_C(   14515), -INT16_C(   21124),  INT16_C(   18819) },
      {  INT16_C(   10634),  INT16_C(   13785), -INT16_C(   21675),  INT16_C(   18819) },
      {  INT16_C(   10634),  INT16_C(   13785), -INT16_C(   21124), -INT16_C(    8419) } },
    { { -INT16_C(    2153),  INT16_C(   11458), -INT16_C(    5624), -INT16_C(   18131) },
      { -INT16_C(   25804), -INT16_C(   24558), -INT16_C(   10190),  INT16_C(   16869),
         INT16_C(   21833),  INT16_C(   10951), -INT16_C(    4960), -INT16_C(   24993) },
      { -INT16_C(   25804),  INT16_C(   11458), -INT16_C(    5624), -INT16_C(   18131) },
      { -INT16_C(    2153),  INT16_C(   16869), -INT16_C(    5624), -INT16_C(   18131) },
      { -INT16_C(    2153),  INT16_C(   11458),  INT16_C(   10951), -INT16_C(   18131) },
      { -INT16_C(    2153),  INT16_C(   11458), -INT16_C(    5624), -INT16_C(   24993) } },
    { { -INT16_C(   12465),  INT16_C(   11890),  INT16_C(   12124),  INT16_C(   10524) },
      {  INT16_C(   29032), -INT16_C(      41),  INT16_C(   12620),  INT16_C(   26779),
         INT16_C(   10646),  INT16_C(   12590), -INT16_C(   29637), -INT16_C(   18553) },
      {  INT16_C(   29032),  INT16_C(   11890),  INT16_C(   12124),  INT16_C(   10524) },
      { -INT16_C(   12465),  INT16_C(   26779),  INT16_C(   12124),  INT16_C(   10524) },
      { -INT16_C(   12465),  INT16_C(   11890),  INT16_C(   12590),  INT16_C(   10524) },
      { -INT16_C(   12465),  INT16_C(   11890),  INT16_C(   12124), -INT16_C(   18553) } },
    { { -INT16_C(    6289),  INT16_C(   21955), -INT16_C(   10116),  INT16_C(    9614) },
      {  INT16_C(   25780), -INT16_C(    2709), -INT16_C(   29858),  INT16_C(   17932),
         INT16_C(   27686), -INT16_C(   30566), -INT16_C(    1086), -INT16_C(   10968) },
      {  INT16_C(   25780),  INT16_C(   21955), -INT16_C(   10116),  INT16_C(    9614) },
      { -INT16_C(    6289),  INT16_C(   17932), -INT16_C(   10116),  INT16_C(    9614) },
      { -INT16_C(    6289),  INT16_C(   21955), -INT16_C(   30566),  INT16_C(    9614) },
      { -INT16_C(    6289),  INT16_C(   21955), -INT16_C(   10116), -INT16_C(   10968) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int16x4_t a = simde_vld1_s16(test_vec[i].a);
    simde_int16x8_t b = simde_vld1q_s16(test_vec[i].b);

    simde_int16x4_t r0_0 = simde_vcopy_laneq_s16(a, 0, b, 0);
    simde_int16x4_t r1_3 = simde_vcopy_laneq_s16(a, 1, b, 3);
    simde_int16x4_t r2_5 = simde_vcopy_laneq_s16(a, 2, b, 5);
    simde_int16x4_t r3_7 = simde_vcopy_laneq_s16(a, 3, b, 7);

    simde_test_arm_neon_assert_equal_i16x4(r0_0, simde_vld1_s16(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_i16x4(r1_3, simde_vld1_s16(test_vec[i].r1_3));
    simde_test_arm_neon_assert_equal_i16x4(r2_5, simde_vld1_s16(test_vec[i].r2_5));
    simde_test_arm_neon_assert_equal_i16x4(r3_7, simde_vld1_s16(test_vec[i].r3_7));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int16x4_t a = simde_test_arm_neon_random_i16x4();
    simde_int16x8_t b = simde_test_arm_neon_random_i16x8();
    simde_int16x4_t r0_0 = simde_vcopy_laneq_s16(a, 0, b, 0);
    simde_int16x4_t r1_3 = simde_vcopy_laneq_s16(a, 1, b, 3);
    simde_int16x4_t r2_5 = simde_vcopy_laneq_s16(a, 2, b, 5);
    simde_int16x4_t r3_7 = simde_vcopy_laneq_s16(a, 3, b, 7);

    simde_test_arm_neon_write_i16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r2_5, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, r3_7, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t a[2];
    int32_t b[4];
    int32_t r0_0[2];
    int32_t r0_2[2];
    int32_t r1_1[2];
    int32_t r1_3[2];
  } test_vec[] = {
    { {  INT32_C(  1084595629), -INT32_C(  1950361537) },
      {  INT32_C(  1443362392),  INT32_C(  1640750526),  INT32_C(   895649900),  INT32_C(  1359771437) },
      {  INT32_C(  1443362392), -INT32_C(  1950361537) },
      {  INT32_C(   895649900), -INT32_C(  1950361537) },
      {  INT32_C(  1084595629),  INT32_C(  1640750526) },
      {  INT32_C(  1084595629),  INT32_C(  1359771437) } },
    { { -INT32_C(  1748970842),  INT32_C(  2053463719) },
      {  INT32_C(    19379512), -INT32_C(  1861133592), -INT32_C(   529529470),  INT32_C(   388681637) },
      {  INT32_C(    19379512),  INT32_C(  2053463719) },
      { -INT32_C(   529529470),  INT32_C(  2053463719) },
      { -INT32_C(  1748970842), -INT32_C(  1861133592) },
      { -INT32_C(  1748970842),  INT32_C(   388681637) } },
    { {  INT32_C(  1476418479), -INT32_C(  1924452234) },
      {  INT32_C(  2070023191), -INT32_C(    53868389), -INT32_C(   266392323), -INT32_C(   474980198) },
      {  INT32_C(  2070023191), -INT32_C(  1924452234) },
      { -INT32_C(   266392323), -INT32_C(  1924452234) },
      {  INT32_C(  1476418479), -INT32_C(    53868389) },
      {  INT32_C(  1476418479), -INT32_C(   474980198) } },
    { {  INT32_C(   629708170), -INT32_C(  1981353517) },
      {  INT32_C(   376672318), -INT32_C(  1618425121),  INT32_C(    34344684), -INT32_C(  2024844639) },
      {  INT32_C(   376672318), -INT32_C(  1981353517) },
      {  INT32_C(    34344684), -INT32_C(  1981353517) },
      {  INT32_C(   629708170), -INT32_C(  1618425121) },
      {  INT32_C(   629708170), -INT32_C(  2024844639) } },
    { { -INT32_C(  1168139645), -INT32_C(  1639571907) },
      {  INT32_C(  1818508399),  INT32_C(  1912849895), -INT32_C(    81367675), -INT32_C(   933616398) },
      {  INT32_C(  1818508399), -INT32_C(  1639571907) },
      { -INT32_C(    81367675), -INT32_C(  1639571907) },
      { -INT32_C(  1168139645),  INT32_C(  1912849895) },
      { -INT32_C(  1168139645), -INT32_C(   933616398) } },
    { {  INT32_C(  1391980757),  INT32_C(    34941896) },
      { -INT32_C(   428457330),  INT32_C(   205780721), -INT32_C(   331850439),  INT32_C(  1610682246) },
      { -INT32_C(   428457330),  INT32_C(    34941896) },
      { -INT32_C(   331850439),  INT32_C(    34941896) },
      {  INT32_C(  1391980757),  INT32_C(   205780721) },
      {  INT32_C(  1391980757),  INT32_C(  1610682246) } },
    { { -INT32_C(   332770313), -INT32_C(    40080371) },
      { -INT32_C(  1900488554),  INT32_C(   497830222), -INT32_C(   522537965), -INT32_C(  1036126695) },
      { -INT32_C(  1900488554), -INT32_C(    40080371) },
      { -INT32_C(   522537965), -INT32_C(    40080371) },
      { -INT32_C(   332770313),  INT32_C(   497830222) },
      { -INT32_C(   332770313), -INT32_C(  1036126695) } },
    { { -INT32_C(  1146060113),  INT32_C(  1919349998) },
      {  INT32_C(  1840725219), -INT32_C(  1422378091), -INT32_C(  1992513290), -INT32_C(    21119508) },
      {  INT32_C(  1840725219),  INT32_C(  1919349998) },
      { -INT32_C(  1992513290),  INT32_C(  1919349998) },
      { -INT32_C(  1146060113), -INT32_C(  1422378091) },
      { -INT32_C(  1146060113), -INT32_C(    21119508) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int32x2_t a = simde_vld1_s32(test_vec[i].a);
    simde_int32x4_t b = simde_vld1q_s32(test_vec[i].b);

    simde_int32x2_t r0_0 = simde_vcopy_laneq_s32(a, 0, b, 0);
    simde_int32x2_t r0_2 = simde_vcopy_laneq_s32(a, 0, b, 2);
    simde_int32x2_t r1_1 = simde_vcopy_laneq_s32(a, 1, b, 1);
    simde_int32x2_t r1_3 = simde_vcopy_laneq_s32(a, 1, b, 3);

    simde_test_arm_neon_assert_equal_i32x2(r0_0, simde_vld1_s32(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_i32x2(r0_2, simde_vld1_s32(test_vec[i].r0_2));
    simde_test_arm_neon_assert_equal_i32x2(r1_1, simde_vld1_s32(test_vec[i].r1_1));
    simde_test_arm_neon_assert_equal_i32x2(r1_3, simde_vld1_s32(test_vec[i].r1_3));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int32x2_t a = simde_test_arm_neon_random_i32x2();
    simde_int32x4_t b = simde_test_arm_neon_random_i32x4();
    simde_int32x2_t r0_0 = simde_vcopy_laneq_s32(a, 0, b, 0);
    simde_int32x2_t r0_2 = simde_vcopy_laneq_s32(a, 0, b, 2);
    simde_int32x2_t r1_1 = simde_vcopy_laneq_s32(a, 1, b, 1);
    simde_int32x2_t r1_3 = simde_vcopy_laneq_s32(a, 1, b, 3);

    simde_test_arm_neon_write_i32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r0_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r1_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, r1_3, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t a[1];
    int64_t b[2];
    int64_t r0_0[1];
    int64_t r0_1[1];
  } test_vec[] = {
    { { -INT64_C( 5524975992096568302) },
      {  INT64_C( 5928209276499224928),  INT64_C( 3570587797784554636) },
      {  INT64_C( 5928209276499224928) },
      {  INT64_C( 3570587797784554636) } },
    { { -INT64_C( 5698335035773134399) },
      {  INT64_C( 4781888000487025832),  INT64_C( 1507882669637173008) },
      {  INT64_C( 4781888000487025832) },
      {  INT64_C( 1507882669637173008) } },
    { { -INT64_C( 2144038387548032181) },
      { -INT64_C( 8135906999096004888), -INT64_C( 3560370611244798922) },
      { -INT64_C( 8135906999096004888) },
      { -INT64_C( 3560370611244798922) } },
    { { -INT64_C(  117785309047793137) },
      { -INT64_C( 1882610051046624115),  INT64_C( 7186331988604967381) },
      { -INT64_C( 1882610051046624115) },
      {  INT64_C( 7186331988604967381) } },
    { {  INT64_C( 4066640187066630269) },
      { -INT64_C( 4494233011176271376), -INT64_C( 3865763807733887293) },
      { -INT64_C( 4494233011176271376) },
      { -INT64_C( 3865763807733887293) } },
    { { -INT64_C( 6040197928986056700) },
      {  INT64_C( 1006231244329940143),  INT64_C( 2476886300863804510) },
      {  INT64_C( 1006231244329940143) },
      {  INT64_C( 2476886300863804510) } },
    { { -INT64_C( 7084452747101498475) },
      { -INT64_C( 7001274548870075067),  INT64_C( 4002777076668709871) },
      { -INT64_C( 7001274548870075067) },
      {  INT64_C( 4002777076668709871) } },
    { {  INT64_C(  163938470204546022) },
      { -INT64_C( 5694319174922918088), -INT64_C( 1823313391809624358) },
      { -INT64_C( 5694319174922918088) },
      { -INT64_C( 1823313391809624358) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int64x1_t a = simde_vld1_s64(test_vec[i].a);
    simde_int64x2_t b = simde_vld1q_s64(test_vec[i].b);

    simde_int64x1_t r0_0 = simde_vcopy_laneq_s64(a, 0, b, 0);
    simde_int64x1_t r0_1 = simde_vcopy_laneq_s64(a, 0, b, 1);

    simde_test_arm_neon_assert_equal_i64x1(r0_0, simde_vld1_s64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_i64x1(r0_1, simde_vld1_s64(test_vec[i].r0_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int64x1_t a = simde_test_arm_neon_random_i64x1();
    simde_int64x2_t b = simde_test_arm_neon_random_i64x2();
    simde_int64x1_t r0_0 = simde_vcopy_laneq_s64(a, 0, b, 0);
    simde_int64x1_t r0_1 = simde_vcopy_laneq_s64(a, 0, b, 1);

    simde_test_arm_neon_write_i64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, r0_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t a[8];
    uint8_t b[16];
    uint8_t r0_0[8];
    uint8_t r1_3[8];
    uint8_t r3_8[8];
    uint8_t r6_12[8];
    uint8_t r7_15[8];
  } test_vec[] = {
    { {  UINT8_C(   99),  UINT8_C(   40),  UINT8_C(   75),  UINT8_C(   35),
         UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   87),  UINT8_C(  222) },
      {  UINT8_C(   52),  UINT8_C(    1),  UINT8_C(  224),  UINT8_C(  221),
         UINT8_C(  253),  UINT8_C(  198),  UINT8_C(  240),  UINT8_C(   81),
         UINT8_C(  184),  UINT8_C(  118),  UINT8_C(    1),  UINT8_C(  200),
         UINT8_C(   52),  UINT8_C(  165),  UINT8_C(  148),  UINT8_C(   99) },
      {  UINT8_C(   52),  UINT8_C(   40),  UINT8_C(   75),  UINT8_C(   35),
         UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   87),  UINT8_C(  222) },
      {  UINT8_C(   99),  UINT8_C(  221),  UINT8_C(   75),  UINT8_C(   35),
         UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   87),  UINT8_C(  222) },
      {  UINT8_C(   99),  UINT8_C(   40),  UINT8_C(   75),  UINT8_C(  184),
         UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   87),  UINT8_C(  222) },
      {  UINT8_C(   99),  UINT8_C(   40),  UINT8_C(   75),  UINT8_C(   35),
         UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   52),  UINT8_C(  222) },
      {  UINT8_C(   99),  UINT8_C(   40),  UINT8_C(   75),  UINT8_C(   35),
         UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   87),  UINT8_C(   99) } },
    { {  UINT8_C(  212),  UINT8_C(   86),  UINT8_C(  230),  UINT8_C(  248),
         UINT8_C(   64),  UINT8_C(  245),  UINT8_C(  189),  UINT8_C(   69) },
      {  UINT8_C(  189),  UINT8_C(  213),  UINT8_C(   28),  UINT8_C(  243),
         UINT8_C(  192),  UINT8_C(   83),  UINT8_C(   82),  UINT8_C(   86),
         UINT8_C(  253),  UINT8_C(  168),  UINT8_C(  184),  UINT8_C(   57),
         UINT8_C(  162),  UINT8_C(  132),  UINT8_C(  109),  UINT8_C(   69) },
      {  UINT8_C(  189),  UINT8_C(   86),  UINT8_C(  230),  UINT8_C(  248),
         UINT8_C(   64),  UINT8_C(  245),  UINT8_C(  189),  UINT8_C(   69) },
      {  UINT8_C(  212),  UINT8_C(  243),  UINT8_C(  230),  UINT8_C(  248),
         UINT8_C(   64),  UINT8_C(  245),  UINT8_C(  189),  UINT8_C(   69) },
      {  UINT8_C(  212),  UINT8_C(   86),  UINT8_C(  230),  UINT8_C(  253),
         UINT8_C(   64),  UINT8_C(  245),  UINT8_C(  189),  UINT8_C(   69) },
      {  UINT8_C(  212),  UINT8_C(   86),  UINT8_C(  230),  UINT8_C(  248),
         UINT8_C(   64),  UINT8_C(  245),  UINT8_C(  162),  UINT8_C(   69) },
      {  UINT8_C(  212),  UINT8_C(   86),  UINT8_C(  230),  UINT8_C(  248),
         UINT8_C(   64),  UINT8_C(  245),  UINT8_C(  189),  UINT8_C(   69) } },
    { {  UINT8_C(   29),  UINT8_C(  103),  UINT8_C(  152),  UINT8_C(  196),
         UINT8_C(   89),  UINT8_C(   91),  UINT8_C(  206),  UINT8_C(  196) },
      {  UINT8_C(   66),  UINT8_C(  242),  UINT8_C(   97),  UINT8_C(   23),
         UINT8_C(  124),  UINT8_C(   30),  UINT8_C(  240),  UINT8_C(   31),
         UINT8_C(  105),  UINT8_C(  243),  UINT8_C(   21),  UINT8_C(  146),
         UINT8_C(    3),  UINT8_C(  218),  UINT8_C(   80),  UINT8_C(  224) },
      {  UINT8_C(   66),  UINT8_C(  103),  UINT8_C(  152),  UINT8_C(  196),
         UINT8_C(   89),  UINT8_C(   91),  UINT8_C(  206),  UINT8_C(  196) },
      {  UINT8_C(   29),  UINT8_C(   23),  UINT8_C(  152),  UINT8_C(  196),
         UINT8_C(   89),  UINT8_C(   91),  UINT8_C(  206),  UINT8_C(  196) },
      {  UINT8_C(   29),  UINT8_C(  103),  UINT8_C(  152),  UINT8_C(  105),
         UINT8_C(   89),  UINT8_C(   91),  UINT8_C(  206),  UINT8_C(  196) },
      {  UINT8_C(   29),  UINT8_C(  103),  UINT8_C(  152),  UINT8_C(  196),
         UINT8_C(   89),  UINT8_C(   91),  UINT8_C(    3),  UINT8_C(  196) },
      {  UINT8_C(   29),  UINT8_C(  103),  UINT8_C(  152),  UINT8_C(  196),
         UINT8_C(   89),  UINT8_C(   91),  UINT8_C(  206),  UINT8_C(  224) } },
    { {  UINT8_C(   21),  UINT8_C(   26),  UINT8_C(  161),  UINT8_C(   44),
         UINT8_C(  217),  UINT8_C(  170),  UINT8_C(    7),  UINT8_C(  181) },
      {  UINT8_C(   69),  UINT8_C(  115),  UINT8_C(   53),  UINT8_C(  237),
         UINT8_C(  116),  UINT8_C(  223),  UINT8_C(  252),  UINT8_C(  212),
         UINT8_C(  149),  UINT8_C(   72),  UINT8_C(  106),  UINT8_C(   27),
         UINT8_C(  249),  UINT8_C(    7),  UINT8_C(   66),  UINT8_C(  133) },
      {  UINT8_C(   69),  UINT8_C(   26),  UINT8_C(  161),  UINT8_C(   44),
         UINT8_C(  217),  UINT8_C(  170),  UINT8_C(    7),  UINT8_C(  181) },
      {  UINT8_C(   21),  UINT8_C(  237),  UINT8_C(  161),  UINT8_C(   44),
         UINT8_C(  217),  UINT8_C(  170),  UINT8_C(    7),  UINT8_C(  181) },
      {  UINT8_C(   21),  UINT8_C(   26),  UINT8_C(  161),  UINT8_C(  149),
         UINT8_C(  217),  UINT8_C(  170),  UINT8_C(    7),  UINT8_C(  181) },
      {  UINT8_C(   21),  UINT8_C(   26),  UINT8_C(  161),  UINT8_C(   44),
         UINT8_C(  217),  UINT8_C(  170),  UINT8_C(  249),  UINT8_C(  181) },
      {  UINT8_C(   21),  UINT8_C(   26),  UINT8_C(  161),  UINT8_C(   44),
         UINT8_C(  217),  UINT8_C(  170),  UINT8_C(    7),  UINT8_C(  133) } },
    { {  UINT8_C(   99),  UINT8_C(  126),  UINT8_C(    4),      UINT8_MAX,
         UINT8_C(  179),  UINT8_C(   35),  UINT8_C(  241),  UINT8_C(   40) },
      {  UINT8_C(    5),  UINT8_C(  120),  UINT8_C(  120),  UINT8_C(  177),
         UINT8_C(  245),  UINT8_C(   56),  UINT8_C(  251),  UINT8_C(  121),
         UINT8_C(  185),  UINT8_C(   18),  UINT8_C(  149),  UINT8_C(   67),
         UINT8_C(  176),  UINT8_C(    7),  UINT8_C(  139),  UINT8_C(  203) },
      {  UINT8_C(    5),  UINT8_C(  126),  UINT8_C(    4),      UINT8_MAX,
         UINT8_C(  179),  UINT8_C(   35),  UINT8_C(  241),  UINT8_C(   40) },
      {  UINT8_C(   99),  UINT8_C(  177),  UINT8_C(    4),      UINT8_MAX,
         UINT8_C(  179),  UINT8_C(   35),  UINT8_C(  241),  UINT8_C(   40) },
      {  UINT8_C(   99),  UINT8_C(  126),  UINT8_C(    4),  UINT8_C(  185),
         UINT8_C(  179),  UINT8_C(   35),  UINT8_C(  241),  UINT8_C(   40) },
      {  UINT8_C(   99),  UINT8_C(  126),  UINT8_C(    4),      UINT8_MAX,
         UINT8_C(  179),  UINT8_C(   35),  UINT8_C(  176),  UINT8_C(   40) },
      {  UINT8_C(   99),  UINT8_C(  126),  UINT8_C(    4),      UINT8_MAX,
         UINT8_C(  179),  UINT8_C(   35),  UINT8_C(  241),  UINT8_C(  203) } },
    { {  UINT8_C(  207),  UINT8_C(   15),  UINT8_C(  186),  UINT8_C(   59),
         UINT8_C(  190),  UINT8_C(  250),  UINT8_C(  169),  UINT8_C(  170) },
      {  UINT8_C(  135),  UINT8_C(   89),  UINT8_C(   92),  UINT8_C(   84),
         UINT8_C(   98),  UINT8_C(   83),  UINT8_C(   54),  UINT8_C(   70),
         UINT8_C(   74),  UINT8_C(  190),  UINT8_C(   21),  UINT8_C(  204),
         UINT8_C(  114),  UINT8_C(  121),  UINT8_C(  146),  UINT8_C(   53) },
      {  UINT8_C(  135),  UINT8_C(   15),  UINT8_C(  186),  UINT8_C(   59),
         UINT8_C(  190),  UINT8_C(  250),  UINT8_C(  169),  UINT8_C(  170) },
      {  UINT8_C(  207),  UINT8_C(   84),  UINT8_C(  186),  UINT8_C(   59),
         UINT8_C(  190),  UINT8_C(  250),  UINT8_C(  169),  UINT8_C(  170) },
      {  UINT8_C(  207),  UINT8_C(   15),  UINT8_C(  186),  UINT8_C(   74),
         UINT8_C(  190),  UINT8_C(  250),  UINT8_C(  169),  UINT8_C(  170) },
      {  UINT8_C(  207),  UINT8_C(   15),  UINT8_C(  186),  UINT8_C(   59),
         UINT8_C(  190),  UINT8_C(  250),  UINT8_C(  114),  UINT8_C(  170) },
      {  UINT8_C(  207),  UINT8_C(   15),  UINT8_C(  186),  UINT8_C(   59),
         UINT8_C(  190),  UINT8_C(  250),  UINT8_C(  169),  UINT8_C(   53) } },
    { {  UINT8_C(  212),  UINT8_C(  125),  UINT8_C(  231),  UINT8_C(  195),
         UINT8_C(  124),  UINT8_C(  208),  UINT8_C(  167),  UINT8_C(  186) },
      {  UINT8_C(    9),  UINT8_C(  138),  UINT8_C(  171),  UINT8_C(   97),
         UINT8_C(  120),  UINT8_C(   72),  UINT8_C(  155),  UINT8_C(   29),
         UINT8_C(    5),  UINT8_C(   14),  UINT8_C(   10),  UINT8_C(  220),
         UINT8_C(  253),  UINT8_C(  194),  UINT8_C(  240),  UINT8_C(  218) },
      {  UINT8_C(    9),  UINT8_C(  125),  UINT8_C(  231),  UINT8_C(  195),
         UINT8_C(  124),  UINT8_C(  208),  UINT8_C(  167),  UINT8_C(  186) },
      {  UINT8_C(  212),  UINT8_C(   97),  UINT8_C(  231),  UINT8_C(  195),
         UINT8_C(  124),  UINT8_C(  208),  UINT8_C(  167),  UINT8_C(  186) },
      {  UINT8_C(  212),  UINT8_C(  125),  UINT8_C(  231),  UINT8_C(    5),
         UINT8_C(  124),  UINT8_C(  208),  UINT8_C(  167),  UINT8_C(  186) },
      {  UINT8_C(  212),  UINT8_C(  125),  UINT8_C(  231),  UINT8_C(  195),
         UINT8_C(  124),  UINT8_C(  208),  UINT8_C(  253),  UINT8_C(  186) },
      {  UINT8_C(  212),  UINT8_C(  125),  UINT8_C(  231),  UINT8_C(  195),
         UINT8_C(  124),  UINT8_C(  208),  UINT8_C(  167),  UINT8_C(  218) } },
    { {  UINT8_C(   43),  UINT8_C(  179),  UINT8_C(    5),  UINT8_C(   62),
         UINT8_C(  203),  UINT8_C(   46),  UINT8_C(  232),  UINT8_C(  247) },
      {  UINT8_C(  190),  UINT8_C(  199),  UINT8_C(   65),  UINT8_C(  133),
         UINT8_C(  222),  UINT8_C(  218),  UINT8_C(  184),  UINT8_C(   55),
         UINT8_C(  217),  UINT8_C(   12),  UINT8_C(  216),  UINT8_C(   57),
         UINT8_C(  204),  UINT8_C(  112),  UINT8_C(   59),  UINT8_C(  253) },
      {  UINT8_C(  190),  UINT8_C(  179),  UINT8_C(    5),  UINT8_C(   62),
         UINT8_C(  203),  UINT8_C(   46),  UINT8_C(  232),  UINT8_C(  247) },
      {  UINT8_C(   43),  UINT8_C(  133),  UINT8_C(    5),  UINT8_C(   62),
         UINT8_C(  203),  UINT8_C(   46),  UINT8_C(  232),  UINT8_C(  247) },
      {  UINT8_C(   43),  UINT8_C(  179),  UINT8_C(    5),  UINT8_C(  217),
         UINT8_C(  203),  UINT8_C(   46),  UINT8_C(  232),  UINT8_C(  247) },
      {  UINT8_C(   43),  UINT8_C(  179),  UINT8_C(    5),  UINT8_C(   62),
         UINT8_C(  203),  UINT8_C(   46),  UINT8_C(  204),  UINT8_C(  247) },
      {  UINT8_C(   43),  UINT8_C(  179),  UINT8_C(    5),  UINT8_C(   62),
         UINT8_C(  203),  UINT8_C(   46),  UINT8_C(  232),  UINT8_C(  253) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
    simde_uint8x16_t b = simde_vld1q_u8(test_vec[i].b);

    simde_uint8x8_t r0_0 = simde_vcopy_laneq_u8(a, 0, b, 0);
    simde_uint8x8_t r1_3 = simde_vcopy_laneq_u8(a, 1, b, 3);
    simde_uint8x8_t r3_8 = simde_vcopy_laneq_u8(a, 3, b, 8);
    simde_uint8x8_t r6_12 = simde_vcopy_laneq_u8(a, 6, b, 12);
    simde_uint8x8_t r7_15 = simde_vcopy_laneq_u8(a, 7, b, 15);

    simde_test_arm_neon_assert_equal_u8x8(r0_0, simde_vld1_u8(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_u8x8(r1_3, simde_vld1_u8(test_vec[i].r1_3));
    simde_test_arm_neon_assert_equal_u8x8(r3_8, simde_vld1_u8(test_vec[i].r3_8));
    simde_test_arm_neon_assert_equal_u8x8(r6_12, simde_vld1_u8(test_vec[i].r6_12));
    simde_test_arm_neon_assert_equal_u8x8(r7_15, simde_vld1_u8(test_vec[i].r7_15));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
    simde_uint8x16_t b = simde_test_arm_neon_random_u8x16();

    simde_uint8x8_t r0_0 = simde_vcopy_laneq_u8(a, 0, b, 0);
    simde_uint8x8_t r1_3 = simde_vcopy_laneq_u8(a, 1, b, 3);
    simde_uint8x8_t r3_8 = simde_vcopy_laneq_u8(a, 3, b, 8);
    simde_uint8x8_t r6_12 = simde_vcopy_laneq_u8(a, 6, b, 12);
    simde_uint8x8_t r7_15 = simde_vcopy_laneq_u8(a, 7, b, 15);

    simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r3_8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r6_12, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, r7_15, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t a[4];
    uint16_t b[8];
    uint16_t r0_0[4];
    uint16_t r1_3[4];
    uint16_t r2_5[4];
    uint16_t r3_7[4];
  } test_vec[] = {
    { {  UINT16_C(   14090),  UINT16_C(   43348),  UINT16_C(   44694),  UINT16_C(   30737) },
      {  UINT16_C(   38617),  UINT16_C(   33902),  UINT16_C(      90),  UINT16_C(   41210),
         UINT16_C(   36570),  UINT16_C(   20021),  UINT16_C(    3767),  UINT16_C(   62186) },
      {  UINT16_C(   38617),  UINT16_C(   43348),  UINT16_C(   44694),  UINT16_C(   30737) },
      {  UINT16_C(   14090),  UINT16_C(   41210),  UINT16_C(   44694),  UINT16_C(   30737) },
      {  UINT16_C(   14090),  UINT16_C(   43348),  UINT16_C(   20021),  UINT16_C(   30737) },
      {  UINT16_C(   14090),  UINT16_C(   43348),  UINT16_C(   44694),  UINT16_C(   62186) } },
    { {  UINT16_C(   61109),  UINT16_C(   30682),  UINT16_C(   62985),  UINT16_C(   21741) },
      {  UINT16_C(   19675),  UINT16_C(   47463),  UINT16_C(   48866),  UINT16_C(   48845),
         UINT16_C(   50845),  UINT16_C(   43216),  UINT16_C(    9981),  UINT16_C(   42973) },
      {  UINT16_C(   19675),  UINT16_C(   30682),  UINT16_C(   62985),  UINT16_C(   21741) },
      {  UINT16_C(   61109),  UINT16_C(   48845),  UINT16_C(   62985),  UINT16_C(   21741) },
      {  UINT16_C(   61109),  UINT16_C(   30682),  UINT16_C(   43216),  UINT16_C(   21741) },
      {  UINT16_C(   61109),  UINT16_C(   30682),  UINT16_C(   62985),  UINT16_C(   42973) } },
    { {  UINT16_C(   31349),  UINT16_C(   64794),  UINT16_C(   25390),  UINT16_C(   50931) },
      {  UINT16_C(   20875),  UINT16_C(   26295),  UINT16_C(   47031),  UINT16_C(   37393),
         UINT16_C(    8989),  UINT16_C(    1142),  UINT16_C(     891),  UINT16_C(   41568) },
      {  UINT16_C(   20875),  UINT16_C(   64794),  UINT16_C(   25390),  UINT16_C(   50931) },
      {  UINT16_C(   31349),  UINT16_C(   37393),  UINT16_C(   25390),  UINT16_C(   50931) },
      {  UINT16_C(   31349),  UINT16_C(   64794),  UINT16_C(    1142),  UINT16_C(   50931) },
      {  UINT16_C(   31349),  UINT16_C(   64794),  UINT16_C(   25390),  UINT16_C(   41568) } },
    { {  UINT16_C(   27978),  UINT16_C(   43843),  UINT16_C(   22177),  UINT16_C(   31195) },
      {  UINT16_C(   13000),  UINT16_C(   19847),  UINT16_C(   29376),  UINT16_C(   26702),
         UINT16_C(   12549),  UINT16_C(   33267),  UINT16_C(   27103),  UINT16_C(   28719) },
      {  UINT16_C(   13000),  UINT16_C(   43843),  UINT16_C(   22177),  UINT16_C(   31195) },
      {  UINT16_C(   27978),  UINT16_C(   26702),  UINT16_C(   22177),  UINT16_C(   31195) },
      {  UINT16_C(   27978),  UINT16_C(   43843),  UINT16_C(   33267),  UINT16_C(   31195) },
      {  UINT16_C(   27978),  UINT16_C(   43843),  UINT16_C(   22177),  UINT16_C(   28719) } },
    { {  UINT16_C(    1114),  UINT16_C(   44831),  UINT16_C(   23387),  UINT16_C(   26671) },
      {  UINT16_C(   62402),  UINT16_C(   40206),  UINT16_C(    5589),  UINT16_C(   46365),
         UINT16_C(   15546),  UINT16_C(   56079),  UINT16_C(   10655),  UINT16_C(   28459) },
      {  UINT16_C(   62402),  UINT16_C(   44831),  UINT16_C(   23387),  UINT16_C(   26671) },
      {  UINT16_C(    1114),  UINT16_C(   46365),  UINT16_C(   23387),  UINT16_C(   26671) },
      {  UINT16_C(    1114),  UINT16_C(   44831),  UINT16_C(   56079),  UINT16_C(   26671) },
      {  UINT16_C(    1114),  UINT16_C(   44831),  UINT16_C(   23387),  UINT16_C(   28459) } },
    { {  UINT16_C(   15907),  UINT16_C(   19190),  UINT16_C(   53939),  UINT16_C(   23137) },
      {  UINT16_C(   31842),  UINT16_C(   25173),  UINT16_C(    4547),  UINT16_C(    2456),
         UINT16_C(   47549),  UINT16_C(   26853),  UINT16_C(   42826),  UINT16_C(   39063) },
      {  UINT16_C(   31842),  UINT16_C(   19190),  UINT16_C(   53939),  UINT16_C(   23137) },
      {  UINT16_C(   15907),  UINT16_C(    2456),  UINT16_C(   53939),  UINT16_C(   23137) },
      {  UINT16_C(   15907),  UINT16_C(   19190),  UINT16_C(   26853),  UINT16_C(   23137) },
      {  UINT16_C(   15907),  UINT16_C(   19190),  UINT16_C(   53939),  UINT16_C(   39063) } },
    { {  UINT16_C(   35181),  UINT16_C(   17415),  UINT16_C(   59315),  UINT16_C(   49844) },
      {  UINT16_C(   32240),  UINT16_C(   12816),  UINT16_C(   48038),  UINT16_C(   32248),
         UINT16_C(   21982),  UINT16_C(   58359),  UINT16_C(   59704),  UINT16_C(   41823) },
      {  UINT16_C(   32240),  UINT16_C(   17415),  UINT16_C(   59315),  UINT16_C(   49844) },
      {  UINT16_C(   35181),  UINT16_C(   32248),  UINT16_C(   59315),  UINT16_C(   49844) },
      {  UINT16_C(   35181),  UINT16_C(   17415),  UINT16_C(   58359),  UINT16_C(   49844) },
      {  UINT16_C(   35181),  UINT16_C(   17415),  UINT16_C(   59315),  UINT16_C(   41823) } },
    { {  UINT16_C(   10135),  UINT16_C(    9895),  UINT16_C(   14931),  UINT16_C(    6474) },
      {  UINT16_C(   48682),  UINT16_C(    7265),  UINT16_C(    8191),  UINT16_C(   33426),
         UINT16_C(   41840),  UINT16_C(   56821),  UINT16_C(    7954),  UINT16_C(   43755) },
      {  UINT16_C(   48682),  UINT16_C(    9895),  UINT16_C(   14931),  UINT16_C(    6474) },
      {  UINT16_C(   10135),  UINT16_C(   33426),  UINT16_C(   14931),  UINT16_C(    6474) },
      {  UINT16_C(   10135),  UINT16_C(    9895),  UINT16_C(   56821),  UINT16_C(    6474) },
      {  UINT16_C(   10135),  UINT16_C(    9895),  UINT16_C(   14931),  UINT16_C(   43755) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
    simde_uint16x8_t b = simde_vld1q_u16(test_vec[i].b);

    simde_uint16x4_t r0_0 = simde_vcopy_laneq_u16(a, 0, b, 0);
    simde_uint16x4_t r1_3 = simde_vcopy_laneq_u16(a, 1, b, 3);
    simde_uint16x4_t r2_5 = simde_vcopy_laneq_u16(a, 2, b, 5);
    simde_uint16x4_t r3_7 = simde_vcopy_laneq_u16(a, 3, b, 7);

    simde_test_arm_neon_assert_equal_u16x4(r0_0, simde_vld1_u16(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_u16x4(r1_3, simde_vld1_u16(test_vec[i].r1_3));
    simde_test_arm_neon_assert_equal_u16x4(r2_5, simde_vld1_u16(test_vec[i].r2_5));
    simde_test_arm_neon_assert_equal_u16x4(r3_7, simde_vld1_u16(test_vec[i].r3_7));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
    simde_uint16x8_t b = simde_test_arm_neon_random_u16x8();
    simde_uint16x4_t r0_0 = simde_vcopy_laneq_u16(a, 0, b, 0);
    simde_uint16x4_t r1_3 = simde_vcopy_laneq_u16(a, 1, b, 3);
    simde_uint16x4_t r2_5 = simde_vcopy_laneq_u16(a, 2, b, 5);
    simde_uint16x4_t r3_7 = simde_vcopy_laneq_u16(a, 3, b, 7);

    simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r2_5, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, r3_7, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t a[2];
    uint32_t b[4];
    uint32_t r0_0[2];
    uint32_t r0_2[2];
    uint32_t r1_1[2];
    uint32_t r1_3[2];
  } test_vec[] = {
    { {  UINT32_C(  1263327646),  UINT32_C(  3936930385) },
      {  UINT32_C(  1009741332),  UINT32_C(  1271791302),  UINT32_C(  2117473016),  UINT32_C(  1209805040) },
      {  UINT32_C(  1009741332),  UINT32_C(  3936930385) },
      {  UINT32_C(  2117473016),  UINT32_C(  3936930385) },
      {  UINT32_C(  1263327646),  UINT32_C(  1271791302) },
      {  UINT32_C(  1263327646),  UINT32_C(  1209805040) } },
    { {  UINT32_C(  3169852858),  UINT32_C(  4047976040) },
      {  UINT32_C(  3469589779),  UINT32_C(   319323338),  UINT32_C(  2782162475),  UINT32_C(  3540513941) },
      {  UINT32_C(  3469589779),  UINT32_C(  4047976040) },
      {  UINT32_C(  2782162475),  UINT32_C(  4047976040) },
      {  UINT32_C(  3169852858),  UINT32_C(   319323338) },
      {  UINT32_C(  3169852858),  UINT32_C(  3540513941) } },
    { {  UINT32_C(   723977372),  UINT32_C(  1213626978) },
      {  UINT32_C(  2388609191),  UINT32_C(  1459060976),  UINT32_C(  1783941758),  UINT32_C(   514486587) },
      {  UINT32_C(  2388609191),  UINT32_C(  1213626978) },
      {  UINT32_C(  1783941758),  UINT32_C(  1213626978) },
      {  UINT32_C(   723977372),  UINT32_C(  1459060976) },
      {  UINT32_C(   723977372),  UINT32_C(   514486587) } },
    { {  UINT32_C(  2520531324),  UINT32_C(  2850749730) },
      {  UINT32_C(   888192105),  UINT32_C(  1739139179),  UINT32_C(   230879930),  UINT32_C(  1965453646) },
      {  UINT32_C(   888192105),  UINT32_C(  2850749730) },
      {  UINT32_C(   230879930),  UINT32_C(  2850749730) },
      {  UINT32_C(  2520531324),  UINT32_C(  1739139179) },
      {  UINT32_C(  2520531324),  UINT32_C(  1965453646) } },
    { {  UINT32_C(  2822169713),  UINT32_C(  1803041930) },
      {  UINT32_C(  2701651503),  UINT32_C(  1720551226),  UINT32_C(  2473213009),  UINT32_C(  1517886129) },
      {  UINT32_C(  2701651503),  UINT32_C(  1803041930) },
      {  UINT32_C(  2473213009),  UINT32_C(  1803041930) },
      {  UINT32_C(  2822169713),  UINT32_C(  1720551226) },
      {  UINT32_C(  2822169713),  UINT32_C(  1517886129) } },
    { {  UINT32_C(  1141343430),  UINT32_C(  3637108750) },
      {  UINT32_C(  3503443812),  UINT32_C(  4186632742),  UINT32_C(  1721722610),  UINT32_C(  1039187286) },
      {  UINT32_C(  3503443812),  UINT32_C(  3637108750) },
      {  UINT32_C(  1721722610),  UINT32_C(  3637108750) },
      {  UINT32_C(  1141343430),  UINT32_C(  4186632742) },
      {  UINT32_C(  1141343430),  UINT32_C(  1039187286) } },
    { {  UINT32_C(   678901130),  UINT32_C(  1376760353) },
      {  UINT32_C(    56937070),  UINT32_C(  3336802856),  UINT32_C(  3559984617),  UINT32_C(  1829425083) },
      {  UINT32_C(    56937070),  UINT32_C(  1376760353) },
      {  UINT32_C(  3559984617),  UINT32_C(  1376760353) },
      {  UINT32_C(   678901130),  UINT32_C(  3336802856) },
      {  UINT32_C(   678901130),  UINT32_C(  1829425083) } },
    { {  UINT32_C(   566419176),  UINT32_C(  1835229255) },
      {  UINT32_C(  2657473149),  UINT32_C(  3998120314),  UINT32_C(  3755826214),  UINT32_C(  1740123970) },
      {  UINT32_C(  2657473149),  UINT32_C(  1835229255) },
      {  UINT32_C(  3755826214),  UINT32_C(  1835229255) },
      {  UINT32_C(   566419176),  UINT32_C(  3998120314) },
      {  UINT32_C(   566419176),  UINT32_C(  1740123970) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
    simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);

    simde_uint32x2_t r0_0 = simde_vcopy_laneq_u32(a, 0, b, 0);
    simde_uint32x2_t r0_2 = simde_vcopy_laneq_u32(a, 0, b, 2);
    simde_uint32x2_t r1_1 = simde_vcopy_laneq_u32(a, 1, b, 1);
    simde_uint32x2_t r1_3 = simde_vcopy_laneq_u32(a, 1, b, 3);

    simde_test_arm_neon_assert_equal_u32x2(r0_0, simde_vld1_u32(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_u32x2(r0_2, simde_vld1_u32(test_vec[i].r0_2));
    simde_test_arm_neon_assert_equal_u32x2(r1_1, simde_vld1_u32(test_vec[i].r1_1));
    simde_test_arm_neon_assert_equal_u32x2(r1_3, simde_vld1_u32(test_vec[i].r1_3));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
    simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();

    simde_uint32x2_t r0_0 = simde_vcopy_laneq_u32(a, 0, b, 0);
    simde_uint32x2_t r0_2 = simde_vcopy_laneq_u32(a, 0, b, 2);
    simde_uint32x2_t r1_1 = simde_vcopy_laneq_u32(a, 1, b, 1);
    simde_uint32x2_t r1_3 = simde_vcopy_laneq_u32(a, 1, b, 3);

    simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r0_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r1_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, r1_3, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t a[1];
    uint64_t b[2];
    uint64_t r0_0[1];
    uint64_t r0_1[1];
  } test_vec[] = {
    { {  UINT64_C( 4774845596606571093) },
      {  UINT64_C( 8217638833653863154),  UINT64_C(17418031248681962729) },
      {  UINT64_C( 8217638833653863154) },
      {  UINT64_C(17418031248681962729) } },
    { {  UINT64_C(17601450605500208340) },
      {  UINT64_C( 2768201381815185750),  UINT64_C(16070785927570141580) },
      {  UINT64_C( 2768201381815185750) },
      {  UINT64_C(16070785927570141580) } },
    { {  UINT64_C( 5515676140731327920) },
      {  UINT64_C(10667193760066591791),  UINT64_C( 5614703629073485915) },
      {  UINT64_C(10667193760066591791) },
      {  UINT64_C( 5614703629073485915) } },
    { {  UINT64_C( 8834081084411742948) },
      {  UINT64_C( 9878499915507241938),  UINT64_C(12395589140738461358) },
      {  UINT64_C( 9878499915507241938) },
      {  UINT64_C(12395589140738461358) } },
    { {  UINT64_C(14076324571948981968) },
      {  UINT64_C(13707984266428261295),  UINT64_C(16651015344936509577) },
      {  UINT64_C(13707984266428261295) },
      {  UINT64_C(16651015344936509577) } },
    { {  UINT64_C( 7401032381136844628) },
      {  UINT64_C(13595471166024805103),  UINT64_C(12253610641519224975) },
      {  UINT64_C(13595471166024805103) },
      {  UINT64_C(12253610641519224975) } },
    { {  UINT64_C( 3043905301656645740) },
      {  UINT64_C(13594318462557334235),  UINT64_C(  878904381009645699) },
      {  UINT64_C(13594318462557334235) },
      {  UINT64_C(  878904381009645699) } },
    { {  UINT64_C( 7588891631142822727) },
      {  UINT64_C( 1673981919106237551),  UINT64_C(12358823236528999795) },
      {  UINT64_C( 1673981919106237551) },
      {  UINT64_C(12358823236528999795) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
    simde_uint64x2_t b = simde_vld1q_u64(test_vec[i].b);

    simde_uint64x1_t r0_0 = simde_vcopy_laneq_u64(a, 0, b, 0);
    simde_uint64x1_t r0_1 = simde_vcopy_laneq_u64(a, 0, b, 1);

    simde_test_arm_neon_assert_equal_u64x1(r0_0, simde_vld1_u64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_u64x1(r0_1, simde_vld1_u64(test_vec[i].r0_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x1_t a = simde_test_arm_neon_random_u64x1();
    simde_uint64x2_t b = simde_test_arm_neon_random_u64x2();
    simde_uint64x1_t r0_0 = simde_vcopy_laneq_u64(a, 0, b, 0);
    simde_uint64x1_t r0_1 = simde_vcopy_laneq_u64(a, 0, b, 1);

    simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, r0_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32_t a[2];
    simde_float32_t b[4];
    simde_float32_t r0_0[2];
    simde_float32_t r0_2[2];
    simde_float32_t r1_1[2];
    simde_float32_t r1_3[2];
  } test_vec[] = {
    { {  SIMDE_FLOAT32_C(  9416.182), -SIMDE_FLOAT32_C(  8833.327) },
      { -SIMDE_FLOAT32_C(  8422.051), -SIMDE_FLOAT32_C(  1474.965),  SIMDE_FLOAT32_C(    22.255),  SIMDE_FLOAT32_C(  1862.729) },
      { -SIMDE_FLOAT32_C(  8422.051), -SIMDE_FLOAT32_C(  8833.327) },
      {  SIMDE_FLOAT32_C(    22.255), -SIMDE_FLOAT32_C(  8833.327) },
      {  SIMDE_FLOAT32_C(  9416.182), -SIMDE_FLOAT32_C(  1474.965) },
      {  SIMDE_FLOAT32_C(  9416.182),  SIMDE_FLOAT32_C(  1862.729) } },
    { { -SIMDE_FLOAT32_C(  9615.762), -SIMDE_FLOAT32_C(    14.217) },
      { -SIMDE_FLOAT32_C(  5132.670),  SIMDE_FLOAT32_C(  3844.124),  SIMDE_FLOAT32_C(  8234.064), -SIMDE_FLOAT32_C(  7859.389) },
      { -SIMDE_FLOAT32_C(  5132.670), -SIMDE_FLOAT32_C(    14.217) },
      {  SIMDE_FLOAT32_C(  8234.064), -SIMDE_FLOAT32_C(    14.217) },
      { -SIMDE_FLOAT32_C(  9615.762),  SIMDE_FLOAT32_C(  3844.124) },
      { -SIMDE_FLOAT32_C(  9615.762), -SIMDE_FLOAT32_C(  7859.389) } },
    { { -SIMDE_FLOAT32_C(  4940.350), -SIMDE_FLOAT32_C(  8895.818) },
      { -SIMDE_FLOAT32_C(  4031.934),  SIMDE_FLOAT32_C(  2112.525),  SIMDE_FLOAT32_C(  6157.536),  SIMDE_FLOAT32_C(  6249.606) },
      { -SIMDE_FLOAT32_C(  4031.934), -SIMDE_FLOAT32_C(  8895.818) },
      {  SIMDE_FLOAT32_C(  6157.536), -SIMDE_FLOAT32_C(  8895.818) },
      { -SIMDE_FLOAT32_C(  4940.350),  SIMDE_FLOAT32_C(  2112.525) },
      { -SIMDE_FLOAT32_C(  4940.350),  SIMDE_FLOAT32_C(  6249.606) } },
    { {  SIMDE_FLOAT32_C(  9344.492),  SIMDE_FLOAT32_C(  2826.421) },
      { -SIMDE_FLOAT32_C(  5138.487),  SIMDE_FLOAT32_C(  5406.190),  SIMDE_FLOAT32_C(  8334.525),  SIMDE_FLOAT32_C(  6643.959) },
      { -SIMDE_FLOAT32_C(  5138.487),  SIMDE_FLOAT32_C(  2826.421) },
      {  SIMDE_FLOAT32_C(  8334.525),  SIMDE_FLOAT32_C(  2826.421) },
      {  SIMDE_FLOAT32_C(  9344.492),  SIMDE_FLOAT32_C(  5406.190) },
      {  SIMDE_FLOAT32_C(  9344.492),  SIMDE_FLOAT32_C(  6643.959) } },
    { { -SIMDE_FLOAT32_C(  6024.062),  SIMDE_FLOAT32_C(  6388.316) },
      {  SIMDE_FLOAT32_C(  2465.654),  SIMDE_FLOAT32_C(  3539.057), -SIMDE_FLOAT32_C(  6462.303), -SIMDE_FLOAT32_C(  2503.313) },
      {  SIMDE_FLOAT32_C(  2465.654),  SIMDE_FLOAT32_C(  6388.316) },
      { -SIMDE_FLOAT32_C(  6462.303),  SIMDE_FLOAT32_C(  6388.316) },
      { -SIMDE_FLOAT32_C(  6024.062),  SIMDE_FLOAT32_C(  3539.057) },
      { -SIMDE_FLOAT32_C(  6024.062), -SIMDE_FLOAT32_C(  2503.313) } },
    { { -SIMDE_FLOAT32_C(  2609.983), -SIMDE_FLOAT32_C(  2150.719) },
      { -SIMDE_FLOAT32_C(  2105.146), -SIMDE_FLOAT32_C(  4271.761),  SIMDE_FLOAT32_C(  4775.484), -SIMDE_FLOAT32_C(  8675.755) },
      { -SIMDE_FLOAT32_C(  2105.146), -SIMDE_FLOAT32_C(  2150.719) },
      {  SIMDE_FLOAT32_C(  4775.484), -SIMDE_FLOAT32_C(  2150.719) },
      { -SIMDE_FLOAT32_C(  2609.983), -SIMDE_FLOAT32_C(  4271.761) },
      { -SIMDE_FLOAT32_C(  2609.983), -SIMDE_FLOAT32_C(  8675.755) } },
    { { -SIMDE_FLOAT32_C(  7533.391),  SIMDE_FLOAT32_C(  2646.042) },
      { -SIMDE_FLOAT32_C(  4768.051), -SIMDE_FLOAT32_C(  9232.611),  SIMDE_FLOAT32_C(  5796.161),  SIMDE_FLOAT32_C(   319.964) },
      { -SIMDE_FLOAT32_C(  4768.051),  SIMDE_FLOAT32_C(  2646.042) },
      {  SIMDE_FLOAT32_C(  5796.161),  SIMDE_FLOAT32_C(  2646.042) },
      { -SIMDE_FLOAT32_C(  7533.391), -SIMDE_FLOAT32_C(  9232.611) },
      { -SIMDE_FLOAT32_C(  7533.391),  SIMDE_FLOAT32_C(   319.964) } },
    { { -SIMDE_FLOAT32_C(  9847.213),  SIMDE_FLOAT32_C(  6520.873) },
      {  SIMDE_FLOAT32_C(  9756.117),  SIMDE_FLOAT32_C(   625.608), -SIMDE_FLOAT32_C(   979.024), -SIMDE_FLOAT32_C(   183.463) },
      {  SIMDE_FLOAT32_C(  9756.117),  SIMDE_FLOAT32_C(  6520.873) },
      { -SIMDE_FLOAT32_C(   979.024),  SIMDE_FLOAT32_C(  6520.873) },
      { -SIMDE_FLOAT32_C(  9847.213),  SIMDE_FLOAT32_C(   625.608) },
      { -SIMDE_FLOAT32_C(  9847.213), -SIMDE_FLOAT32_C(   183.463) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32x2_t a = simde_vld1_f32(test_vec[i].a);
    simde_float32x4_t b = simde_vld1q_f32(test_vec[i].b);

    simde_float32x2_t r0_0 = simde_vcopy_laneq_f32(a, 0, b, 0);
    simde_float32x2_t r0_2 = simde_vcopy_laneq_f32(a, 0, b, 2);
    simde_float32x2_t r1_1 = simde_vcopy_laneq_f32(a, 1, b, 1);
    simde_float32x2_t r1_3 = simde_vcopy_laneq_f32(a, 1, b, 3);

    simde_test_arm_neon_assert_equal_f32x2(r0_0, simde_vld1_f32(test_vec[i].r0_0), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x2(r0_2, simde_vld1_f32(test_vec[i].r0_2), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x2(r1_1, simde_vld1_f32(test_vec[i].r1_1), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x2(r1_3, simde_vld1_f32(test_vec[i].r1_3), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float32x2_t a = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x4_t b = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x2_t r0_0 = simde_vcopy_laneq_f32(a, 0, b, 0);
    simde_float32x2_t r0_2 = simde_vcopy_laneq_f32(a, 0, b, 2);
    simde_float32x2_t r1_1 = simde_vcopy_laneq_f32(a, 1, b, 1);
    simde_float32x2_t r1_3 = simde_vcopy_laneq_f32(a, 1, b, 3);

    simde_test_arm_neon_write_f32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r0_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r1_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, r1_3, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64_t a[1];
    simde_float64_t b[2];
    simde_float64_t r0_0[1];
    simde_float64_t r0_1[1];
  } test_vec[] = {
    { { -SIMDE_FLOAT64_C(  739568.812) },
      { -SIMDE_FLOAT64_C(  918096.188), -SIMDE_FLOAT64_C(  636033.688) },
      { -SIMDE_FLOAT64_C(  918096.188) },
      { -SIMDE_FLOAT64_C(  636033.688) } },
    { {  SIMDE_FLOAT64_C(  347996.500) },
      { -SIMDE_FLOAT64_C(  789037.625),  SIMDE_FLOAT64_C(  410753.000) },
      { -SIMDE_FLOAT64_C(  789037.625) },
      {  SIMDE_FLOAT64_C(  410753.000) } },
    { { -SIMDE_FLOAT64_C(  519933.062) },
      {  SIMDE_FLOAT64_C(  858011.500),  SIMDE_FLOAT64_C(  664039.875) },
      {  SIMDE_FLOAT64_C(  858011.500) },
      {  SIMDE_FLOAT64_C(  664039.875) } },
    { { -SIMDE_FLOAT64_C(  836484.250) },
      {  SIMDE_FLOAT64_C(  343727.500), -SIMDE_FLOAT64_C(  654913.188) },
      {  SIMDE_FLOAT64_C(  343727.500) },
      { -SIMDE_FLOAT64_C(  654913.188) } },
    { {  SIMDE_FLOAT64_C(  462913.500) },
      { -SIMDE_FLOAT64_C(  509992.406), -SIMDE_FLOAT64_C(  610779.125) },
      { -SIMDE_FLOAT64_C(  509992.406) },
      { -SIMDE_FLOAT64_C(  610779.125) } },
    { { -SIMDE_FLOAT64_C(  265341.438) },
      {  SIMDE_FLOAT64_C(  503597.625),  SIMDE_FLOAT64_C(  215071.125) },
      {  SIMDE_FLOAT64_C(  503597.625) },
      {  SIMDE_FLOAT64_C(  215071.125) } },
    { { -SIMDE_FLOAT64_C(  582044.625) },
      {  SIMDE_FLOAT64_C(  731499.250), -SIMDE_FLOAT64_C(  730278.875) },
      {  SIMDE_FLOAT64_C(  731499.250) },
      { -SIMDE_FLOAT64_C(  730278.875) } },
    { { -SIMDE_FLOAT64_C(  991497.875) },
      { -SIMDE_FLOAT64_C(  653912.188),  SIMDE_FLOAT64_C(   50960.625) },
      { -SIMDE_FLOAT64_C(  653912.188) },
      {  SIMDE_FLOAT64_C(   50960.625) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64x1_t a = simde_vld1_f64(test_vec[i].a);
    simde_float64x2_t b = simde_vld1q_f64(test_vec[i].b);

    simde_float64x1_t r0_0 = simde_vcopy_laneq_f64(a, 0, b, 0);
    simde_float64x1_t r0_1 = simde_vcopy_laneq_f64(a, 0, b, 1);

    simde_test_arm_neon_assert_equal_f64x1(r0_0, simde_vld1_f64(test_vec[i].r0_0), INT_MAX);
    simde_test_arm_neon_assert_equal_f64x1(r0_1, simde_vld1_f64(test_vec[i].r0_1), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float64x1_t a = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x2_t b = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x1_t r0_0 = simde_vcopy_laneq_f64(a, 0, b, 0);
    simde_float64x1_t r0_1 = simde_vcopy_laneq_f64(a, 0, b, 1);

    simde_test_arm_neon_write_f64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, r0_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int8_t a[16];
    int8_t b[8];
    int8_t r0_7[16];
    int8_t r4_6[16];
    int8_t r8_4[16];
    int8_t r12_3[16];
    int8_t r15_1[16];
  } test_vec[] = {
    { {  INT8_C(    7), -INT8_C(  118),  INT8_C(   62), -INT8_C(   50),
        -INT8_C(  105), -INT8_C(   76), -INT8_C(   19),  INT8_C(  111),
         INT8_C(   32),  INT8_C(   20), -INT8_C(   96), -INT8_C(   77),
        -INT8_C(   83), -INT8_C(   39),  INT8_C(   22),  INT8_C(   28) },
      { -INT8_C(   93),  INT8_C(    1), -INT8_C(  111), -INT8_C(   96),
        -INT8_C(  106), -INT8_C(   86),  INT8_C(   43),  INT8_C(   48) },
      {  INT8_C(   48), -INT8_C(  118),  INT8_C(   62), -INT8_C(   50),
        -INT8_C(  105), -INT8_C(   76), -INT8_C(   19),  INT8_C(  111),
         INT8_C(   32),  INT8_C(   20), -INT8_C(   96), -INT8_C(   77),
        -INT8_C(   83), -INT8_C(   39),  INT8_C(   22),  INT8_C(   28) },
      {  INT8_C(    7), -INT8_C(  118),  INT8_C(   62), -INT8_C(   50),
         INT8_C(   43), -INT8_C(   76), -INT8_C(   19),  INT8_C(  111),
         INT8_C(   32),  INT8_C(   20), -INT8_C(   96), -INT8_C(   77),
        -INT8_C(   83), -INT8_C(   39),  INT8_C(   22),  INT8_C(   28) },
      {  INT8_C(    7), -INT8_C(  118),  INT8_C(   62), -INT8_C(   50),
        -INT8_C(  105), -INT8_C(   76), -INT8_C(   19),  INT8_C(  111),
        -INT8_C(  106),  INT8_C(   20), -INT8_C(   96), -INT8_C(   77),
        -INT8_C(   83), -INT8_C(   39),  INT8_C(   22),  INT8_C(   28) },
      {  INT8_C(    7), -INT8_C(  118),  INT8_C(   62), -INT8_C(   50),
        -INT8_C(  105), -INT8_C(   76), -INT8_C(   19),  INT8_C(  111),
         INT8_C(   32),  INT8_C(   20), -INT8_C(   96), -INT8_C(   77),
        -INT8_C(   96), -INT8_C(   39),  INT8_C(   22),  INT8_C(   28) },
      {  INT8_C(    7), -INT8_C(  118),  INT8_C(   62), -INT8_C(   50),
        -INT8_C(  105), -INT8_C(   76), -INT8_C(   19),  INT8_C(  111),
         INT8_C(   32),  INT8_C(   20), -INT8_C(   96), -INT8_C(   77),
        -INT8_C(   83), -INT8_C(   39),  INT8_C(   22),  INT8_C(    1) } },
    { {  INT8_C(   96),  INT8_C(   23),  INT8_C(  106),  INT8_C(  101),
        -INT8_C(   33), -INT8_C(   74), -INT8_C(   78),  INT8_C(   22),
        -INT8_C(   65),  INT8_C(   29), -INT8_C(    8), -INT8_C(   48),
        -INT8_C(   25), -INT8_C(  117),  INT8_C(  123), -INT8_C(   19) },
      { -INT8_C(   31),  INT8_C(  116),  INT8_C(  103), -INT8_C(  112),
         INT8_C(  118),  INT8_C(   34), -INT8_C(   70), -INT8_C(   51) },
      { -INT8_C(   51),  INT8_C(   23),  INT8_C(  106),  INT8_C(  101),
        -INT8_C(   33), -INT8_C(   74), -INT8_C(   78),  INT8_C(   22),
        -INT8_C(   65),  INT8_C(   29), -INT8_C(    8), -INT8_C(   48),
        -INT8_C(   25), -INT8_C(  117),  INT8_C(  123), -INT8_C(   19) },
      {  INT8_C(   96),  INT8_C(   23),  INT8_C(  106),  INT8_C(  101),
        -INT8_C(   70), -INT8_C(   74), -INT8_C(   78),  INT8_C(   22),
        -INT8_C(   65),  INT8_C(   29), -INT8_C(    8), -INT8_C(   48),
        -INT8_C(   25), -INT8_C(  117),  INT8_C(  123), -INT8_C(   19) },
      {  INT8_C(   96),  INT8_C(   23),  INT8_C(  106),  INT8_C(  101),
        -INT8_C(   33), -INT8_C(   74), -INT8_C(   78),  INT8_C(   22),
         INT8_C(  118),  INT8_C(   29), -INT8_C(    8), -INT8_C(   48),
        -INT8_C(   25), -INT8_C(  117),  INT8_C(  123), -INT8_C(   19) },
      {  INT8_C(   96),  INT8_C(   23),  INT8_C(  106),  INT8_C(  101),
        -INT8_C(   33), -INT8_C(   74), -INT8_C(   78),  INT8_C(   22),
        -INT8_C(   65),  INT8_C(   29), -INT8_C(    8), -INT8_C(   48),
        -INT8_C(  112), -INT8_C(  117),  INT8_C(  123), -INT8_C(   19) },
      {  INT8_C(   96),  INT8_C(   23),  INT8_C(  106),  INT8_C(  101),
        -INT8_C(   33), -INT8_C(   74), -INT8_C(   78),  INT8_C(   22),
        -INT8_C(   65),  INT8_C(   29), -INT8_C(    8), -INT8_C(   48),
        -INT8_C(   25), -INT8_C(  117),  INT8_C(  123),  INT8_C(  116) } },
    { { -INT8_C(   29), -INT8_C(    7), -INT8_C(  116), -INT8_C(   65),
        -INT8_C(   18), -INT8_C(   27), -INT8_C(   92), -INT8_C(   16),
        -INT8_C(   37),  INT8_C(  116),  INT8_C(   54), -INT8_C(   34),
        -INT8_C(   89), -INT8_C(   18), -INT8_C(   68), -INT8_C(  102) },
      {  INT8_C(   43), -INT8_C(   14), -INT8_C(   83),  INT8_C(  108),
        -INT8_C(   89),  INT8_C(   34),  INT8_C(   58),  INT8_C(    0) },
      {  INT8_C(    0), -INT8_C(    7), -INT8_C(  116), -INT8_C(   65),
        -INT8_C(   18), -INT8_C(   27), -INT8_C(   92), -INT8_C(   16),
        -INT8_C(   37),  INT8_C(  116),  INT8_C(   54), -INT8_C(   34),
        -INT8_C(   89), -INT8_C(   18), -INT8_C(   68), -INT8_C(  102) },
      { -INT8_C(   29), -INT8_C(    7), -INT8_C(  116), -INT8_C(   65),
         INT8_C(   58), -INT8_C(   27), -INT8_C(   92), -INT8_C(   16),
        -INT8_C(   37),  INT8_C(  116),  INT8_C(   54), -INT8_C(   34),
        -INT8_C(   89), -INT8_C(   18), -INT8_C(   68), -INT8_C(  102) },
      { -INT8_C(   29), -INT8_C(    7), -INT8_C(  116), -INT8_C(   65),
        -INT8_C(   18), -INT8_C(   27), -INT8_C(   92), -INT8_C(   16),
        -INT8_C(   89),  INT8_C(  116),  INT8_C(   54), -INT8_C(   34),
        -INT8_C(   89), -INT8_C(   18), -INT8_C(   68), -INT8_C(  102) },
      { -INT8_C(   29), -INT8_C(    7), -INT8_C(  116), -INT8_C(   65),
        -INT8_C(   18), -INT8_C(   27), -INT8_C(   92), -INT8_C(   16),
        -INT8_C(   37),  INT8_C(  116),  INT8_C(   54), -INT8_C(   34),
         INT8_C(  108), -INT8_C(   18), -INT8_C(   68), -INT8_C(  102) },
      { -INT8_C(   29), -INT8_C(    7), -INT8_C(  116), -INT8_C(   65),
        -INT8_C(   18), -INT8_C(   27), -INT8_C(   92), -INT8_C(   16),
        -INT8_C(   37),  INT8_C(  116),  INT8_C(   54), -INT8_C(   34),
        -INT8_C(   89), -INT8_C(   18), -INT8_C(   68), -INT8_C(   14) } },
    { { -INT8_C(   41),  INT8_C(   20),  INT8_C(   87),  INT8_C(   37),
        -INT8_C(   17), -INT8_C(   85),  INT8_C(  120), -INT8_C(   41),
         INT8_C(  124), -INT8_C(   59),  INT8_C(   63), -INT8_C(    2),
         INT8_C(   20), -INT8_C(   48), -INT8_C(    9),  INT8_C(  105) },
      {  INT8_C(   63), -INT8_C(   79), -INT8_C(  114),  INT8_C(    6),
         INT8_C(   40), -INT8_C(  108), -INT8_C(   46),  INT8_C(   54) },
      {  INT8_C(   54),  INT8_C(   20),  INT8_C(   87),  INT8_C(   37),
        -INT8_C(   17), -INT8_C(   85),  INT8_C(  120), -INT8_C(   41),
         INT8_C(  124), -INT8_C(   59),  INT8_C(   63), -INT8_C(    2),
         INT8_C(   20), -INT8_C(   48), -INT8_C(    9),  INT8_C(  105) },
      { -INT8_C(   41),  INT8_C(   20),  INT8_C(   87),  INT8_C(   37),
        -INT8_C(   46), -INT8_C(   85),  INT8_C(  120), -INT8_C(   41),
         INT8_C(  124), -INT8_C(   59),  INT8_C(   63), -INT8_C(    2),
         INT8_C(   20), -INT8_C(   48), -INT8_C(    9),  INT8_C(  105) },
      { -INT8_C(   41),  INT8_C(   20),  INT8_C(   87),  INT8_C(   37),
        -INT8_C(   17), -INT8_C(   85),  INT8_C(  120), -INT8_C(   41),
         INT8_C(   40), -INT8_C(   59),  INT8_C(   63), -INT8_C(    2),
         INT8_C(   20), -INT8_C(   48), -INT8_C(    9),  INT8_C(  105) },
      { -INT8_C(   41),  INT8_C(   20),  INT8_C(   87),  INT8_C(   37),
        -INT8_C(   17), -INT8_C(   85),  INT8_C(  120), -INT8_C(   41),
         INT8_C(  124), -INT8_C(   59),  INT8_C(   63), -INT8_C(    2),
         INT8_C(    6), -INT8_C(   48), -INT8_C(    9),  INT8_C(  105) },
      { -INT8_C(   41),  INT8_C(   20),  INT8_C(   87),  INT8_C(   37),
        -INT8_C(   17), -INT8_C(   85),  INT8_C(  120), -INT8_C(   41),
         INT8_C(  124), -INT8_C(   59),  INT8_C(   63), -INT8_C(    2),
         INT8_C(   20), -INT8_C(   48), -INT8_C(    9), -INT8_C(   79) } },
    { {  INT8_C(   48),  INT8_C(  105),  INT8_C(   63), -INT8_C(  110),
        -INT8_C(   51), -INT8_C(   88), -INT8_C(   45),  INT8_C(   22),
         INT8_C(   52),  INT8_C(   62), -INT8_C(  123),  INT8_C(   67),
         INT8_C(   85), -INT8_C(   18), -INT8_C(   25),  INT8_C(   27) },
      {  INT8_C(   30),  INT8_C(   77),  INT8_C(   53),  INT8_C(    9),
        -INT8_C(   64), -INT8_C(   87),  INT8_C(   56),  INT8_C(   58) },
      {  INT8_C(   58),  INT8_C(  105),  INT8_C(   63), -INT8_C(  110),
        -INT8_C(   51), -INT8_C(   88), -INT8_C(   45),  INT8_C(   22),
         INT8_C(   52),  INT8_C(   62), -INT8_C(  123),  INT8_C(   67),
         INT8_C(   85), -INT8_C(   18), -INT8_C(   25),  INT8_C(   27) },
      {  INT8_C(   48),  INT8_C(  105),  INT8_C(   63), -INT8_C(  110),
         INT8_C(   56), -INT8_C(   88), -INT8_C(   45),  INT8_C(   22),
         INT8_C(   52),  INT8_C(   62), -INT8_C(  123),  INT8_C(   67),
         INT8_C(   85), -INT8_C(   18), -INT8_C(   25),  INT8_C(   27) },
      {  INT8_C(   48),  INT8_C(  105),  INT8_C(   63), -INT8_C(  110),
        -INT8_C(   51), -INT8_C(   88), -INT8_C(   45),  INT8_C(   22),
        -INT8_C(   64),  INT8_C(   62), -INT8_C(  123),  INT8_C(   67),
         INT8_C(   85), -INT8_C(   18), -INT8_C(   25),  INT8_C(   27) },
      {  INT8_C(   48),  INT8_C(  105),  INT8_C(   63), -INT8_C(  110),
        -INT8_C(   51), -INT8_C(   88), -INT8_C(   45),  INT8_C(   22),
         INT8_C(   52),  INT8_C(   62), -INT8_C(  123),  INT8_C(   67),
         INT8_C(    9), -INT8_C(   18), -INT8_C(   25),  INT8_C(   27) },
      {  INT8_C(   48),  INT8_C(  105),  INT8_C(   63), -INT8_C(  110),
        -INT8_C(   51), -INT8_C(   88), -INT8_C(   45),  INT8_C(   22),
         INT8_C(   52),  INT8_C(   62), -INT8_C(  123),  INT8_C(   67),
         INT8_C(   85), -INT8_C(   18), -INT8_C(   25),  INT8_C(   77) } },
    { {  INT8_C(   96),  INT8_C(   87), -INT8_C(   47),  INT8_C(  101),
         INT8_C(  117),  INT8_C(  119),  INT8_C(   90),  INT8_C(  103),
        -INT8_C(   71),  INT8_C(   27),  INT8_C(   71),  INT8_C(   69),
         INT8_C(   58),  INT8_C(   11), -INT8_C(   68), -INT8_C(   36) },
      {  INT8_C(   10),  INT8_C(   92),  INT8_C(  122),  INT8_C(   88),
         INT8_C(   63),  INT8_C(   40), -INT8_C(   15), -INT8_C(   67) },
      { -INT8_C(   67),  INT8_C(   87), -INT8_C(   47),  INT8_C(  101),
         INT8_C(  117),  INT8_C(  119),  INT8_C(   90),  INT8_C(  103),
        -INT8_C(   71),  INT8_C(   27),  INT8_C(   71),  INT8_C(   69),
         INT8_C(   58),  INT8_C(   11), -INT8_C(   68), -INT8_C(   36) },
      {  INT8_C(   96),  INT8_C(   87), -INT8_C(   47),  INT8_C(  101),
        -INT8_C(   15),  INT8_C(  119),  INT8_C(   90),  INT8_C(  103),
        -INT8_C(   71),  INT8_C(   27),  INT8_C(   71),  INT8_C(   69),
         INT8_C(   58),  INT8_C(   11), -INT8_C(   68), -INT8_C(   36) },
      {  INT8_C(   96),  INT8_C(   87), -INT8_C(   47),  INT8_C(  101),
         INT8_C(  117),  INT8_C(  119),  INT8_C(   90),  INT8_C(  103),
         INT8_C(   63),  INT8_C(   27),  INT8_C(   71),  INT8_C(   69),
         INT8_C(   58),  INT8_C(   11), -INT8_C(   68), -INT8_C(   36) },
      {  INT8_C(   96),  INT8_C(   87), -INT8_C(   47),  INT8_C(  101),
         INT8_C(  117),  INT8_C(  119),  INT8_C(   90),  INT8_C(  103),
        -INT8_C(   71),  INT8_C(   27),  INT8_C(   71),  INT8_C(   69),
         INT8_C(   88),  INT8_C(   11), -INT8_C(   68), -INT8_C(   36) },
      {  INT8_C(   96),  INT8_C(   87), -INT8_C(   47),  INT8_C(  101),
         INT8_C(  117),  INT8_C(  119),  INT8_C(   90),  INT8_C(  103),
        -INT8_C(   71),  INT8_C(   27),  INT8_C(   71),  INT8_C(   69),
         INT8_C(   58),  INT8_C(   11), -INT8_C(   68),  INT8_C(   92) } },
    { {  INT8_C(  111), -INT8_C(   99), -INT8_C(   23),  INT8_C(  126),
         INT8_C(   72),  INT8_C(   23),  INT8_C(   57),  INT8_C(   61),
        -INT8_C(   14),  INT8_C(   97), -INT8_C(   98), -INT8_C(   84),
        -INT8_C(   80), -INT8_C(   79),  INT8_C(   93), -INT8_C(   38) },
      {  INT8_C(   73),  INT8_C(  117),  INT8_C(  112),  INT8_C(   26),
         INT8_C(   55), -INT8_C(   15),  INT8_C(   28), -INT8_C(   61) },
      { -INT8_C(   61), -INT8_C(   99), -INT8_C(   23),  INT8_C(  126),
         INT8_C(   72),  INT8_C(   23),  INT8_C(   57),  INT8_C(   61),
        -INT8_C(   14),  INT8_C(   97), -INT8_C(   98), -INT8_C(   84),
        -INT8_C(   80), -INT8_C(   79),  INT8_C(   93), -INT8_C(   38) },
      {  INT8_C(  111), -INT8_C(   99), -INT8_C(   23),  INT8_C(  126),
         INT8_C(   28),  INT8_C(   23),  INT8_C(   57),  INT8_C(   61),
        -INT8_C(   14),  INT8_C(   97), -INT8_C(   98), -INT8_C(   84),
        -INT8_C(   80), -INT8_C(   79),  INT8_C(   93), -INT8_C(   38) },
      {  INT8_C(  111), -INT8_C(   99), -INT8_C(   23),  INT8_C(  126),
         INT8_C(   72),  INT8_C(   23),  INT8_C(   57),  INT8_C(   61),
         INT8_C(   55),  INT8_C(   97), -INT8_C(   98), -INT8_C(   84),
        -INT8_C(   80), -INT8_C(   79),  INT8_C(   93), -INT8_C(   38) },
      {  INT8_C(  111), -INT8_C(   99), -INT8_C(   23),  INT8_C(  126),
         INT8_C(   72),  INT8_C(   23),  INT8_C(   57),  INT8_C(   61),
        -INT8_C(   14),  INT8_C(   97), -INT8_C(   98), -INT8_C(   84),
         INT8_C(   26), -INT8_C(   79),  INT8_C(   93), -INT8_C(   38) },
      {  INT8_C(  111), -INT8_C(   99), -INT8_C(   23),  INT8_C(  126),
         INT8_C(   72),  INT8_C(   23),  INT8_C(   57),  INT8_C(   61),
        -INT8_C(   14),  INT8_C(   97), -INT8_C(   98), -INT8_C(   84),
        -INT8_C(   80), -INT8_C(   79),  INT8_C(   93),  INT8_C(  117) } },
    { { -INT8_C(  105),  INT8_C(  101), -INT8_C(   89), -INT8_C(   90),
         INT8_C(  121), -INT8_C(   68),  INT8_C(    2), -INT8_C(    4),
        -INT8_C(   85),  INT8_C(   63), -INT8_C(   15), -INT8_C(   29),
         INT8_C(   77),  INT8_C(  121), -INT8_C(   66),  INT8_C(   74) },
      {  INT8_C(   71), -INT8_C(   82),  INT8_C(   94),  INT8_C(  107),
         INT8_C(   33),  INT8_C(  106), -INT8_C(   96), -INT8_C(   85) },
      { -INT8_C(   85),  INT8_C(  101), -INT8_C(   89), -INT8_C(   90),
         INT8_C(  121), -INT8_C(   68),  INT8_C(    2), -INT8_C(    4),
        -INT8_C(   85),  INT8_C(   63), -INT8_C(   15), -INT8_C(   29),
         INT8_C(   77),  INT8_C(  121), -INT8_C(   66),  INT8_C(   74) },
      { -INT8_C(  105),  INT8_C(  101), -INT8_C(   89), -INT8_C(   90),
        -INT8_C(   96), -INT8_C(   68),  INT8_C(    2), -INT8_C(    4),
        -INT8_C(   85),  INT8_C(   63), -INT8_C(   15), -INT8_C(   29),
         INT8_C(   77),  INT8_C(  121), -INT8_C(   66),  INT8_C(   74) },
      { -INT8_C(  105),  INT8_C(  101), -INT8_C(   89), -INT8_C(   90),
         INT8_C(  121), -INT8_C(   68),  INT8_C(    2), -INT8_C(    4),
         INT8_C(   33),  INT8_C(   63), -INT8_C(   15), -INT8_C(   29),
         INT8_C(   77),  INT8_C(  121), -INT8_C(   66),  INT8_C(   74) },
      { -INT8_C(  105),  INT8_C(  101), -INT8_C(   89), -INT8_C(   90),
         INT8_C(  121), -INT8_C(   68),  INT8_C(    2), -INT8_C(    4),
        -INT8_C(   85),  INT8_C(   63), -INT8_C(   15), -INT8_C(   29),
         INT8_C(  107),  INT8_C(  121), -INT8_C(   66),  INT8_C(   74) },
      { -INT8_C(  105),  INT8_C(  101), -INT8_C(   89), -INT8_C(   90),
         INT8_C(  121), -INT8_C(   68),  INT8_C(    2), -INT8_C(    4),
        -INT8_C(   85),  INT8_C(   63), -INT8_C(   15), -INT8_C(   29),
         INT8_C(   77),  INT8_C(  121), -INT8_C(   66), -INT8_C(   82) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a);
    simde_int8x8_t b = simde_vld1_s8(test_vec[i].b);

    simde_int8x16_t r0_7 = simde_vcopyq_lane_s8(a, 0, b, 7);
    simde_int8x16_t r4_6 = simde_vcopyq_lane_s8(a, 4, b, 6);
    simde_int8x16_t r8_4 = simde_vcopyq_lane_s8(a, 8, b, 4);
    simde_int8x16_t r12_3 = simde_vcopyq_lane_s8(a, 12, b, 3);
    simde_int8x16_t r15_1 = simde_vcopyq_lane_s8(a, 15, b, 1);

    simde_test_arm_neon_assert_equal_i8x16(r0_7, simde_vld1q_s8(test_vec[i].r0_7));
    simde_test_arm_neon_assert_equal_i8x16(r4_6, simde_vld1q_s8(test_vec[i].r4_6));
    simde_test_arm_neon_assert_equal_i8x16(r8_4, simde_vld1q_s8(test_vec[i].r8_4));
    simde_test_arm_neon_assert_equal_i8x16(r12_3, simde_vld1q_s8(test_vec[i].r12_3));
    simde_test_arm_neon_assert_equal_i8x16(r15_1, simde_vld1q_s8(test_vec[i].r15_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int8x16_t a = simde_test_arm_neon_random_i8x16();
    simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
    simde_int8x16_t r0_7 = simde_vcopyq_lane_s8(a, 0, b, 7);
    simde_int8x16_t r4_6 = simde_vcopyq_lane_s8(a, 4, b, 6);
    simde_int8x16_t r8_4 = simde_vcopyq_lane_s8(a, 8, b, 4);
    simde_int8x16_t r12_3 = simde_vcopyq_lane_s8(a, 12, b, 3);
    simde_int8x16_t r15_1 = simde_vcopyq_lane_s8(a, 15, b, 1);

    simde_test_arm_neon_write_i8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r4_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r8_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r12_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r15_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t a[8];
    int16_t b[4];
    int16_t r0_3[8];
    int16_t r3_2[8];
    int16_t r5_1[8];
    int16_t r7_0[8];
  } test_vec[] = {
    { {  INT16_C(   27029),  INT16_C(   26579),  INT16_C(   28585),  INT16_C(   25552),
         INT16_C(   16551), -INT16_C(    7338),  INT16_C(   19387),  INT16_C(   12129) },
      { -INT16_C(   17263),  INT16_C(   17994),  INT16_C(   21673),  INT16_C(   26674) },
      {  INT16_C(   26674),  INT16_C(   26579),  INT16_C(   28585),  INT16_C(   25552),
         INT16_C(   16551), -INT16_C(    7338),  INT16_C(   19387),  INT16_C(   12129) },
      {  INT16_C(   27029),  INT16_C(   26579),  INT16_C(   28585),  INT16_C(   21673),
         INT16_C(   16551), -INT16_C(    7338),  INT16_C(   19387),  INT16_C(   12129) },
      {  INT16_C(   27029),  INT16_C(   26579),  INT16_C(   28585),  INT16_C(   25552),
         INT16_C(   16551),  INT16_C(   17994),  INT16_C(   19387),  INT16_C(   12129) },
      {  INT16_C(   27029),  INT16_C(   26579),  INT16_C(   28585),  INT16_C(   25552),
         INT16_C(   16551), -INT16_C(    7338),  INT16_C(   19387), -INT16_C(   17263) } },
    { {  INT16_C(   22253), -INT16_C(   22260),  INT16_C(   32244), -INT16_C(   26177),
        -INT16_C(    8811),  INT16_C(   15417),  INT16_C(    5213), -INT16_C(   28635) },
      { -INT16_C(    7193), -INT16_C(   30400), -INT16_C(   17625), -INT16_C(   25516) },
      { -INT16_C(   25516), -INT16_C(   22260),  INT16_C(   32244), -INT16_C(   26177),
        -INT16_C(    8811),  INT16_C(   15417),  INT16_C(    5213), -INT16_C(   28635) },
      {  INT16_C(   22253), -INT16_C(   22260),  INT16_C(   32244), -INT16_C(   17625),
        -INT16_C(    8811),  INT16_C(   15417),  INT16_C(    5213), -INT16_C(   28635) },
      {  INT16_C(   22253), -INT16_C(   22260),  INT16_C(   32244), -INT16_C(   26177),
        -INT16_C(    8811), -INT16_C(   30400),  INT16_C(    5213), -INT16_C(   28635) },
      {  INT16_C(   22253), -INT16_C(   22260),  INT16_C(   32244), -INT16_C(   26177),
        -INT16_C(    8811),  INT16_C(   15417),  INT16_C(    5213), -INT16_C(    7193) } },
    { { -INT16_C(   23776),  INT16_C(    6518), -INT16_C(    6832), -INT16_C(   29422),
        -INT16_C(   28847), -INT16_C(   13217),  INT16_C(   31430), -INT16_C(    8848) },
      { -INT16_C(    3922),  INT16_C(   22802), -INT16_C(   16279), -INT16_C(   13177) },
      { -INT16_C(   13177),  INT16_C(    6518), -INT16_C(    6832), -INT16_C(   29422),
        -INT16_C(   28847), -INT16_C(   13217),  INT16_C(   31430), -INT16_C(    8848) },
      { -INT16_C(   23776),  INT16_C(    6518), -INT16_C(    6832), -INT16_C(   16279),
        -INT16_C(   28847), -INT16_C(   13217),  INT16_C(   31430), -INT16_C(    8848) },
      { -INT16_C(   23776),  INT16_C(    6518), -INT16_C(    6832), -INT16_C(   29422),
        -INT16_C(   28847),  INT16_C(   22802),  INT16_C(   31430), -INT16_C(    8848) },
      { -INT16_C(   23776),  INT16_C(    6518), -INT16_C(    6832), -INT16_C(   29422),
        -INT16_C(   28847), -INT16_C(   13217),  INT16_C(   31430), -INT16_C(    3922) } },
    { {  INT16_C(   25863),  INT16_C(   13259), -INT16_C(   30865),  INT16_C(   15801),
         INT16_C(   11683), -INT16_C(   16303),  INT16_C(   25175), -INT16_C(   21172) },
      {  INT16_C(   29037),  INT16_C(   28656),  INT16_C(    6282),  INT16_C(     198) },
      {  INT16_C(     198),  INT16_C(   13259), -INT16_C(   30865),  INT16_C(   15801),
         INT16_C(   11683), -INT16_C(   16303),  INT16_C(   25175), -INT16_C(   21172) },
      {  INT16_C(   25863),  INT16_C(   13259), -INT16_C(   30865),  INT16_C(    6282),
         INT16_C(   11683), -INT16_C(   16303),  INT16_C(   25175), -INT16_C(   21172) },
      {  INT16_C(   25863),  INT16_C(   13259), -INT16_C(   30865),  INT16_C(   15801),
         INT16_C(   11683),  INT16_C(   28656),  INT16_C(   25175), -INT16_C(   21172) },
      {  INT16_C(   25863),  INT16_C(   13259), -INT16_C(   30865),  INT16_C(   15801),
         INT16_C(   11683), -INT16_C(   16303),  INT16_C(   25175),  INT16_C(   29037) } },
    { { -INT16_C(   30988),  INT16_C(   27521), -INT16_C(    7197), -INT16_C(   13039),
        -INT16_C(   14170), -INT16_C(    2528), -INT16_C(   15234),  INT16_C(   13381) },
      { -INT16_C(   32112),  INT16_C(   31755), -INT16_C(   27872),  INT16_C(   13351) },
      {  INT16_C(   13351),  INT16_C(   27521), -INT16_C(    7197), -INT16_C(   13039),
        -INT16_C(   14170), -INT16_C(    2528), -INT16_C(   15234),  INT16_C(   13381) },
      { -INT16_C(   30988),  INT16_C(   27521), -INT16_C(    7197), -INT16_C(   27872),
        -INT16_C(   14170), -INT16_C(    2528), -INT16_C(   15234),  INT16_C(   13381) },
      { -INT16_C(   30988),  INT16_C(   27521), -INT16_C(    7197), -INT16_C(   13039),
        -INT16_C(   14170),  INT16_C(   31755), -INT16_C(   15234),  INT16_C(   13381) },
      { -INT16_C(   30988),  INT16_C(   27521), -INT16_C(    7197), -INT16_C(   13039),
        -INT16_C(   14170), -INT16_C(    2528), -INT16_C(   15234), -INT16_C(   32112) } },
    { {  INT16_C(   29081), -INT16_C(    1225),  INT16_C(   17138),  INT16_C(   12210),
        -INT16_C(   17247),  INT16_C(    2087), -INT16_C(    3722), -INT16_C(   22560) },
      {  INT16_C(    2458), -INT16_C(    5128),  INT16_C(   20732),  INT16_C(    3292) },
      {  INT16_C(    3292), -INT16_C(    1225),  INT16_C(   17138),  INT16_C(   12210),
        -INT16_C(   17247),  INT16_C(    2087), -INT16_C(    3722), -INT16_C(   22560) },
      {  INT16_C(   29081), -INT16_C(    1225),  INT16_C(   17138),  INT16_C(   20732),
        -INT16_C(   17247),  INT16_C(    2087), -INT16_C(    3722), -INT16_C(   22560) },
      {  INT16_C(   29081), -INT16_C(    1225),  INT16_C(   17138),  INT16_C(   12210),
        -INT16_C(   17247), -INT16_C(    5128), -INT16_C(    3722), -INT16_C(   22560) },
      {  INT16_C(   29081), -INT16_C(    1225),  INT16_C(   17138),  INT16_C(   12210),
        -INT16_C(   17247),  INT16_C(    2087), -INT16_C(    3722),  INT16_C(    2458) } },
    { { -INT16_C(   25013), -INT16_C(   19961), -INT16_C(   18606),  INT16_C(   11403),
        -INT16_C(   24211), -INT16_C(   32295),  INT16_C(   11289),  INT16_C(    2644) },
      { -INT16_C(   24926),  INT16_C(   13396),  INT16_C(   13926), -INT16_C(   15521) },
      { -INT16_C(   15521), -INT16_C(   19961), -INT16_C(   18606),  INT16_C(   11403),
        -INT16_C(   24211), -INT16_C(   32295),  INT16_C(   11289),  INT16_C(    2644) },
      { -INT16_C(   25013), -INT16_C(   19961), -INT16_C(   18606),  INT16_C(   13926),
        -INT16_C(   24211), -INT16_C(   32295),  INT16_C(   11289),  INT16_C(    2644) },
      { -INT16_C(   25013), -INT16_C(   19961), -INT16_C(   18606),  INT16_C(   11403),
        -INT16_C(   24211),  INT16_C(   13396),  INT16_C(   11289),  INT16_C(    2644) },
      { -INT16_C(   25013), -INT16_C(   19961), -INT16_C(   18606),  INT16_C(   11403),
        -INT16_C(   24211), -INT16_C(   32295),  INT16_C(   11289), -INT16_C(   24926) } },
    { {  INT16_C(   28225), -INT16_C(   13641),  INT16_C(   12137), -INT16_C(    2051),
        -INT16_C(   24470), -INT16_C(    8376),  INT16_C(   22272),  INT16_C(   20450) },
      {  INT16_C(   31393), -INT16_C(   20326),  INT16_C(   23241),  INT16_C(   19500) },
      {  INT16_C(   19500), -INT16_C(   13641),  INT16_C(   12137), -INT16_C(    2051),
        -INT16_C(   24470), -INT16_C(    8376),  INT16_C(   22272),  INT16_C(   20450) },
      {  INT16_C(   28225), -INT16_C(   13641),  INT16_C(   12137),  INT16_C(   23241),
        -INT16_C(   24470), -INT16_C(    8376),  INT16_C(   22272),  INT16_C(   20450) },
      {  INT16_C(   28225), -INT16_C(   13641),  INT16_C(   12137), -INT16_C(    2051),
        -INT16_C(   24470), -INT16_C(   20326),  INT16_C(   22272),  INT16_C(   20450) },
      {  INT16_C(   28225), -INT16_C(   13641),  INT16_C(   12137), -INT16_C(    2051),
        -INT16_C(   24470), -INT16_C(    8376),  INT16_C(   22272),  INT16_C(   31393) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a);
    simde_int16x4_t b = simde_vld1_s16(test_vec[i].b);

    simde_int16x8_t r0_3 = simde_vcopyq_lane_s16(a, 0, b, 3);
    simde_int16x8_t r3_2 = simde_vcopyq_lane_s16(a, 3, b, 2);
    simde_int16x8_t r5_1 = simde_vcopyq_lane_s16(a, 5, b, 1);
    simde_int16x8_t r7_0 = simde_vcopyq_lane_s16(a, 7, b, 0);

    simde_test_arm_neon_assert_equal_i16x8(r0_3, simde_vld1q_s16(test_vec[i].r0_3));
    simde_test_arm_neon_assert_equal_i16x8(r3_2, simde_vld1q_s16(test_vec[i].r3_2));
    simde_test_arm_neon_assert_equal_i16x8(r5_1, simde_vld1q_s16(test_vec[i].r5_1));
    simde_test_arm_neon_assert_equal_i16x8(r7_0, simde_vld1q_s16(test_vec[i].r7_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int16x8_t a = simde_test_arm_neon_random_i16x8();
    simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
    simde_int16x8_t r0_3 = simde_vcopyq_lane_s16(a, 0, b, 3);
    simde_int16x8_t r3_2 = simde_vcopyq_lane_s16(a, 3, b, 2);
    simde_int16x8_t r5_1 = simde_vcopyq_lane_s16(a, 5, b, 1);
    simde_int16x8_t r7_0 = simde_vcopyq_lane_s16(a, 7, b, 0);

    simde_test_arm_neon_write_i16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r3_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r5_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r7_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t a[4];
    int32_t b[2];
    int32_t r0_1[4];
    int32_t r1_0[4];
    int32_t r2_1[4];
    int32_t r3_0[4];
  } test_vec[] = {
    { { -INT32_C(  1076912012),  INT32_C(   618068284),  INT32_C(  1042680298), -INT32_C(  1284688742) },
      { -INT32_C(  1538444613), -INT32_C(  1251735563) },
      { -INT32_C(  1251735563),  INT32_C(   618068284),  INT32_C(  1042680298), -INT32_C(  1284688742) },
      { -INT32_C(  1076912012), -INT32_C(  1538444613),  INT32_C(  1042680298), -INT32_C(  1284688742) },
      { -INT32_C(  1076912012),  INT32_C(   618068284), -INT32_C(  1251735563), -INT32_C(  1284688742) },
      { -INT32_C(  1076912012),  INT32_C(   618068284),  INT32_C(  1042680298), -INT32_C(  1538444613) } },
    { {  INT32_C(  2026659719), -INT32_C(  1368393889),  INT32_C(   964220746), -INT32_C(  2040877007) },
      {  INT32_C(   557196735), -INT32_C(  1587131242) },
      { -INT32_C(  1587131242), -INT32_C(  1368393889),  INT32_C(   964220746), -INT32_C(  2040877007) },
      {  INT32_C(  2026659719),  INT32_C(   557196735),  INT32_C(   964220746), -INT32_C(  2040877007) },
      {  INT32_C(  2026659719), -INT32_C(  1368393889), -INT32_C(  1587131242), -INT32_C(  2040877007) },
      {  INT32_C(  2026659719), -INT32_C(  1368393889),  INT32_C(   964220746),  INT32_C(   557196735) } },
    { { -INT32_C(  1558714266), -INT32_C(  1474286938),  INT32_C(  2027944758), -INT32_C(   237725764) },
      { -INT32_C(   611299852),  INT32_C(  1233220441) },
      {  INT32_C(  1233220441), -INT32_C(  1474286938),  INT32_C(  2027944758), -INT32_C(   237725764) },
      { -INT32_C(  1558714266), -INT32_C(   611299852),  INT32_C(  2027944758), -INT32_C(   237725764) },
      { -INT32_C(  1558714266), -INT32_C(  1474286938),  INT32_C(  1233220441), -INT32_C(   237725764) },
      { -INT32_C(  1558714266), -INT32_C(  1474286938),  INT32_C(  2027944758), -INT32_C(   611299852) } },
    { {  INT32_C(   510883444),  INT32_C(    50993558),  INT32_C(   615538984), -INT32_C(  1925132709) },
      {  INT32_C(    17242711),  INT32_C(   560137033) },
      {  INT32_C(   560137033),  INT32_C(    50993558),  INT32_C(   615538984), -INT32_C(  1925132709) },
      {  INT32_C(   510883444),  INT32_C(    17242711),  INT32_C(   615538984), -INT32_C(  1925132709) },
      {  INT32_C(   510883444),  INT32_C(    50993558),  INT32_C(   560137033), -INT32_C(  1925132709) },
      {  INT32_C(   510883444),  INT32_C(    50993558),  INT32_C(   615538984),  INT32_C(    17242711) } },
    { {  INT32_C(  1386115226), -INT32_C(  1963224204),  INT32_C(   211420390), -INT32_C(  1694280984) },
      { -INT32_C(  1322169749),  INT32_C(   836919814) },
      {  INT32_C(   836919814), -INT32_C(  1963224204),  INT32_C(   211420390), -INT32_C(  1694280984) },
      {  INT32_C(  1386115226), -INT32_C(  1322169749),  INT32_C(   211420390), -INT32_C(  1694280984) },
      {  INT32_C(  1386115226), -INT32_C(  1963224204),  INT32_C(   836919814), -INT32_C(  1694280984) },
      {  INT32_C(  1386115226), -INT32_C(  1963224204),  INT32_C(   211420390), -INT32_C(  1322169749) } },
    { {  INT32_C(   958226031),  INT32_C(    93380822),  INT32_C(  1144688739), -INT32_C(   234382015) },
      {  INT32_C(  1749098987), -INT32_C(   179092004) },
      { -INT32_C(   179092004),  INT32_C(    93380822),  INT32_C(  1144688739), -INT32_C(   234382015) },
      {  INT32_C(   958226031),  INT32_C(  1749098987),  INT32_C(  1144688739), -INT32_C(   234382015) },
      {  INT32_C(   958226031),  INT32_C(    93380822), -INT32_C(   179092004), -INT32_C(   234382015) },
      {  INT32_C(   958226031),  INT32_C(    93380822),  INT32_C(  1144688739),  INT32_C(  1749098987) } },
    { { -INT32_C(   635952031), -INT32_C(  1377334988), -INT32_C(    22978719), -INT32_C(    34765681) },
      {  INT32_C(  1211106462), -INT32_C(    23115063) },
      { -INT32_C(    23115063), -INT32_C(  1377334988), -INT32_C(    22978719), -INT32_C(    34765681) },
      { -INT32_C(   635952031),  INT32_C(  1211106462), -INT32_C(    22978719), -INT32_C(    34765681) },
      { -INT32_C(   635952031), -INT32_C(  1377334988), -INT32_C(    23115063), -INT32_C(    34765681) },
      { -INT32_C(   635952031), -INT32_C(  1377334988), -INT32_C(    22978719),  INT32_C(  1211106462) } },
    { { -INT32_C(   701062361),  INT32_C(   166953805),  INT32_C(  1658614329), -INT32_C(   730083122) },
      { -INT32_C(  1322477008),  INT32_C(   858166047) },
      {  INT32_C(   858166047),  INT32_C(   166953805),  INT32_C(  1658614329), -INT32_C(   730083122) },
      { -INT32_C(   701062361), -INT32_C(  1322477008),  INT32_C(  1658614329), -INT32_C(   730083122) },
      { -INT32_C(   701062361),  INT32_C(   166953805),  INT32_C(   858166047), -INT32_C(   730083122) },
      { -INT32_C(   701062361),  INT32_C(   166953805),  INT32_C(  1658614329), -INT32_C(  1322477008) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a);
    simde_int32x2_t b = simde_vld1_s32(test_vec[i].b);

    simde_int32x4_t r0_1 = simde_vcopyq_lane_s32(a, 0, b, 1);
    simde_int32x4_t r1_0 = simde_vcopyq_lane_s32(a, 1, b, 0);
    simde_int32x4_t r2_1 = simde_vcopyq_lane_s32(a, 2, b, 1);
    simde_int32x4_t r3_0 = simde_vcopyq_lane_s32(a, 3, b, 0);

    simde_test_arm_neon_assert_equal_i32x4(r0_1, simde_vld1q_s32(test_vec[i].r0_1));
    simde_test_arm_neon_assert_equal_i32x4(r1_0, simde_vld1q_s32(test_vec[i].r1_0));
    simde_test_arm_neon_assert_equal_i32x4(r2_1, simde_vld1q_s32(test_vec[i].r2_1));
    simde_test_arm_neon_assert_equal_i32x4(r3_0, simde_vld1q_s32(test_vec[i].r3_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int32x4_t a = simde_test_arm_neon_random_i32x4();
    simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
    simde_int32x4_t r0_1 = simde_vcopyq_lane_s32(a, 0, b, 1);
    simde_int32x4_t r1_0 = simde_vcopyq_lane_s32(a, 1, b, 0);
    simde_int32x4_t r2_1 = simde_vcopyq_lane_s32(a, 2, b, 1);
    simde_int32x4_t r3_0 = simde_vcopyq_lane_s32(a, 3, b, 0);

    simde_test_arm_neon_write_i32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r2_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r3_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t a[2];
    int64_t b[1];
    int64_t r0_0[2];
    int64_t r1_0[2];
  } test_vec[] = {
    { {  INT64_C( 5923506011110482733), -INT64_C( 2645285737381901732) },
      { -INT64_C( 7834399894314585151) },
      { -INT64_C( 7834399894314585151), -INT64_C( 2645285737381901732) },
      {  INT64_C( 5923506011110482733), -INT64_C( 7834399894314585151) } },
    { { -INT64_C( 1016997391912317657),  INT64_C(  387471655083973654) },
      { -INT64_C( 2303427801483812271) },
      { -INT64_C( 2303427801483812271),  INT64_C(  387471655083973654) },
      { -INT64_C( 1016997391912317657), -INT64_C( 2303427801483812271) } },
    { {  INT64_C( 7341233720419624579),  INT64_C( 8440647527380018740) },
      {  INT64_C( 6296444952903933582) },
      {  INT64_C( 6296444952903933582),  INT64_C( 8440647527380018740) },
      {  INT64_C( 7341233720419624579),  INT64_C( 6296444952903933582) } },
    { { -INT64_C(  768202849149799049), -INT64_C( 4683657666914593469) },
      {  INT64_C( 5482397825823415064) },
      {  INT64_C( 5482397825823415064), -INT64_C( 4683657666914593469) },
      { -INT64_C(  768202849149799049),  INT64_C( 5482397825823415064) } },
    { {  INT64_C( 6276973598659071226),  INT64_C( 5439164051307246322) },
      {  INT64_C( 7898197828517044658) },
      {  INT64_C( 7898197828517044658),  INT64_C( 5439164051307246322) },
      {  INT64_C( 6276973598659071226),  INT64_C( 7898197828517044658) } },
    { { -INT64_C( 5573085121491680858),  INT64_C( 5680682011604371585) },
      { -INT64_C( 9149867884760669227) },
      { -INT64_C( 9149867884760669227),  INT64_C( 5680682011604371585) },
      { -INT64_C( 5573085121491680858), -INT64_C( 9149867884760669227) } },
    { {  INT64_C( 8622738552695243649), -INT64_C( 6638279232013153822) },
      { -INT64_C( 5812927542173415403) },
      { -INT64_C( 5812927542173415403), -INT64_C( 6638279232013153822) },
      {  INT64_C( 8622738552695243649), -INT64_C( 5812927542173415403) } },
    { { -INT64_C( 2025031443728201743),  INT64_C( 9148317493025265463) },
      {  INT64_C( 5207511157286457380) },
      {  INT64_C( 5207511157286457380),  INT64_C( 9148317493025265463) },
      { -INT64_C( 2025031443728201743),  INT64_C( 5207511157286457380) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a);
    simde_int64x1_t b = simde_vld1_s64(test_vec[i].b);

    simde_int64x2_t r0_0 = simde_vcopyq_lane_s64(a, 0, b, 0);
    simde_int64x2_t r1_0 = simde_vcopyq_lane_s64(a, 1, b, 0);

    simde_test_arm_neon_assert_equal_i64x2(r0_0, simde_vld1q_s64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_i64x2(r1_0, simde_vld1q_s64(test_vec[i].r1_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int64x2_t a = simde_test_arm_neon_random_i64x2();
    simde_int64x1_t b = simde_test_arm_neon_random_i64x1();
    simde_int64x2_t r0_0 = simde_vcopyq_lane_s64(a, 0, b, 0);
    simde_int64x2_t r1_0 = simde_vcopyq_lane_s64(a, 1, b, 0);

    simde_test_arm_neon_write_i64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r1_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t a[16];
    uint8_t b[8];
    uint8_t r0_7[16];
    uint8_t r4_6[16];
    uint8_t r8_4[16];
    uint8_t r12_3[16];
    uint8_t r15_1[16];
  } test_vec[] = {
    { {  UINT8_C(    59),  UINT8_C(   146),  UINT8_C(    87),  UINT8_C(    29),
         UINT8_C(    78),  UINT8_C(    48),  UINT8_C(    79),  UINT8_C(   166),
         UINT8_C(    32),  UINT8_C(   121),  UINT8_C(   103),  UINT8_C(   178),
         UINT8_C(   206),  UINT8_C(    10),  UINT8_C(   184),  UINT8_C(   187) },
      {  UINT8_C(    70),  UINT8_C(   103),  UINT8_C(   193),  UINT8_C(    36),
         UINT8_C(    18),  UINT8_C(   128),  UINT8_C(   189),  UINT8_C(   208) },
      {  UINT8_C(   208),  UINT8_C(   146),  UINT8_C(    87),  UINT8_C(    29),
         UINT8_C(    78),  UINT8_C(    48),  UINT8_C(    79),  UINT8_C(   166),
         UINT8_C(    32),  UINT8_C(   121),  UINT8_C(   103),  UINT8_C(   178),
         UINT8_C(   206),  UINT8_C(    10),  UINT8_C(   184),  UINT8_C(   187) },
      {  UINT8_C(    59),  UINT8_C(   146),  UINT8_C(    87),  UINT8_C(    29),
         UINT8_C(   189),  UINT8_C(    48),  UINT8_C(    79),  UINT8_C(   166),
         UINT8_C(    32),  UINT8_C(   121),  UINT8_C(   103),  UINT8_C(   178),
         UINT8_C(   206),  UINT8_C(    10),  UINT8_C(   184),  UINT8_C(   187) },
      {  UINT8_C(    59),  UINT8_C(   146),  UINT8_C(    87),  UINT8_C(    29),
         UINT8_C(    78),  UINT8_C(    48),  UINT8_C(    79),  UINT8_C(   166),
         UINT8_C(    18),  UINT8_C(   121),  UINT8_C(   103),  UINT8_C(   178),
         UINT8_C(   206),  UINT8_C(    10),  UINT8_C(   184),  UINT8_C(   187) },
      {  UINT8_C(    59),  UINT8_C(   146),  UINT8_C(    87),  UINT8_C(    29),
         UINT8_C(    78),  UINT8_C(    48),  UINT8_C(    79),  UINT8_C(   166),
         UINT8_C(    32),  UINT8_C(   121),  UINT8_C(   103),  UINT8_C(   178),
         UINT8_C(    36),  UINT8_C(    10),  UINT8_C(   184),  UINT8_C(   187) },
      {  UINT8_C(    59),  UINT8_C(   146),  UINT8_C(    87),  UINT8_C(    29),
         UINT8_C(    78),  UINT8_C(    48),  UINT8_C(    79),  UINT8_C(   166),
         UINT8_C(    32),  UINT8_C(   121),  UINT8_C(   103),  UINT8_C(   178),
         UINT8_C(   206),  UINT8_C(    10),  UINT8_C(   184),  UINT8_C(   103) } },
    { {  UINT8_C(    91),  UINT8_C(   101),  UINT8_C(    84),  UINT8_C(    52),
         UINT8_C(    61),  UINT8_C(   205),  UINT8_C(    72),  UINT8_C(   179),
         UINT8_C(   111),  UINT8_C(   192),  UINT8_C(   117),  UINT8_C(   227),
         UINT8_C(   194),  UINT8_C(   125),  UINT8_C(    37),  UINT8_C(   129) },
      {  UINT8_C(   139),  UINT8_C(    50),  UINT8_C(   181),  UINT8_C(   157),
         UINT8_C(   169),  UINT8_C(   160),  UINT8_C(   180),  UINT8_C(   165) },
      {  UINT8_C(   165),  UINT8_C(   101),  UINT8_C(    84),  UINT8_C(    52),
         UINT8_C(    61),  UINT8_C(   205),  UINT8_C(    72),  UINT8_C(   179),
         UINT8_C(   111),  UINT8_C(   192),  UINT8_C(   117),  UINT8_C(   227),
         UINT8_C(   194),  UINT8_C(   125),  UINT8_C(    37),  UINT8_C(   129) },
      {  UINT8_C(    91),  UINT8_C(   101),  UINT8_C(    84),  UINT8_C(    52),
         UINT8_C(   180),  UINT8_C(   205),  UINT8_C(    72),  UINT8_C(   179),
         UINT8_C(   111),  UINT8_C(   192),  UINT8_C(   117),  UINT8_C(   227),
         UINT8_C(   194),  UINT8_C(   125),  UINT8_C(    37),  UINT8_C(   129) },
      {  UINT8_C(    91),  UINT8_C(   101),  UINT8_C(    84),  UINT8_C(    52),
         UINT8_C(    61),  UINT8_C(   205),  UINT8_C(    72),  UINT8_C(   179),
         UINT8_C(   169),  UINT8_C(   192),  UINT8_C(   117),  UINT8_C(   227),
         UINT8_C(   194),  UINT8_C(   125),  UINT8_C(    37),  UINT8_C(   129) },
      {  UINT8_C(    91),  UINT8_C(   101),  UINT8_C(    84),  UINT8_C(    52),
         UINT8_C(    61),  UINT8_C(   205),  UINT8_C(    72),  UINT8_C(   179),
         UINT8_C(   111),  UINT8_C(   192),  UINT8_C(   117),  UINT8_C(   227),
         UINT8_C(   157),  UINT8_C(   125),  UINT8_C(    37),  UINT8_C(   129) },
      {  UINT8_C(    91),  UINT8_C(   101),  UINT8_C(    84),  UINT8_C(    52),
         UINT8_C(    61),  UINT8_C(   205),  UINT8_C(    72),  UINT8_C(   179),
         UINT8_C(   111),  UINT8_C(   192),  UINT8_C(   117),  UINT8_C(   227),
         UINT8_C(   194),  UINT8_C(   125),  UINT8_C(    37),  UINT8_C(    50) } },
    { {  UINT8_C(   105),  UINT8_C(   235),  UINT8_C(   218),  UINT8_C(    67),
         UINT8_C(   196),  UINT8_C(   121),  UINT8_C(   249),  UINT8_C(   221),
         UINT8_C(   132),  UINT8_C(    75),  UINT8_C(   140),  UINT8_C(    45),
         UINT8_C(    16),  UINT8_C(    48),  UINT8_C(    49),  UINT8_C(   129) },
      {  UINT8_C(    43),  UINT8_C(   107),  UINT8_C(   122),  UINT8_C(   203),
         UINT8_C(    47),  UINT8_C(    15),  UINT8_C(   218),  UINT8_C(   173) },
      {  UINT8_C(   173),  UINT8_C(   235),  UINT8_C(   218),  UINT8_C(    67),
         UINT8_C(   196),  UINT8_C(   121),  UINT8_C(   249),  UINT8_C(   221),
         UINT8_C(   132),  UINT8_C(    75),  UINT8_C(   140),  UINT8_C(    45),
         UINT8_C(    16),  UINT8_C(    48),  UINT8_C(    49),  UINT8_C(   129) },
      {  UINT8_C(   105),  UINT8_C(   235),  UINT8_C(   218),  UINT8_C(    67),
         UINT8_C(   218),  UINT8_C(   121),  UINT8_C(   249),  UINT8_C(   221),
         UINT8_C(   132),  UINT8_C(    75),  UINT8_C(   140),  UINT8_C(    45),
         UINT8_C(    16),  UINT8_C(    48),  UINT8_C(    49),  UINT8_C(   129) },
      {  UINT8_C(   105),  UINT8_C(   235),  UINT8_C(   218),  UINT8_C(    67),
         UINT8_C(   196),  UINT8_C(   121),  UINT8_C(   249),  UINT8_C(   221),
         UINT8_C(    47),  UINT8_C(    75),  UINT8_C(   140),  UINT8_C(    45),
         UINT8_C(    16),  UINT8_C(    48),  UINT8_C(    49),  UINT8_C(   129) },
      {  UINT8_C(   105),  UINT8_C(   235),  UINT8_C(   218),  UINT8_C(    67),
         UINT8_C(   196),  UINT8_C(   121),  UINT8_C(   249),  UINT8_C(   221),
         UINT8_C(   132),  UINT8_C(    75),  UINT8_C(   140),  UINT8_C(    45),
         UINT8_C(   203),  UINT8_C(    48),  UINT8_C(    49),  UINT8_C(   129) },
      {  UINT8_C(   105),  UINT8_C(   235),  UINT8_C(   218),  UINT8_C(    67),
         UINT8_C(   196),  UINT8_C(   121),  UINT8_C(   249),  UINT8_C(   221),
         UINT8_C(   132),  UINT8_C(    75),  UINT8_C(   140),  UINT8_C(    45),
         UINT8_C(    16),  UINT8_C(    48),  UINT8_C(    49),  UINT8_C(   107) } },
    { {  UINT8_C(     7),  UINT8_C(    14),  UINT8_C(    69),  UINT8_C(   189),
         UINT8_C(   193),  UINT8_C(     0),  UINT8_C(   183),  UINT8_C(   117),
         UINT8_C(    61),  UINT8_C(   243),  UINT8_C(   125),  UINT8_C(   221),
         UINT8_C(   101),  UINT8_C(   249),  UINT8_C(   217),  UINT8_C(   254) },
      {  UINT8_C(    46),  UINT8_C(   151),  UINT8_C(   116),  UINT8_C(   149),
         UINT8_C(    92),  UINT8_C(    84),  UINT8_C(   239),  UINT8_C(   224) },
      {  UINT8_C(   224),  UINT8_C(    14),  UINT8_C(    69),  UINT8_C(   189),
         UINT8_C(   193),  UINT8_C(     0),  UINT8_C(   183),  UINT8_C(   117),
         UINT8_C(    61),  UINT8_C(   243),  UINT8_C(   125),  UINT8_C(   221),
         UINT8_C(   101),  UINT8_C(   249),  UINT8_C(   217),  UINT8_C(   254) },
      {  UINT8_C(     7),  UINT8_C(    14),  UINT8_C(    69),  UINT8_C(   189),
         UINT8_C(   239),  UINT8_C(     0),  UINT8_C(   183),  UINT8_C(   117),
         UINT8_C(    61),  UINT8_C(   243),  UINT8_C(   125),  UINT8_C(   221),
         UINT8_C(   101),  UINT8_C(   249),  UINT8_C(   217),  UINT8_C(   254) },
      {  UINT8_C(     7),  UINT8_C(    14),  UINT8_C(    69),  UINT8_C(   189),
         UINT8_C(   193),  UINT8_C(     0),  UINT8_C(   183),  UINT8_C(   117),
         UINT8_C(    92),  UINT8_C(   243),  UINT8_C(   125),  UINT8_C(   221),
         UINT8_C(   101),  UINT8_C(   249),  UINT8_C(   217),  UINT8_C(   254) },
      {  UINT8_C(     7),  UINT8_C(    14),  UINT8_C(    69),  UINT8_C(   189),
         UINT8_C(   193),  UINT8_C(     0),  UINT8_C(   183),  UINT8_C(   117),
         UINT8_C(    61),  UINT8_C(   243),  UINT8_C(   125),  UINT8_C(   221),
         UINT8_C(   149),  UINT8_C(   249),  UINT8_C(   217),  UINT8_C(   254) },
      {  UINT8_C(     7),  UINT8_C(    14),  UINT8_C(    69),  UINT8_C(   189),
         UINT8_C(   193),  UINT8_C(     0),  UINT8_C(   183),  UINT8_C(   117),
         UINT8_C(    61),  UINT8_C(   243),  UINT8_C(   125),  UINT8_C(   221),
         UINT8_C(   101),  UINT8_C(   249),  UINT8_C(   217),  UINT8_C(   151) } },
    { {  UINT8_C(   129),  UINT8_C(    32),  UINT8_C(   181),  UINT8_C(    85),
         UINT8_C(   235),  UINT8_C(   229),  UINT8_C(    36),  UINT8_C(   140),
         UINT8_C(   224),  UINT8_C(   213),  UINT8_C(   182),  UINT8_C(   144),
         UINT8_C(    39),  UINT8_C(    35),  UINT8_C(   204),  UINT8_C(   158) },
      {  UINT8_C(    61),  UINT8_C(   217),  UINT8_C(   158),  UINT8_C(    85),
         UINT8_C(    22),  UINT8_C(    54),  UINT8_C(    63),  UINT8_C(    57) },
      {  UINT8_C(    57),  UINT8_C(    32),  UINT8_C(   181),  UINT8_C(    85),
         UINT8_C(   235),  UINT8_C(   229),  UINT8_C(    36),  UINT8_C(   140),
         UINT8_C(   224),  UINT8_C(   213),  UINT8_C(   182),  UINT8_C(   144),
         UINT8_C(    39),  UINT8_C(    35),  UINT8_C(   204),  UINT8_C(   158) },
      {  UINT8_C(   129),  UINT8_C(    32),  UINT8_C(   181),  UINT8_C(    85),
         UINT8_C(    63),  UINT8_C(   229),  UINT8_C(    36),  UINT8_C(   140),
         UINT8_C(   224),  UINT8_C(   213),  UINT8_C(   182),  UINT8_C(   144),
         UINT8_C(    39),  UINT8_C(    35),  UINT8_C(   204),  UINT8_C(   158) },
      {  UINT8_C(   129),  UINT8_C(    32),  UINT8_C(   181),  UINT8_C(    85),
         UINT8_C(   235),  UINT8_C(   229),  UINT8_C(    36),  UINT8_C(   140),
         UINT8_C(    22),  UINT8_C(   213),  UINT8_C(   182),  UINT8_C(   144),
         UINT8_C(    39),  UINT8_C(    35),  UINT8_C(   204),  UINT8_C(   158) },
      {  UINT8_C(   129),  UINT8_C(    32),  UINT8_C(   181),  UINT8_C(    85),
         UINT8_C(   235),  UINT8_C(   229),  UINT8_C(    36),  UINT8_C(   140),
         UINT8_C(   224),  UINT8_C(   213),  UINT8_C(   182),  UINT8_C(   144),
         UINT8_C(    85),  UINT8_C(    35),  UINT8_C(   204),  UINT8_C(   158) },
      {  UINT8_C(   129),  UINT8_C(    32),  UINT8_C(   181),  UINT8_C(    85),
         UINT8_C(   235),  UINT8_C(   229),  UINT8_C(    36),  UINT8_C(   140),
         UINT8_C(   224),  UINT8_C(   213),  UINT8_C(   182),  UINT8_C(   144),
         UINT8_C(    39),  UINT8_C(    35),  UINT8_C(   204),  UINT8_C(   217) } },
    { {  UINT8_C(    42),  UINT8_C(    33),  UINT8_C(   152),  UINT8_C(   160),
         UINT8_C(   201),  UINT8_C(    17),  UINT8_C(   113),  UINT8_C(    21),
         UINT8_C(   152),  UINT8_C(    89),  UINT8_C(   243),  UINT8_C(   109),
         UINT8_C(   248),  UINT8_C(    92),  UINT8_C(   158),  UINT8_C(   137) },
      {  UINT8_C(   101),  UINT8_C(   207),  UINT8_C(   250),  UINT8_C(   139),
         UINT8_C(   236),  UINT8_C(    39),  UINT8_C(   230),  UINT8_C(   206) },
      {  UINT8_C(   206),  UINT8_C(    33),  UINT8_C(   152),  UINT8_C(   160),
         UINT8_C(   201),  UINT8_C(    17),  UINT8_C(   113),  UINT8_C(    21),
         UINT8_C(   152),  UINT8_C(    89),  UINT8_C(   243),  UINT8_C(   109),
         UINT8_C(   248),  UINT8_C(    92),  UINT8_C(   158),  UINT8_C(   137) },
      {  UINT8_C(    42),  UINT8_C(    33),  UINT8_C(   152),  UINT8_C(   160),
         UINT8_C(   230),  UINT8_C(    17),  UINT8_C(   113),  UINT8_C(    21),
         UINT8_C(   152),  UINT8_C(    89),  UINT8_C(   243),  UINT8_C(   109),
         UINT8_C(   248),  UINT8_C(    92),  UINT8_C(   158),  UINT8_C(   137) },
      {  UINT8_C(    42),  UINT8_C(    33),  UINT8_C(   152),  UINT8_C(   160),
         UINT8_C(   201),  UINT8_C(    17),  UINT8_C(   113),  UINT8_C(    21),
         UINT8_C(   236),  UINT8_C(    89),  UINT8_C(   243),  UINT8_C(   109),
         UINT8_C(   248),  UINT8_C(    92),  UINT8_C(   158),  UINT8_C(   137) },
      {  UINT8_C(    42),  UINT8_C(    33),  UINT8_C(   152),  UINT8_C(   160),
         UINT8_C(   201),  UINT8_C(    17),  UINT8_C(   113),  UINT8_C(    21),
         UINT8_C(   152),  UINT8_C(    89),  UINT8_C(   243),  UINT8_C(   109),
         UINT8_C(   139),  UINT8_C(    92),  UINT8_C(   158),  UINT8_C(   137) },
      {  UINT8_C(    42),  UINT8_C(    33),  UINT8_C(   152),  UINT8_C(   160),
         UINT8_C(   201),  UINT8_C(    17),  UINT8_C(   113),  UINT8_C(    21),
         UINT8_C(   152),  UINT8_C(    89),  UINT8_C(   243),  UINT8_C(   109),
         UINT8_C(   248),  UINT8_C(    92),  UINT8_C(   158),  UINT8_C(   207) } },
    { {  UINT8_C(    14),  UINT8_C(     0),  UINT8_C(   142),  UINT8_C(   110),
         UINT8_C(   120),  UINT8_C(    86),  UINT8_C(   235),  UINT8_C(    19),
         UINT8_C(    79),  UINT8_C(   222),  UINT8_C(    38),  UINT8_C(    88),
         UINT8_C(   118),  UINT8_C(    99),  UINT8_C(   223),  UINT8_C(   239) },
      {  UINT8_C(    87),  UINT8_C(   213),  UINT8_C(    68),  UINT8_C(   244),
         UINT8_C(    30),  UINT8_C(   172),  UINT8_C(     2),  UINT8_C(   136) },
      {  UINT8_C(   136),  UINT8_C(     0),  UINT8_C(   142),  UINT8_C(   110),
         UINT8_C(   120),  UINT8_C(    86),  UINT8_C(   235),  UINT8_C(    19),
         UINT8_C(    79),  UINT8_C(   222),  UINT8_C(    38),  UINT8_C(    88),
         UINT8_C(   118),  UINT8_C(    99),  UINT8_C(   223),  UINT8_C(   239) },
      {  UINT8_C(    14),  UINT8_C(     0),  UINT8_C(   142),  UINT8_C(   110),
         UINT8_C(     2),  UINT8_C(    86),  UINT8_C(   235),  UINT8_C(    19),
         UINT8_C(    79),  UINT8_C(   222),  UINT8_C(    38),  UINT8_C(    88),
         UINT8_C(   118),  UINT8_C(    99),  UINT8_C(   223),  UINT8_C(   239) },
      {  UINT8_C(    14),  UINT8_C(     0),  UINT8_C(   142),  UINT8_C(   110),
         UINT8_C(   120),  UINT8_C(    86),  UINT8_C(   235),  UINT8_C(    19),
         UINT8_C(    30),  UINT8_C(   222),  UINT8_C(    38),  UINT8_C(    88),
         UINT8_C(   118),  UINT8_C(    99),  UINT8_C(   223),  UINT8_C(   239) },
      {  UINT8_C(    14),  UINT8_C(     0),  UINT8_C(   142),  UINT8_C(   110),
         UINT8_C(   120),  UINT8_C(    86),  UINT8_C(   235),  UINT8_C(    19),
         UINT8_C(    79),  UINT8_C(   222),  UINT8_C(    38),  UINT8_C(    88),
         UINT8_C(   244),  UINT8_C(    99),  UINT8_C(   223),  UINT8_C(   239) },
      {  UINT8_C(    14),  UINT8_C(     0),  UINT8_C(   142),  UINT8_C(   110),
         UINT8_C(   120),  UINT8_C(    86),  UINT8_C(   235),  UINT8_C(    19),
         UINT8_C(    79),  UINT8_C(   222),  UINT8_C(    38),  UINT8_C(    88),
         UINT8_C(   118),  UINT8_C(    99),  UINT8_C(   223),  UINT8_C(   213) } },
    { {  UINT8_C(   155),  UINT8_C(   176),  UINT8_C(   228),  UINT8_C(    41),
         UINT8_C(   114),  UINT8_C(    45),  UINT8_C(   120),  UINT8_C(    68),
         UINT8_C(   185),  UINT8_C(   174),  UINT8_C(   129),  UINT8_C(    46),
         UINT8_C(    81),  UINT8_C(   187),  UINT8_C(     3),  UINT8_C(   123) },
      {  UINT8_C(   151),  UINT8_C(    65),  UINT8_C(    26),  UINT8_C(     1),
         UINT8_C(   212),  UINT8_C(   113),  UINT8_C(    67),  UINT8_C(    18) },
      {  UINT8_C(    18),  UINT8_C(   176),  UINT8_C(   228),  UINT8_C(    41),
         UINT8_C(   114),  UINT8_C(    45),  UINT8_C(   120),  UINT8_C(    68),
         UINT8_C(   185),  UINT8_C(   174),  UINT8_C(   129),  UINT8_C(    46),
         UINT8_C(    81),  UINT8_C(   187),  UINT8_C(     3),  UINT8_C(   123) },
      {  UINT8_C(   155),  UINT8_C(   176),  UINT8_C(   228),  UINT8_C(    41),
         UINT8_C(    67),  UINT8_C(    45),  UINT8_C(   120),  UINT8_C(    68),
         UINT8_C(   185),  UINT8_C(   174),  UINT8_C(   129),  UINT8_C(    46),
         UINT8_C(    81),  UINT8_C(   187),  UINT8_C(     3),  UINT8_C(   123) },
      {  UINT8_C(   155),  UINT8_C(   176),  UINT8_C(   228),  UINT8_C(    41),
         UINT8_C(   114),  UINT8_C(    45),  UINT8_C(   120),  UINT8_C(    68),
         UINT8_C(   212),  UINT8_C(   174),  UINT8_C(   129),  UINT8_C(    46),
         UINT8_C(    81),  UINT8_C(   187),  UINT8_C(     3),  UINT8_C(   123) },
      {  UINT8_C(   155),  UINT8_C(   176),  UINT8_C(   228),  UINT8_C(    41),
         UINT8_C(   114),  UINT8_C(    45),  UINT8_C(   120),  UINT8_C(    68),
         UINT8_C(   185),  UINT8_C(   174),  UINT8_C(   129),  UINT8_C(    46),
         UINT8_C(     1),  UINT8_C(   187),  UINT8_C(     3),  UINT8_C(   123) },
      {  UINT8_C(   155),  UINT8_C(   176),  UINT8_C(   228),  UINT8_C(    41),
         UINT8_C(   114),  UINT8_C(    45),  UINT8_C(   120),  UINT8_C(    68),
         UINT8_C(   185),  UINT8_C(   174),  UINT8_C(   129),  UINT8_C(    46),
         UINT8_C(    81),  UINT8_C(   187),  UINT8_C(     3),  UINT8_C(    65) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
    simde_uint8x8_t b = simde_vld1_u8(test_vec[i].b);

    simde_uint8x16_t r0_7 = simde_vcopyq_lane_u8(a, 0, b, 7);
    simde_uint8x16_t r4_6 = simde_vcopyq_lane_u8(a, 4, b, 6);
    simde_uint8x16_t r8_4 = simde_vcopyq_lane_u8(a, 8, b, 4);
    simde_uint8x16_t r12_3 = simde_vcopyq_lane_u8(a, 12, b, 3);
    simde_uint8x16_t r15_1 = simde_vcopyq_lane_u8(a, 15, b, 1);

    simde_test_arm_neon_assert_equal_u8x16(r0_7, simde_vld1q_u8(test_vec[i].r0_7));
    simde_test_arm_neon_assert_equal_u8x16(r4_6, simde_vld1q_u8(test_vec[i].r4_6));
    simde_test_arm_neon_assert_equal_u8x16(r8_4, simde_vld1q_u8(test_vec[i].r8_4));
    simde_test_arm_neon_assert_equal_u8x16(r12_3, simde_vld1q_u8(test_vec[i].r12_3));
    simde_test_arm_neon_assert_equal_u8x16(r15_1, simde_vld1q_u8(test_vec[i].r15_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
    simde_uint8x8_t b = simde_test_arm_neon_random_u8x8();
    simde_uint8x16_t r0_7 = simde_vcopyq_lane_u8(a, 0, b, 7);
    simde_uint8x16_t r4_6 = simde_vcopyq_lane_u8(a, 4, b, 6);
    simde_uint8x16_t r8_4 = simde_vcopyq_lane_u8(a, 8, b, 4);
    simde_uint8x16_t r12_3 = simde_vcopyq_lane_u8(a, 12, b, 3);
    simde_uint8x16_t r15_1 = simde_vcopyq_lane_u8(a, 15, b, 1);

    simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r4_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r8_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r12_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r15_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t a[8];
    uint16_t b[4];
    uint16_t r0_3[8];
    uint16_t r3_2[8];
    uint16_t r5_1[8];
    uint16_t r7_0[8];
  } test_vec[] = {
    { {  UINT16_C(   45106),  UINT16_C(   38241),  UINT16_C(    4836),  UINT16_C(   40111),
         UINT16_C(   37552),  UINT16_C(   53688),  UINT16_C(   17469),  UINT16_C(   24387) },
      {  UINT16_C(   47087),  UINT16_C(   53333),  UINT16_C(   17428),  UINT16_C(   45727) },
      {  UINT16_C(   45727),  UINT16_C(   38241),  UINT16_C(    4836),  UINT16_C(   40111),
         UINT16_C(   37552),  UINT16_C(   53688),  UINT16_C(   17469),  UINT16_C(   24387) },
      {  UINT16_C(   45106),  UINT16_C(   38241),  UINT16_C(    4836),  UINT16_C(   17428),
         UINT16_C(   37552),  UINT16_C(   53688),  UINT16_C(   17469),  UINT16_C(   24387) },
      {  UINT16_C(   45106),  UINT16_C(   38241),  UINT16_C(    4836),  UINT16_C(   40111),
         UINT16_C(   37552),  UINT16_C(   53333),  UINT16_C(   17469),  UINT16_C(   24387) },
      {  UINT16_C(   45106),  UINT16_C(   38241),  UINT16_C(    4836),  UINT16_C(   40111),
         UINT16_C(   37552),  UINT16_C(   53688),  UINT16_C(   17469),  UINT16_C(   47087) } },
    { {  UINT16_C(    5206),  UINT16_C(   60332),  UINT16_C(   40277),  UINT16_C(   19674),
         UINT16_C(    6622),  UINT16_C(   38757),  UINT16_C(   64251),  UINT16_C(   47386) },
      {  UINT16_C(    8478),  UINT16_C(    4749),  UINT16_C(   53363),  UINT16_C(   29869) },
      {  UINT16_C(   29869),  UINT16_C(   60332),  UINT16_C(   40277),  UINT16_C(   19674),
         UINT16_C(    6622),  UINT16_C(   38757),  UINT16_C(   64251),  UINT16_C(   47386) },
      {  UINT16_C(    5206),  UINT16_C(   60332),  UINT16_C(   40277),  UINT16_C(   53363),
         UINT16_C(    6622),  UINT16_C(   38757),  UINT16_C(   64251),  UINT16_C(   47386) },
      {  UINT16_C(    5206),  UINT16_C(   60332),  UINT16_C(   40277),  UINT16_C(   19674),
         UINT16_C(    6622),  UINT16_C(    4749),  UINT16_C(   64251),  UINT16_C(   47386) },
      {  UINT16_C(    5206),  UINT16_C(   60332),  UINT16_C(   40277),  UINT16_C(   19674),
         UINT16_C(    6622),  UINT16_C(   38757),  UINT16_C(   64251),  UINT16_C(    8478) } },
    { {  UINT16_C(   59206),  UINT16_C(   36412),  UINT16_C(   15257),  UINT16_C(   46944),
         UINT16_C(   46282),  UINT16_C(   17117),  UINT16_C(   45233),  UINT16_C(    4994) },
      {  UINT16_C(   46395),  UINT16_C(   50547),  UINT16_C(   19830),  UINT16_C(   44578) },
      {  UINT16_C(   44578),  UINT16_C(   36412),  UINT16_C(   15257),  UINT16_C(   46944),
         UINT16_C(   46282),  UINT16_C(   17117),  UINT16_C(   45233),  UINT16_C(    4994) },
      {  UINT16_C(   59206),  UINT16_C(   36412),  UINT16_C(   15257),  UINT16_C(   19830),
         UINT16_C(   46282),  UINT16_C(   17117),  UINT16_C(   45233),  UINT16_C(    4994) },
      {  UINT16_C(   59206),  UINT16_C(   36412),  UINT16_C(   15257),  UINT16_C(   46944),
         UINT16_C(   46282),  UINT16_C(   50547),  UINT16_C(   45233),  UINT16_C(    4994) },
      {  UINT16_C(   59206),  UINT16_C(   36412),  UINT16_C(   15257),  UINT16_C(   46944),
         UINT16_C(   46282),  UINT16_C(   17117),  UINT16_C(   45233),  UINT16_C(   46395) } },
    { {  UINT16_C(   13682),  UINT16_C(   54233),  UINT16_C(   15911),  UINT16_C(   26730),
         UINT16_C(     502),  UINT16_C(   64753),  UINT16_C(   30819),  UINT16_C(   45749) },
      {  UINT16_C(   24828),  UINT16_C(   29679),  UINT16_C(   21740),  UINT16_C(   34938) },
      {  UINT16_C(   34938),  UINT16_C(   54233),  UINT16_C(   15911),  UINT16_C(   26730),
         UINT16_C(     502),  UINT16_C(   64753),  UINT16_C(   30819),  UINT16_C(   45749) },
      {  UINT16_C(   13682),  UINT16_C(   54233),  UINT16_C(   15911),  UINT16_C(   21740),
         UINT16_C(     502),  UINT16_C(   64753),  UINT16_C(   30819),  UINT16_C(   45749) },
      {  UINT16_C(   13682),  UINT16_C(   54233),  UINT16_C(   15911),  UINT16_C(   26730),
         UINT16_C(     502),  UINT16_C(   29679),  UINT16_C(   30819),  UINT16_C(   45749) },
      {  UINT16_C(   13682),  UINT16_C(   54233),  UINT16_C(   15911),  UINT16_C(   26730),
         UINT16_C(     502),  UINT16_C(   64753),  UINT16_C(   30819),  UINT16_C(   24828) } },
    { {  UINT16_C(   12489),  UINT16_C(    1881),  UINT16_C(   42262),  UINT16_C(   53977),
         UINT16_C(   19091),  UINT16_C(   33756),  UINT16_C(   22902),  UINT16_C(   39968) },
      {  UINT16_C(     373),  UINT16_C(   54089),  UINT16_C(   12533),  UINT16_C(   41276) },
      {  UINT16_C(   41276),  UINT16_C(    1881),  UINT16_C(   42262),  UINT16_C(   53977),
         UINT16_C(   19091),  UINT16_C(   33756),  UINT16_C(   22902),  UINT16_C(   39968) },
      {  UINT16_C(   12489),  UINT16_C(    1881),  UINT16_C(   42262),  UINT16_C(   12533),
         UINT16_C(   19091),  UINT16_C(   33756),  UINT16_C(   22902),  UINT16_C(   39968) },
      {  UINT16_C(   12489),  UINT16_C(    1881),  UINT16_C(   42262),  UINT16_C(   53977),
         UINT16_C(   19091),  UINT16_C(   54089),  UINT16_C(   22902),  UINT16_C(   39968) },
      {  UINT16_C(   12489),  UINT16_C(    1881),  UINT16_C(   42262),  UINT16_C(   53977),
         UINT16_C(   19091),  UINT16_C(   33756),  UINT16_C(   22902),  UINT16_C(     373) } },
    { {  UINT16_C(    8219),  UINT16_C(   44521),  UINT16_C(   54001),  UINT16_C(    7888),
         UINT16_C(   57460),  UINT16_C(   14245),  UINT16_C(   48545),  UINT16_C(   24933) },
      {  UINT16_C(   62999),  UINT16_C(   52731),  UINT16_C(   45056),  UINT16_C(   13736) },
      {  UINT16_C(   13736),  UINT16_C(   44521),  UINT16_C(   54001),  UINT16_C(    7888),
         UINT16_C(   57460),  UINT16_C(   14245),  UINT16_C(   48545),  UINT16_C(   24933) },
      {  UINT16_C(    8219),  UINT16_C(   44521),  UINT16_C(   54001),  UINT16_C(   45056),
         UINT16_C(   57460),  UINT16_C(   14245),  UINT16_C(   48545),  UINT16_C(   24933) },
      {  UINT16_C(    8219),  UINT16_C(   44521),  UINT16_C(   54001),  UINT16_C(    7888),
         UINT16_C(   57460),  UINT16_C(   52731),  UINT16_C(   48545),  UINT16_C(   24933) },
      {  UINT16_C(    8219),  UINT16_C(   44521),  UINT16_C(   54001),  UINT16_C(    7888),
         UINT16_C(   57460),  UINT16_C(   14245),  UINT16_C(   48545),  UINT16_C(   62999) } },
    { {  UINT16_C(   17803),  UINT16_C(   23302),  UINT16_C(   51288),  UINT16_C(    6738),
         UINT16_C(   26381),  UINT16_C(   44920),  UINT16_C(     438),  UINT16_C(   12440) },
      {  UINT16_C(   64520),  UINT16_C(    6608),  UINT16_C(   27242),  UINT16_C(    9986) },
      {  UINT16_C(    9986),  UINT16_C(   23302),  UINT16_C(   51288),  UINT16_C(    6738),
         UINT16_C(   26381),  UINT16_C(   44920),  UINT16_C(     438),  UINT16_C(   12440) },
      {  UINT16_C(   17803),  UINT16_C(   23302),  UINT16_C(   51288),  UINT16_C(   27242),
         UINT16_C(   26381),  UINT16_C(   44920),  UINT16_C(     438),  UINT16_C(   12440) },
      {  UINT16_C(   17803),  UINT16_C(   23302),  UINT16_C(   51288),  UINT16_C(    6738),
         UINT16_C(   26381),  UINT16_C(    6608),  UINT16_C(     438),  UINT16_C(   12440) },
      {  UINT16_C(   17803),  UINT16_C(   23302),  UINT16_C(   51288),  UINT16_C(    6738),
         UINT16_C(   26381),  UINT16_C(   44920),  UINT16_C(     438),  UINT16_C(   64520) } },
    { {  UINT16_C(   40969),  UINT16_C(   63552),  UINT16_C(   36257),  UINT16_C(    5157),
         UINT16_C(   49006),  UINT16_C(    3329),  UINT16_C(   25930),  UINT16_C(   37093) },
      {  UINT16_C(   24602),  UINT16_C(   27093),  UINT16_C(   33126),  UINT16_C(   48029) },
      {  UINT16_C(   48029),  UINT16_C(   63552),  UINT16_C(   36257),  UINT16_C(    5157),
         UINT16_C(   49006),  UINT16_C(    3329),  UINT16_C(   25930),  UINT16_C(   37093) },
      {  UINT16_C(   40969),  UINT16_C(   63552),  UINT16_C(   36257),  UINT16_C(   33126),
         UINT16_C(   49006),  UINT16_C(    3329),  UINT16_C(   25930),  UINT16_C(   37093) },
      {  UINT16_C(   40969),  UINT16_C(   63552),  UINT16_C(   36257),  UINT16_C(    5157),
         UINT16_C(   49006),  UINT16_C(   27093),  UINT16_C(   25930),  UINT16_C(   37093) },
      {  UINT16_C(   40969),  UINT16_C(   63552),  UINT16_C(   36257),  UINT16_C(    5157),
         UINT16_C(   49006),  UINT16_C(    3329),  UINT16_C(   25930),  UINT16_C(   24602) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
    simde_uint16x4_t b = simde_vld1_u16(test_vec[i].b);

    simde_uint16x8_t r0_3 = simde_vcopyq_lane_u16(a, 0, b, 3);
    simde_uint16x8_t r3_2 = simde_vcopyq_lane_u16(a, 3, b, 2);
    simde_uint16x8_t r5_1 = simde_vcopyq_lane_u16(a, 5, b, 1);
    simde_uint16x8_t r7_0 = simde_vcopyq_lane_u16(a, 7, b, 0);

    simde_test_arm_neon_assert_equal_u16x8(r0_3, simde_vld1q_u16(test_vec[i].r0_3));
    simde_test_arm_neon_assert_equal_u16x8(r3_2, simde_vld1q_u16(test_vec[i].r3_2));
    simde_test_arm_neon_assert_equal_u16x8(r5_1, simde_vld1q_u16(test_vec[i].r5_1));
    simde_test_arm_neon_assert_equal_u16x8(r7_0, simde_vld1q_u16(test_vec[i].r7_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
    simde_uint16x4_t b = simde_test_arm_neon_random_u16x4();
    simde_uint16x8_t r0_3 = simde_vcopyq_lane_u16(a, 0, b, 3);
    simde_uint16x8_t r3_2 = simde_vcopyq_lane_u16(a, 3, b, 2);
    simde_uint16x8_t r5_1 = simde_vcopyq_lane_u16(a, 5, b, 1);
    simde_uint16x8_t r7_0 = simde_vcopyq_lane_u16(a, 7, b, 0);

    simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r3_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r5_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r7_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t a[4];
    uint32_t b[2];
    uint32_t r0_1[4];
    uint32_t r1_0[4];
    uint32_t r2_1[4];
    uint32_t r3_0[4];
  } test_vec[] = {
    { {  UINT32_C(   361921892),  UINT32_C(  3900928184),  UINT32_C(  3837963448),  UINT32_C(   429793356) },
      {  UINT32_C(    26373424),  UINT32_C(  3910484228) },
      {  UINT32_C(  3910484228),  UINT32_C(  3900928184),  UINT32_C(  3837963448),  UINT32_C(   429793356) },
      {  UINT32_C(   361921892),  UINT32_C(    26373424),  UINT32_C(  3837963448),  UINT32_C(   429793356) },
      {  UINT32_C(   361921892),  UINT32_C(  3900928184),  UINT32_C(  3910484228),  UINT32_C(   429793356) },
      {  UINT32_C(   361921892),  UINT32_C(  3900928184),  UINT32_C(  3837963448),  UINT32_C(    26373424) } },
    { {  UINT32_C(  1396390629),  UINT32_C(  3575792530),  UINT32_C(  3584537359),  UINT32_C(  2356347849) },
      {  UINT32_C(  3791328885),  UINT32_C(  2861189464) },
      {  UINT32_C(  2861189464),  UINT32_C(  3575792530),  UINT32_C(  3584537359),  UINT32_C(  2356347849) },
      {  UINT32_C(  1396390629),  UINT32_C(  3791328885),  UINT32_C(  3584537359),  UINT32_C(  2356347849) },
      {  UINT32_C(  1396390629),  UINT32_C(  3575792530),  UINT32_C(  2861189464),  UINT32_C(  2356347849) },
      {  UINT32_C(  1396390629),  UINT32_C(  3575792530),  UINT32_C(  3584537359),  UINT32_C(  3791328885) } },
    { {  UINT32_C(  2264455894),  UINT32_C(   772844039),  UINT32_C(  2992759396),  UINT32_C(  2614908981) },
      {  UINT32_C(   121133279),  UINT32_C(  1252193851) },
      {  UINT32_C(  1252193851),  UINT32_C(   772844039),  UINT32_C(  2992759396),  UINT32_C(  2614908981) },
      {  UINT32_C(  2264455894),  UINT32_C(   121133279),  UINT32_C(  2992759396),  UINT32_C(  2614908981) },
      {  UINT32_C(  2264455894),  UINT32_C(   772844039),  UINT32_C(  1252193851),  UINT32_C(  2614908981) },
      {  UINT32_C(  2264455894),  UINT32_C(   772844039),  UINT32_C(  2992759396),  UINT32_C(   121133279) } },
    { {  UINT32_C(  2880672670),  UINT32_C(    57847964),  UINT32_C(  4166813298),  UINT32_C(   126229096) },
      {  UINT32_C(  4065062230),  UINT32_C(  1434580494) },
      {  UINT32_C(  1434580494),  UINT32_C(    57847964),  UINT32_C(  4166813298),  UINT32_C(   126229096) },
      {  UINT32_C(  2880672670),  UINT32_C(  4065062230),  UINT32_C(  4166813298),  UINT32_C(   126229096) },
      {  UINT32_C(  2880672670),  UINT32_C(    57847964),  UINT32_C(  1434580494),  UINT32_C(   126229096) },
      {  UINT32_C(  2880672670),  UINT32_C(    57847964),  UINT32_C(  4166813298),  UINT32_C(  4065062230) } },
    { {  UINT32_C(  1340690585),  UINT32_C(   946996966),  UINT32_C(   551479920),  UINT32_C(  3629071371) },
      {  UINT32_C(   404629523),  UINT32_C(  2776260397) },
      {  UINT32_C(  2776260397),  UINT32_C(   946996966),  UINT32_C(   551479920),  UINT32_C(  3629071371) },
      {  UINT32_C(  1340690585),  UINT32_C(   404629523),  UINT32_C(   551479920),  UINT32_C(  3629071371) },
      {  UINT32_C(  1340690585),  UINT32_C(   946996966),  UINT32_C(  2776260397),  UINT32_C(  3629071371) },
      {  UINT32_C(  1340690585),  UINT32_C(   946996966),  UINT32_C(   551479920),  UINT32_C(   404629523) } },
    { {  UINT32_C(  2002654709),  UINT32_C(  1050964603),  UINT32_C(  1159950872),  UINT32_C(  2906190267) },
      {  UINT32_C(   258802985),  UINT32_C(  3426756944) },
      {  UINT32_C(  3426756944),  UINT32_C(  1050964603),  UINT32_C(  1159950872),  UINT32_C(  2906190267) },
      {  UINT32_C(  2002654709),  UINT32_C(   258802985),  UINT32_C(  1159950872),  UINT32_C(  2906190267) },
      {  UINT32_C(  2002654709),  UINT32_C(  1050964603),  UINT32_C(  3426756944),  UINT32_C(  2906190267) },
      {  UINT32_C(  2002654709),  UINT32_C(  1050964603),  UINT32_C(  1159950872),  UINT32_C(   258802985) } },
    { {  UINT32_C(  2945893748),  UINT32_C(   402372422),  UINT32_C(  2823976653),  UINT32_C(  2361987444) },
      {  UINT32_C(    73085720),  UINT32_C(  3141146066) },
      {  UINT32_C(  3141146066),  UINT32_C(   402372422),  UINT32_C(  2823976653),  UINT32_C(  2361987444) },
      {  UINT32_C(  2945893748),  UINT32_C(    73085720),  UINT32_C(  2823976653),  UINT32_C(  2361987444) },
      {  UINT32_C(  2945893748),  UINT32_C(   402372422),  UINT32_C(  3141146066),  UINT32_C(  2361987444) },
      {  UINT32_C(  2945893748),  UINT32_C(   402372422),  UINT32_C(  2823976653),  UINT32_C(    73085720) } },
    { {  UINT32_C(   703705882),  UINT32_C(  1874556398),  UINT32_C(   357072285),  UINT32_C(   989687532) },
      {  UINT32_C(  1441815222),  UINT32_C(  4271316470) },
      {  UINT32_C(  4271316470),  UINT32_C(  1874556398),  UINT32_C(   357072285),  UINT32_C(   989687532) },
      {  UINT32_C(   703705882),  UINT32_C(  1441815222),  UINT32_C(   357072285),  UINT32_C(   989687532) },
      {  UINT32_C(   703705882),  UINT32_C(  1874556398),  UINT32_C(  4271316470),  UINT32_C(   989687532) },
      {  UINT32_C(   703705882),  UINT32_C(  1874556398),  UINT32_C(   357072285),  UINT32_C(  1441815222) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
    simde_uint32x2_t b = simde_vld1_u32(test_vec[i].b);

    simde_uint32x4_t r0_1 = simde_vcopyq_lane_u32(a, 0, b, 1);
    simde_uint32x4_t r1_0 = simde_vcopyq_lane_u32(a, 1, b, 0);
    simde_uint32x4_t r2_1 = simde_vcopyq_lane_u32(a, 2, b, 1);
    simde_uint32x4_t r3_0 = simde_vcopyq_lane_u32(a, 3, b, 0);

    simde_test_arm_neon_assert_equal_u32x4(r0_1, simde_vld1q_u32(test_vec[i].r0_1));
    simde_test_arm_neon_assert_equal_u32x4(r1_0, simde_vld1q_u32(test_vec[i].r1_0));
    simde_test_arm_neon_assert_equal_u32x4(r2_1, simde_vld1q_u32(test_vec[i].r2_1));
    simde_test_arm_neon_assert_equal_u32x4(r3_0, simde_vld1q_u32(test_vec[i].r3_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
    simde_uint32x2_t b = simde_test_arm_neon_random_u32x2();
    simde_uint32x4_t r0_1 = simde_vcopyq_lane_u32(a, 0, b, 1);
    simde_uint32x4_t r1_0 = simde_vcopyq_lane_u32(a, 1, b, 0);
    simde_uint32x4_t r2_1 = simde_vcopyq_lane_u32(a, 2, b, 1);
    simde_uint32x4_t r3_0 = simde_vcopyq_lane_u32(a, 3, b, 0);

    simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r2_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r3_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t a[2];
    uint64_t b[1];
    uint64_t r0_0[2];
    uint64_t r1_0[2];
  } test_vec[] = {
    { {  UINT64_C(13088088903368892823),  UINT64_C(11535793185305623270) },
      {  UINT64_C( 5924534224249363076) },
      {  UINT64_C( 5924534224249363076),  UINT64_C(11535793185305623270) },
      {  UINT64_C(13088088903368892823),  UINT64_C( 5924534224249363076) } },
    { {  UINT64_C(18271803387774738026),  UINT64_C(  840258608695505479) },
      {  UINT64_C(18149383589595975661) },
      {  UINT64_C(18149383589595975661),  UINT64_C(  840258608695505479) },
      {  UINT64_C(18271803387774738026),  UINT64_C(18149383589595975661) } },
    { {  UINT64_C( 1426608908501472439),  UINT64_C(17579859043434713714) },
      {  UINT64_C( 3863851528950464347) },
      {  UINT64_C( 3863851528950464347),  UINT64_C(17579859043434713714) },
      {  UINT64_C( 1426608908501472439),  UINT64_C( 3863851528950464347) } },
    { {  UINT64_C( 2887535003750440669),  UINT64_C( 9706127502422434237) },
      {  UINT64_C(  585016102035113102) },
      {  UINT64_C(  585016102035113102),  UINT64_C( 9706127502422434237) },
      {  UINT64_C( 2887535003750440669),  UINT64_C(  585016102035113102) } },
    { {  UINT64_C(11767062204421784175),  UINT64_C( 6611989932014277560) },
      {  UINT64_C( 1728274990776995191) },
      {  UINT64_C( 1728274990776995191),  UINT64_C( 6611989932014277560) },
      {  UINT64_C(11767062204421784175),  UINT64_C( 1728274990776995191) } },
    { {  UINT64_C(11529019270513437728),  UINT64_C( 7695879568420221205) },
      {  UINT64_C(15611393117687386357) },
      {  UINT64_C(15611393117687386357),  UINT64_C( 7695879568420221205) },
      {  UINT64_C(11529019270513437728),  UINT64_C(15611393117687386357) } },
    { {  UINT64_C(11313965299073639025),  UINT64_C( 5304856213118510799) },
      {  UINT64_C( 4627035757479335269) },
      {  UINT64_C( 4627035757479335269),  UINT64_C( 5304856213118510799) },
      {  UINT64_C(11313965299073639025),  UINT64_C( 4627035757479335269) } },
    { {  UINT64_C(10403068332418732573),  UINT64_C(18189821306737318447) },
      {  UINT64_C(15540049615037950397) },
      {  UINT64_C(15540049615037950397),  UINT64_C(18189821306737318447) },
      {  UINT64_C(10403068332418732573),  UINT64_C(15540049615037950397) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
    simde_uint64x1_t b = simde_vld1_u64(test_vec[i].b);

    simde_uint64x2_t r0_0 = simde_vcopyq_lane_u64(a, 0, b, 0);
    simde_uint64x2_t r1_0 = simde_vcopyq_lane_u64(a, 1, b, 0);

    simde_test_arm_neon_assert_equal_u64x2(r0_0, simde_vld1q_u64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_u64x2(r1_0, simde_vld1q_u64(test_vec[i].r1_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
    simde_uint64x1_t b = simde_test_arm_neon_random_u64x1();
    simde_uint64x2_t r0_0 = simde_vcopyq_lane_u64(a, 0, b, 0);
    simde_uint64x2_t r1_0 = simde_vcopyq_lane_u64(a, 1, b, 0);

    simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r1_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32_t a[4];
    simde_float32_t b[2];
    simde_float32_t r0_1[4];
    simde_float32_t r1_0[4];
    simde_float32_t r2_1[4];
    simde_float32_t r3_0[4];
  } test_vec[] = {
    { {  SIMDE_FLOAT32_C(   538.654), -SIMDE_FLOAT32_C(  4708.625), -SIMDE_FLOAT32_C(  9690.416), -SIMDE_FLOAT32_C(  2113.408) },
      {  SIMDE_FLOAT32_C(  8132.408),  SIMDE_FLOAT32_C(  5050.145) },
      {  SIMDE_FLOAT32_C(  5050.145), -SIMDE_FLOAT32_C(  4708.625), -SIMDE_FLOAT32_C(  9690.416), -SIMDE_FLOAT32_C(  2113.408) },
      {  SIMDE_FLOAT32_C(   538.654),  SIMDE_FLOAT32_C(  8132.408), -SIMDE_FLOAT32_C(  9690.416), -SIMDE_FLOAT32_C(  2113.408) },
      {  SIMDE_FLOAT32_C(   538.654), -SIMDE_FLOAT32_C(  4708.625),  SIMDE_FLOAT32_C(  5050.145), -SIMDE_FLOAT32_C(  2113.408) },
      {  SIMDE_FLOAT32_C(   538.654), -SIMDE_FLOAT32_C(  4708.625), -SIMDE_FLOAT32_C(  9690.416),  SIMDE_FLOAT32_C(  8132.408) } },
    { {  SIMDE_FLOAT32_C(  5966.624),  SIMDE_FLOAT32_C(  7056.986), -SIMDE_FLOAT32_C(  1760.608), -SIMDE_FLOAT32_C(   656.592) },
      {  SIMDE_FLOAT32_C(  7371.629), -SIMDE_FLOAT32_C(   974.229) },
      { -SIMDE_FLOAT32_C(   974.229),  SIMDE_FLOAT32_C(  7056.986), -SIMDE_FLOAT32_C(  1760.608), -SIMDE_FLOAT32_C(   656.592) },
      {  SIMDE_FLOAT32_C(  5966.624),  SIMDE_FLOAT32_C(  7371.629), -SIMDE_FLOAT32_C(  1760.608), -SIMDE_FLOAT32_C(   656.592) },
      {  SIMDE_FLOAT32_C(  5966.624),  SIMDE_FLOAT32_C(  7056.986), -SIMDE_FLOAT32_C(   974.229), -SIMDE_FLOAT32_C(   656.592) },
      {  SIMDE_FLOAT32_C(  5966.624),  SIMDE_FLOAT32_C(  7056.986), -SIMDE_FLOAT32_C(  1760.608),  SIMDE_FLOAT32_C(  7371.629) } },
    { { -SIMDE_FLOAT32_C(  2332.909), -SIMDE_FLOAT32_C(    12.015),  SIMDE_FLOAT32_C(   958.198),  SIMDE_FLOAT32_C(  3179.859) },
      {  SIMDE_FLOAT32_C(   421.483), -SIMDE_FLOAT32_C(   391.272) },
      { -SIMDE_FLOAT32_C(   391.272), -SIMDE_FLOAT32_C(    12.015),  SIMDE_FLOAT32_C(   958.198),  SIMDE_FLOAT32_C(  3179.859) },
      { -SIMDE_FLOAT32_C(  2332.909),  SIMDE_FLOAT32_C(   421.483),  SIMDE_FLOAT32_C(   958.198),  SIMDE_FLOAT32_C(  3179.859) },
      { -SIMDE_FLOAT32_C(  2332.909), -SIMDE_FLOAT32_C(    12.015), -SIMDE_FLOAT32_C(   391.272),  SIMDE_FLOAT32_C(  3179.859) },
      { -SIMDE_FLOAT32_C(  2332.909), -SIMDE_FLOAT32_C(    12.015),  SIMDE_FLOAT32_C(   958.198),  SIMDE_FLOAT32_C(   421.483) } },
    { {  SIMDE_FLOAT32_C(  5751.485), -SIMDE_FLOAT32_C(  4550.866), -SIMDE_FLOAT32_C(  5492.006), -SIMDE_FLOAT32_C(  3518.459) },
      {  SIMDE_FLOAT32_C(  5851.975),  SIMDE_FLOAT32_C(  7832.057) },
      {  SIMDE_FLOAT32_C(  7832.057), -SIMDE_FLOAT32_C(  4550.866), -SIMDE_FLOAT32_C(  5492.006), -SIMDE_FLOAT32_C(  3518.459) },
      {  SIMDE_FLOAT32_C(  5751.485),  SIMDE_FLOAT32_C(  5851.975), -SIMDE_FLOAT32_C(  5492.006), -SIMDE_FLOAT32_C(  3518.459) },
      {  SIMDE_FLOAT32_C(  5751.485), -SIMDE_FLOAT32_C(  4550.866),  SIMDE_FLOAT32_C(  7832.057), -SIMDE_FLOAT32_C(  3518.459) },
      {  SIMDE_FLOAT32_C(  5751.485), -SIMDE_FLOAT32_C(  4550.866), -SIMDE_FLOAT32_C(  5492.006),  SIMDE_FLOAT32_C(  5851.975) } },
    { {  SIMDE_FLOAT32_C(  2504.024), -SIMDE_FLOAT32_C(  4086.377),  SIMDE_FLOAT32_C(  2309.051),  SIMDE_FLOAT32_C(  1842.812) },
      {  SIMDE_FLOAT32_C(  9351.285), -SIMDE_FLOAT32_C(  4461.544) },
      { -SIMDE_FLOAT32_C(  4461.544), -SIMDE_FLOAT32_C(  4086.377),  SIMDE_FLOAT32_C(  2309.051),  SIMDE_FLOAT32_C(  1842.812) },
      {  SIMDE_FLOAT32_C(  2504.024),  SIMDE_FLOAT32_C(  9351.285),  SIMDE_FLOAT32_C(  2309.051),  SIMDE_FLOAT32_C(  1842.812) },
      {  SIMDE_FLOAT32_C(  2504.024), -SIMDE_FLOAT32_C(  4086.377), -SIMDE_FLOAT32_C(  4461.544),  SIMDE_FLOAT32_C(  1842.812) },
      {  SIMDE_FLOAT32_C(  2504.024), -SIMDE_FLOAT32_C(  4086.377),  SIMDE_FLOAT32_C(  2309.051),  SIMDE_FLOAT32_C(  9351.285) } },
    { { -SIMDE_FLOAT32_C(  6719.923),  SIMDE_FLOAT32_C(  7398.066),  SIMDE_FLOAT32_C(  7624.779), -SIMDE_FLOAT32_C(  7913.260) },
      {  SIMDE_FLOAT32_C(  9228.150), -SIMDE_FLOAT32_C(  6206.421) },
      { -SIMDE_FLOAT32_C(  6206.421),  SIMDE_FLOAT32_C(  7398.066),  SIMDE_FLOAT32_C(  7624.779), -SIMDE_FLOAT32_C(  7913.260) },
      { -SIMDE_FLOAT32_C(  6719.923),  SIMDE_FLOAT32_C(  9228.150),  SIMDE_FLOAT32_C(  7624.779), -SIMDE_FLOAT32_C(  7913.260) },
      { -SIMDE_FLOAT32_C(  6719.923),  SIMDE_FLOAT32_C(  7398.066), -SIMDE_FLOAT32_C(  6206.421), -SIMDE_FLOAT32_C(  7913.260) },
      { -SIMDE_FLOAT32_C(  6719.923),  SIMDE_FLOAT32_C(  7398.066),  SIMDE_FLOAT32_C(  7624.779),  SIMDE_FLOAT32_C(  9228.150) } },
    { {  SIMDE_FLOAT32_C(  3809.922),  SIMDE_FLOAT32_C(  3800.742), -SIMDE_FLOAT32_C(  1237.310),  SIMDE_FLOAT32_C(  4963.046) },
      { -SIMDE_FLOAT32_C(  6177.402),  SIMDE_FLOAT32_C(  3679.462) },
      {  SIMDE_FLOAT32_C(  3679.462),  SIMDE_FLOAT32_C(  3800.742), -SIMDE_FLOAT32_C(  1237.310),  SIMDE_FLOAT32_C(  4963.046) },
      {  SIMDE_FLOAT32_C(  3809.922), -SIMDE_FLOAT32_C(  6177.402), -SIMDE_FLOAT32_C(  1237.310),  SIMDE_FLOAT32_C(  4963.046) },
      {  SIMDE_FLOAT32_C(  3809.922),  SIMDE_FLOAT32_C(  3800.742),  SIMDE_FLOAT32_C(  3679.462),  SIMDE_FLOAT32_C(  4963.046) },
      {  SIMDE_FLOAT32_C(  3809.922),  SIMDE_FLOAT32_C(  3800.742), -SIMDE_FLOAT32_C(  1237.310), -SIMDE_FLOAT32_C(  6177.402) } },
    { {  SIMDE_FLOAT32_C(  2821.190), -SIMDE_FLOAT32_C(  5775.095), -SIMDE_FLOAT32_C(  3892.955),  SIMDE_FLOAT32_C(  4093.751) },
      {  SIMDE_FLOAT32_C(  3420.151), -SIMDE_FLOAT32_C(  6425.996) },
      { -SIMDE_FLOAT32_C(  6425.996), -SIMDE_FLOAT32_C(  5775.095), -SIMDE_FLOAT32_C(  3892.955),  SIMDE_FLOAT32_C(  4093.751) },
      {  SIMDE_FLOAT32_C(  2821.190),  SIMDE_FLOAT32_C(  3420.151), -SIMDE_FLOAT32_C(  3892.955),  SIMDE_FLOAT32_C(  4093.751) },
      {  SIMDE_FLOAT32_C(  2821.190), -SIMDE_FLOAT32_C(  5775.095), -SIMDE_FLOAT32_C(  6425.996),  SIMDE_FLOAT32_C(  4093.751) },
      {  SIMDE_FLOAT32_C(  2821.190), -SIMDE_FLOAT32_C(  5775.095), -SIMDE_FLOAT32_C(  3892.955),  SIMDE_FLOAT32_C(  3420.151) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a);
    simde_float32x2_t b = simde_vld1_f32(test_vec[i].b);

    simde_float32x4_t r0_1 = simde_vcopyq_lane_f32(a, 0, b, 1);
    simde_float32x4_t r1_0 = simde_vcopyq_lane_f32(a, 1, b, 0);
    simde_float32x4_t r2_1 = simde_vcopyq_lane_f32(a, 2, b, 1);
    simde_float32x4_t r3_0 = simde_vcopyq_lane_f32(a, 3, b, 0);

    simde_test_arm_neon_assert_equal_f32x4(r0_1, simde_vld1q_f32(test_vec[i].r0_1), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x4(r1_0, simde_vld1q_f32(test_vec[i].r1_0), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x4(r2_1, simde_vld1q_f32(test_vec[i].r2_1), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x4(r3_0, simde_vld1q_f32(test_vec[i].r3_0), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float32x4_t a = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x4_t r0_1 = simde_vcopyq_lane_f32(a, 0, b, 1);
    simde_float32x4_t r1_0 = simde_vcopyq_lane_f32(a, 1, b, 0);
    simde_float32x4_t r2_1 = simde_vcopyq_lane_f32(a, 2, b, 1);
    simde_float32x4_t r3_0 = simde_vcopyq_lane_f32(a, 3, b, 0);

    simde_test_arm_neon_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r2_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r3_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64_t a[2];
    simde_float64_t b[1];
    simde_float64_t r0_0[2];
    simde_float64_t r1_0[2];
  } test_vec[] = {
    { { -SIMDE_FLOAT64_C(  157594.625),  SIMDE_FLOAT64_C(  656117.375) },
      { -SIMDE_FLOAT64_C(   75540.062) },
      { -SIMDE_FLOAT64_C(   75540.062),  SIMDE_FLOAT64_C(  656117.375) },
      { -SIMDE_FLOAT64_C(  157594.625), -SIMDE_FLOAT64_C(   75540.062) } },
    { { -SIMDE_FLOAT64_C(  646085.625),  SIMDE_FLOAT64_C(  464808.125) },
      {  SIMDE_FLOAT64_C(  806328.250) },
      {  SIMDE_FLOAT64_C(  806328.250),  SIMDE_FLOAT64_C(  464808.125) },
      { -SIMDE_FLOAT64_C(  646085.625),  SIMDE_FLOAT64_C(  806328.250) } },
    { {  SIMDE_FLOAT64_C(  502781.125),  SIMDE_FLOAT64_C(  524179.125) },
      {  SIMDE_FLOAT64_C(  744040.125) },
      {  SIMDE_FLOAT64_C(  744040.125),  SIMDE_FLOAT64_C(  524179.125) },
      {  SIMDE_FLOAT64_C(  502781.125),  SIMDE_FLOAT64_C(  744040.125) } },
    { {  SIMDE_FLOAT64_C(  621060.750), -SIMDE_FLOAT64_C(  924502.875) },
      { -SIMDE_FLOAT64_C(  581503.625) },
      { -SIMDE_FLOAT64_C(  581503.625), -SIMDE_FLOAT64_C(  924502.875) },
      {  SIMDE_FLOAT64_C(  621060.750), -SIMDE_FLOAT64_C(  581503.625) } },
    { { -SIMDE_FLOAT64_C(  202743.125),  SIMDE_FLOAT64_C(   94559.250) },
      { -SIMDE_FLOAT64_C(  791547.938) },
      { -SIMDE_FLOAT64_C(  791547.938),  SIMDE_FLOAT64_C(   94559.250) },
      { -SIMDE_FLOAT64_C(  202743.125), -SIMDE_FLOAT64_C(  791547.938) } },
    { {  SIMDE_FLOAT64_C(  242598.875), -SIMDE_FLOAT64_C(  699786.875) },
      {  SIMDE_FLOAT64_C(  419738.000) },
      {  SIMDE_FLOAT64_C(  419738.000), -SIMDE_FLOAT64_C(  699786.875) },
      {  SIMDE_FLOAT64_C(  242598.875),  SIMDE_FLOAT64_C(  419738.000) } },
    { {  SIMDE_FLOAT64_C(   47666.812), -SIMDE_FLOAT64_C(  674149.875) },
      { -SIMDE_FLOAT64_C(  567563.562) },
      { -SIMDE_FLOAT64_C(  567563.562), -SIMDE_FLOAT64_C(  674149.875) },
      {  SIMDE_FLOAT64_C(   47666.812), -SIMDE_FLOAT64_C(  567563.562) } },
    { {  SIMDE_FLOAT64_C(  864337.875),  SIMDE_FLOAT64_C(  108615.000) },
      { -SIMDE_FLOAT64_C(  346185.500) },
      { -SIMDE_FLOAT64_C(  346185.500),  SIMDE_FLOAT64_C(  108615.000) },
      {  SIMDE_FLOAT64_C(  864337.875), -SIMDE_FLOAT64_C(  346185.500) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64x2_t a = simde_vld1q_f64(test_vec[i].a);
    simde_float64x1_t b = simde_vld1_f64(test_vec[i].b);

    simde_float64x2_t r0_0 = simde_vcopyq_lane_f64(a, 0, b, 0);
    simde_float64x2_t r1_0 = simde_vcopyq_lane_f64(a, 1, b, 0);

    simde_test_arm_neon_assert_equal_f64x2(r0_0, simde_vld1q_f64(test_vec[i].r0_0), INT_MAX);
    simde_test_arm_neon_assert_equal_f64x2(r1_0, simde_vld1q_f64(test_vec[i].r1_0), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float64x2_t a = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x1_t b = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x2_t r0_0 = simde_vcopyq_lane_f64(a, 0, b, 0);
    simde_float64x2_t r1_0 = simde_vcopyq_lane_f64(a, 1, b, 0);

    simde_test_arm_neon_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r1_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int8_t a[16];
    int8_t b[16];
    int8_t r0_15[16];
    int8_t r3_12[16];
    int8_t r7_8[16];
    int8_t r11_4[16];
    int8_t r15_1[16];
  } test_vec[] = {
    { { -INT8_C(    86), -INT8_C(   119), -INT8_C(    89), -INT8_C(   101),
        -INT8_C(    97),  INT8_C(    71),  INT8_C(    93), -INT8_C(     3),
        -INT8_C(    57), -INT8_C(    99), -INT8_C(   121), -INT8_C(     8),
        -INT8_C(    23),  INT8_C(    60),  INT8_C(    99), -INT8_C(    65) },
      { -INT8_C(   105), -INT8_C(    43), -INT8_C(    27),  INT8_C(    85),
        -INT8_C(   127),  INT8_C(    28), -INT8_C(     6),  INT8_C(   100),
         INT8_C(    49),  INT8_C(    98),  INT8_C(   119),  INT8_C(    45),
        -INT8_C(   106),  INT8_C(    22),  INT8_C(    85),  INT8_C(    97) },
      {  INT8_C(    97), -INT8_C(   119), -INT8_C(    89), -INT8_C(   101),
        -INT8_C(    97),  INT8_C(    71),  INT8_C(    93), -INT8_C(     3),
        -INT8_C(    57), -INT8_C(    99), -INT8_C(   121), -INT8_C(     8),
        -INT8_C(    23),  INT8_C(    60),  INT8_C(    99), -INT8_C(    65) },
      { -INT8_C(    86), -INT8_C(   119), -INT8_C(    89), -INT8_C(   106),
        -INT8_C(    97),  INT8_C(    71),  INT8_C(    93), -INT8_C(     3),
        -INT8_C(    57), -INT8_C(    99), -INT8_C(   121), -INT8_C(     8),
        -INT8_C(    23),  INT8_C(    60),  INT8_C(    99), -INT8_C(    65) },
      { -INT8_C(    86), -INT8_C(   119), -INT8_C(    89), -INT8_C(   101),
        -INT8_C(    97),  INT8_C(    71),  INT8_C(    93),  INT8_C(    49),
        -INT8_C(    57), -INT8_C(    99), -INT8_C(   121), -INT8_C(     8),
        -INT8_C(    23),  INT8_C(    60),  INT8_C(    99), -INT8_C(    65) },
      { -INT8_C(    86), -INT8_C(   119), -INT8_C(    89), -INT8_C(   101),
        -INT8_C(    97),  INT8_C(    71),  INT8_C(    93), -INT8_C(     3),
        -INT8_C(    57), -INT8_C(    99), -INT8_C(   121), -INT8_C(   127),
        -INT8_C(    23),  INT8_C(    60),  INT8_C(    99), -INT8_C(    65) },
      { -INT8_C(    86), -INT8_C(   119), -INT8_C(    89), -INT8_C(   101),
        -INT8_C(    97),  INT8_C(    71),  INT8_C(    93), -INT8_C(     3),
        -INT8_C(    57), -INT8_C(    99), -INT8_C(   121), -INT8_C(     8),
        -INT8_C(    23),  INT8_C(    60),  INT8_C(    99), -INT8_C(    43) } },
    { { -INT8_C(     2), -INT8_C(    46), -INT8_C(   111),  INT8_C(    44),
        -INT8_C(   104), -INT8_C(   127),        INT8_MAX, -INT8_C(   124),
         INT8_C(   126),  INT8_C(    89), -INT8_C(    85),  INT8_C(    91),
         INT8_C(    57), -INT8_C(    44), -INT8_C(    31),  INT8_C(    88) },
      {  INT8_C(    88), -INT8_C(    33),  INT8_C(    90), -INT8_C(    33),
         INT8_C(   109),  INT8_C(    74),  INT8_C(    81),  INT8_C(   100),
         INT8_C(    39),  INT8_C(   114), -INT8_C(    29),  INT8_C(    93),
         INT8_C(    59), -INT8_C(    78),  INT8_C(    36),  INT8_C(     4) },
      {  INT8_C(     4), -INT8_C(    46), -INT8_C(   111),  INT8_C(    44),
        -INT8_C(   104), -INT8_C(   127),        INT8_MAX, -INT8_C(   124),
         INT8_C(   126),  INT8_C(    89), -INT8_C(    85),  INT8_C(    91),
         INT8_C(    57), -INT8_C(    44), -INT8_C(    31),  INT8_C(    88) },
      { -INT8_C(     2), -INT8_C(    46), -INT8_C(   111),  INT8_C(    59),
        -INT8_C(   104), -INT8_C(   127),        INT8_MAX, -INT8_C(   124),
         INT8_C(   126),  INT8_C(    89), -INT8_C(    85),  INT8_C(    91),
         INT8_C(    57), -INT8_C(    44), -INT8_C(    31),  INT8_C(    88) },
      { -INT8_C(     2), -INT8_C(    46), -INT8_C(   111),  INT8_C(    44),
        -INT8_C(   104), -INT8_C(   127),        INT8_MAX,  INT8_C(    39),
         INT8_C(   126),  INT8_C(    89), -INT8_C(    85),  INT8_C(    91),
         INT8_C(    57), -INT8_C(    44), -INT8_C(    31),  INT8_C(    88) },
      { -INT8_C(     2), -INT8_C(    46), -INT8_C(   111),  INT8_C(    44),
        -INT8_C(   104), -INT8_C(   127),        INT8_MAX, -INT8_C(   124),
         INT8_C(   126),  INT8_C(    89), -INT8_C(    85),  INT8_C(   109),
         INT8_C(    57), -INT8_C(    44), -INT8_C(    31),  INT8_C(    88) },
      { -INT8_C(     2), -INT8_C(    46), -INT8_C(   111),  INT8_C(    44),
        -INT8_C(   104), -INT8_C(   127),        INT8_MAX, -INT8_C(   124),
         INT8_C(   126),  INT8_C(    89), -INT8_C(    85),  INT8_C(    91),
         INT8_C(    57), -INT8_C(    44), -INT8_C(    31), -INT8_C(    33) } },
    { { -INT8_C(   111),  INT8_C(    42), -INT8_C(   114), -INT8_C(   100),
        -INT8_C(    58), -INT8_C(     2),  INT8_C(   107), -INT8_C(   106),
        -INT8_C(    82), -INT8_C(    67),  INT8_C(    73), -INT8_C(    39),
         INT8_C(   115), -INT8_C(    10), -INT8_C(   106),  INT8_C(   100) },
      {  INT8_C(    45), -INT8_C(    75),  INT8_C(    39),  INT8_C(   126),
         INT8_C(    74), -INT8_C(    18),  INT8_C(    80),  INT8_C(    87),
        -INT8_C(    33), -INT8_C(    86), -INT8_C(    75), -INT8_C(    14),
        -INT8_C(    61), -INT8_C(    68), -INT8_C(    38), -INT8_C(    86) },
      { -INT8_C(    86),  INT8_C(    42), -INT8_C(   114), -INT8_C(   100),
        -INT8_C(    58), -INT8_C(     2),  INT8_C(   107), -INT8_C(   106),
        -INT8_C(    82), -INT8_C(    67),  INT8_C(    73), -INT8_C(    39),
         INT8_C(   115), -INT8_C(    10), -INT8_C(   106),  INT8_C(   100) },
      { -INT8_C(   111),  INT8_C(    42), -INT8_C(   114), -INT8_C(    61),
        -INT8_C(    58), -INT8_C(     2),  INT8_C(   107), -INT8_C(   106),
        -INT8_C(    82), -INT8_C(    67),  INT8_C(    73), -INT8_C(    39),
         INT8_C(   115), -INT8_C(    10), -INT8_C(   106),  INT8_C(   100) },
      { -INT8_C(   111),  INT8_C(    42), -INT8_C(   114), -INT8_C(   100),
        -INT8_C(    58), -INT8_C(     2),  INT8_C(   107), -INT8_C(    33),
        -INT8_C(    82), -INT8_C(    67),  INT8_C(    73), -INT8_C(    39),
         INT8_C(   115), -INT8_C(    10), -INT8_C(   106),  INT8_C(   100) },
      { -INT8_C(   111),  INT8_C(    42), -INT8_C(   114), -INT8_C(   100),
        -INT8_C(    58), -INT8_C(     2),  INT8_C(   107), -INT8_C(   106),
        -INT8_C(    82), -INT8_C(    67),  INT8_C(    73),  INT8_C(    74),
         INT8_C(   115), -INT8_C(    10), -INT8_C(   106),  INT8_C(   100) },
      { -INT8_C(   111),  INT8_C(    42), -INT8_C(   114), -INT8_C(   100),
        -INT8_C(    58), -INT8_C(     2),  INT8_C(   107), -INT8_C(   106),
        -INT8_C(    82), -INT8_C(    67),  INT8_C(    73), -INT8_C(    39),
         INT8_C(   115), -INT8_C(    10), -INT8_C(   106), -INT8_C(    75) } },
    { {  INT8_C(    26),  INT8_C(    18),  INT8_C(    90),  INT8_C(    80),
        -INT8_C(   102), -INT8_C(    62),  INT8_C(   113),  INT8_C(    22),
        -INT8_C(    13),  INT8_C(   104), -INT8_C(    38),  INT8_C(   110),
        -INT8_C(    58), -INT8_C(    39), -INT8_C(    42), -INT8_C(    86) },
      { -INT8_C(    45),  INT8_C(    21), -INT8_C(    30),  INT8_C(    94),
         INT8_C(    77), -INT8_C(    94), -INT8_C(    67), -INT8_C(    43),
        -INT8_C(    75),  INT8_C(    49), -INT8_C(   118),  INT8_C(    63),
        -INT8_C(     2), -INT8_C(    73),  INT8_C(   116), -INT8_C(    29) },
      { -INT8_C(    29),  INT8_C(    18),  INT8_C(    90),  INT8_C(    80),
        -INT8_C(   102), -INT8_C(    62),  INT8_C(   113),  INT8_C(    22),
        -INT8_C(    13),  INT8_C(   104), -INT8_C(    38),  INT8_C(   110),
        -INT8_C(    58), -INT8_C(    39), -INT8_C(    42), -INT8_C(    86) },
      {  INT8_C(    26),  INT8_C(    18),  INT8_C(    90), -INT8_C(     2),
        -INT8_C(   102), -INT8_C(    62),  INT8_C(   113),  INT8_C(    22),
        -INT8_C(    13),  INT8_C(   104), -INT8_C(    38),  INT8_C(   110),
        -INT8_C(    58), -INT8_C(    39), -INT8_C(    42), -INT8_C(    86) },
      {  INT8_C(    26),  INT8_C(    18),  INT8_C(    90),  INT8_C(    80),
        -INT8_C(   102), -INT8_C(    62),  INT8_C(   113), -INT8_C(    75),
        -INT8_C(    13),  INT8_C(   104), -INT8_C(    38),  INT8_C(   110),
        -INT8_C(    58), -INT8_C(    39), -INT8_C(    42), -INT8_C(    86) },
      {  INT8_C(    26),  INT8_C(    18),  INT8_C(    90),  INT8_C(    80),
        -INT8_C(   102), -INT8_C(    62),  INT8_C(   113),  INT8_C(    22),
        -INT8_C(    13),  INT8_C(   104), -INT8_C(    38),  INT8_C(    77),
        -INT8_C(    58), -INT8_C(    39), -INT8_C(    42), -INT8_C(    86) },
      {  INT8_C(    26),  INT8_C(    18),  INT8_C(    90),  INT8_C(    80),
        -INT8_C(   102), -INT8_C(    62),  INT8_C(   113),  INT8_C(    22),
        -INT8_C(    13),  INT8_C(   104), -INT8_C(    38),  INT8_C(   110),
        -INT8_C(    58), -INT8_C(    39), -INT8_C(    42),  INT8_C(    21) } },
    { {  INT8_C(    30),  INT8_C(    53), -INT8_C(     1),  INT8_C(   113),
         INT8_C(   122), -INT8_C(    83), -INT8_C(   104),  INT8_C(    44),
         INT8_C(   117),  INT8_C(    63),  INT8_C(    33),  INT8_C(     5),
        -INT8_C(    56),  INT8_C(   100),  INT8_C(     3),  INT8_C(    48) },
      { -INT8_C(    41),  INT8_C(    25), -INT8_C(   111), -INT8_C(    24),
        -INT8_C(    18), -INT8_C(   110), -INT8_C(    38),  INT8_C(    50),
         INT8_C(    54), -INT8_C(    27),  INT8_C(   121), -INT8_C(    37),
        -INT8_C(    56),  INT8_C(    67), -INT8_C(     9), -INT8_C(    12) },
      { -INT8_C(    12),  INT8_C(    53), -INT8_C(     1),  INT8_C(   113),
         INT8_C(   122), -INT8_C(    83), -INT8_C(   104),  INT8_C(    44),
         INT8_C(   117),  INT8_C(    63),  INT8_C(    33),  INT8_C(     5),
        -INT8_C(    56),  INT8_C(   100),  INT8_C(     3),  INT8_C(    48) },
      {  INT8_C(    30),  INT8_C(    53), -INT8_C(     1), -INT8_C(    56),
         INT8_C(   122), -INT8_C(    83), -INT8_C(   104),  INT8_C(    44),
         INT8_C(   117),  INT8_C(    63),  INT8_C(    33),  INT8_C(     5),
        -INT8_C(    56),  INT8_C(   100),  INT8_C(     3),  INT8_C(    48) },
      {  INT8_C(    30),  INT8_C(    53), -INT8_C(     1),  INT8_C(   113),
         INT8_C(   122), -INT8_C(    83), -INT8_C(   104),  INT8_C(    54),
         INT8_C(   117),  INT8_C(    63),  INT8_C(    33),  INT8_C(     5),
        -INT8_C(    56),  INT8_C(   100),  INT8_C(     3),  INT8_C(    48) },
      {  INT8_C(    30),  INT8_C(    53), -INT8_C(     1),  INT8_C(   113),
         INT8_C(   122), -INT8_C(    83), -INT8_C(   104),  INT8_C(    44),
         INT8_C(   117),  INT8_C(    63),  INT8_C(    33), -INT8_C(    18),
        -INT8_C(    56),  INT8_C(   100),  INT8_C(     3),  INT8_C(    48) },
      {  INT8_C(    30),  INT8_C(    53), -INT8_C(     1),  INT8_C(   113),
         INT8_C(   122), -INT8_C(    83), -INT8_C(   104),  INT8_C(    44),
         INT8_C(   117),  INT8_C(    63),  INT8_C(    33),  INT8_C(     5),
        -INT8_C(    56),  INT8_C(   100),  INT8_C(     3),  INT8_C(    25) } },
    { { -INT8_C(    68),  INT8_C(   107), -INT8_C(    28), -INT8_C(    87),
        -INT8_C(    31), -INT8_C(    14),  INT8_C(   112), -INT8_C(    41),
         INT8_C(   106), -INT8_C(    43), -INT8_C(   101), -INT8_C(    44),
        -INT8_C(     5),  INT8_C(    73), -INT8_C(   125),        INT8_MIN },
      { -INT8_C(    79), -INT8_C(     3),  INT8_C(     1), -INT8_C(    70),
         INT8_C(    13),  INT8_C(    50), -INT8_C(   100),  INT8_C(     3),
        -INT8_C(    99),  INT8_C(    54),  INT8_C(     6),  INT8_C(   114),
        -INT8_C(    70),  INT8_C(    81), -INT8_C(    40),  INT8_C(    65) },
      {  INT8_C(    65),  INT8_C(   107), -INT8_C(    28), -INT8_C(    87),
        -INT8_C(    31), -INT8_C(    14),  INT8_C(   112), -INT8_C(    41),
         INT8_C(   106), -INT8_C(    43), -INT8_C(   101), -INT8_C(    44),
        -INT8_C(     5),  INT8_C(    73), -INT8_C(   125),        INT8_MIN },
      { -INT8_C(    68),  INT8_C(   107), -INT8_C(    28), -INT8_C(    70),
        -INT8_C(    31), -INT8_C(    14),  INT8_C(   112), -INT8_C(    41),
         INT8_C(   106), -INT8_C(    43), -INT8_C(   101), -INT8_C(    44),
        -INT8_C(     5),  INT8_C(    73), -INT8_C(   125),        INT8_MIN },
      { -INT8_C(    68),  INT8_C(   107), -INT8_C(    28), -INT8_C(    87),
        -INT8_C(    31), -INT8_C(    14),  INT8_C(   112), -INT8_C(    99),
         INT8_C(   106), -INT8_C(    43), -INT8_C(   101), -INT8_C(    44),
        -INT8_C(     5),  INT8_C(    73), -INT8_C(   125),        INT8_MIN },
      { -INT8_C(    68),  INT8_C(   107), -INT8_C(    28), -INT8_C(    87),
        -INT8_C(    31), -INT8_C(    14),  INT8_C(   112), -INT8_C(    41),
         INT8_C(   106), -INT8_C(    43), -INT8_C(   101),  INT8_C(    13),
        -INT8_C(     5),  INT8_C(    73), -INT8_C(   125),        INT8_MIN },
      { -INT8_C(    68),  INT8_C(   107), -INT8_C(    28), -INT8_C(    87),
        -INT8_C(    31), -INT8_C(    14),  INT8_C(   112), -INT8_C(    41),
         INT8_C(   106), -INT8_C(    43), -INT8_C(   101), -INT8_C(    44),
        -INT8_C(     5),  INT8_C(    73), -INT8_C(   125), -INT8_C(     3) } },
    { { -INT8_C(    77),  INT8_C(    70),  INT8_C(    64),  INT8_C(    54),
         INT8_C(    95),  INT8_C(     0),  INT8_C(    81),  INT8_C(     7),
         INT8_C(    24), -INT8_C(    47),  INT8_C(    79),  INT8_C(    68),
        -INT8_C(    40),  INT8_C(    62),  INT8_C(   119),  INT8_C(    75) },
      {  INT8_C(    34), -INT8_C(    23),  INT8_C(    73),  INT8_C(    98),
         INT8_C(    46), -INT8_C(    31),  INT8_C(    75),  INT8_C(    32),
         INT8_C(    97),  INT8_C(     6), -INT8_C(    61), -INT8_C(    33),
        -INT8_C(    99), -INT8_C(   104), -INT8_C(   103), -INT8_C(    34) },
      { -INT8_C(    34),  INT8_C(    70),  INT8_C(    64),  INT8_C(    54),
         INT8_C(    95),  INT8_C(     0),  INT8_C(    81),  INT8_C(     7),
         INT8_C(    24), -INT8_C(    47),  INT8_C(    79),  INT8_C(    68),
        -INT8_C(    40),  INT8_C(    62),  INT8_C(   119),  INT8_C(    75) },
      { -INT8_C(    77),  INT8_C(    70),  INT8_C(    64), -INT8_C(    99),
         INT8_C(    95),  INT8_C(     0),  INT8_C(    81),  INT8_C(     7),
         INT8_C(    24), -INT8_C(    47),  INT8_C(    79),  INT8_C(    68),
        -INT8_C(    40),  INT8_C(    62),  INT8_C(   119),  INT8_C(    75) },
      { -INT8_C(    77),  INT8_C(    70),  INT8_C(    64),  INT8_C(    54),
         INT8_C(    95),  INT8_C(     0),  INT8_C(    81),  INT8_C(    97),
         INT8_C(    24), -INT8_C(    47),  INT8_C(    79),  INT8_C(    68),
        -INT8_C(    40),  INT8_C(    62),  INT8_C(   119),  INT8_C(    75) },
      { -INT8_C(    77),  INT8_C(    70),  INT8_C(    64),  INT8_C(    54),
         INT8_C(    95),  INT8_C(     0),  INT8_C(    81),  INT8_C(     7),
         INT8_C(    24), -INT8_C(    47),  INT8_C(    79),  INT8_C(    46),
        -INT8_C(    40),  INT8_C(    62),  INT8_C(   119),  INT8_C(    75) },
      { -INT8_C(    77),  INT8_C(    70),  INT8_C(    64),  INT8_C(    54),
         INT8_C(    95),  INT8_C(     0),  INT8_C(    81),  INT8_C(     7),
         INT8_C(    24), -INT8_C(    47),  INT8_C(    79),  INT8_C(    68),
        -INT8_C(    40),  INT8_C(    62),  INT8_C(   119), -INT8_C(    23) } },
    { {  INT8_C(    92), -INT8_C(   112), -INT8_C(    75),  INT8_C(    88),
         INT8_C(    84), -INT8_C(    15),  INT8_C(    41), -INT8_C(    66),
         INT8_C(    45), -INT8_C(    70), -INT8_C(    35), -INT8_C(   113),
        -INT8_C(     9), -INT8_C(    89), -INT8_C(     8), -INT8_C(    15) },
      { -INT8_C(    97),  INT8_C(   123),  INT8_C(    16), -INT8_C(    91),
        -INT8_C(    99),  INT8_C(    56), -INT8_C(    45), -INT8_C(    55),
        -INT8_C(    10), -INT8_C(   123), -INT8_C(     7),  INT8_C(    80),
         INT8_C(   101),  INT8_C(    44), -INT8_C(    15),  INT8_C(    84) },
      {  INT8_C(    84), -INT8_C(   112), -INT8_C(    75),  INT8_C(    88),
         INT8_C(    84), -INT8_C(    15),  INT8_C(    41), -INT8_C(    66),
         INT8_C(    45), -INT8_C(    70), -INT8_C(    35), -INT8_C(   113),
        -INT8_C(     9), -INT8_C(    89), -INT8_C(     8), -INT8_C(    15) },
      {  INT8_C(    92), -INT8_C(   112), -INT8_C(    75),  INT8_C(   101),
         INT8_C(    84), -INT8_C(    15),  INT8_C(    41), -INT8_C(    66),
         INT8_C(    45), -INT8_C(    70), -INT8_C(    35), -INT8_C(   113),
        -INT8_C(     9), -INT8_C(    89), -INT8_C(     8), -INT8_C(    15) },
      {  INT8_C(    92), -INT8_C(   112), -INT8_C(    75),  INT8_C(    88),
         INT8_C(    84), -INT8_C(    15),  INT8_C(    41), -INT8_C(    10),
         INT8_C(    45), -INT8_C(    70), -INT8_C(    35), -INT8_C(   113),
        -INT8_C(     9), -INT8_C(    89), -INT8_C(     8), -INT8_C(    15) },
      {  INT8_C(    92), -INT8_C(   112), -INT8_C(    75),  INT8_C(    88),
         INT8_C(    84), -INT8_C(    15),  INT8_C(    41), -INT8_C(    66),
         INT8_C(    45), -INT8_C(    70), -INT8_C(    35), -INT8_C(    99),
        -INT8_C(     9), -INT8_C(    89), -INT8_C(     8), -INT8_C(    15) },
      {  INT8_C(    92), -INT8_C(   112), -INT8_C(    75),  INT8_C(    88),
         INT8_C(    84), -INT8_C(    15),  INT8_C(    41), -INT8_C(    66),
         INT8_C(    45), -INT8_C(    70), -INT8_C(    35), -INT8_C(   113),
        -INT8_C(     9), -INT8_C(    89), -INT8_C(     8),  INT8_C(   123) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a);
    simde_int8x16_t b = simde_vld1q_s8(test_vec[i].b);

    simde_int8x16_t r0_15 = simde_vcopyq_laneq_s8(a, 0, b, 15);
    simde_int8x16_t r3_12 = simde_vcopyq_laneq_s8(a, 3, b, 12);
    simde_int8x16_t r7_8 = simde_vcopyq_laneq_s8(a, 7, b, 8);
    simde_int8x16_t r11_4 = simde_vcopyq_laneq_s8(a, 11, b, 4);
    simde_int8x16_t r15_1 = simde_vcopyq_laneq_s8(a, 15, b, 1);

    simde_test_arm_neon_assert_equal_i8x16(r0_15, simde_vld1q_s8(test_vec[i].r0_15));
    simde_test_arm_neon_assert_equal_i8x16(r3_12, simde_vld1q_s8(test_vec[i].r3_12));
    simde_test_arm_neon_assert_equal_i8x16(r7_8, simde_vld1q_s8(test_vec[i].r7_8));
    simde_test_arm_neon_assert_equal_i8x16(r11_4, simde_vld1q_s8(test_vec[i].r11_4));
    simde_test_arm_neon_assert_equal_i8x16(r15_1, simde_vld1q_s8(test_vec[i].r15_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int8x16_t a = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t b = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t r0_15 = simde_vcopyq_laneq_s8(a, 0, b, 15);
    simde_int8x16_t r3_12 = simde_vcopyq_laneq_s8(a, 3, b, 12);
    simde_int8x16_t r7_8 = simde_vcopyq_laneq_s8(a, 7, b, 8);
    simde_int8x16_t r11_4 = simde_vcopyq_laneq_s8(a, 11, b, 4);
    simde_int8x16_t r15_1 = simde_vcopyq_laneq_s8(a, 15, b, 1);

    simde_test_arm_neon_write_i8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r0_15, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r3_12, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r7_8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r11_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, r15_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}


static int
test_simde_vcopyq_laneq_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t a[8];
    int16_t b[8];
    int16_t r0_7[8];
    int16_t r1_6[8];
    int16_t r3_4[8];
    int16_t r5_3[8];
    int16_t r7_1[8];
  } test_vec[] = {
    { { -INT16_C(   16276),  INT16_C(   11398), -INT16_C(   29409), -INT16_C(   27267),
        -INT16_C(    7128), -INT16_C(   21139),  INT16_C(   13269),  INT16_C(   12401) },
      {  INT16_C(    9098),  INT16_C(   20041),  INT16_C(   26801), -INT16_C(   20544),
         INT16_C(    3157),  INT16_C(   28134),  INT16_C(   11263), -INT16_C(   28347) },
      { -INT16_C(   28347),  INT16_C(   11398), -INT16_C(   29409), -INT16_C(   27267),
        -INT16_C(    7128), -INT16_C(   21139),  INT16_C(   13269),  INT16_C(   12401) },
      { -INT16_C(   16276),  INT16_C(   11263), -INT16_C(   29409), -INT16_C(   27267),
        -INT16_C(    7128), -INT16_C(   21139),  INT16_C(   13269),  INT16_C(   12401) },
      { -INT16_C(   16276),  INT16_C(   11398), -INT16_C(   29409),  INT16_C(    3157),
        -INT16_C(    7128), -INT16_C(   21139),  INT16_C(   13269),  INT16_C(   12401) },
      { -INT16_C(   16276),  INT16_C(   11398), -INT16_C(   29409), -INT16_C(   27267),
        -INT16_C(    7128), -INT16_C(   20544),  INT16_C(   13269),  INT16_C(   12401) },
      { -INT16_C(   16276),  INT16_C(   11398), -INT16_C(   29409), -INT16_C(   27267),
        -INT16_C(    7128), -INT16_C(   21139),  INT16_C(   13269),  INT16_C(   20041) } },
    { {  INT16_C(    1776),  INT16_C(   18106),  INT16_C(    3726),  INT16_C(   10406),
        -INT16_C(   25792), -INT16_C(    1873),  INT16_C(    8778), -INT16_C(   32635) },
      { -INT16_C(   22146), -INT16_C(   16595),  INT16_C(    1633),  INT16_C(   16850),
         INT16_C(     108),  INT16_C(   17026), -INT16_C(    4147), -INT16_C(   13132) },
      { -INT16_C(   13132),  INT16_C(   18106),  INT16_C(    3726),  INT16_C(   10406),
        -INT16_C(   25792), -INT16_C(    1873),  INT16_C(    8778), -INT16_C(   32635) },
      {  INT16_C(    1776), -INT16_C(    4147),  INT16_C(    3726),  INT16_C(   10406),
        -INT16_C(   25792), -INT16_C(    1873),  INT16_C(    8778), -INT16_C(   32635) },
      {  INT16_C(    1776),  INT16_C(   18106),  INT16_C(    3726),  INT16_C(     108),
        -INT16_C(   25792), -INT16_C(    1873),  INT16_C(    8778), -INT16_C(   32635) },
      {  INT16_C(    1776),  INT16_C(   18106),  INT16_C(    3726),  INT16_C(   10406),
        -INT16_C(   25792),  INT16_C(   16850),  INT16_C(    8778), -INT16_C(   32635) },
      {  INT16_C(    1776),  INT16_C(   18106),  INT16_C(    3726),  INT16_C(   10406),
        -INT16_C(   25792), -INT16_C(    1873),  INT16_C(    8778), -INT16_C(   16595) } },
    { { -INT16_C(   21426), -INT16_C(    5480),  INT16_C(   21409), -INT16_C(   32739),
         INT16_C(   19414), -INT16_C(   30534), -INT16_C(    8998), -INT16_C(   18036) },
      {  INT16_C(   19199), -INT16_C(   12691), -INT16_C(    7618),  INT16_C(   21179),
         INT16_C(    9688),  INT16_C(    5616),  INT16_C(   23519), -INT16_C(   22371) },
      { -INT16_C(   22371), -INT16_C(    5480),  INT16_C(   21409), -INT16_C(   32739),
         INT16_C(   19414), -INT16_C(   30534), -INT16_C(    8998), -INT16_C(   18036) },
      { -INT16_C(   21426),  INT16_C(   23519),  INT16_C(   21409), -INT16_C(   32739),
         INT16_C(   19414), -INT16_C(   30534), -INT16_C(    8998), -INT16_C(   18036) },
      { -INT16_C(   21426), -INT16_C(    5480),  INT16_C(   21409),  INT16_C(    9688),
         INT16_C(   19414), -INT16_C(   30534), -INT16_C(    8998), -INT16_C(   18036) },
      { -INT16_C(   21426), -INT16_C(    5480),  INT16_C(   21409), -INT16_C(   32739),
         INT16_C(   19414),  INT16_C(   21179), -INT16_C(    8998), -INT16_C(   18036) },
      { -INT16_C(   21426), -INT16_C(    5480),  INT16_C(   21409), -INT16_C(   32739),
         INT16_C(   19414), -INT16_C(   30534), -INT16_C(    8998), -INT16_C(   12691) } },
    { {  INT16_C(   11127),  INT16_C(    4281),  INT16_C(    8108), -INT16_C(   11718),
        -INT16_C(    8689), -INT16_C(   17258),  INT16_C(    2511),  INT16_C(    3672) },
      { -INT16_C(   29705),  INT16_C(   24574), -INT16_C(    8515),  INT16_C(   25788),
         INT16_C(    9031), -INT16_C(   32656),  INT16_C(   18167), -INT16_C(    3569) },
      { -INT16_C(    3569),  INT16_C(    4281),  INT16_C(    8108), -INT16_C(   11718),
        -INT16_C(    8689), -INT16_C(   17258),  INT16_C(    2511),  INT16_C(    3672) },
      {  INT16_C(   11127),  INT16_C(   18167),  INT16_C(    8108), -INT16_C(   11718),
        -INT16_C(    8689), -INT16_C(   17258),  INT16_C(    2511),  INT16_C(    3672) },
      {  INT16_C(   11127),  INT16_C(    4281),  INT16_C(    8108),  INT16_C(    9031),
        -INT16_C(    8689), -INT16_C(   17258),  INT16_C(    2511),  INT16_C(    3672) },
      {  INT16_C(   11127),  INT16_C(    4281),  INT16_C(    8108), -INT16_C(   11718),
        -INT16_C(    8689),  INT16_C(   25788),  INT16_C(    2511),  INT16_C(    3672) },
      {  INT16_C(   11127),  INT16_C(    4281),  INT16_C(    8108), -INT16_C(   11718),
        -INT16_C(    8689), -INT16_C(   17258),  INT16_C(    2511),  INT16_C(   24574) } },
    { {  INT16_C(    2598),  INT16_C(   13531),  INT16_C(   24973), -INT16_C(   27774),
        -INT16_C(   25114),  INT16_C(   10082),  INT16_C(    3018),  INT16_C(   11447) },
      { -INT16_C(   29304),  INT16_C(   22734),  INT16_C(    1386),  INT16_C(   29640),
        -INT16_C(   27220),  INT16_C(   20656),  INT16_C(   20884), -INT16_C(   29958) },
      { -INT16_C(   29958),  INT16_C(   13531),  INT16_C(   24973), -INT16_C(   27774),
        -INT16_C(   25114),  INT16_C(   10082),  INT16_C(    3018),  INT16_C(   11447) },
      {  INT16_C(    2598),  INT16_C(   20884),  INT16_C(   24973), -INT16_C(   27774),
        -INT16_C(   25114),  INT16_C(   10082),  INT16_C(    3018),  INT16_C(   11447) },
      {  INT16_C(    2598),  INT16_C(   13531),  INT16_C(   24973), -INT16_C(   27220),
        -INT16_C(   25114),  INT16_C(   10082),  INT16_C(    3018),  INT16_C(   11447) },
      {  INT16_C(    2598),  INT16_C(   13531),  INT16_C(   24973), -INT16_C(   27774),
        -INT16_C(   25114),  INT16_C(   29640),  INT16_C(    3018),  INT16_C(   11447) },
      {  INT16_C(    2598),  INT16_C(   13531),  INT16_C(   24973), -INT16_C(   27774),
        -INT16_C(   25114),  INT16_C(   10082),  INT16_C(    3018),  INT16_C(   22734) } },
    { {  INT16_C(   26821), -INT16_C(   29427), -INT16_C(   29199), -INT16_C(   23310),
         INT16_C(   19461),  INT16_C(   28471),  INT16_C(   17652),  INT16_C(    8495) },
      {  INT16_C(    1907),  INT16_C(    9481),  INT16_C(   17372),  INT16_C(   27351),
         INT16_C(   27913),  INT16_C(   15194), -INT16_C(    9916), -INT16_C(   22787) },
      { -INT16_C(   22787), -INT16_C(   29427), -INT16_C(   29199), -INT16_C(   23310),
         INT16_C(   19461),  INT16_C(   28471),  INT16_C(   17652),  INT16_C(    8495) },
      {  INT16_C(   26821), -INT16_C(    9916), -INT16_C(   29199), -INT16_C(   23310),
         INT16_C(   19461),  INT16_C(   28471),  INT16_C(   17652),  INT16_C(    8495) },
      {  INT16_C(   26821), -INT16_C(   29427), -INT16_C(   29199),  INT16_C(   27913),
         INT16_C(   19461),  INT16_C(   28471),  INT16_C(   17652),  INT16_C(    8495) },
      {  INT16_C(   26821), -INT16_C(   29427), -INT16_C(   29199), -INT16_C(   23310),
         INT16_C(   19461),  INT16_C(   27351),  INT16_C(   17652),  INT16_C(    8495) },
      {  INT16_C(   26821), -INT16_C(   29427), -INT16_C(   29199), -INT16_C(   23310),
         INT16_C(   19461),  INT16_C(   28471),  INT16_C(   17652),  INT16_C(    9481) } },
    { { -INT16_C(   22367), -INT16_C(   26006), -INT16_C(   14130),  INT16_C(   29416),
         INT16_C(    9288), -INT16_C(   19099), -INT16_C(   19470), -INT16_C(   17968) },
      { -INT16_C(   12254),  INT16_C(     844),  INT16_C(   32114),  INT16_C(    8794),
        -INT16_C(   12642), -INT16_C(   21136), -INT16_C(   16890),  INT16_C(   25350) },
      {  INT16_C(   25350), -INT16_C(   26006), -INT16_C(   14130),  INT16_C(   29416),
         INT16_C(    9288), -INT16_C(   19099), -INT16_C(   19470), -INT16_C(   17968) },
      { -INT16_C(   22367), -INT16_C(   16890), -INT16_C(   14130),  INT16_C(   29416),
         INT16_C(    9288), -INT16_C(   19099), -INT16_C(   19470), -INT16_C(   17968) },
      { -INT16_C(   22367), -INT16_C(   26006), -INT16_C(   14130), -INT16_C(   12642),
         INT16_C(    9288), -INT16_C(   19099), -INT16_C(   19470), -INT16_C(   17968) },
      { -INT16_C(   22367), -INT16_C(   26006), -INT16_C(   14130),  INT16_C(   29416),
         INT16_C(    9288),  INT16_C(    8794), -INT16_C(   19470), -INT16_C(   17968) },
      { -INT16_C(   22367), -INT16_C(   26006), -INT16_C(   14130),  INT16_C(   29416),
         INT16_C(    9288), -INT16_C(   19099), -INT16_C(   19470),  INT16_C(     844) } },
    { { -INT16_C(    4687), -INT16_C(     685),  INT16_C(   32290),  INT16_C(    8754),
        -INT16_C(    4611), -INT16_C(    6814), -INT16_C(    8711),  INT16_C(   31457) },
      {  INT16_C(   14971),  INT16_C(   27437),  INT16_C(    6885),  INT16_C(   11065),
         INT16_C(    8411), -INT16_C(   31180),  INT16_C(   29285), -INT16_C(   24834) },
      { -INT16_C(   24834), -INT16_C(     685),  INT16_C(   32290),  INT16_C(    8754),
        -INT16_C(    4611), -INT16_C(    6814), -INT16_C(    8711),  INT16_C(   31457) },
      { -INT16_C(    4687),  INT16_C(   29285),  INT16_C(   32290),  INT16_C(    8754),
        -INT16_C(    4611), -INT16_C(    6814), -INT16_C(    8711),  INT16_C(   31457) },
      { -INT16_C(    4687), -INT16_C(     685),  INT16_C(   32290),  INT16_C(    8411),
        -INT16_C(    4611), -INT16_C(    6814), -INT16_C(    8711),  INT16_C(   31457) },
      { -INT16_C(    4687), -INT16_C(     685),  INT16_C(   32290),  INT16_C(    8754),
        -INT16_C(    4611),  INT16_C(   11065), -INT16_C(    8711),  INT16_C(   31457) },
      { -INT16_C(    4687), -INT16_C(     685),  INT16_C(   32290),  INT16_C(    8754),
        -INT16_C(    4611), -INT16_C(    6814), -INT16_C(    8711),  INT16_C(   27437) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a);
    simde_int16x8_t b = simde_vld1q_s16(test_vec[i].b);

    simde_int16x8_t r0_7 = simde_vcopyq_laneq_s16(a, 0, b, 7);
    simde_int16x8_t r1_6 = simde_vcopyq_laneq_s16(a, 1, b, 6);
    simde_int16x8_t r3_4 = simde_vcopyq_laneq_s16(a, 3, b, 4);
    simde_int16x8_t r5_3 = simde_vcopyq_laneq_s16(a, 5, b, 3);
    simde_int16x8_t r7_1 = simde_vcopyq_laneq_s16(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_i16x8(r0_7, simde_vld1q_s16(test_vec[i].r0_7));
    simde_test_arm_neon_assert_equal_i16x8(r1_6, simde_vld1q_s16(test_vec[i].r1_6));
    simde_test_arm_neon_assert_equal_i16x8(r3_4, simde_vld1q_s16(test_vec[i].r3_4));
    simde_test_arm_neon_assert_equal_i16x8(r5_3, simde_vld1q_s16(test_vec[i].r5_3));
    simde_test_arm_neon_assert_equal_i16x8(r7_1, simde_vld1q_s16(test_vec[i].r7_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int16x8_t a = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t b = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t r0_7 = simde_vcopyq_laneq_s16(a, 0, b, 7);
    simde_int16x8_t r1_6 = simde_vcopyq_laneq_s16(a, 1, b, 6);
    simde_int16x8_t r3_4 = simde_vcopyq_laneq_s16(a, 3, b, 4);
    simde_int16x8_t r5_3 = simde_vcopyq_laneq_s16(a, 5, b, 3);
    simde_int16x8_t r7_1 = simde_vcopyq_laneq_s16(a, 7, b, 1);

    simde_test_arm_neon_write_i16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r1_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r3_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r5_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, r7_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t a[4];
    int32_t b[4];
    int32_t r0_3[4];
    int32_t r1_2[4];
    int32_t r2_1[4];
    int32_t r3_0[4];
  } test_vec[] = {
    { { -INT32_C(  1892583197), -INT32_C(   225454004),  INT32_C(  1008306445),  INT32_C(  1245890578) },
      {  INT32_C(   731542339), -INT32_C(   857053337),  INT32_C(  1016225573),  INT32_C(  1824087776) },
      {  INT32_C(  1824087776), -INT32_C(   225454004),  INT32_C(  1008306445),  INT32_C(  1245890578) },
      { -INT32_C(  1892583197),  INT32_C(  1016225573),  INT32_C(  1008306445),  INT32_C(  1245890578) },
      { -INT32_C(  1892583197), -INT32_C(   225454004), -INT32_C(   857053337),  INT32_C(  1245890578) },
      { -INT32_C(  1892583197), -INT32_C(   225454004),  INT32_C(  1008306445),  INT32_C(   731542339) } },
    { {  INT32_C(  1600614011),  INT32_C(   240019305), -INT32_C(  2019582847), -INT32_C(   562177638) },
      { -INT32_C(    73458434),  INT32_C(   715226345), -INT32_C(  1660159717),  INT32_C(  1203496468) },
      {  INT32_C(  1203496468),  INT32_C(   240019305), -INT32_C(  2019582847), -INT32_C(   562177638) },
      {  INT32_C(  1600614011), -INT32_C(  1660159717), -INT32_C(  2019582847), -INT32_C(   562177638) },
      {  INT32_C(  1600614011),  INT32_C(   240019305),  INT32_C(   715226345), -INT32_C(   562177638) },
      {  INT32_C(  1600614011),  INT32_C(   240019305), -INT32_C(  2019582847), -INT32_C(    73458434) } },
    { {  INT32_C(  1778478051),  INT32_C(   630029678),  INT32_C(  1918387593), -INT32_C(   898166499) },
      { -INT32_C(  2070028428), -INT32_C(  1057493739), -INT32_C(  1053820267), -INT32_C(   464877709) },
      { -INT32_C(   464877709),  INT32_C(   630029678),  INT32_C(  1918387593), -INT32_C(   898166499) },
      {  INT32_C(  1778478051), -INT32_C(  1053820267),  INT32_C(  1918387593), -INT32_C(   898166499) },
      {  INT32_C(  1778478051),  INT32_C(   630029678), -INT32_C(  1057493739), -INT32_C(   898166499) },
      {  INT32_C(  1778478051),  INT32_C(   630029678),  INT32_C(  1918387593), -INT32_C(  2070028428) } },
    { { -INT32_C(  1933730243), -INT32_C(   179719064), -INT32_C(  1680784440), -INT32_C(   269744068) },
      {  INT32_C(   627798432),  INT32_C(   622441545), -INT32_C(  1933882589), -INT32_C(  1310730543) },
      { -INT32_C(  1310730543), -INT32_C(   179719064), -INT32_C(  1680784440), -INT32_C(   269744068) },
      { -INT32_C(  1933730243), -INT32_C(  1933882589), -INT32_C(  1680784440), -INT32_C(   269744068) },
      { -INT32_C(  1933730243), -INT32_C(   179719064),  INT32_C(   622441545), -INT32_C(   269744068) },
      { -INT32_C(  1933730243), -INT32_C(   179719064), -INT32_C(  1680784440),  INT32_C(   627798432) } },
    { {  INT32_C(  2089054990), -INT32_C(   800367284),  INT32_C(   604869219), -INT32_C(  1842421805) },
      { -INT32_C(  1206028316), -INT32_C(  1825846196), -INT32_C(   677690043),  INT32_C(   938506212) },
      {  INT32_C(   938506212), -INT32_C(   800367284),  INT32_C(   604869219), -INT32_C(  1842421805) },
      {  INT32_C(  2089054990), -INT32_C(   677690043),  INT32_C(   604869219), -INT32_C(  1842421805) },
      {  INT32_C(  2089054990), -INT32_C(   800367284), -INT32_C(  1825846196), -INT32_C(  1842421805) },
      {  INT32_C(  2089054990), -INT32_C(   800367284),  INT32_C(   604869219), -INT32_C(  1206028316) } },
    { {  INT32_C(  1368055385),  INT32_C(  1200632878), -INT32_C(  1243554760), -INT32_C(  1709345942) },
      { -INT32_C(  1279975680),  INT32_C(    97226001),  INT32_C(  1718562473), -INT32_C(   150019811) },
      { -INT32_C(   150019811),  INT32_C(  1200632878), -INT32_C(  1243554760), -INT32_C(  1709345942) },
      {  INT32_C(  1368055385),  INT32_C(  1718562473), -INT32_C(  1243554760), -INT32_C(  1709345942) },
      {  INT32_C(  1368055385),  INT32_C(  1200632878),  INT32_C(    97226001), -INT32_C(  1709345942) },
      {  INT32_C(  1368055385),  INT32_C(  1200632878), -INT32_C(  1243554760), -INT32_C(  1279975680) } },
    { {  INT32_C(  1816126290), -INT32_C(   227914872), -INT32_C(   964882524),  INT32_C(  1928245859) },
      { -INT32_C(   112086283),  INT32_C(   873557272), -INT32_C(   470253178), -INT32_C(   654993104) },
      { -INT32_C(   654993104), -INT32_C(   227914872), -INT32_C(   964882524),  INT32_C(  1928245859) },
      {  INT32_C(  1816126290), -INT32_C(   470253178), -INT32_C(   964882524),  INT32_C(  1928245859) },
      {  INT32_C(  1816126290), -INT32_C(   227914872),  INT32_C(   873557272),  INT32_C(  1928245859) },
      {  INT32_C(  1816126290), -INT32_C(   227914872), -INT32_C(   964882524), -INT32_C(   112086283) } },
    { {  INT32_C(   562043715), -INT32_C(   106864670), -INT32_C(  1846548877),  INT32_C(  1744408579) },
      { -INT32_C(   774102303), -INT32_C(  1452959164), -INT32_C(   490774966), -INT32_C(  2057123680) },
      { -INT32_C(  2057123680), -INT32_C(   106864670), -INT32_C(  1846548877),  INT32_C(  1744408579) },
      {  INT32_C(   562043715), -INT32_C(   490774966), -INT32_C(  1846548877),  INT32_C(  1744408579) },
      {  INT32_C(   562043715), -INT32_C(   106864670), -INT32_C(  1452959164),  INT32_C(  1744408579) },
      {  INT32_C(   562043715), -INT32_C(   106864670), -INT32_C(  1846548877), -INT32_C(   774102303) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a);
    simde_int32x4_t b = simde_vld1q_s32(test_vec[i].b);

    simde_int32x4_t r0_3 = simde_vcopyq_laneq_s32(a, 0, b, 3);
    simde_int32x4_t r1_2 = simde_vcopyq_laneq_s32(a, 1, b, 2);
    simde_int32x4_t r2_1 = simde_vcopyq_laneq_s32(a, 2, b, 1);
    simde_int32x4_t r3_0 = simde_vcopyq_laneq_s32(a, 3, b, 0);

    simde_test_arm_neon_assert_equal_i32x4(r0_3, simde_vld1q_s32(test_vec[i].r0_3));
    simde_test_arm_neon_assert_equal_i32x4(r1_2, simde_vld1q_s32(test_vec[i].r1_2));
    simde_test_arm_neon_assert_equal_i32x4(r2_1, simde_vld1q_s32(test_vec[i].r2_1));
    simde_test_arm_neon_assert_equal_i32x4(r3_0, simde_vld1q_s32(test_vec[i].r3_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int32x4_t a = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t b = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t r0_3 = simde_vcopyq_laneq_s32(a, 0, b, 3);
    simde_int32x4_t r1_2 = simde_vcopyq_laneq_s32(a, 1, b, 2);
    simde_int32x4_t r2_1 = simde_vcopyq_laneq_s32(a, 2, b, 1);
    simde_int32x4_t r3_0 = simde_vcopyq_laneq_s32(a, 3, b, 0);

    simde_test_arm_neon_write_i32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r1_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r2_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, r3_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t a[2];
    int64_t b[2];
    int64_t r0_0[2];
    int64_t r0_1[2];
    int64_t r1_0[2];
    int64_t r1_1[2];
  } test_vec[] = {
    { { -INT64_C(  475864847648919097),  INT64_C( 8417644638487745847) },
      {  INT64_C( 9182198556432984409),  INT64_C( 6177027272280840895) },
      {  INT64_C( 9182198556432984409),  INT64_C( 8417644638487745847) },
      {  INT64_C( 6177027272280840895),  INT64_C( 8417644638487745847) },
      { -INT64_C(  475864847648919097),  INT64_C( 9182198556432984409) },
      { -INT64_C(  475864847648919097),  INT64_C( 6177027272280840895) } },
    { { -INT64_C( 8929020168002432621), -INT64_C( 4477976040726240340) },
      {  INT64_C( 5692018566259932777),  INT64_C( 4316779177536635438) },
      {  INT64_C( 5692018566259932777), -INT64_C( 4477976040726240340) },
      {  INT64_C( 4316779177536635438), -INT64_C( 4477976040726240340) },
      { -INT64_C( 8929020168002432621),  INT64_C( 5692018566259932777) },
      { -INT64_C( 8929020168002432621),  INT64_C( 4316779177536635438) } },
    { {  INT64_C( 4763414794636474503),  INT64_C(  462179614187538409) },
      {  INT64_C( 7917706878421569084), -INT64_C( 5171000984489091865) },
      {  INT64_C( 7917706878421569084),  INT64_C(  462179614187538409) },
      { -INT64_C( 5171000984489091865),  INT64_C(  462179614187538409) },
      {  INT64_C( 4763414794636474503),  INT64_C( 7917706878421569084) },
      {  INT64_C( 4763414794636474503), -INT64_C( 5171000984489091865) } },
    { { -INT64_C(  655109288458667793), -INT64_C(  337451926488198107) },
      { -INT64_C( 7854309330387571658),  INT64_C( 8420743667125891946) },
      { -INT64_C( 7854309330387571658), -INT64_C(  337451926488198107) },
      {  INT64_C( 8420743667125891946), -INT64_C(  337451926488198107) },
      { -INT64_C(  655109288458667793), -INT64_C( 7854309330387571658) },
      { -INT64_C(  655109288458667793),  INT64_C( 8420743667125891946) } },
    { { -INT64_C( 6164247547247293913),  INT64_C( 2253183027365453726) },
      { -INT64_C( 1821736987801891187), -INT64_C( 5278162077788122669) },
      { -INT64_C( 1821736987801891187),  INT64_C( 2253183027365453726) },
      { -INT64_C( 5278162077788122669),  INT64_C( 2253183027365453726) },
      { -INT64_C( 6164247547247293913), -INT64_C( 1821736987801891187) },
      { -INT64_C( 6164247547247293913), -INT64_C( 5278162077788122669) } },
    { { -INT64_C( 8639413444708581833), -INT64_C( 5606583741094413314) },
      {  INT64_C( 5140422082660112584), -INT64_C( 3884945958717385980) },
      {  INT64_C( 5140422082660112584), -INT64_C( 5606583741094413314) },
      { -INT64_C( 3884945958717385980), -INT64_C( 5606583741094413314) },
      { -INT64_C( 8639413444708581833),  INT64_C( 5140422082660112584) },
      { -INT64_C( 8639413444708581833), -INT64_C( 3884945958717385980) } },
    { {  INT64_C( 9084394517336304795), -INT64_C( 5982763725163385905) },
      { -INT64_C( 8482304762806811342),  INT64_C( 8203438312388876529) },
      { -INT64_C( 8482304762806811342), -INT64_C( 5982763725163385905) },
      {  INT64_C( 8203438312388876529), -INT64_C( 5982763725163385905) },
      {  INT64_C( 9084394517336304795), -INT64_C( 8482304762806811342) },
      {  INT64_C( 9084394517336304795),  INT64_C( 8203438312388876529) } },
    { {  INT64_C( 1616920090545660434),  INT64_C( 2830530565097296736) },
      { -INT64_C( 6774932576689688966),  INT64_C( 4252959599116308083) },
      { -INT64_C( 6774932576689688966),  INT64_C( 2830530565097296736) },
      {  INT64_C( 4252959599116308083),  INT64_C( 2830530565097296736) },
      {  INT64_C( 1616920090545660434), -INT64_C( 6774932576689688966) },
      {  INT64_C( 1616920090545660434),  INT64_C( 4252959599116308083) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a);
    simde_int64x2_t b = simde_vld1q_s64(test_vec[i].b);

    simde_int64x2_t r0_0 = simde_vcopyq_laneq_s64(a, 0, b, 0);
    simde_int64x2_t r0_1 = simde_vcopyq_laneq_s64(a, 0, b, 1);
    simde_int64x2_t r1_0 = simde_vcopyq_laneq_s64(a, 1, b, 0);
    simde_int64x2_t r1_1 = simde_vcopyq_laneq_s64(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_i64x2(r0_0, simde_vld1q_s64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_i64x2(r0_1, simde_vld1q_s64(test_vec[i].r0_1));
    simde_test_arm_neon_assert_equal_i64x2(r1_0, simde_vld1q_s64(test_vec[i].r1_0));
    simde_test_arm_neon_assert_equal_i64x2(r1_1, simde_vld1q_s64(test_vec[i].r1_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int64x2_t a = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t b = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t r0_0 = simde_vcopyq_laneq_s64(a, 0, b, 0);
    simde_int64x2_t r0_1 = simde_vcopyq_laneq_s64(a, 0, b, 1);
    simde_int64x2_t r1_0 = simde_vcopyq_laneq_s64(a, 1, b, 0);
    simde_int64x2_t r1_1 = simde_vcopyq_laneq_s64(a, 1, b, 1);

    simde_test_arm_neon_write_i64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, r1_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t a[16];
    uint8_t b[16];
    uint8_t r0_15[16];
    uint8_t r3_12[16];
    uint8_t r7_8[16];
    uint8_t r11_4[16];
    uint8_t r15_1[16];
  } test_vec[] = {
    { {  UINT8_C(  246),  UINT8_C(  247),  UINT8_C(  144),  UINT8_C(   17),
         UINT8_C(  184),  UINT8_C(  243),  UINT8_C(  185),  UINT8_C(  150),
         UINT8_C(   75),  UINT8_C(   48),  UINT8_C(  193),  UINT8_C(   93),
         UINT8_C(  178),  UINT8_C(  223),  UINT8_C(  110),  UINT8_C(  228) },
      {  UINT8_C(  163),  UINT8_C(  179),  UINT8_C(  104),  UINT8_C(  196),
         UINT8_C(  232),  UINT8_C(   51),  UINT8_C(  215),  UINT8_C(  174),
         UINT8_C(   37),  UINT8_C(  181),  UINT8_C(   16),  UINT8_C(  157),
         UINT8_C(   67),  UINT8_C(  118),  UINT8_C(  181),  UINT8_C(   84) },
      {  UINT8_C(   84),  UINT8_C(  247),  UINT8_C(  144),  UINT8_C(   17),
         UINT8_C(  184),  UINT8_C(  243),  UINT8_C(  185),  UINT8_C(  150),
         UINT8_C(   75),  UINT8_C(   48),  UINT8_C(  193),  UINT8_C(   93),
         UINT8_C(  178),  UINT8_C(  223),  UINT8_C(  110),  UINT8_C(  228) },
      {  UINT8_C(  246),  UINT8_C(  247),  UINT8_C(  144),  UINT8_C(   67),
         UINT8_C(  184),  UINT8_C(  243),  UINT8_C(  185),  UINT8_C(  150),
         UINT8_C(   75),  UINT8_C(   48),  UINT8_C(  193),  UINT8_C(   93),
         UINT8_C(  178),  UINT8_C(  223),  UINT8_C(  110),  UINT8_C(  228) },
      {  UINT8_C(  246),  UINT8_C(  247),  UINT8_C(  144),  UINT8_C(   17),
         UINT8_C(  184),  UINT8_C(  243),  UINT8_C(  185),  UINT8_C(   37),
         UINT8_C(   75),  UINT8_C(   48),  UINT8_C(  193),  UINT8_C(   93),
         UINT8_C(  178),  UINT8_C(  223),  UINT8_C(  110),  UINT8_C(  228) },
      {  UINT8_C(  246),  UINT8_C(  247),  UINT8_C(  144),  UINT8_C(   17),
         UINT8_C(  184),  UINT8_C(  243),  UINT8_C(  185),  UINT8_C(  150),
         UINT8_C(   75),  UINT8_C(   48),  UINT8_C(  193),  UINT8_C(  232),
         UINT8_C(  178),  UINT8_C(  223),  UINT8_C(  110),  UINT8_C(  228) },
      {  UINT8_C(  246),  UINT8_C(  247),  UINT8_C(  144),  UINT8_C(   17),
         UINT8_C(  184),  UINT8_C(  243),  UINT8_C(  185),  UINT8_C(  150),
         UINT8_C(   75),  UINT8_C(   48),  UINT8_C(  193),  UINT8_C(   93),
         UINT8_C(  178),  UINT8_C(  223),  UINT8_C(  110),  UINT8_C(  179) } },
    { {  UINT8_C(   33),  UINT8_C(  229),  UINT8_C(   20),  UINT8_C(  122),
         UINT8_C(  136),  UINT8_C(   32),  UINT8_C(  196),  UINT8_C(   45),
         UINT8_C(   56),  UINT8_C(  169),  UINT8_C(  181),  UINT8_C(  147),
         UINT8_C(  247),  UINT8_C(  103),  UINT8_C(  243),  UINT8_C(  241) },
      {  UINT8_C(   56),  UINT8_C(  173),  UINT8_C(   83),  UINT8_C(   20),
         UINT8_C(  151),  UINT8_C(  249),  UINT8_C(  195),  UINT8_C(  179),
         UINT8_C(   11),  UINT8_C(   61),  UINT8_C(   82),  UINT8_C(  120),
         UINT8_C(   20),  UINT8_C(  192),  UINT8_C(   93),  UINT8_C(  178) },
      {  UINT8_C(  178),  UINT8_C(  229),  UINT8_C(   20),  UINT8_C(  122),
         UINT8_C(  136),  UINT8_C(   32),  UINT8_C(  196),  UINT8_C(   45),
         UINT8_C(   56),  UINT8_C(  169),  UINT8_C(  181),  UINT8_C(  147),
         UINT8_C(  247),  UINT8_C(  103),  UINT8_C(  243),  UINT8_C(  241) },
      {  UINT8_C(   33),  UINT8_C(  229),  UINT8_C(   20),  UINT8_C(   20),
         UINT8_C(  136),  UINT8_C(   32),  UINT8_C(  196),  UINT8_C(   45),
         UINT8_C(   56),  UINT8_C(  169),  UINT8_C(  181),  UINT8_C(  147),
         UINT8_C(  247),  UINT8_C(  103),  UINT8_C(  243),  UINT8_C(  241) },
      {  UINT8_C(   33),  UINT8_C(  229),  UINT8_C(   20),  UINT8_C(  122),
         UINT8_C(  136),  UINT8_C(   32),  UINT8_C(  196),  UINT8_C(   11),
         UINT8_C(   56),  UINT8_C(  169),  UINT8_C(  181),  UINT8_C(  147),
         UINT8_C(  247),  UINT8_C(  103),  UINT8_C(  243),  UINT8_C(  241) },
      {  UINT8_C(   33),  UINT8_C(  229),  UINT8_C(   20),  UINT8_C(  122),
         UINT8_C(  136),  UINT8_C(   32),  UINT8_C(  196),  UINT8_C(   45),
         UINT8_C(   56),  UINT8_C(  169),  UINT8_C(  181),  UINT8_C(  151),
         UINT8_C(  247),  UINT8_C(  103),  UINT8_C(  243),  UINT8_C(  241) },
      {  UINT8_C(   33),  UINT8_C(  229),  UINT8_C(   20),  UINT8_C(  122),
         UINT8_C(  136),  UINT8_C(   32),  UINT8_C(  196),  UINT8_C(   45),
         UINT8_C(   56),  UINT8_C(  169),  UINT8_C(  181),  UINT8_C(  147),
         UINT8_C(  247),  UINT8_C(  103),  UINT8_C(  243),  UINT8_C(  173) } },
    { {  UINT8_C(   85),  UINT8_C(   42),  UINT8_C(  232),  UINT8_C(   22),
         UINT8_C(   22),  UINT8_C(  177),  UINT8_C(   19),  UINT8_C(  207),
         UINT8_C(  243),  UINT8_C(   35),  UINT8_C(  139),  UINT8_C(  196),
         UINT8_C(   97),  UINT8_C(    0),  UINT8_C(   98),  UINT8_C(  175) },
      {  UINT8_C(  167),  UINT8_C(   39),  UINT8_C(  158),  UINT8_C(  122),
         UINT8_C(   43),  UINT8_C(   90),  UINT8_C(  131),  UINT8_C(  127),
         UINT8_C(   57),  UINT8_C(  210),  UINT8_C(  100),  UINT8_C(  133),
         UINT8_C(   98),  UINT8_C(  145),  UINT8_C(   33),  UINT8_C(   80) },
      {  UINT8_C(   80),  UINT8_C(   42),  UINT8_C(  232),  UINT8_C(   22),
         UINT8_C(   22),  UINT8_C(  177),  UINT8_C(   19),  UINT8_C(  207),
         UINT8_C(  243),  UINT8_C(   35),  UINT8_C(  139),  UINT8_C(  196),
         UINT8_C(   97),  UINT8_C(    0),  UINT8_C(   98),  UINT8_C(  175) },
      {  UINT8_C(   85),  UINT8_C(   42),  UINT8_C(  232),  UINT8_C(   98),
         UINT8_C(   22),  UINT8_C(  177),  UINT8_C(   19),  UINT8_C(  207),
         UINT8_C(  243),  UINT8_C(   35),  UINT8_C(  139),  UINT8_C(  196),
         UINT8_C(   97),  UINT8_C(    0),  UINT8_C(   98),  UINT8_C(  175) },
      {  UINT8_C(   85),  UINT8_C(   42),  UINT8_C(  232),  UINT8_C(   22),
         UINT8_C(   22),  UINT8_C(  177),  UINT8_C(   19),  UINT8_C(   57),
         UINT8_C(  243),  UINT8_C(   35),  UINT8_C(  139),  UINT8_C(  196),
         UINT8_C(   97),  UINT8_C(    0),  UINT8_C(   98),  UINT8_C(  175) },
      {  UINT8_C(   85),  UINT8_C(   42),  UINT8_C(  232),  UINT8_C(   22),
         UINT8_C(   22),  UINT8_C(  177),  UINT8_C(   19),  UINT8_C(  207),
         UINT8_C(  243),  UINT8_C(   35),  UINT8_C(  139),  UINT8_C(   43),
         UINT8_C(   97),  UINT8_C(    0),  UINT8_C(   98),  UINT8_C(  175) },
      {  UINT8_C(   85),  UINT8_C(   42),  UINT8_C(  232),  UINT8_C(   22),
         UINT8_C(   22),  UINT8_C(  177),  UINT8_C(   19),  UINT8_C(  207),
         UINT8_C(  243),  UINT8_C(   35),  UINT8_C(  139),  UINT8_C(  196),
         UINT8_C(   97),  UINT8_C(    0),  UINT8_C(   98),  UINT8_C(   39) } },
    { {  UINT8_C(   83),  UINT8_C(  171),  UINT8_C(    5),  UINT8_C(  105),
         UINT8_C(  211),  UINT8_C(    1),  UINT8_C(   43),  UINT8_C(   53),
         UINT8_C(  171),  UINT8_C(   15),  UINT8_C(   83),  UINT8_C(  235),
         UINT8_C(  252),  UINT8_C(  134),  UINT8_C(  244),  UINT8_C(    1) },
      {  UINT8_C(  212),  UINT8_C(   16),  UINT8_C(  118),  UINT8_C(  213),
         UINT8_C(   68),  UINT8_C(  168),  UINT8_C(   78),  UINT8_C(   94),
         UINT8_C(   96),  UINT8_C(   68),  UINT8_C(   29),  UINT8_C(  218),
         UINT8_C(  191),  UINT8_C(  115),  UINT8_C(  146),  UINT8_C(  235) },
      {  UINT8_C(  235),  UINT8_C(  171),  UINT8_C(    5),  UINT8_C(  105),
         UINT8_C(  211),  UINT8_C(    1),  UINT8_C(   43),  UINT8_C(   53),
         UINT8_C(  171),  UINT8_C(   15),  UINT8_C(   83),  UINT8_C(  235),
         UINT8_C(  252),  UINT8_C(  134),  UINT8_C(  244),  UINT8_C(    1) },
      {  UINT8_C(   83),  UINT8_C(  171),  UINT8_C(    5),  UINT8_C(  191),
         UINT8_C(  211),  UINT8_C(    1),  UINT8_C(   43),  UINT8_C(   53),
         UINT8_C(  171),  UINT8_C(   15),  UINT8_C(   83),  UINT8_C(  235),
         UINT8_C(  252),  UINT8_C(  134),  UINT8_C(  244),  UINT8_C(    1) },
      {  UINT8_C(   83),  UINT8_C(  171),  UINT8_C(    5),  UINT8_C(  105),
         UINT8_C(  211),  UINT8_C(    1),  UINT8_C(   43),  UINT8_C(   96),
         UINT8_C(  171),  UINT8_C(   15),  UINT8_C(   83),  UINT8_C(  235),
         UINT8_C(  252),  UINT8_C(  134),  UINT8_C(  244),  UINT8_C(    1) },
      {  UINT8_C(   83),  UINT8_C(  171),  UINT8_C(    5),  UINT8_C(  105),
         UINT8_C(  211),  UINT8_C(    1),  UINT8_C(   43),  UINT8_C(   53),
         UINT8_C(  171),  UINT8_C(   15),  UINT8_C(   83),  UINT8_C(   68),
         UINT8_C(  252),  UINT8_C(  134),  UINT8_C(  244),  UINT8_C(    1) },
      {  UINT8_C(   83),  UINT8_C(  171),  UINT8_C(    5),  UINT8_C(  105),
         UINT8_C(  211),  UINT8_C(    1),  UINT8_C(   43),  UINT8_C(   53),
         UINT8_C(  171),  UINT8_C(   15),  UINT8_C(   83),  UINT8_C(  235),
         UINT8_C(  252),  UINT8_C(  134),  UINT8_C(  244),  UINT8_C(   16) } },
    { {  UINT8_C(  110),  UINT8_C(  242),  UINT8_C(   72),  UINT8_C(   45),
         UINT8_C(   85),  UINT8_C(   45),  UINT8_C(  124),  UINT8_C(   76),
         UINT8_C(  205),  UINT8_C(  127),  UINT8_C(  154),  UINT8_C(  231),
         UINT8_C(  152),  UINT8_C(   56),  UINT8_C(   62),  UINT8_C(   70) },
      {  UINT8_C(  249),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(   59),
         UINT8_C(    2),  UINT8_C(   33),  UINT8_C(   73),  UINT8_C(   97),
         UINT8_C(  161),  UINT8_C(  222),  UINT8_C(   76),  UINT8_C(   96),
         UINT8_C(  205),  UINT8_C(  112),  UINT8_C(   99),  UINT8_C(  202) },
      {  UINT8_C(  202),  UINT8_C(  242),  UINT8_C(   72),  UINT8_C(   45),
         UINT8_C(   85),  UINT8_C(   45),  UINT8_C(  124),  UINT8_C(   76),
         UINT8_C(  205),  UINT8_C(  127),  UINT8_C(  154),  UINT8_C(  231),
         UINT8_C(  152),  UINT8_C(   56),  UINT8_C(   62),  UINT8_C(   70) },
      {  UINT8_C(  110),  UINT8_C(  242),  UINT8_C(   72),  UINT8_C(  205),
         UINT8_C(   85),  UINT8_C(   45),  UINT8_C(  124),  UINT8_C(   76),
         UINT8_C(  205),  UINT8_C(  127),  UINT8_C(  154),  UINT8_C(  231),
         UINT8_C(  152),  UINT8_C(   56),  UINT8_C(   62),  UINT8_C(   70) },
      {  UINT8_C(  110),  UINT8_C(  242),  UINT8_C(   72),  UINT8_C(   45),
         UINT8_C(   85),  UINT8_C(   45),  UINT8_C(  124),  UINT8_C(  161),
         UINT8_C(  205),  UINT8_C(  127),  UINT8_C(  154),  UINT8_C(  231),
         UINT8_C(  152),  UINT8_C(   56),  UINT8_C(   62),  UINT8_C(   70) },
      {  UINT8_C(  110),  UINT8_C(  242),  UINT8_C(   72),  UINT8_C(   45),
         UINT8_C(   85),  UINT8_C(   45),  UINT8_C(  124),  UINT8_C(   76),
         UINT8_C(  205),  UINT8_C(  127),  UINT8_C(  154),  UINT8_C(    2),
         UINT8_C(  152),  UINT8_C(   56),  UINT8_C(   62),  UINT8_C(   70) },
      {  UINT8_C(  110),  UINT8_C(  242),  UINT8_C(   72),  UINT8_C(   45),
         UINT8_C(   85),  UINT8_C(   45),  UINT8_C(  124),  UINT8_C(   76),
         UINT8_C(  205),  UINT8_C(  127),  UINT8_C(  154),  UINT8_C(  231),
         UINT8_C(  152),  UINT8_C(   56),  UINT8_C(   62),  UINT8_C(  143) } },
    { {  UINT8_C(  205),  UINT8_C(  113),  UINT8_C(  133),  UINT8_C(   98),
         UINT8_C(   49),  UINT8_C(  168),  UINT8_C(  196),  UINT8_C(  243),
         UINT8_C(   48),  UINT8_C(   38),  UINT8_C(   75),  UINT8_C(    0),
         UINT8_C(  164),  UINT8_C(  135),  UINT8_C(   28),  UINT8_C(   91) },
      {  UINT8_C(  214),  UINT8_C(   25),  UINT8_C(  230),  UINT8_C(  142),
         UINT8_C(   76),  UINT8_C(   97),  UINT8_C(   57),  UINT8_C(    7),
         UINT8_C(  239),  UINT8_C(  176),  UINT8_C(    8),  UINT8_C(   43),
         UINT8_C(   54),  UINT8_C(  231),  UINT8_C(   29),  UINT8_C(   24) },
      {  UINT8_C(   24),  UINT8_C(  113),  UINT8_C(  133),  UINT8_C(   98),
         UINT8_C(   49),  UINT8_C(  168),  UINT8_C(  196),  UINT8_C(  243),
         UINT8_C(   48),  UINT8_C(   38),  UINT8_C(   75),  UINT8_C(    0),
         UINT8_C(  164),  UINT8_C(  135),  UINT8_C(   28),  UINT8_C(   91) },
      {  UINT8_C(  205),  UINT8_C(  113),  UINT8_C(  133),  UINT8_C(   54),
         UINT8_C(   49),  UINT8_C(  168),  UINT8_C(  196),  UINT8_C(  243),
         UINT8_C(   48),  UINT8_C(   38),  UINT8_C(   75),  UINT8_C(    0),
         UINT8_C(  164),  UINT8_C(  135),  UINT8_C(   28),  UINT8_C(   91) },
      {  UINT8_C(  205),  UINT8_C(  113),  UINT8_C(  133),  UINT8_C(   98),
         UINT8_C(   49),  UINT8_C(  168),  UINT8_C(  196),  UINT8_C(  239),
         UINT8_C(   48),  UINT8_C(   38),  UINT8_C(   75),  UINT8_C(    0),
         UINT8_C(  164),  UINT8_C(  135),  UINT8_C(   28),  UINT8_C(   91) },
      {  UINT8_C(  205),  UINT8_C(  113),  UINT8_C(  133),  UINT8_C(   98),
         UINT8_C(   49),  UINT8_C(  168),  UINT8_C(  196),  UINT8_C(  243),
         UINT8_C(   48),  UINT8_C(   38),  UINT8_C(   75),  UINT8_C(   76),
         UINT8_C(  164),  UINT8_C(  135),  UINT8_C(   28),  UINT8_C(   91) },
      {  UINT8_C(  205),  UINT8_C(  113),  UINT8_C(  133),  UINT8_C(   98),
         UINT8_C(   49),  UINT8_C(  168),  UINT8_C(  196),  UINT8_C(  243),
         UINT8_C(   48),  UINT8_C(   38),  UINT8_C(   75),  UINT8_C(    0),
         UINT8_C(  164),  UINT8_C(  135),  UINT8_C(   28),  UINT8_C(   25) } },
    { {  UINT8_C(   41),  UINT8_C(    0),  UINT8_C(   18),  UINT8_C(  142),
         UINT8_C(   56),  UINT8_C(  132),  UINT8_C(    1),  UINT8_C(   98),
         UINT8_C(  122),  UINT8_C(   59),  UINT8_C(   66),  UINT8_C(   46),
         UINT8_C(   71),  UINT8_C(   48),  UINT8_C(   59),  UINT8_C(  144) },
      {  UINT8_C(   28),  UINT8_C(   82),  UINT8_C(  123),  UINT8_C(  131),
         UINT8_C(  204),  UINT8_C(  199),  UINT8_C(  247),  UINT8_C(  126),
         UINT8_C(   30),  UINT8_C(  111),  UINT8_C(   48),  UINT8_C(   50),
         UINT8_C(  252),  UINT8_C(   65),  UINT8_C(   21),  UINT8_C(  254) },
      {  UINT8_C(  254),  UINT8_C(    0),  UINT8_C(   18),  UINT8_C(  142),
         UINT8_C(   56),  UINT8_C(  132),  UINT8_C(    1),  UINT8_C(   98),
         UINT8_C(  122),  UINT8_C(   59),  UINT8_C(   66),  UINT8_C(   46),
         UINT8_C(   71),  UINT8_C(   48),  UINT8_C(   59),  UINT8_C(  144) },
      {  UINT8_C(   41),  UINT8_C(    0),  UINT8_C(   18),  UINT8_C(  252),
         UINT8_C(   56),  UINT8_C(  132),  UINT8_C(    1),  UINT8_C(   98),
         UINT8_C(  122),  UINT8_C(   59),  UINT8_C(   66),  UINT8_C(   46),
         UINT8_C(   71),  UINT8_C(   48),  UINT8_C(   59),  UINT8_C(  144) },
      {  UINT8_C(   41),  UINT8_C(    0),  UINT8_C(   18),  UINT8_C(  142),
         UINT8_C(   56),  UINT8_C(  132),  UINT8_C(    1),  UINT8_C(   30),
         UINT8_C(  122),  UINT8_C(   59),  UINT8_C(   66),  UINT8_C(   46),
         UINT8_C(   71),  UINT8_C(   48),  UINT8_C(   59),  UINT8_C(  144) },
      {  UINT8_C(   41),  UINT8_C(    0),  UINT8_C(   18),  UINT8_C(  142),
         UINT8_C(   56),  UINT8_C(  132),  UINT8_C(    1),  UINT8_C(   98),
         UINT8_C(  122),  UINT8_C(   59),  UINT8_C(   66),  UINT8_C(  204),
         UINT8_C(   71),  UINT8_C(   48),  UINT8_C(   59),  UINT8_C(  144) },
      {  UINT8_C(   41),  UINT8_C(    0),  UINT8_C(   18),  UINT8_C(  142),
         UINT8_C(   56),  UINT8_C(  132),  UINT8_C(    1),  UINT8_C(   98),
         UINT8_C(  122),  UINT8_C(   59),  UINT8_C(   66),  UINT8_C(   46),
         UINT8_C(   71),  UINT8_C(   48),  UINT8_C(   59),  UINT8_C(   82) } },
    { {  UINT8_C(  214),  UINT8_C(  112),  UINT8_C(   60),  UINT8_C(  183),
         UINT8_C(  213),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(  231),
         UINT8_C(  105),  UINT8_C(   97),  UINT8_C(   76),  UINT8_C(   13),
         UINT8_C(  190),  UINT8_C(   12),  UINT8_C(  121),  UINT8_C(  167) },
      {  UINT8_C(   60),  UINT8_C(  212),  UINT8_C(  212),  UINT8_C(  225),
         UINT8_C(  136),  UINT8_C(  233),  UINT8_C(    4),  UINT8_C(   29),
         UINT8_C(  196),  UINT8_C(  145),  UINT8_C(  157),  UINT8_C(  121),
         UINT8_C(   58),  UINT8_C(   57),  UINT8_C(  166),  UINT8_C(   79) },
      {  UINT8_C(   79),  UINT8_C(  112),  UINT8_C(   60),  UINT8_C(  183),
         UINT8_C(  213),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(  231),
         UINT8_C(  105),  UINT8_C(   97),  UINT8_C(   76),  UINT8_C(   13),
         UINT8_C(  190),  UINT8_C(   12),  UINT8_C(  121),  UINT8_C(  167) },
      {  UINT8_C(  214),  UINT8_C(  112),  UINT8_C(   60),  UINT8_C(   58),
         UINT8_C(  213),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(  231),
         UINT8_C(  105),  UINT8_C(   97),  UINT8_C(   76),  UINT8_C(   13),
         UINT8_C(  190),  UINT8_C(   12),  UINT8_C(  121),  UINT8_C(  167) },
      {  UINT8_C(  214),  UINT8_C(  112),  UINT8_C(   60),  UINT8_C(  183),
         UINT8_C(  213),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(  196),
         UINT8_C(  105),  UINT8_C(   97),  UINT8_C(   76),  UINT8_C(   13),
         UINT8_C(  190),  UINT8_C(   12),  UINT8_C(  121),  UINT8_C(  167) },
      {  UINT8_C(  214),  UINT8_C(  112),  UINT8_C(   60),  UINT8_C(  183),
         UINT8_C(  213),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(  231),
         UINT8_C(  105),  UINT8_C(   97),  UINT8_C(   76),  UINT8_C(  136),
         UINT8_C(  190),  UINT8_C(   12),  UINT8_C(  121),  UINT8_C(  167) },
      {  UINT8_C(  214),  UINT8_C(  112),  UINT8_C(   60),  UINT8_C(  183),
         UINT8_C(  213),  UINT8_C(  143),  UINT8_C(   98),  UINT8_C(  231),
         UINT8_C(  105),  UINT8_C(   97),  UINT8_C(   76),  UINT8_C(   13),
         UINT8_C(  190),  UINT8_C(   12),  UINT8_C(  121),  UINT8_C(  212) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
    simde_uint8x16_t b = simde_vld1q_u8(test_vec[i].b);

    simde_uint8x16_t r0_15 = simde_vcopyq_laneq_u8(a, 0, b, 15);
    simde_uint8x16_t r3_12 = simde_vcopyq_laneq_u8(a, 3, b, 12);
    simde_uint8x16_t r7_8 = simde_vcopyq_laneq_u8(a, 7, b, 8);
    simde_uint8x16_t r11_4 = simde_vcopyq_laneq_u8(a, 11, b, 4);
    simde_uint8x16_t r15_1 = simde_vcopyq_laneq_u8(a, 15, b, 1);

    simde_test_arm_neon_assert_equal_u8x16(r0_15, simde_vld1q_u8(test_vec[i].r0_15));
    simde_test_arm_neon_assert_equal_u8x16(r3_12, simde_vld1q_u8(test_vec[i].r3_12));
    simde_test_arm_neon_assert_equal_u8x16(r7_8, simde_vld1q_u8(test_vec[i].r7_8));
    simde_test_arm_neon_assert_equal_u8x16(r11_4, simde_vld1q_u8(test_vec[i].r11_4));
    simde_test_arm_neon_assert_equal_u8x16(r15_1, simde_vld1q_u8(test_vec[i].r15_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t b = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t r0_15 = simde_vcopyq_laneq_u8(a, 0, b, 15);
    simde_uint8x16_t r3_12 = simde_vcopyq_laneq_u8(a, 3, b, 12);
    simde_uint8x16_t r7_8 = simde_vcopyq_laneq_u8(a, 7, b, 8);
    simde_uint8x16_t r11_4 = simde_vcopyq_laneq_u8(a, 11, b, 4);
    simde_uint8x16_t r15_1 = simde_vcopyq_laneq_u8(a, 15, b, 1);

    simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r0_15, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r3_12, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r7_8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r11_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, r15_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t a[8];
    uint16_t b[8];
    uint16_t r0_7[8];
    uint16_t r1_6[8];
    uint16_t r3_4[8];
    uint16_t r5_3[8];
    uint16_t r7_1[8];
  } test_vec[] = {
    { {  UINT16_C(   25081),  UINT16_C(   12133),  UINT16_C(   16658),  UINT16_C(   10269),
         UINT16_C(   62695),  UINT16_C(   42052),  UINT16_C(   28583),  UINT16_C(   55868) },
      {  UINT16_C(   64179),  UINT16_C(    3756),  UINT16_C(   15151),  UINT16_C(   33917),
         UINT16_C(   33797),  UINT16_C(   56243),  UINT16_C(   48168),  UINT16_C(   62591) },
      {  UINT16_C(   62591),  UINT16_C(   12133),  UINT16_C(   16658),  UINT16_C(   10269),
         UINT16_C(   62695),  UINT16_C(   42052),  UINT16_C(   28583),  UINT16_C(   55868) },
      {  UINT16_C(   25081),  UINT16_C(   48168),  UINT16_C(   16658),  UINT16_C(   10269),
         UINT16_C(   62695),  UINT16_C(   42052),  UINT16_C(   28583),  UINT16_C(   55868) },
      {  UINT16_C(   25081),  UINT16_C(   12133),  UINT16_C(   16658),  UINT16_C(   33797),
         UINT16_C(   62695),  UINT16_C(   42052),  UINT16_C(   28583),  UINT16_C(   55868) },
      {  UINT16_C(   25081),  UINT16_C(   12133),  UINT16_C(   16658),  UINT16_C(   10269),
         UINT16_C(   62695),  UINT16_C(   33917),  UINT16_C(   28583),  UINT16_C(   55868) },
      {  UINT16_C(   25081),  UINT16_C(   12133),  UINT16_C(   16658),  UINT16_C(   10269),
         UINT16_C(   62695),  UINT16_C(   42052),  UINT16_C(   28583),  UINT16_C(    3756) } },
    { {  UINT16_C(   42773),  UINT16_C(   60819),  UINT16_C(    5780),  UINT16_C(   38892),
         UINT16_C(   50295),  UINT16_C(   55830),  UINT16_C(   29603),  UINT16_C(    6234) },
      {  UINT16_C(   14631),  UINT16_C(   14975),  UINT16_C(   18813),  UINT16_C(   48357),
         UINT16_C(   43565),  UINT16_C(   52059),  UINT16_C(   49414),  UINT16_C(   62266) },
      {  UINT16_C(   62266),  UINT16_C(   60819),  UINT16_C(    5780),  UINT16_C(   38892),
         UINT16_C(   50295),  UINT16_C(   55830),  UINT16_C(   29603),  UINT16_C(    6234) },
      {  UINT16_C(   42773),  UINT16_C(   49414),  UINT16_C(    5780),  UINT16_C(   38892),
         UINT16_C(   50295),  UINT16_C(   55830),  UINT16_C(   29603),  UINT16_C(    6234) },
      {  UINT16_C(   42773),  UINT16_C(   60819),  UINT16_C(    5780),  UINT16_C(   43565),
         UINT16_C(   50295),  UINT16_C(   55830),  UINT16_C(   29603),  UINT16_C(    6234) },
      {  UINT16_C(   42773),  UINT16_C(   60819),  UINT16_C(    5780),  UINT16_C(   38892),
         UINT16_C(   50295),  UINT16_C(   48357),  UINT16_C(   29603),  UINT16_C(    6234) },
      {  UINT16_C(   42773),  UINT16_C(   60819),  UINT16_C(    5780),  UINT16_C(   38892),
         UINT16_C(   50295),  UINT16_C(   55830),  UINT16_C(   29603),  UINT16_C(   14975) } },
    { {  UINT16_C(   59618),  UINT16_C(   16122),  UINT16_C(   25506),  UINT16_C(   64566),
         UINT16_C(   25795),  UINT16_C(   55880),  UINT16_C(   14803),  UINT16_C(   20543) },
      {  UINT16_C(   40023),  UINT16_C(   25126),  UINT16_C(   26717),  UINT16_C(   35096),
         UINT16_C(   32251),  UINT16_C(   38772),  UINT16_C(    8275),  UINT16_C(   33753) },
      {  UINT16_C(   33753),  UINT16_C(   16122),  UINT16_C(   25506),  UINT16_C(   64566),
         UINT16_C(   25795),  UINT16_C(   55880),  UINT16_C(   14803),  UINT16_C(   20543) },
      {  UINT16_C(   59618),  UINT16_C(    8275),  UINT16_C(   25506),  UINT16_C(   64566),
         UINT16_C(   25795),  UINT16_C(   55880),  UINT16_C(   14803),  UINT16_C(   20543) },
      {  UINT16_C(   59618),  UINT16_C(   16122),  UINT16_C(   25506),  UINT16_C(   32251),
         UINT16_C(   25795),  UINT16_C(   55880),  UINT16_C(   14803),  UINT16_C(   20543) },
      {  UINT16_C(   59618),  UINT16_C(   16122),  UINT16_C(   25506),  UINT16_C(   64566),
         UINT16_C(   25795),  UINT16_C(   35096),  UINT16_C(   14803),  UINT16_C(   20543) },
      {  UINT16_C(   59618),  UINT16_C(   16122),  UINT16_C(   25506),  UINT16_C(   64566),
         UINT16_C(   25795),  UINT16_C(   55880),  UINT16_C(   14803),  UINT16_C(   25126) } },
    { {  UINT16_C(   43675),  UINT16_C(   35166),  UINT16_C(   34629),  UINT16_C(   36341),
         UINT16_C(   64989),  UINT16_C(    2813),  UINT16_C(   39062),  UINT16_C(   26525) },
      {  UINT16_C(   57069),  UINT16_C(   55607),  UINT16_C(   20903),  UINT16_C(   57247),
         UINT16_C(   36244),  UINT16_C(   62344),  UINT16_C(   41912),  UINT16_C(   44736) },
      {  UINT16_C(   44736),  UINT16_C(   35166),  UINT16_C(   34629),  UINT16_C(   36341),
         UINT16_C(   64989),  UINT16_C(    2813),  UINT16_C(   39062),  UINT16_C(   26525) },
      {  UINT16_C(   43675),  UINT16_C(   41912),  UINT16_C(   34629),  UINT16_C(   36341),
         UINT16_C(   64989),  UINT16_C(    2813),  UINT16_C(   39062),  UINT16_C(   26525) },
      {  UINT16_C(   43675),  UINT16_C(   35166),  UINT16_C(   34629),  UINT16_C(   36244),
         UINT16_C(   64989),  UINT16_C(    2813),  UINT16_C(   39062),  UINT16_C(   26525) },
      {  UINT16_C(   43675),  UINT16_C(   35166),  UINT16_C(   34629),  UINT16_C(   36341),
         UINT16_C(   64989),  UINT16_C(   57247),  UINT16_C(   39062),  UINT16_C(   26525) },
      {  UINT16_C(   43675),  UINT16_C(   35166),  UINT16_C(   34629),  UINT16_C(   36341),
         UINT16_C(   64989),  UINT16_C(    2813),  UINT16_C(   39062),  UINT16_C(   55607) } },
    { {  UINT16_C(   63367),  UINT16_C(   50618),  UINT16_C(   52629),  UINT16_C(   26557),
         UINT16_C(   49457),  UINT16_C(   55560),  UINT16_C(   59740),  UINT16_C(   54035) },
      {  UINT16_C(   35397),  UINT16_C(   27456),  UINT16_C(   19596),  UINT16_C(   23074),
         UINT16_C(   44230),  UINT16_C(   28458),  UINT16_C(   34027),  UINT16_C(   31882) },
      {  UINT16_C(   31882),  UINT16_C(   50618),  UINT16_C(   52629),  UINT16_C(   26557),
         UINT16_C(   49457),  UINT16_C(   55560),  UINT16_C(   59740),  UINT16_C(   54035) },
      {  UINT16_C(   63367),  UINT16_C(   34027),  UINT16_C(   52629),  UINT16_C(   26557),
         UINT16_C(   49457),  UINT16_C(   55560),  UINT16_C(   59740),  UINT16_C(   54035) },
      {  UINT16_C(   63367),  UINT16_C(   50618),  UINT16_C(   52629),  UINT16_C(   44230),
         UINT16_C(   49457),  UINT16_C(   55560),  UINT16_C(   59740),  UINT16_C(   54035) },
      {  UINT16_C(   63367),  UINT16_C(   50618),  UINT16_C(   52629),  UINT16_C(   26557),
         UINT16_C(   49457),  UINT16_C(   23074),  UINT16_C(   59740),  UINT16_C(   54035) },
      {  UINT16_C(   63367),  UINT16_C(   50618),  UINT16_C(   52629),  UINT16_C(   26557),
         UINT16_C(   49457),  UINT16_C(   55560),  UINT16_C(   59740),  UINT16_C(   27456) } },
    { {  UINT16_C(   23413),  UINT16_C(   40483),  UINT16_C(      63),  UINT16_C(   52152),
         UINT16_C(   38959),  UINT16_C(    4929),  UINT16_C(   21435),  UINT16_C(   62787) },
      {  UINT16_C(   49317),  UINT16_C(   18538),  UINT16_C(   17793),  UINT16_C(   61704),
         UINT16_C(   41671),  UINT16_C(   53824),  UINT16_C(   25678),  UINT16_C(   37125) },
      {  UINT16_C(   37125),  UINT16_C(   40483),  UINT16_C(      63),  UINT16_C(   52152),
         UINT16_C(   38959),  UINT16_C(    4929),  UINT16_C(   21435),  UINT16_C(   62787) },
      {  UINT16_C(   23413),  UINT16_C(   25678),  UINT16_C(      63),  UINT16_C(   52152),
         UINT16_C(   38959),  UINT16_C(    4929),  UINT16_C(   21435),  UINT16_C(   62787) },
      {  UINT16_C(   23413),  UINT16_C(   40483),  UINT16_C(      63),  UINT16_C(   41671),
         UINT16_C(   38959),  UINT16_C(    4929),  UINT16_C(   21435),  UINT16_C(   62787) },
      {  UINT16_C(   23413),  UINT16_C(   40483),  UINT16_C(      63),  UINT16_C(   52152),
         UINT16_C(   38959),  UINT16_C(   61704),  UINT16_C(   21435),  UINT16_C(   62787) },
      {  UINT16_C(   23413),  UINT16_C(   40483),  UINT16_C(      63),  UINT16_C(   52152),
         UINT16_C(   38959),  UINT16_C(    4929),  UINT16_C(   21435),  UINT16_C(   18538) } },
    { {  UINT16_C(   41696),  UINT16_C(    7636),  UINT16_C(   15486),  UINT16_C(     842),
         UINT16_C(   14005),  UINT16_C(   39402),  UINT16_C(   58283),  UINT16_C(    8456) },
      {  UINT16_C(   47670),  UINT16_C(    2324),  UINT16_C(   19969),  UINT16_C(   53005),
         UINT16_C(    4511),  UINT16_C(   36060),  UINT16_C(   54065),  UINT16_C(   35479) },
      {  UINT16_C(   35479),  UINT16_C(    7636),  UINT16_C(   15486),  UINT16_C(     842),
         UINT16_C(   14005),  UINT16_C(   39402),  UINT16_C(   58283),  UINT16_C(    8456) },
      {  UINT16_C(   41696),  UINT16_C(   54065),  UINT16_C(   15486),  UINT16_C(     842),
         UINT16_C(   14005),  UINT16_C(   39402),  UINT16_C(   58283),  UINT16_C(    8456) },
      {  UINT16_C(   41696),  UINT16_C(    7636),  UINT16_C(   15486),  UINT16_C(    4511),
         UINT16_C(   14005),  UINT16_C(   39402),  UINT16_C(   58283),  UINT16_C(    8456) },
      {  UINT16_C(   41696),  UINT16_C(    7636),  UINT16_C(   15486),  UINT16_C(     842),
         UINT16_C(   14005),  UINT16_C(   53005),  UINT16_C(   58283),  UINT16_C(    8456) },
      {  UINT16_C(   41696),  UINT16_C(    7636),  UINT16_C(   15486),  UINT16_C(     842),
         UINT16_C(   14005),  UINT16_C(   39402),  UINT16_C(   58283),  UINT16_C(    2324) } },
    { {  UINT16_C(   31497),  UINT16_C(    5172),  UINT16_C(   59315),  UINT16_C(    4122),
         UINT16_C(   52072),  UINT16_C(   14663),  UINT16_C(    6643),  UINT16_C(   19646) },
      {  UINT16_C(    3117),  UINT16_C(    6887),  UINT16_C(    8411),  UINT16_C(   34695),
         UINT16_C(   37761),  UINT16_C(   62501),  UINT16_C(    1235),  UINT16_C(    7430) },
      {  UINT16_C(    7430),  UINT16_C(    5172),  UINT16_C(   59315),  UINT16_C(    4122),
         UINT16_C(   52072),  UINT16_C(   14663),  UINT16_C(    6643),  UINT16_C(   19646) },
      {  UINT16_C(   31497),  UINT16_C(    1235),  UINT16_C(   59315),  UINT16_C(    4122),
         UINT16_C(   52072),  UINT16_C(   14663),  UINT16_C(    6643),  UINT16_C(   19646) },
      {  UINT16_C(   31497),  UINT16_C(    5172),  UINT16_C(   59315),  UINT16_C(   37761),
         UINT16_C(   52072),  UINT16_C(   14663),  UINT16_C(    6643),  UINT16_C(   19646) },
      {  UINT16_C(   31497),  UINT16_C(    5172),  UINT16_C(   59315),  UINT16_C(    4122),
         UINT16_C(   52072),  UINT16_C(   34695),  UINT16_C(    6643),  UINT16_C(   19646) },
      {  UINT16_C(   31497),  UINT16_C(    5172),  UINT16_C(   59315),  UINT16_C(    4122),
         UINT16_C(   52072),  UINT16_C(   14663),  UINT16_C(    6643),  UINT16_C(    6887) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
    simde_uint16x8_t b = simde_vld1q_u16(test_vec[i].b);

    simde_uint16x8_t r0_7 = simde_vcopyq_laneq_u16(a, 0, b, 7);
    simde_uint16x8_t r1_6 = simde_vcopyq_laneq_u16(a, 1, b, 6);
    simde_uint16x8_t r3_4 = simde_vcopyq_laneq_u16(a, 3, b, 4);
    simde_uint16x8_t r5_3 = simde_vcopyq_laneq_u16(a, 5, b, 3);
    simde_uint16x8_t r7_1 = simde_vcopyq_laneq_u16(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_u16x8(r0_7, simde_vld1q_u16(test_vec[i].r0_7));
    simde_test_arm_neon_assert_equal_u16x8(r1_6, simde_vld1q_u16(test_vec[i].r1_6));
    simde_test_arm_neon_assert_equal_u16x8(r3_4, simde_vld1q_u16(test_vec[i].r3_4));
    simde_test_arm_neon_assert_equal_u16x8(r5_3, simde_vld1q_u16(test_vec[i].r5_3));
    simde_test_arm_neon_assert_equal_u16x8(r7_1, simde_vld1q_u16(test_vec[i].r7_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t b = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t r0_7 = simde_vcopyq_laneq_u16(a, 0, b, 7);
    simde_uint16x8_t r1_6 = simde_vcopyq_laneq_u16(a, 1, b, 6);
    simde_uint16x8_t r3_4 = simde_vcopyq_laneq_u16(a, 3, b, 4);
    simde_uint16x8_t r5_3 = simde_vcopyq_laneq_u16(a, 5, b, 3);
    simde_uint16x8_t r7_1 = simde_vcopyq_laneq_u16(a, 7, b, 1);

    simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r1_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r3_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r5_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, r7_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t a[4];
    uint32_t b[4];
    uint32_t r0_3[4];
    uint32_t r1_2[4];
    uint32_t r2_1[4];
    uint32_t r3_0[4];
  } test_vec[] = {
    { {  UINT32_C(  2136215777),  UINT32_C(  3630933059),  UINT32_C(  2773291539),  UINT32_C(  3690985421) },
      {  UINT32_C(   892184183),  UINT32_C(   193672311),  UINT32_C(  2139275606),  UINT32_C(   136188165) },
      {  UINT32_C(   136188165),  UINT32_C(  3630933059),  UINT32_C(  2773291539),  UINT32_C(  3690985421) },
      {  UINT32_C(  2136215777),  UINT32_C(  2139275606),  UINT32_C(  2773291539),  UINT32_C(  3690985421) },
      {  UINT32_C(  2136215777),  UINT32_C(  3630933059),  UINT32_C(   193672311),  UINT32_C(  3690985421) },
      {  UINT32_C(  2136215777),  UINT32_C(  3630933059),  UINT32_C(  2773291539),  UINT32_C(   892184183) } },
    { {  UINT32_C(  2671810708),  UINT32_C(  1685919905),  UINT32_C(  2821922285),  UINT32_C(  3960114487) },
      {  UINT32_C(  3985986156),  UINT32_C(   864598811),  UINT32_C(   693528333),  UINT32_C(  3592219988) },
      {  UINT32_C(  3592219988),  UINT32_C(  1685919905),  UINT32_C(  2821922285),  UINT32_C(  3960114487) },
      {  UINT32_C(  2671810708),  UINT32_C(   693528333),  UINT32_C(  2821922285),  UINT32_C(  3960114487) },
      {  UINT32_C(  2671810708),  UINT32_C(  1685919905),  UINT32_C(   864598811),  UINT32_C(  3960114487) },
      {  UINT32_C(  2671810708),  UINT32_C(  1685919905),  UINT32_C(  2821922285),  UINT32_C(  3985986156) } },
    { {  UINT32_C(   817974392),  UINT32_C(   501550872),  UINT32_C(  1712818019),  UINT32_C(  2965256612) },
      {  UINT32_C(  1300216849),  UINT32_C(  3932298120),  UINT32_C(  3679577723),  UINT32_C(  1127937645) },
      {  UINT32_C(  1127937645),  UINT32_C(   501550872),  UINT32_C(  1712818019),  UINT32_C(  2965256612) },
      {  UINT32_C(   817974392),  UINT32_C(  3679577723),  UINT32_C(  1712818019),  UINT32_C(  2965256612) },
      {  UINT32_C(   817974392),  UINT32_C(   501550872),  UINT32_C(  3932298120),  UINT32_C(  2965256612) },
      {  UINT32_C(   817974392),  UINT32_C(   501550872),  UINT32_C(  1712818019),  UINT32_C(  1300216849) } },
    { {  UINT32_C(  2723508205),  UINT32_C(  4208862096),  UINT32_C(  2940436296),  UINT32_C(  1699082770) },
      {  UINT32_C(   906232555),  UINT32_C(   736207677),  UINT32_C(  1564834480),  UINT32_C(   634302632) },
      {  UINT32_C(   634302632),  UINT32_C(  4208862096),  UINT32_C(  2940436296),  UINT32_C(  1699082770) },
      {  UINT32_C(  2723508205),  UINT32_C(  1564834480),  UINT32_C(  2940436296),  UINT32_C(  1699082770) },
      {  UINT32_C(  2723508205),  UINT32_C(  4208862096),  UINT32_C(   736207677),  UINT32_C(  1699082770) },
      {  UINT32_C(  2723508205),  UINT32_C(  4208862096),  UINT32_C(  2940436296),  UINT32_C(   906232555) } },
    { {  UINT32_C(   379503279),  UINT32_C(  2857600816),  UINT32_C(   275459501),  UINT32_C(   304292775) },
      {  UINT32_C(  1019543097),  UINT32_C(   373140555),  UINT32_C(   909261254),  UINT32_C(  3547460328) },
      {  UINT32_C(  3547460328),  UINT32_C(  2857600816),  UINT32_C(   275459501),  UINT32_C(   304292775) },
      {  UINT32_C(   379503279),  UINT32_C(   909261254),  UINT32_C(   275459501),  UINT32_C(   304292775) },
      {  UINT32_C(   379503279),  UINT32_C(  2857600816),  UINT32_C(   373140555),  UINT32_C(   304292775) },
      {  UINT32_C(   379503279),  UINT32_C(  2857600816),  UINT32_C(   275459501),  UINT32_C(  1019543097) } },
    { {  UINT32_C(  1203434097),  UINT32_C(   114376390),  UINT32_C(   168566558),  UINT32_C(  3889127067) },
      {  UINT32_C(  2410760924),  UINT32_C(  2923650458),  UINT32_C(  3855579023),  UINT32_C(  4134326194) },
      {  UINT32_C(  4134326194),  UINT32_C(   114376390),  UINT32_C(   168566558),  UINT32_C(  3889127067) },
      {  UINT32_C(  1203434097),  UINT32_C(  3855579023),  UINT32_C(   168566558),  UINT32_C(  3889127067) },
      {  UINT32_C(  1203434097),  UINT32_C(   114376390),  UINT32_C(  2923650458),  UINT32_C(  3889127067) },
      {  UINT32_C(  1203434097),  UINT32_C(   114376390),  UINT32_C(   168566558),  UINT32_C(  2410760924) } },
    { {  UINT32_C(  3869172885),  UINT32_C(  2993434742),  UINT32_C(  2905386218),  UINT32_C(  2642883192) },
      {  UINT32_C(  2870909542),  UINT32_C(  1947325143),  UINT32_C(  2317972867),  UINT32_C(  1261263722) },
      {  UINT32_C(  1261263722),  UINT32_C(  2993434742),  UINT32_C(  2905386218),  UINT32_C(  2642883192) },
      {  UINT32_C(  3869172885),  UINT32_C(  2317972867),  UINT32_C(  2905386218),  UINT32_C(  2642883192) },
      {  UINT32_C(  3869172885),  UINT32_C(  2993434742),  UINT32_C(  1947325143),  UINT32_C(  2642883192) },
      {  UINT32_C(  3869172885),  UINT32_C(  2993434742),  UINT32_C(  2905386218),  UINT32_C(  2870909542) } },
    { {  UINT32_C(  1907398736),  UINT32_C(  1863663803),  UINT32_C(  3232279915),  UINT32_C(  2788982881) },
      {  UINT32_C(   483563107),  UINT32_C(    22560959),  UINT32_C(  3427567537),  UINT32_C(   922192707) },
      {  UINT32_C(   922192707),  UINT32_C(  1863663803),  UINT32_C(  3232279915),  UINT32_C(  2788982881) },
      {  UINT32_C(  1907398736),  UINT32_C(  3427567537),  UINT32_C(  3232279915),  UINT32_C(  2788982881) },
      {  UINT32_C(  1907398736),  UINT32_C(  1863663803),  UINT32_C(    22560959),  UINT32_C(  2788982881) },
      {  UINT32_C(  1907398736),  UINT32_C(  1863663803),  UINT32_C(  3232279915),  UINT32_C(   483563107) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
    simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);

    simde_uint32x4_t r0_3 = simde_vcopyq_laneq_u32(a, 0, b, 3);
    simde_uint32x4_t r1_2 = simde_vcopyq_laneq_u32(a, 1, b, 2);
    simde_uint32x4_t r2_1 = simde_vcopyq_laneq_u32(a, 2, b, 1);
    simde_uint32x4_t r3_0 = simde_vcopyq_laneq_u32(a, 3, b, 0);

    simde_test_arm_neon_assert_equal_u32x4(r0_3, simde_vld1q_u32(test_vec[i].r0_3));
    simde_test_arm_neon_assert_equal_u32x4(r1_2, simde_vld1q_u32(test_vec[i].r1_2));
    simde_test_arm_neon_assert_equal_u32x4(r2_1, simde_vld1q_u32(test_vec[i].r2_1));
    simde_test_arm_neon_assert_equal_u32x4(r3_0, simde_vld1q_u32(test_vec[i].r3_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t r0_3 = simde_vcopyq_laneq_u32(a, 0, b, 3);
    simde_uint32x4_t r1_2 = simde_vcopyq_laneq_u32(a, 1, b, 2);
    simde_uint32x4_t r2_1 = simde_vcopyq_laneq_u32(a, 2, b, 1);
    simde_uint32x4_t r3_0 = simde_vcopyq_laneq_u32(a, 3, b, 0);

    simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r1_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r2_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, r3_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t a[2];
    uint64_t b[2];
    uint64_t r0_0[2];
    uint64_t r0_1[2];
    uint64_t r1_0[2];
    uint64_t r1_1[2];
  } test_vec[] = {
    { {  UINT64_C(13439609365108810888),  UINT64_C(15937695336418566217) },
      {  UINT64_C(11757999458065731058),  UINT64_C(17975820540431480162) },
      {  UINT64_C(11757999458065731058),  UINT64_C(15937695336418566217) },
      {  UINT64_C(17975820540431480162),  UINT64_C(15937695336418566217) },
      {  UINT64_C(13439609365108810888),  UINT64_C(11757999458065731058) },
      {  UINT64_C(13439609365108810888),  UINT64_C(17975820540431480162) } },
    { {  UINT64_C(16564546751237621820),  UINT64_C(12241248961613285278) },
      {  UINT64_C( 7641825135841022951),  UINT64_C(12315251603794302270) },
      {  UINT64_C( 7641825135841022951),  UINT64_C(12241248961613285278) },
      {  UINT64_C(12315251603794302270),  UINT64_C(12241248961613285278) },
      {  UINT64_C(16564546751237621820),  UINT64_C( 7641825135841022951) },
      {  UINT64_C(16564546751237621820),  UINT64_C(12315251603794302270) } },
    { {  UINT64_C(17704957791680247171),  UINT64_C( 9371616720984263202) },
      {  UINT64_C( 7276494259531683395),  UINT64_C( 5859910920720482327) },
      {  UINT64_C( 7276494259531683395),  UINT64_C( 9371616720984263202) },
      {  UINT64_C( 5859910920720482327),  UINT64_C( 9371616720984263202) },
      {  UINT64_C(17704957791680247171),  UINT64_C( 7276494259531683395) },
      {  UINT64_C(17704957791680247171),  UINT64_C( 5859910920720482327) } },
    { {  UINT64_C(14662575302122884717),  UINT64_C( 3176330314367196783) },
      {  UINT64_C( 7453175549508455517),  UINT64_C( 4453488503906172319) },
      {  UINT64_C( 7453175549508455517),  UINT64_C( 3176330314367196783) },
      {  UINT64_C( 4453488503906172319),  UINT64_C( 3176330314367196783) },
      {  UINT64_C(14662575302122884717),  UINT64_C( 7453175549508455517) },
      {  UINT64_C(14662575302122884717),  UINT64_C( 4453488503906172319) } },
    { {  UINT64_C(12249441119495819269),  UINT64_C(  186417079881519408) },
      {  UINT64_C(16358619248331576219),  UINT64_C(  987352505179597987) },
      {  UINT64_C(16358619248331576219),  UINT64_C(  186417079881519408) },
      {  UINT64_C(  987352505179597987),  UINT64_C(  186417079881519408) },
      {  UINT64_C(12249441119495819269),  UINT64_C(16358619248331576219) },
      {  UINT64_C(12249441119495819269),  UINT64_C(  987352505179597987) } },
    { {  UINT64_C( 3211036171106824205),  UINT64_C(17735964159800454359) },
      {  UINT64_C(14856931664874395873),  UINT64_C( 5092631228929164180) },
      {  UINT64_C(14856931664874395873),  UINT64_C(17735964159800454359) },
      {  UINT64_C( 5092631228929164180),  UINT64_C(17735964159800454359) },
      {  UINT64_C( 3211036171106824205),  UINT64_C(14856931664874395873) },
      {  UINT64_C( 3211036171106824205),  UINT64_C( 5092631228929164180) } },
    { {  UINT64_C(16290890406714175431),  UINT64_C( 7369026070235053466) },
      {  UINT64_C(14159949742399780407),  UINT64_C(12799840516808467205) },
      {  UINT64_C(14159949742399780407),  UINT64_C( 7369026070235053466) },
      {  UINT64_C(12799840516808467205),  UINT64_C( 7369026070235053466) },
      {  UINT64_C(16290890406714175431),  UINT64_C(14159949742399780407) },
      {  UINT64_C(16290890406714175431),  UINT64_C(12799840516808467205) } },
    { {  UINT64_C(11596480201225729972),  UINT64_C(15597658933811404841) },
      {  UINT64_C( 4501987111170332097),  UINT64_C(16539108248642911739) },
      {  UINT64_C( 4501987111170332097),  UINT64_C(15597658933811404841) },
      {  UINT64_C(16539108248642911739),  UINT64_C(15597658933811404841) },
      {  UINT64_C(11596480201225729972),  UINT64_C( 4501987111170332097) },
      {  UINT64_C(11596480201225729972),  UINT64_C(16539108248642911739) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
    simde_uint64x2_t b = simde_vld1q_u64(test_vec[i].b);

    simde_uint64x2_t r0_0 = simde_vcopyq_laneq_u64(a, 0, b, 0);
    simde_uint64x2_t r0_1 = simde_vcopyq_laneq_u64(a, 0, b, 1);
    simde_uint64x2_t r1_0 = simde_vcopyq_laneq_u64(a, 1, b, 0);
    simde_uint64x2_t r1_1 = simde_vcopyq_laneq_u64(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_u64x2(r0_0, simde_vld1q_u64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_u64x2(r0_1, simde_vld1q_u64(test_vec[i].r0_1));
    simde_test_arm_neon_assert_equal_u64x2(r1_0, simde_vld1q_u64(test_vec[i].r1_0));
    simde_test_arm_neon_assert_equal_u64x2(r1_1, simde_vld1q_u64(test_vec[i].r1_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t b = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t r0_0 = simde_vcopyq_laneq_u64(a, 0, b, 0);
    simde_uint64x2_t r0_1 = simde_vcopyq_laneq_u64(a, 0, b, 1);
    simde_uint64x2_t r1_0 = simde_vcopyq_laneq_u64(a, 1, b, 0);
    simde_uint64x2_t r1_1 = simde_vcopyq_laneq_u64(a, 1, b, 1);

    simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, r1_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32_t a[4];
    simde_float32_t b[4];
    simde_float32_t r0_3[4];
    simde_float32_t r1_2[4];
    simde_float32_t r2_1[4];
    simde_float32_t r3_0[4];
  } test_vec[] = {
    { { -SIMDE_FLOAT32_C(  2288.813), -SIMDE_FLOAT32_C(  6828.664), -SIMDE_FLOAT32_C(  1743.203),  SIMDE_FLOAT32_C(  5142.055) },
      { -SIMDE_FLOAT32_C(  7820.406),  SIMDE_FLOAT32_C(  4065.967), -SIMDE_FLOAT32_C(  7156.866),  SIMDE_FLOAT32_C(  1483.873) },
      {  SIMDE_FLOAT32_C(  1483.873), -SIMDE_FLOAT32_C(  6828.664), -SIMDE_FLOAT32_C(  1743.203),  SIMDE_FLOAT32_C(  5142.055) },
      { -SIMDE_FLOAT32_C(  2288.813), -SIMDE_FLOAT32_C(  7156.866), -SIMDE_FLOAT32_C(  1743.203),  SIMDE_FLOAT32_C(  5142.055) },
      { -SIMDE_FLOAT32_C(  2288.813), -SIMDE_FLOAT32_C(  6828.664),  SIMDE_FLOAT32_C(  4065.967),  SIMDE_FLOAT32_C(  5142.055) },
      { -SIMDE_FLOAT32_C(  2288.813), -SIMDE_FLOAT32_C(  6828.664), -SIMDE_FLOAT32_C(  1743.203), -SIMDE_FLOAT32_C(  7820.406) } },
    { {  SIMDE_FLOAT32_C(  8992.982),  SIMDE_FLOAT32_C(  7814.275),  SIMDE_FLOAT32_C(  9353.939),  SIMDE_FLOAT32_C(  2474.339) },
      {  SIMDE_FLOAT32_C(  7863.002), -SIMDE_FLOAT32_C(   412.511),  SIMDE_FLOAT32_C(   196.362),  SIMDE_FLOAT32_C(  8459.223) },
      {  SIMDE_FLOAT32_C(  8459.223),  SIMDE_FLOAT32_C(  7814.275),  SIMDE_FLOAT32_C(  9353.939),  SIMDE_FLOAT32_C(  2474.339) },
      {  SIMDE_FLOAT32_C(  8992.982),  SIMDE_FLOAT32_C(   196.362),  SIMDE_FLOAT32_C(  9353.939),  SIMDE_FLOAT32_C(  2474.339) },
      {  SIMDE_FLOAT32_C(  8992.982),  SIMDE_FLOAT32_C(  7814.275), -SIMDE_FLOAT32_C(   412.511),  SIMDE_FLOAT32_C(  2474.339) },
      {  SIMDE_FLOAT32_C(  8992.982),  SIMDE_FLOAT32_C(  7814.275),  SIMDE_FLOAT32_C(  9353.939),  SIMDE_FLOAT32_C(  7863.002) } },
    { { -SIMDE_FLOAT32_C(  2949.494),  SIMDE_FLOAT32_C(  2614.980),  SIMDE_FLOAT32_C(  8780.445),  SIMDE_FLOAT32_C(  3656.842) },
      {  SIMDE_FLOAT32_C(  8306.215),  SIMDE_FLOAT32_C(  4706.809),  SIMDE_FLOAT32_C(  2470.985),  SIMDE_FLOAT32_C(  2624.702) },
      {  SIMDE_FLOAT32_C(  2624.702),  SIMDE_FLOAT32_C(  2614.980),  SIMDE_FLOAT32_C(  8780.445),  SIMDE_FLOAT32_C(  3656.842) },
      { -SIMDE_FLOAT32_C(  2949.494),  SIMDE_FLOAT32_C(  2470.985),  SIMDE_FLOAT32_C(  8780.445),  SIMDE_FLOAT32_C(  3656.842) },
      { -SIMDE_FLOAT32_C(  2949.494),  SIMDE_FLOAT32_C(  2614.980),  SIMDE_FLOAT32_C(  4706.809),  SIMDE_FLOAT32_C(  3656.842) },
      { -SIMDE_FLOAT32_C(  2949.494),  SIMDE_FLOAT32_C(  2614.980),  SIMDE_FLOAT32_C(  8780.445),  SIMDE_FLOAT32_C(  8306.215) } },
    { {  SIMDE_FLOAT32_C(  3479.178), -SIMDE_FLOAT32_C(  9729.815),  SIMDE_FLOAT32_C(   782.037),  SIMDE_FLOAT32_C(  1451.528) },
      { -SIMDE_FLOAT32_C(  1571.802), -SIMDE_FLOAT32_C(  8661.118), -SIMDE_FLOAT32_C(   447.722),  SIMDE_FLOAT32_C(  6319.575) },
      {  SIMDE_FLOAT32_C(  6319.575), -SIMDE_FLOAT32_C(  9729.815),  SIMDE_FLOAT32_C(   782.037),  SIMDE_FLOAT32_C(  1451.528) },
      {  SIMDE_FLOAT32_C(  3479.178), -SIMDE_FLOAT32_C(   447.722),  SIMDE_FLOAT32_C(   782.037),  SIMDE_FLOAT32_C(  1451.528) },
      {  SIMDE_FLOAT32_C(  3479.178), -SIMDE_FLOAT32_C(  9729.815), -SIMDE_FLOAT32_C(  8661.118),  SIMDE_FLOAT32_C(  1451.528) },
      {  SIMDE_FLOAT32_C(  3479.178), -SIMDE_FLOAT32_C(  9729.815),  SIMDE_FLOAT32_C(   782.037), -SIMDE_FLOAT32_C(  1571.802) } },
    { { -SIMDE_FLOAT32_C(  4819.511), -SIMDE_FLOAT32_C(  4667.547), -SIMDE_FLOAT32_C(  5410.779), -SIMDE_FLOAT32_C(  5298.958) },
      {  SIMDE_FLOAT32_C(  6992.926), -SIMDE_FLOAT32_C(  2054.155),  SIMDE_FLOAT32_C(  4552.382),  SIMDE_FLOAT32_C(  6344.732) },
      {  SIMDE_FLOAT32_C(  6344.732), -SIMDE_FLOAT32_C(  4667.547), -SIMDE_FLOAT32_C(  5410.779), -SIMDE_FLOAT32_C(  5298.958) },
      { -SIMDE_FLOAT32_C(  4819.511),  SIMDE_FLOAT32_C(  4552.382), -SIMDE_FLOAT32_C(  5410.779), -SIMDE_FLOAT32_C(  5298.958) },
      { -SIMDE_FLOAT32_C(  4819.511), -SIMDE_FLOAT32_C(  4667.547), -SIMDE_FLOAT32_C(  2054.155), -SIMDE_FLOAT32_C(  5298.958) },
      { -SIMDE_FLOAT32_C(  4819.511), -SIMDE_FLOAT32_C(  4667.547), -SIMDE_FLOAT32_C(  5410.779),  SIMDE_FLOAT32_C(  6992.926) } },
    { { -SIMDE_FLOAT32_C(  6145.318),  SIMDE_FLOAT32_C(  5380.021), -SIMDE_FLOAT32_C(  6940.736),  SIMDE_FLOAT32_C(  4362.208) },
      { -SIMDE_FLOAT32_C(  2727.117),  SIMDE_FLOAT32_C(  7132.807), -SIMDE_FLOAT32_C(  7647.750),  SIMDE_FLOAT32_C(  5286.702) },
      {  SIMDE_FLOAT32_C(  5286.702),  SIMDE_FLOAT32_C(  5380.021), -SIMDE_FLOAT32_C(  6940.736),  SIMDE_FLOAT32_C(  4362.208) },
      { -SIMDE_FLOAT32_C(  6145.318), -SIMDE_FLOAT32_C(  7647.750), -SIMDE_FLOAT32_C(  6940.736),  SIMDE_FLOAT32_C(  4362.208) },
      { -SIMDE_FLOAT32_C(  6145.318),  SIMDE_FLOAT32_C(  5380.021),  SIMDE_FLOAT32_C(  7132.807),  SIMDE_FLOAT32_C(  4362.208) },
      { -SIMDE_FLOAT32_C(  6145.318),  SIMDE_FLOAT32_C(  5380.021), -SIMDE_FLOAT32_C(  6940.736), -SIMDE_FLOAT32_C(  2727.117) } },
    { {  SIMDE_FLOAT32_C(  5009.768),  SIMDE_FLOAT32_C(  5052.221),  SIMDE_FLOAT32_C(  1795.097),  SIMDE_FLOAT32_C(  9838.342) },
      { -SIMDE_FLOAT32_C(  6042.081),  SIMDE_FLOAT32_C(   645.963),  SIMDE_FLOAT32_C(  1858.851), -SIMDE_FLOAT32_C(  8743.057) },
      { -SIMDE_FLOAT32_C(  8743.057),  SIMDE_FLOAT32_C(  5052.221),  SIMDE_FLOAT32_C(  1795.097),  SIMDE_FLOAT32_C(  9838.342) },
      {  SIMDE_FLOAT32_C(  5009.768),  SIMDE_FLOAT32_C(  1858.851),  SIMDE_FLOAT32_C(  1795.097),  SIMDE_FLOAT32_C(  9838.342) },
      {  SIMDE_FLOAT32_C(  5009.768),  SIMDE_FLOAT32_C(  5052.221),  SIMDE_FLOAT32_C(   645.963),  SIMDE_FLOAT32_C(  9838.342) },
      {  SIMDE_FLOAT32_C(  5009.768),  SIMDE_FLOAT32_C(  5052.221),  SIMDE_FLOAT32_C(  1795.097), -SIMDE_FLOAT32_C(  6042.081) } },
    { {  SIMDE_FLOAT32_C(  4248.810), -SIMDE_FLOAT32_C(  8662.274), -SIMDE_FLOAT32_C(  3328.998), -SIMDE_FLOAT32_C(  2036.577) },
      {  SIMDE_FLOAT32_C(  9358.539),  SIMDE_FLOAT32_C(  8204.385),  SIMDE_FLOAT32_C(  4985.117),  SIMDE_FLOAT32_C(   697.916) },
      {  SIMDE_FLOAT32_C(   697.916), -SIMDE_FLOAT32_C(  8662.274), -SIMDE_FLOAT32_C(  3328.998), -SIMDE_FLOAT32_C(  2036.577) },
      {  SIMDE_FLOAT32_C(  4248.810),  SIMDE_FLOAT32_C(  4985.117), -SIMDE_FLOAT32_C(  3328.998), -SIMDE_FLOAT32_C(  2036.577) },
      {  SIMDE_FLOAT32_C(  4248.810), -SIMDE_FLOAT32_C(  8662.274),  SIMDE_FLOAT32_C(  8204.385), -SIMDE_FLOAT32_C(  2036.577) },
      {  SIMDE_FLOAT32_C(  4248.810), -SIMDE_FLOAT32_C(  8662.274), -SIMDE_FLOAT32_C(  3328.998),  SIMDE_FLOAT32_C(  9358.539) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a);
    simde_float32x4_t b = simde_vld1q_f32(test_vec[i].b);

    simde_float32x4_t r0_3 = simde_vcopyq_laneq_f32(a, 0, b, 3);
    simde_float32x4_t r1_2 = simde_vcopyq_laneq_f32(a, 1, b, 2);
    simde_float32x4_t r2_1 = simde_vcopyq_laneq_f32(a, 2, b, 1);
    simde_float32x4_t r3_0 = simde_vcopyq_laneq_f32(a, 3, b, 0);

    simde_test_arm_neon_assert_equal_f32x4(r0_3, simde_vld1q_f32(test_vec[i].r0_3), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x4(r1_2, simde_vld1q_f32(test_vec[i].r1_2), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x4(r2_1, simde_vld1q_f32(test_vec[i].r2_1), INT_MAX);
    simde_test_arm_neon_assert_equal_f32x4(r3_0, simde_vld1q_f32(test_vec[i].r3_0), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float32x4_t a = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t b = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t r0_3 = simde_vcopyq_laneq_f32(a, 0, b, 3);
    simde_float32x4_t r1_2 = simde_vcopyq_laneq_f32(a, 1, b, 2);
    simde_float32x4_t r2_1 = simde_vcopyq_laneq_f32(a, 2, b, 1);
    simde_float32x4_t r3_0 = simde_vcopyq_laneq_f32(a, 3, b, 0);

    simde_test_arm_neon_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r1_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r2_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, r3_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64_t a[2];
    simde_float64_t b[2];
    simde_float64_t r0_0[2];
    simde_float64_t r0_1[2];
    simde_float64_t r1_0[2];
    simde_float64_t r1_1[2];
  } test_vec[] = {
    { { -SIMDE_FLOAT64_C(  678563.125),  SIMDE_FLOAT64_C(  194228.625) },
      {  SIMDE_FLOAT64_C(   42214.062),  SIMDE_FLOAT64_C(  747572.625) },
      {  SIMDE_FLOAT64_C(   42214.062),  SIMDE_FLOAT64_C(  194228.625) },
      {  SIMDE_FLOAT64_C(  747572.625),  SIMDE_FLOAT64_C(  194228.625) },
      { -SIMDE_FLOAT64_C(  678563.125),  SIMDE_FLOAT64_C(   42214.062) },
      { -SIMDE_FLOAT64_C(  678563.125),  SIMDE_FLOAT64_C(  747572.625) } },
    { { -SIMDE_FLOAT64_C(  672868.625),  SIMDE_FLOAT64_C(  823476.500) },
      { -SIMDE_FLOAT64_C(  249558.438),  SIMDE_FLOAT64_C(  445662.250) },
      { -SIMDE_FLOAT64_C(  249558.438),  SIMDE_FLOAT64_C(  823476.500) },
      {  SIMDE_FLOAT64_C(  445662.250),  SIMDE_FLOAT64_C(  823476.500) },
      { -SIMDE_FLOAT64_C(  672868.625), -SIMDE_FLOAT64_C(  249558.438) },
      { -SIMDE_FLOAT64_C(  672868.625),  SIMDE_FLOAT64_C(  445662.250) } },
    { { -SIMDE_FLOAT64_C(  760755.875),  SIMDE_FLOAT64_C(  382520.375) },
      {  SIMDE_FLOAT64_C(  767680.250), -SIMDE_FLOAT64_C(   74684.625) },
      {  SIMDE_FLOAT64_C(  767680.250),  SIMDE_FLOAT64_C(  382520.375) },
      { -SIMDE_FLOAT64_C(   74684.625),  SIMDE_FLOAT64_C(  382520.375) },
      { -SIMDE_FLOAT64_C(  760755.875),  SIMDE_FLOAT64_C(  767680.250) },
      { -SIMDE_FLOAT64_C(  760755.875), -SIMDE_FLOAT64_C(   74684.625) } },
    { { -SIMDE_FLOAT64_C(   34493.875),  SIMDE_FLOAT64_C(  196752.750) },
      { -SIMDE_FLOAT64_C(  164549.625),  SIMDE_FLOAT64_C(  930720.250) },
      { -SIMDE_FLOAT64_C(  164549.625),  SIMDE_FLOAT64_C(  196752.750) },
      {  SIMDE_FLOAT64_C(  930720.250),  SIMDE_FLOAT64_C(  196752.750) },
      { -SIMDE_FLOAT64_C(   34493.875), -SIMDE_FLOAT64_C(  164549.625) },
      { -SIMDE_FLOAT64_C(   34493.875),  SIMDE_FLOAT64_C(  930720.250) } },
    { { -SIMDE_FLOAT64_C(   88352.375),  SIMDE_FLOAT64_C(  286620.375) },
      { -SIMDE_FLOAT64_C(  353142.375), -SIMDE_FLOAT64_C(  187538.125) },
      { -SIMDE_FLOAT64_C(  353142.375),  SIMDE_FLOAT64_C(  286620.375) },
      { -SIMDE_FLOAT64_C(  187538.125),  SIMDE_FLOAT64_C(  286620.375) },
      { -SIMDE_FLOAT64_C(   88352.375), -SIMDE_FLOAT64_C(  353142.375) },
      { -SIMDE_FLOAT64_C(   88352.375), -SIMDE_FLOAT64_C(  187538.125) } },
    { {  SIMDE_FLOAT64_C(  896252.125), -SIMDE_FLOAT64_C(  543789.250) },
      { -SIMDE_FLOAT64_C(  384486.062),  SIMDE_FLOAT64_C(  366117.500) },
      { -SIMDE_FLOAT64_C(  384486.062), -SIMDE_FLOAT64_C(  543789.250) },
      {  SIMDE_FLOAT64_C(  366117.500), -SIMDE_FLOAT64_C(  543789.250) },
      {  SIMDE_FLOAT64_C(  896252.125), -SIMDE_FLOAT64_C(  384486.062) },
      {  SIMDE_FLOAT64_C(  896252.125),  SIMDE_FLOAT64_C(  366117.500) } },
    { {  SIMDE_FLOAT64_C(  921497.375),  SIMDE_FLOAT64_C(  126141.125) },
      { -SIMDE_FLOAT64_C(   84883.125),  SIMDE_FLOAT64_C(  833692.250) },
      { -SIMDE_FLOAT64_C(   84883.125),  SIMDE_FLOAT64_C(  126141.125) },
      {  SIMDE_FLOAT64_C(  833692.250),  SIMDE_FLOAT64_C(  126141.125) },
      {  SIMDE_FLOAT64_C(  921497.375), -SIMDE_FLOAT64_C(   84883.125) },
      {  SIMDE_FLOAT64_C(  921497.375),  SIMDE_FLOAT64_C(  833692.250) } },
    { {  SIMDE_FLOAT64_C(   63073.875), -SIMDE_FLOAT64_C(  637440.312) },
      {  SIMDE_FLOAT64_C(  955680.125),  SIMDE_FLOAT64_C(  696772.875) },
      {  SIMDE_FLOAT64_C(  955680.125), -SIMDE_FLOAT64_C(  637440.312) },
      {  SIMDE_FLOAT64_C(  696772.875), -SIMDE_FLOAT64_C(  637440.312) },
      {  SIMDE_FLOAT64_C(   63073.875),  SIMDE_FLOAT64_C(  955680.125) },
      {  SIMDE_FLOAT64_C(   63073.875),  SIMDE_FLOAT64_C(  696772.875) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64x2_t a = simde_vld1q_f64(test_vec[i].a);
    simde_float64x2_t b = simde_vld1q_f64(test_vec[i].b);

    simde_float64x2_t r0_0 = simde_vcopyq_laneq_f64(a, 0, b, 0);
    simde_float64x2_t r0_1 = simde_vcopyq_laneq_f64(a, 0, b, 1);
    simde_float64x2_t r1_0 = simde_vcopyq_laneq_f64(a, 1, b, 0);
    simde_float64x2_t r1_1 = simde_vcopyq_laneq_f64(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_f64x2(r0_0, simde_vld1q_f64(test_vec[i].r0_0), INT_MAX);
    simde_test_arm_neon_assert_equal_f64x2(r0_1, simde_vld1q_f64(test_vec[i].r0_1), INT_MAX);
    simde_test_arm_neon_assert_equal_f64x2(r1_0, simde_vld1q_f64(test_vec[i].r1_0), INT_MAX);
    simde_test_arm_neon_assert_equal_f64x2(r1_1, simde_vld1q_f64(test_vec[i].r1_1), INT_MAX);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float64x2_t a = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x2_t b = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
    simde_float64x2_t r0_0 = simde_vcopyq_laneq_f64(a, 0, b, 0);
    simde_float64x2_t r0_1 = simde_vcopyq_laneq_f64(a, 0, b, 1);
    simde_float64x2_t r1_0 = simde_vcopyq_laneq_f64(a, 1, b, 0);
    simde_float64x2_t r1_1 = simde_vcopyq_laneq_f64(a, 1, b, 1);

    simde_test_arm_neon_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, r1_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly8_t a[8];
    simde_poly8_t b[8];
    simde_poly8_t r00[8];
    simde_poly8_t r13[8];
    simde_poly8_t r35[8];
    simde_poly8_t r67[8];
    simde_poly8_t r71[8];
  } test_vec[] = {
    { {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  131),  SIMDE_POLY8_C(  188),  SIMDE_POLY8_C(   60),
         SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(    8),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  168),
         SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  204),  SIMDE_POLY8_C(   93),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  131),  SIMDE_POLY8_C(  188),  SIMDE_POLY8_C(   60),
         SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(    8),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  188),  SIMDE_POLY8_C(   60),
         SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(    8),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  131),  SIMDE_POLY8_C(  188),  SIMDE_POLY8_C(  204),
         SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(    8),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  131),  SIMDE_POLY8_C(  188),  SIMDE_POLY8_C(   60),
         SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  235),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  131),  SIMDE_POLY8_C(  188),  SIMDE_POLY8_C(   60),
         SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(    8),  SIMDE_POLY8_C(   32) } },
    { {  SIMDE_POLY8_C(  101),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(  224),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   63),  SIMDE_POLY8_C(  202) },
      {  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  130),  SIMDE_POLY8_C(   95),  SIMDE_POLY8_C(  209),
         SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  227),  SIMDE_POLY8_C(   12) },
      {  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(  224),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   63),  SIMDE_POLY8_C(  202) },
      {  SIMDE_POLY8_C(  101),  SIMDE_POLY8_C(  209),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(  224),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   63),  SIMDE_POLY8_C(  202) },
      {  SIMDE_POLY8_C(  101),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(  184),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   63),  SIMDE_POLY8_C(  202) },
      {  SIMDE_POLY8_C(  101),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(  224),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  202) },
      {  SIMDE_POLY8_C(  101),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(  224),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   63),  SIMDE_POLY8_C(  130) } },
    { {  SIMDE_POLY8_C(  172),  SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(  209),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(   13),  SIMDE_POLY8_C(   59) },
      {  SIMDE_POLY8_C(   88),  SIMDE_POLY8_C(  109),  SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   38),
         SIMDE_POLY8_C(  153),  SIMDE_POLY8_C(  233),  SIMDE_POLY8_C(   84),  SIMDE_POLY8_C(   56) },
      {  SIMDE_POLY8_C(   88),  SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(  209),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(   13),  SIMDE_POLY8_C(   59) },
      {  SIMDE_POLY8_C(  172),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(  209),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(   13),  SIMDE_POLY8_C(   59) },
      {  SIMDE_POLY8_C(  172),  SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(  233),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(   13),  SIMDE_POLY8_C(   59) },
      {  SIMDE_POLY8_C(  172),  SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(  209),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   59) },
      {  SIMDE_POLY8_C(  172),  SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(  209),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(   13),  SIMDE_POLY8_C(  109) } },
    { {  SIMDE_POLY8_C(  128),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(  226),  SIMDE_POLY8_C(  249),
         SIMDE_POLY8_C(   55),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(  195),  SIMDE_POLY8_C(  252) },
      {  SIMDE_POLY8_C(  137),  SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   28),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(  202),  SIMDE_POLY8_C(  109),  SIMDE_POLY8_C(   75) },
      {  SIMDE_POLY8_C(  137),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(  226),  SIMDE_POLY8_C(  249),
         SIMDE_POLY8_C(   55),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(  195),  SIMDE_POLY8_C(  252) },
      {  SIMDE_POLY8_C(  128),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  226),  SIMDE_POLY8_C(  249),
         SIMDE_POLY8_C(   55),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(  195),  SIMDE_POLY8_C(  252) },
      {  SIMDE_POLY8_C(  128),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(  226),  SIMDE_POLY8_C(  202),
         SIMDE_POLY8_C(   55),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(  195),  SIMDE_POLY8_C(  252) },
      {  SIMDE_POLY8_C(  128),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(  226),  SIMDE_POLY8_C(  249),
         SIMDE_POLY8_C(   55),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(  252) },
      {  SIMDE_POLY8_C(  128),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(  226),  SIMDE_POLY8_C(  249),
         SIMDE_POLY8_C(   55),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(  195),  SIMDE_POLY8_C(  122) } },
    { {  SIMDE_POLY8_C(  197),  SIMDE_POLY8_C(  148),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(  212),
         SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(  254),  SIMDE_POLY8_C(  179) },
      {  SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(  164),
         SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(   25),  SIMDE_POLY8_C(   80),  SIMDE_POLY8_C(   95) },
      {  SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  148),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(  212),
         SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(  254),  SIMDE_POLY8_C(  179) },
      {  SIMDE_POLY8_C(  197),  SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(  212),
         SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(  254),  SIMDE_POLY8_C(  179) },
      {  SIMDE_POLY8_C(  197),  SIMDE_POLY8_C(  148),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   25),
         SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(  254),  SIMDE_POLY8_C(  179) },
      {  SIMDE_POLY8_C(  197),  SIMDE_POLY8_C(  148),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(  212),
         SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   95),  SIMDE_POLY8_C(  179) },
      {  SIMDE_POLY8_C(  197),  SIMDE_POLY8_C(  148),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(  212),
         SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(  254),  SIMDE_POLY8_C(  170) } },
    { {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(  233),
         SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  180),  SIMDE_POLY8_C(   31),  SIMDE_POLY8_C(   55) },
      {  SIMDE_POLY8_C(   70),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  163),
         SIMDE_POLY8_C(   92),  SIMDE_POLY8_C(   80),  SIMDE_POLY8_C(   39),  SIMDE_POLY8_C(  246) },
      {  SIMDE_POLY8_C(   70),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(  233),
         SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  180),  SIMDE_POLY8_C(   31),  SIMDE_POLY8_C(   55) },
      {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  163),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(  233),
         SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  180),  SIMDE_POLY8_C(   31),  SIMDE_POLY8_C(   55) },
      {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   80),
         SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  180),  SIMDE_POLY8_C(   31),  SIMDE_POLY8_C(   55) },
      {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(  233),
         SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  180),  SIMDE_POLY8_C(  246),  SIMDE_POLY8_C(   55) },
      {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(  233),
         SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  180),  SIMDE_POLY8_C(   31),  SIMDE_POLY8_C(  169) } },
    { {  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(  200),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  164),
         SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  159) },
      {  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(   92),  SIMDE_POLY8_C(   52),  SIMDE_POLY8_C(   62),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(  150),  SIMDE_POLY8_C(  218),  SIMDE_POLY8_C(  187) },
      {  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  200),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  164),
         SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  159) },
      {  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  164),
         SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  159) },
      {  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(  200),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  150),
         SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  159) },
      {  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(  200),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  164),
         SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  187),  SIMDE_POLY8_C(  159) },
      {  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(  200),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(  164),
         SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(   92) } },
    { {  SIMDE_POLY8_C(  182),  SIMDE_POLY8_C(   17),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(   25),
         SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(   22) },
      {  SIMDE_POLY8_C(  183),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   21),
         SIMDE_POLY8_C(  129),  SIMDE_POLY8_C(  215),  SIMDE_POLY8_C(   52),  SIMDE_POLY8_C(  219) },
      {  SIMDE_POLY8_C(  183),  SIMDE_POLY8_C(   17),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(   25),
         SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(   22) },
      {  SIMDE_POLY8_C(  182),  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(   25),
         SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(   22) },
      {  SIMDE_POLY8_C(  182),  SIMDE_POLY8_C(   17),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(  215),
         SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(   22) },
      {  SIMDE_POLY8_C(  182),  SIMDE_POLY8_C(   17),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(   25),
         SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(   22) },
      {  SIMDE_POLY8_C(  182),  SIMDE_POLY8_C(   17),  SIMDE_POLY8_C(  219),  SIMDE_POLY8_C(   25),
         SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(   91) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly8x8_t a = simde_vld1_p8(test_vec[i].a);
    simde_poly8x8_t b = simde_vld1_p8(test_vec[i].b);

    simde_poly8x8_t r00 = simde_vcopy_lane_p8(a, 0, b, 0);
    simde_poly8x8_t r13 = simde_vcopy_lane_p8(a, 1, b, 3);
    simde_poly8x8_t r35 = simde_vcopy_lane_p8(a, 3, b, 5);
    simde_poly8x8_t r67 = simde_vcopy_lane_p8(a, 6, b, 7);
    simde_poly8x8_t r71 = simde_vcopy_lane_p8(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_p8x8(r00, simde_vld1_p8(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_p8x8(r13, simde_vld1_p8(test_vec[i].r13));
    simde_test_arm_neon_assert_equal_p8x8(r35, simde_vld1_p8(test_vec[i].r35));
    simde_test_arm_neon_assert_equal_p8x8(r67, simde_vld1_p8(test_vec[i].r67));
    simde_test_arm_neon_assert_equal_p8x8(r71, simde_vld1_p8(test_vec[i].r71));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly8x8_t a = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t r00 = simde_vcopy_lane_p8(a, 0, b, 0);
    simde_poly8x8_t r13 = simde_vcopy_lane_p8(a, 1, b, 3);
    simde_poly8x8_t r35 = simde_vcopy_lane_p8(a, 3, b, 5);
    simde_poly8x8_t r67 = simde_vcopy_lane_p8(a, 6, b, 7);
    simde_poly8x8_t r71 = simde_vcopy_lane_p8(a, 7, b, 1);

    simde_test_arm_neon_write_p8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r35, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r67, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r71, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly16_t a[4];
    simde_poly16_t b[4];
    simde_poly16_t r00[4];
    simde_poly16_t r01[4];
    simde_poly16_t r13[4];
    simde_poly16_t r22[4];
    simde_poly16_t r33[4];
  } test_vec[] = {
    { {  SIMDE_POLY16_C(   48859),  SIMDE_POLY16_C(   37110),  SIMDE_POLY16_C(   57365),  SIMDE_POLY16_C(   56893) },
      {  SIMDE_POLY16_C(   44198),  SIMDE_POLY16_C(   17208),  SIMDE_POLY16_C(   42682),  SIMDE_POLY16_C(   14084) },
      {  SIMDE_POLY16_C(   44198),  SIMDE_POLY16_C(   37110),  SIMDE_POLY16_C(   57365),  SIMDE_POLY16_C(   56893) },
      {  SIMDE_POLY16_C(   17208),  SIMDE_POLY16_C(   37110),  SIMDE_POLY16_C(   57365),  SIMDE_POLY16_C(   56893) },
      {  SIMDE_POLY16_C(   48859),  SIMDE_POLY16_C(   14084),  SIMDE_POLY16_C(   57365),  SIMDE_POLY16_C(   56893) },
      {  SIMDE_POLY16_C(   48859),  SIMDE_POLY16_C(   37110),  SIMDE_POLY16_C(   42682),  SIMDE_POLY16_C(   56893) },
      {  SIMDE_POLY16_C(   48859),  SIMDE_POLY16_C(   37110),  SIMDE_POLY16_C(   57365),  SIMDE_POLY16_C(   14084) } },
    { {  SIMDE_POLY16_C(   32518),  SIMDE_POLY16_C(   27430),  SIMDE_POLY16_C(   25434),  SIMDE_POLY16_C(   15734) },
      {  SIMDE_POLY16_C(   17681),  SIMDE_POLY16_C(    1758),  SIMDE_POLY16_C(   14425),  SIMDE_POLY16_C(   18152) },
      {  SIMDE_POLY16_C(   17681),  SIMDE_POLY16_C(   27430),  SIMDE_POLY16_C(   25434),  SIMDE_POLY16_C(   15734) },
      {  SIMDE_POLY16_C(    1758),  SIMDE_POLY16_C(   27430),  SIMDE_POLY16_C(   25434),  SIMDE_POLY16_C(   15734) },
      {  SIMDE_POLY16_C(   32518),  SIMDE_POLY16_C(   18152),  SIMDE_POLY16_C(   25434),  SIMDE_POLY16_C(   15734) },
      {  SIMDE_POLY16_C(   32518),  SIMDE_POLY16_C(   27430),  SIMDE_POLY16_C(   14425),  SIMDE_POLY16_C(   15734) },
      {  SIMDE_POLY16_C(   32518),  SIMDE_POLY16_C(   27430),  SIMDE_POLY16_C(   25434),  SIMDE_POLY16_C(   18152) } },
    { {  SIMDE_POLY16_C(   35029),  SIMDE_POLY16_C(   40800),  SIMDE_POLY16_C(   57927),  SIMDE_POLY16_C(   58796) },
      {  SIMDE_POLY16_C(   38243),  SIMDE_POLY16_C(   28472),  SIMDE_POLY16_C(   61138),  SIMDE_POLY16_C(   52923) },
      {  SIMDE_POLY16_C(   38243),  SIMDE_POLY16_C(   40800),  SIMDE_POLY16_C(   57927),  SIMDE_POLY16_C(   58796) },
      {  SIMDE_POLY16_C(   28472),  SIMDE_POLY16_C(   40800),  SIMDE_POLY16_C(   57927),  SIMDE_POLY16_C(   58796) },
      {  SIMDE_POLY16_C(   35029),  SIMDE_POLY16_C(   52923),  SIMDE_POLY16_C(   57927),  SIMDE_POLY16_C(   58796) },
      {  SIMDE_POLY16_C(   35029),  SIMDE_POLY16_C(   40800),  SIMDE_POLY16_C(   61138),  SIMDE_POLY16_C(   58796) },
      {  SIMDE_POLY16_C(   35029),  SIMDE_POLY16_C(   40800),  SIMDE_POLY16_C(   57927),  SIMDE_POLY16_C(   52923) } },
    { {  SIMDE_POLY16_C(   14462),  SIMDE_POLY16_C(   31329),  SIMDE_POLY16_C(   44021),  SIMDE_POLY16_C(   37135) },
      {  SIMDE_POLY16_C(   36643),  SIMDE_POLY16_C(    8499),  SIMDE_POLY16_C(   55329),  SIMDE_POLY16_C(   45901) },
      {  SIMDE_POLY16_C(   36643),  SIMDE_POLY16_C(   31329),  SIMDE_POLY16_C(   44021),  SIMDE_POLY16_C(   37135) },
      {  SIMDE_POLY16_C(    8499),  SIMDE_POLY16_C(   31329),  SIMDE_POLY16_C(   44021),  SIMDE_POLY16_C(   37135) },
      {  SIMDE_POLY16_C(   14462),  SIMDE_POLY16_C(   45901),  SIMDE_POLY16_C(   44021),  SIMDE_POLY16_C(   37135) },
      {  SIMDE_POLY16_C(   14462),  SIMDE_POLY16_C(   31329),  SIMDE_POLY16_C(   55329),  SIMDE_POLY16_C(   37135) },
      {  SIMDE_POLY16_C(   14462),  SIMDE_POLY16_C(   31329),  SIMDE_POLY16_C(   44021),  SIMDE_POLY16_C(   45901) } },
    { {  SIMDE_POLY16_C(   18155),  SIMDE_POLY16_C(   29451),  SIMDE_POLY16_C(    9594),  SIMDE_POLY16_C(   47476) },
      {  SIMDE_POLY16_C(   36782),  SIMDE_POLY16_C(   10647),  SIMDE_POLY16_C(   14223),  SIMDE_POLY16_C(    3446) },
      {  SIMDE_POLY16_C(   36782),  SIMDE_POLY16_C(   29451),  SIMDE_POLY16_C(    9594),  SIMDE_POLY16_C(   47476) },
      {  SIMDE_POLY16_C(   10647),  SIMDE_POLY16_C(   29451),  SIMDE_POLY16_C(    9594),  SIMDE_POLY16_C(   47476) },
      {  SIMDE_POLY16_C(   18155),  SIMDE_POLY16_C(    3446),  SIMDE_POLY16_C(    9594),  SIMDE_POLY16_C(   47476) },
      {  SIMDE_POLY16_C(   18155),  SIMDE_POLY16_C(   29451),  SIMDE_POLY16_C(   14223),  SIMDE_POLY16_C(   47476) },
      {  SIMDE_POLY16_C(   18155),  SIMDE_POLY16_C(   29451),  SIMDE_POLY16_C(    9594),  SIMDE_POLY16_C(    3446) } },
    { {  SIMDE_POLY16_C(   39055),  SIMDE_POLY16_C(   58824),  SIMDE_POLY16_C(   16709),  SIMDE_POLY16_C(   26292) },
      {  SIMDE_POLY16_C(   52894),  SIMDE_POLY16_C(   53794),  SIMDE_POLY16_C(   27364),  SIMDE_POLY16_C(    9410) },
      {  SIMDE_POLY16_C(   52894),  SIMDE_POLY16_C(   58824),  SIMDE_POLY16_C(   16709),  SIMDE_POLY16_C(   26292) },
      {  SIMDE_POLY16_C(   53794),  SIMDE_POLY16_C(   58824),  SIMDE_POLY16_C(   16709),  SIMDE_POLY16_C(   26292) },
      {  SIMDE_POLY16_C(   39055),  SIMDE_POLY16_C(    9410),  SIMDE_POLY16_C(   16709),  SIMDE_POLY16_C(   26292) },
      {  SIMDE_POLY16_C(   39055),  SIMDE_POLY16_C(   58824),  SIMDE_POLY16_C(   27364),  SIMDE_POLY16_C(   26292) },
      {  SIMDE_POLY16_C(   39055),  SIMDE_POLY16_C(   58824),  SIMDE_POLY16_C(   16709),  SIMDE_POLY16_C(    9410) } },
    { {  SIMDE_POLY16_C(    3714),  SIMDE_POLY16_C(   45544),  SIMDE_POLY16_C(   10782),  SIMDE_POLY16_C(   53336) },
      {  SIMDE_POLY16_C(   53247),  SIMDE_POLY16_C(   29686),  SIMDE_POLY16_C(   23527),  SIMDE_POLY16_C(   52801) },
      {  SIMDE_POLY16_C(   53247),  SIMDE_POLY16_C(   45544),  SIMDE_POLY16_C(   10782),  SIMDE_POLY16_C(   53336) },
      {  SIMDE_POLY16_C(   29686),  SIMDE_POLY16_C(   45544),  SIMDE_POLY16_C(   10782),  SIMDE_POLY16_C(   53336) },
      {  SIMDE_POLY16_C(    3714),  SIMDE_POLY16_C(   52801),  SIMDE_POLY16_C(   10782),  SIMDE_POLY16_C(   53336) },
      {  SIMDE_POLY16_C(    3714),  SIMDE_POLY16_C(   45544),  SIMDE_POLY16_C(   23527),  SIMDE_POLY16_C(   53336) },
      {  SIMDE_POLY16_C(    3714),  SIMDE_POLY16_C(   45544),  SIMDE_POLY16_C(   10782),  SIMDE_POLY16_C(   52801) } },
    { {  SIMDE_POLY16_C(     956),  SIMDE_POLY16_C(   38216),  SIMDE_POLY16_C(   64583),  SIMDE_POLY16_C(   19844) },
      {  SIMDE_POLY16_C(   55529),  SIMDE_POLY16_C(    5655),  SIMDE_POLY16_C(   39007),  SIMDE_POLY16_C(   36038) },
      {  SIMDE_POLY16_C(   55529),  SIMDE_POLY16_C(   38216),  SIMDE_POLY16_C(   64583),  SIMDE_POLY16_C(   19844) },
      {  SIMDE_POLY16_C(    5655),  SIMDE_POLY16_C(   38216),  SIMDE_POLY16_C(   64583),  SIMDE_POLY16_C(   19844) },
      {  SIMDE_POLY16_C(     956),  SIMDE_POLY16_C(   36038),  SIMDE_POLY16_C(   64583),  SIMDE_POLY16_C(   19844) },
      {  SIMDE_POLY16_C(     956),  SIMDE_POLY16_C(   38216),  SIMDE_POLY16_C(   39007),  SIMDE_POLY16_C(   19844) },
      {  SIMDE_POLY16_C(     956),  SIMDE_POLY16_C(   38216),  SIMDE_POLY16_C(   64583),  SIMDE_POLY16_C(   36038) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly16x4_t a = simde_vld1_p16(test_vec[i].a);
    simde_poly16x4_t b = simde_vld1_p16(test_vec[i].b);

    simde_poly16x4_t r00 = simde_vcopy_lane_p16(a, 0, b, 0);
    simde_poly16x4_t r01 = simde_vcopy_lane_p16(a, 0, b, 1);
    simde_poly16x4_t r13 = simde_vcopy_lane_p16(a, 1, b, 3);
    simde_poly16x4_t r22 = simde_vcopy_lane_p16(a, 2, b, 2);
    simde_poly16x4_t r33 = simde_vcopy_lane_p16(a, 3, b, 3);

    simde_test_arm_neon_assert_equal_p16x4(r00, simde_vld1_p16(test_vec[i].r00));
    simde_test_arm_neon_assert_equal_p16x4(r01, simde_vld1_p16(test_vec[i].r01));
    simde_test_arm_neon_assert_equal_p16x4(r13, simde_vld1_p16(test_vec[i].r13));
    simde_test_arm_neon_assert_equal_p16x4(r22, simde_vld1_p16(test_vec[i].r22));
    simde_test_arm_neon_assert_equal_p16x4(r33, simde_vld1_p16(test_vec[i].r33));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly16x4_t a = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t r00 = simde_vcopy_lane_p16(a, 0, b, 0);
    simde_poly16x4_t r01 = simde_vcopy_lane_p16(a, 0, b, 1);
    simde_poly16x4_t r13 = simde_vcopy_lane_p16(a, 1, b, 3);
    simde_poly16x4_t r22 = simde_vcopy_lane_p16(a, 2, b, 2);
    simde_poly16x4_t r33 = simde_vcopy_lane_p16(a, 3, b, 3);

    simde_test_arm_neon_write_p16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r22, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r33, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly64_t a[1];
    simde_poly64_t b[1];
    simde_poly64_t r00[1];
  } test_vec[] = {
    { {  SIMDE_POLY64_C( 3055880545951251893) },
      {  SIMDE_POLY64_C( 4769400864024572261) },
      {  SIMDE_POLY64_C( 4769400864024572261) } },
    { {  SIMDE_POLY64_C(10022377050862213090) },
      {  SIMDE_POLY64_C(  709100166864470872) },
      {  SIMDE_POLY64_C(  709100166864470872) } },
    { {  SIMDE_POLY64_C(14501613329003973833) },
      {  SIMDE_POLY64_C( 1949783300048066942) },
      {  SIMDE_POLY64_C( 1949783300048066942) } },
    { {  SIMDE_POLY64_C( 4269142848878481025) },
      {  SIMDE_POLY64_C(13395296486420650805) },
      {  SIMDE_POLY64_C(13395296486420650805) } },
    { {  SIMDE_POLY64_C(16135277955010204355) },
      {  SIMDE_POLY64_C( 8074912141013526827) },
      {  SIMDE_POLY64_C( 8074912141013526827) } },
    { {  SIMDE_POLY64_C( 2540591871860474721) },
      {  SIMDE_POLY64_C( 3018004574689373093) },
      {  SIMDE_POLY64_C( 3018004574689373093) } },
    { {  SIMDE_POLY64_C( 6078212644320502818) },
      {  SIMDE_POLY64_C( 5640613611397537144) },
      {  SIMDE_POLY64_C( 5640613611397537144) } },
    { {  SIMDE_POLY64_C(17738531384755593185) },
      {  SIMDE_POLY64_C(12574375413058459129) },
      {  SIMDE_POLY64_C(12574375413058459129) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly64x1_t a = simde_vld1_p64(test_vec[i].a);
    simde_poly64x1_t b = simde_vld1_p64(test_vec[i].b);

    simde_poly64x1_t r00 = simde_vcopy_lane_p64(a, 0, b, 0);

    simde_test_arm_neon_assert_equal_p64x1(r00, simde_vld1_p64(test_vec[i].r00));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly64x1_t a = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t b = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t r00 = simde_vcopy_lane_p64(a, 0, b, 0);

    simde_test_arm_neon_write_p64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, r00, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly8_t a[8];
    simde_poly8_t b[16];
    simde_poly8_t r0_0[8];
    simde_poly8_t r1_3[8];
    simde_poly8_t r3_8[8];
    simde_poly8_t r6_12[8];
    simde_poly8_t r7_15[8];
  } test_vec[] = {
    { {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(   40),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   35),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   87),  SIMDE_POLY8_C(  222) },
      {  SIMDE_POLY8_C(   52),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(  224),  SIMDE_POLY8_C(  221),
         SIMDE_POLY8_C(  253),  SIMDE_POLY8_C(  198),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   81),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  118),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(  200),
         SIMDE_POLY8_C(   52),  SIMDE_POLY8_C(  165),  SIMDE_POLY8_C(  148),  SIMDE_POLY8_C(   99) },
      {  SIMDE_POLY8_C(   52),  SIMDE_POLY8_C(   40),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   35),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   87),  SIMDE_POLY8_C(  222) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  221),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   35),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   87),  SIMDE_POLY8_C(  222) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(   40),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(  184),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   87),  SIMDE_POLY8_C(  222) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(   40),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   35),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   52),  SIMDE_POLY8_C(  222) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(   40),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   35),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   87),  SIMDE_POLY8_C(   99) } },
    { {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   86),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  248),
         SIMDE_POLY8_C(   64),  SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(   69) },
      {  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(  243),
         SIMDE_POLY8_C(  192),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(   82),  SIMDE_POLY8_C(   86),
         SIMDE_POLY8_C(  253),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(   57),
         SIMDE_POLY8_C(  162),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(  109),  SIMDE_POLY8_C(   69) },
      {  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(   86),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  248),
         SIMDE_POLY8_C(   64),  SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(   69) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  248),
         SIMDE_POLY8_C(   64),  SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(   69) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   86),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  253),
         SIMDE_POLY8_C(   64),  SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(   69) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   86),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  248),
         SIMDE_POLY8_C(   64),  SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(  162),  SIMDE_POLY8_C(   69) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   86),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  248),
         SIMDE_POLY8_C(   64),  SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(  189),  SIMDE_POLY8_C(   69) } },
    { {  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(  206),  SIMDE_POLY8_C(  196) },
      {  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   23),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(   31),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(  146),
         SIMDE_POLY8_C(    3),  SIMDE_POLY8_C(  218),  SIMDE_POLY8_C(   80),  SIMDE_POLY8_C(  224) },
      {  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(  206),  SIMDE_POLY8_C(  196) },
      {  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(   23),  SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(  206),  SIMDE_POLY8_C(  196) },
      {  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(  105),
         SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(  206),  SIMDE_POLY8_C(  196) },
      {  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(    3),  SIMDE_POLY8_C(  196) },
      {  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   91),  SIMDE_POLY8_C(  206),  SIMDE_POLY8_C(  224) } },
    { {  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(   26),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   44),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(  181) },
      {  SIMDE_POLY8_C(   69),  SIMDE_POLY8_C(  115),  SIMDE_POLY8_C(   53),  SIMDE_POLY8_C(  237),
         SIMDE_POLY8_C(  116),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  212),
         SIMDE_POLY8_C(  149),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(  106),  SIMDE_POLY8_C(   27),
         SIMDE_POLY8_C(  249),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(  133) },
      {  SIMDE_POLY8_C(   69),  SIMDE_POLY8_C(   26),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   44),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(  181) },
      {  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(  237),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   44),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(  181) },
      {  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(   26),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(  149),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(  181) },
      {  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(   26),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   44),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(  249),  SIMDE_POLY8_C(  181) },
      {  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(   26),  SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(   44),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(  170),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(  133) } },
    { {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  126),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(UINT8_MAX),
         SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  241),  SIMDE_POLY8_C(   40) },
      {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  120),  SIMDE_POLY8_C(  120),  SIMDE_POLY8_C(  177),
         SIMDE_POLY8_C(  245),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  251),  SIMDE_POLY8_C(  121),
         SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  149),  SIMDE_POLY8_C(   67),
         SIMDE_POLY8_C(  176),  SIMDE_POLY8_C(    7),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(  203) },
      {  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  126),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(UINT8_MAX),
         SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  241),  SIMDE_POLY8_C(   40) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(UINT8_MAX),
         SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  241),  SIMDE_POLY8_C(   40) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  126),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(  185),
         SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  241),  SIMDE_POLY8_C(   40) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  126),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(UINT8_MAX),
         SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  176),  SIMDE_POLY8_C(   40) },
      {  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  126),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(UINT8_MAX),
         SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  241),  SIMDE_POLY8_C(  203) } },
    { {  SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(  186),  SIMDE_POLY8_C(   59),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  250),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  170) },
      {  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   89),  SIMDE_POLY8_C(   92),  SIMDE_POLY8_C(   84),
         SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(   70),
         SIMDE_POLY8_C(   74),  SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(  204),
         SIMDE_POLY8_C(  114),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  146),  SIMDE_POLY8_C(   53) },
      {  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(  186),  SIMDE_POLY8_C(   59),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  250),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  170) },
      {  SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(   84),  SIMDE_POLY8_C(  186),  SIMDE_POLY8_C(   59),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  250),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  170) },
      {  SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(  186),  SIMDE_POLY8_C(   74),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  250),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  170) },
      {  SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(  186),  SIMDE_POLY8_C(   59),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  250),  SIMDE_POLY8_C(  114),  SIMDE_POLY8_C(  170) },
      {  SIMDE_POLY8_C(  207),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(  186),  SIMDE_POLY8_C(   59),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  250),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(   53) } },
    { {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  125),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(  195),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(  186) },
      {  SIMDE_POLY8_C(    9),  SIMDE_POLY8_C(  138),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   97),
         SIMDE_POLY8_C(  120),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(  155),  SIMDE_POLY8_C(   29),
         SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   14),  SIMDE_POLY8_C(   10),  SIMDE_POLY8_C(  220),
         SIMDE_POLY8_C(  253),  SIMDE_POLY8_C(  194),  SIMDE_POLY8_C(  240),  SIMDE_POLY8_C(  218) },
      {  SIMDE_POLY8_C(    9),  SIMDE_POLY8_C(  125),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(  195),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(  186) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(  195),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(  186) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  125),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(    5),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(  186) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  125),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(  195),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  253),  SIMDE_POLY8_C(  186) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  125),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(  195),
         SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  208),  SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(  218) } },
    { {  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   62),
         SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   46),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(  247) },
      {  SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  199),  SIMDE_POLY8_C(   65),  SIMDE_POLY8_C(  133),
         SIMDE_POLY8_C(  222),  SIMDE_POLY8_C(  218),  SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(   55),
         SIMDE_POLY8_C(  217),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  216),  SIMDE_POLY8_C(   57),
         SIMDE_POLY8_C(  204),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(  253) },
      {  SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   62),
         SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   46),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(  247) },
      {  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   62),
         SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   46),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(  247) },
      {  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  217),
         SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   46),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(  247) },
      {  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   62),
         SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   46),  SIMDE_POLY8_C(  204),  SIMDE_POLY8_C(  247) },
      {  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(   62),
         SIMDE_POLY8_C(  203),  SIMDE_POLY8_C(   46),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(  253) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly8x8_t a = simde_vld1_p8(test_vec[i].a);
    simde_poly8x16_t b = simde_vld1q_p8(test_vec[i].b);

    simde_poly8x8_t r0_0 = simde_vcopy_laneq_p8(a, 0, b, 0);
    simde_poly8x8_t r1_3 = simde_vcopy_laneq_p8(a, 1, b, 3);
    simde_poly8x8_t r3_8 = simde_vcopy_laneq_p8(a, 3, b, 8);
    simde_poly8x8_t r6_12 = simde_vcopy_laneq_p8(a, 6, b, 12);
    simde_poly8x8_t r7_15 = simde_vcopy_laneq_p8(a, 7, b, 15);

    simde_test_arm_neon_assert_equal_p8x8(r0_0, simde_vld1_p8(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_p8x8(r1_3, simde_vld1_p8(test_vec[i].r1_3));
    simde_test_arm_neon_assert_equal_p8x8(r3_8, simde_vld1_p8(test_vec[i].r3_8));
    simde_test_arm_neon_assert_equal_p8x8(r6_12, simde_vld1_p8(test_vec[i].r6_12));
    simde_test_arm_neon_assert_equal_p8x8(r7_15, simde_vld1_p8(test_vec[i].r7_15));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly8x8_t a = simde_test_arm_neon_random_p8x8();
    simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
    simde_poly8x8_t r0_0 = simde_vcopy_laneq_p8(a, 0, b, 0);
    simde_poly8x8_t r1_3 = simde_vcopy_laneq_p8(a, 1, b, 3);
    simde_poly8x8_t r3_8 = simde_vcopy_laneq_p8(a, 3, b, 8);
    simde_poly8x8_t r6_12 = simde_vcopy_laneq_p8(a, 6, b, 12);
    simde_poly8x8_t r7_15 = simde_vcopy_laneq_p8(a, 7, b, 15);

    simde_test_arm_neon_write_p8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r3_8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r6_12, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, r7_15, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly16_t a[4];
    simde_poly16_t b[8];
    simde_poly16_t r0_0[4];
    simde_poly16_t r1_3[4];
    simde_poly16_t r2_5[4];
    simde_poly16_t r3_7[4];
  } test_vec[] = {
    { {  SIMDE_POLY16_C(   14090),  SIMDE_POLY16_C(   43348),  SIMDE_POLY16_C(   44694),  SIMDE_POLY16_C(   30737) },
      {  SIMDE_POLY16_C(   38617),  SIMDE_POLY16_C(   33902),  SIMDE_POLY16_C(      90),  SIMDE_POLY16_C(   41210),
         SIMDE_POLY16_C(   36570),  SIMDE_POLY16_C(   20021),  SIMDE_POLY16_C(    3767),  SIMDE_POLY16_C(   62186) },
      {  SIMDE_POLY16_C(   38617),  SIMDE_POLY16_C(   43348),  SIMDE_POLY16_C(   44694),  SIMDE_POLY16_C(   30737) },
      {  SIMDE_POLY16_C(   14090),  SIMDE_POLY16_C(   41210),  SIMDE_POLY16_C(   44694),  SIMDE_POLY16_C(   30737) },
      {  SIMDE_POLY16_C(   14090),  SIMDE_POLY16_C(   43348),  SIMDE_POLY16_C(   20021),  SIMDE_POLY16_C(   30737) },
      {  SIMDE_POLY16_C(   14090),  SIMDE_POLY16_C(   43348),  SIMDE_POLY16_C(   44694),  SIMDE_POLY16_C(   62186) } },
    { {  SIMDE_POLY16_C(   61109),  SIMDE_POLY16_C(   30682),  SIMDE_POLY16_C(   62985),  SIMDE_POLY16_C(   21741) },
      {  SIMDE_POLY16_C(   19675),  SIMDE_POLY16_C(   47463),  SIMDE_POLY16_C(   48866),  SIMDE_POLY16_C(   48845),
         SIMDE_POLY16_C(   50845),  SIMDE_POLY16_C(   43216),  SIMDE_POLY16_C(    9981),  SIMDE_POLY16_C(   42973) },
      {  SIMDE_POLY16_C(   19675),  SIMDE_POLY16_C(   30682),  SIMDE_POLY16_C(   62985),  SIMDE_POLY16_C(   21741) },
      {  SIMDE_POLY16_C(   61109),  SIMDE_POLY16_C(   48845),  SIMDE_POLY16_C(   62985),  SIMDE_POLY16_C(   21741) },
      {  SIMDE_POLY16_C(   61109),  SIMDE_POLY16_C(   30682),  SIMDE_POLY16_C(   43216),  SIMDE_POLY16_C(   21741) },
      {  SIMDE_POLY16_C(   61109),  SIMDE_POLY16_C(   30682),  SIMDE_POLY16_C(   62985),  SIMDE_POLY16_C(   42973) } },
    { {  SIMDE_POLY16_C(   31349),  SIMDE_POLY16_C(   64794),  SIMDE_POLY16_C(   25390),  SIMDE_POLY16_C(   50931) },
      {  SIMDE_POLY16_C(   20875),  SIMDE_POLY16_C(   26295),  SIMDE_POLY16_C(   47031),  SIMDE_POLY16_C(   37393),
         SIMDE_POLY16_C(    8989),  SIMDE_POLY16_C(    1142),  SIMDE_POLY16_C(     891),  SIMDE_POLY16_C(   41568) },
      {  SIMDE_POLY16_C(   20875),  SIMDE_POLY16_C(   64794),  SIMDE_POLY16_C(   25390),  SIMDE_POLY16_C(   50931) },
      {  SIMDE_POLY16_C(   31349),  SIMDE_POLY16_C(   37393),  SIMDE_POLY16_C(   25390),  SIMDE_POLY16_C(   50931) },
      {  SIMDE_POLY16_C(   31349),  SIMDE_POLY16_C(   64794),  SIMDE_POLY16_C(    1142),  SIMDE_POLY16_C(   50931) },
      {  SIMDE_POLY16_C(   31349),  SIMDE_POLY16_C(   64794),  SIMDE_POLY16_C(   25390),  SIMDE_POLY16_C(   41568) } },
    { {  SIMDE_POLY16_C(   27978),  SIMDE_POLY16_C(   43843),  SIMDE_POLY16_C(   22177),  SIMDE_POLY16_C(   31195) },
      {  SIMDE_POLY16_C(   13000),  SIMDE_POLY16_C(   19847),  SIMDE_POLY16_C(   29376),  SIMDE_POLY16_C(   26702),
         SIMDE_POLY16_C(   12549),  SIMDE_POLY16_C(   33267),  SIMDE_POLY16_C(   27103),  SIMDE_POLY16_C(   28719) },
      {  SIMDE_POLY16_C(   13000),  SIMDE_POLY16_C(   43843),  SIMDE_POLY16_C(   22177),  SIMDE_POLY16_C(   31195) },
      {  SIMDE_POLY16_C(   27978),  SIMDE_POLY16_C(   26702),  SIMDE_POLY16_C(   22177),  SIMDE_POLY16_C(   31195) },
      {  SIMDE_POLY16_C(   27978),  SIMDE_POLY16_C(   43843),  SIMDE_POLY16_C(   33267),  SIMDE_POLY16_C(   31195) },
      {  SIMDE_POLY16_C(   27978),  SIMDE_POLY16_C(   43843),  SIMDE_POLY16_C(   22177),  SIMDE_POLY16_C(   28719) } },
    { {  SIMDE_POLY16_C(    1114),  SIMDE_POLY16_C(   44831),  SIMDE_POLY16_C(   23387),  SIMDE_POLY16_C(   26671) },
      {  SIMDE_POLY16_C(   62402),  SIMDE_POLY16_C(   40206),  SIMDE_POLY16_C(    5589),  SIMDE_POLY16_C(   46365),
         SIMDE_POLY16_C(   15546),  SIMDE_POLY16_C(   56079),  SIMDE_POLY16_C(   10655),  SIMDE_POLY16_C(   28459) },
      {  SIMDE_POLY16_C(   62402),  SIMDE_POLY16_C(   44831),  SIMDE_POLY16_C(   23387),  SIMDE_POLY16_C(   26671) },
      {  SIMDE_POLY16_C(    1114),  SIMDE_POLY16_C(   46365),  SIMDE_POLY16_C(   23387),  SIMDE_POLY16_C(   26671) },
      {  SIMDE_POLY16_C(    1114),  SIMDE_POLY16_C(   44831),  SIMDE_POLY16_C(   56079),  SIMDE_POLY16_C(   26671) },
      {  SIMDE_POLY16_C(    1114),  SIMDE_POLY16_C(   44831),  SIMDE_POLY16_C(   23387),  SIMDE_POLY16_C(   28459) } },
    { {  SIMDE_POLY16_C(   15907),  SIMDE_POLY16_C(   19190),  SIMDE_POLY16_C(   53939),  SIMDE_POLY16_C(   23137) },
      {  SIMDE_POLY16_C(   31842),  SIMDE_POLY16_C(   25173),  SIMDE_POLY16_C(    4547),  SIMDE_POLY16_C(    2456),
         SIMDE_POLY16_C(   47549),  SIMDE_POLY16_C(   26853),  SIMDE_POLY16_C(   42826),  SIMDE_POLY16_C(   39063) },
      {  SIMDE_POLY16_C(   31842),  SIMDE_POLY16_C(   19190),  SIMDE_POLY16_C(   53939),  SIMDE_POLY16_C(   23137) },
      {  SIMDE_POLY16_C(   15907),  SIMDE_POLY16_C(    2456),  SIMDE_POLY16_C(   53939),  SIMDE_POLY16_C(   23137) },
      {  SIMDE_POLY16_C(   15907),  SIMDE_POLY16_C(   19190),  SIMDE_POLY16_C(   26853),  SIMDE_POLY16_C(   23137) },
      {  SIMDE_POLY16_C(   15907),  SIMDE_POLY16_C(   19190),  SIMDE_POLY16_C(   53939),  SIMDE_POLY16_C(   39063) } },
    { {  SIMDE_POLY16_C(   35181),  SIMDE_POLY16_C(   17415),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(   49844) },
      {  SIMDE_POLY16_C(   32240),  SIMDE_POLY16_C(   12816),  SIMDE_POLY16_C(   48038),  SIMDE_POLY16_C(   32248),
         SIMDE_POLY16_C(   21982),  SIMDE_POLY16_C(   58359),  SIMDE_POLY16_C(   59704),  SIMDE_POLY16_C(   41823) },
      {  SIMDE_POLY16_C(   32240),  SIMDE_POLY16_C(   17415),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(   49844) },
      {  SIMDE_POLY16_C(   35181),  SIMDE_POLY16_C(   32248),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(   49844) },
      {  SIMDE_POLY16_C(   35181),  SIMDE_POLY16_C(   17415),  SIMDE_POLY16_C(   58359),  SIMDE_POLY16_C(   49844) },
      {  SIMDE_POLY16_C(   35181),  SIMDE_POLY16_C(   17415),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(   41823) } },
    { {  SIMDE_POLY16_C(   10135),  SIMDE_POLY16_C(    9895),  SIMDE_POLY16_C(   14931),  SIMDE_POLY16_C(    6474) },
      {  SIMDE_POLY16_C(   48682),  SIMDE_POLY16_C(    7265),  SIMDE_POLY16_C(    8191),  SIMDE_POLY16_C(   33426),
         SIMDE_POLY16_C(   41840),  SIMDE_POLY16_C(   56821),  SIMDE_POLY16_C(    7954),  SIMDE_POLY16_C(   43755) },
      {  SIMDE_POLY16_C(   48682),  SIMDE_POLY16_C(    9895),  SIMDE_POLY16_C(   14931),  SIMDE_POLY16_C(    6474) },
      {  SIMDE_POLY16_C(   10135),  SIMDE_POLY16_C(   33426),  SIMDE_POLY16_C(   14931),  SIMDE_POLY16_C(    6474) },
      {  SIMDE_POLY16_C(   10135),  SIMDE_POLY16_C(    9895),  SIMDE_POLY16_C(   56821),  SIMDE_POLY16_C(    6474) },
      {  SIMDE_POLY16_C(   10135),  SIMDE_POLY16_C(    9895),  SIMDE_POLY16_C(   14931),  SIMDE_POLY16_C(   43755) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly16x4_t a = simde_vld1_p16(test_vec[i].a);
    simde_poly16x8_t b = simde_vld1q_p16(test_vec[i].b);

    simde_poly16x4_t r0_0 = simde_vcopy_laneq_p16(a, 0, b, 0);
    simde_poly16x4_t r1_3 = simde_vcopy_laneq_p16(a, 1, b, 3);
    simde_poly16x4_t r2_5 = simde_vcopy_laneq_p16(a, 2, b, 5);
    simde_poly16x4_t r3_7 = simde_vcopy_laneq_p16(a, 3, b, 7);

    simde_test_arm_neon_assert_equal_p16x4(r0_0, simde_vld1_p16(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_p16x4(r1_3, simde_vld1_p16(test_vec[i].r1_3));
    simde_test_arm_neon_assert_equal_p16x4(r2_5, simde_vld1_p16(test_vec[i].r2_5));
    simde_test_arm_neon_assert_equal_p16x4(r3_7, simde_vld1_p16(test_vec[i].r3_7));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly16x4_t a = simde_test_arm_neon_random_p16x4();
    simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
    simde_poly16x4_t r0_0 = simde_vcopy_laneq_p16(a, 0, b, 0);
    simde_poly16x4_t r1_3 = simde_vcopy_laneq_p16(a, 1, b, 3);
    simde_poly16x4_t r2_5 = simde_vcopy_laneq_p16(a, 2, b, 5);
    simde_poly16x4_t r3_7 = simde_vcopy_laneq_p16(a, 3, b, 7);

    simde_test_arm_neon_write_p16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r2_5, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, r3_7, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly64_t a[1];
    simde_poly64_t b[2];
    simde_poly64_t r0_0[1];
    simde_poly64_t r0_1[1];
  } test_vec[] = {
    { {  SIMDE_POLY64_C( 4774845596606571093) },
      {  SIMDE_POLY64_C( 8217638833653863154),  SIMDE_POLY64_C(17418031248681962729) },
      {  SIMDE_POLY64_C( 8217638833653863154) },
      {  SIMDE_POLY64_C(17418031248681962729) } },
    { {  SIMDE_POLY64_C(17601450605500208340) },
      {  SIMDE_POLY64_C( 2768201381815185750),  SIMDE_POLY64_C(16070785927570141580) },
      {  SIMDE_POLY64_C( 2768201381815185750) },
      {  SIMDE_POLY64_C(16070785927570141580) } },
    { {  SIMDE_POLY64_C( 5515676140731327920) },
      {  SIMDE_POLY64_C(10667193760066591791),  SIMDE_POLY64_C( 5614703629073485915) },
      {  SIMDE_POLY64_C(10667193760066591791) },
      {  SIMDE_POLY64_C( 5614703629073485915) } },
    { {  SIMDE_POLY64_C( 8834081084411742948) },
      {  SIMDE_POLY64_C( 9878499915507241938),  SIMDE_POLY64_C(12395589140738461358) },
      {  SIMDE_POLY64_C( 9878499915507241938) },
      {  SIMDE_POLY64_C(12395589140738461358) } },
    { {  SIMDE_POLY64_C(14076324571948981968) },
      {  SIMDE_POLY64_C(13707984266428261295),  SIMDE_POLY64_C(16651015344936509577) },
      {  SIMDE_POLY64_C(13707984266428261295) },
      {  SIMDE_POLY64_C(16651015344936509577) } },
    { {  SIMDE_POLY64_C( 7401032381136844628) },
      {  SIMDE_POLY64_C(13595471166024805103),  SIMDE_POLY64_C(12253610641519224975) },
      {  SIMDE_POLY64_C(13595471166024805103) },
      {  SIMDE_POLY64_C(12253610641519224975) } },
    { {  SIMDE_POLY64_C( 3043905301656645740) },
      {  SIMDE_POLY64_C(13594318462557334235),  SIMDE_POLY64_C(  878904381009645699) },
      {  SIMDE_POLY64_C(13594318462557334235) },
      {  SIMDE_POLY64_C(  878904381009645699) } },
    { {  SIMDE_POLY64_C( 7588891631142822727) },
      {  SIMDE_POLY64_C( 1673981919106237551),  SIMDE_POLY64_C(12358823236528999795) },
      {  SIMDE_POLY64_C( 1673981919106237551) },
      {  SIMDE_POLY64_C(12358823236528999795) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly64x1_t a = simde_vld1_p64(test_vec[i].a);
    simde_poly64x2_t b = simde_vld1q_p64(test_vec[i].b);

    simde_poly64x1_t r0_0 = simde_vcopy_laneq_p64(a, 0, b, 0);
    simde_poly64x1_t r0_1 = simde_vcopy_laneq_p64(a, 0, b, 1);

    simde_test_arm_neon_assert_equal_p64x1(r0_0, simde_vld1_p64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_p64x1(r0_1, simde_vld1_p64(test_vec[i].r0_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly64x1_t a = simde_test_arm_neon_random_p64x1();
    simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
    simde_poly64x1_t r0_0 = simde_vcopy_laneq_p64(a, 0, b, 0);
    simde_poly64x1_t r0_1 = simde_vcopy_laneq_p64(a, 0, b, 1);

    simde_test_arm_neon_write_p64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, r0_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly8_t a[16];
    simde_poly8_t b[8];
    simde_poly8_t r0_7[16];
    simde_poly8_t r4_6[16];
    simde_poly8_t r8_4[16];
    simde_poly8_t r12_3[16];
    simde_poly8_t r15_1[16];
  } test_vec[] = {
    { {  SIMDE_POLY8_C(    59),  SIMDE_POLY8_C(   146),  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(    29),
         SIMDE_POLY8_C(    78),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   166),
         SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   178),
         SIMDE_POLY8_C(   206),  SIMDE_POLY8_C(    10),  SIMDE_POLY8_C(   184),  SIMDE_POLY8_C(   187) },
      {  SIMDE_POLY8_C(    70),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   193),  SIMDE_POLY8_C(    36),
         SIMDE_POLY8_C(    18),  SIMDE_POLY8_C(   128),  SIMDE_POLY8_C(   189),  SIMDE_POLY8_C(   208) },
      {  SIMDE_POLY8_C(   208),  SIMDE_POLY8_C(   146),  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(    29),
         SIMDE_POLY8_C(    78),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   166),
         SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   178),
         SIMDE_POLY8_C(   206),  SIMDE_POLY8_C(    10),  SIMDE_POLY8_C(   184),  SIMDE_POLY8_C(   187) },
      {  SIMDE_POLY8_C(    59),  SIMDE_POLY8_C(   146),  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(    29),
         SIMDE_POLY8_C(   189),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   166),
         SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   178),
         SIMDE_POLY8_C(   206),  SIMDE_POLY8_C(    10),  SIMDE_POLY8_C(   184),  SIMDE_POLY8_C(   187) },
      {  SIMDE_POLY8_C(    59),  SIMDE_POLY8_C(   146),  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(    29),
         SIMDE_POLY8_C(    78),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   166),
         SIMDE_POLY8_C(    18),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   178),
         SIMDE_POLY8_C(   206),  SIMDE_POLY8_C(    10),  SIMDE_POLY8_C(   184),  SIMDE_POLY8_C(   187) },
      {  SIMDE_POLY8_C(    59),  SIMDE_POLY8_C(   146),  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(    29),
         SIMDE_POLY8_C(    78),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   166),
         SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   178),
         SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(    10),  SIMDE_POLY8_C(   184),  SIMDE_POLY8_C(   187) },
      {  SIMDE_POLY8_C(    59),  SIMDE_POLY8_C(   146),  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(    29),
         SIMDE_POLY8_C(    78),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   166),
         SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   103),  SIMDE_POLY8_C(   178),
         SIMDE_POLY8_C(   206),  SIMDE_POLY8_C(    10),  SIMDE_POLY8_C(   184),  SIMDE_POLY8_C(   103) } },
    { {  SIMDE_POLY8_C(    91),  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(    52),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   205),  SIMDE_POLY8_C(    72),  SIMDE_POLY8_C(   179),
         SIMDE_POLY8_C(   111),  SIMDE_POLY8_C(   192),  SIMDE_POLY8_C(   117),  SIMDE_POLY8_C(   227),
         SIMDE_POLY8_C(   194),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(    37),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(   139),  SIMDE_POLY8_C(    50),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(   157),
         SIMDE_POLY8_C(   169),  SIMDE_POLY8_C(   160),  SIMDE_POLY8_C(   180),  SIMDE_POLY8_C(   165) },
      {  SIMDE_POLY8_C(   165),  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(    52),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   205),  SIMDE_POLY8_C(    72),  SIMDE_POLY8_C(   179),
         SIMDE_POLY8_C(   111),  SIMDE_POLY8_C(   192),  SIMDE_POLY8_C(   117),  SIMDE_POLY8_C(   227),
         SIMDE_POLY8_C(   194),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(    37),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(    91),  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(    52),
         SIMDE_POLY8_C(   180),  SIMDE_POLY8_C(   205),  SIMDE_POLY8_C(    72),  SIMDE_POLY8_C(   179),
         SIMDE_POLY8_C(   111),  SIMDE_POLY8_C(   192),  SIMDE_POLY8_C(   117),  SIMDE_POLY8_C(   227),
         SIMDE_POLY8_C(   194),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(    37),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(    91),  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(    52),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   205),  SIMDE_POLY8_C(    72),  SIMDE_POLY8_C(   179),
         SIMDE_POLY8_C(   169),  SIMDE_POLY8_C(   192),  SIMDE_POLY8_C(   117),  SIMDE_POLY8_C(   227),
         SIMDE_POLY8_C(   194),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(    37),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(    91),  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(    52),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   205),  SIMDE_POLY8_C(    72),  SIMDE_POLY8_C(   179),
         SIMDE_POLY8_C(   111),  SIMDE_POLY8_C(   192),  SIMDE_POLY8_C(   117),  SIMDE_POLY8_C(   227),
         SIMDE_POLY8_C(   157),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(    37),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(    91),  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(    52),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   205),  SIMDE_POLY8_C(    72),  SIMDE_POLY8_C(   179),
         SIMDE_POLY8_C(   111),  SIMDE_POLY8_C(   192),  SIMDE_POLY8_C(   117),  SIMDE_POLY8_C(   227),
         SIMDE_POLY8_C(   194),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(    37),  SIMDE_POLY8_C(    50) } },
    { {  SIMDE_POLY8_C(   105),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(    67),
         SIMDE_POLY8_C(   196),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   132),  SIMDE_POLY8_C(    75),  SIMDE_POLY8_C(   140),  SIMDE_POLY8_C(    45),
         SIMDE_POLY8_C(    16),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    49),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(    43),  SIMDE_POLY8_C(   107),  SIMDE_POLY8_C(   122),  SIMDE_POLY8_C(   203),
         SIMDE_POLY8_C(    47),  SIMDE_POLY8_C(    15),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(   173) },
      {  SIMDE_POLY8_C(   173),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(    67),
         SIMDE_POLY8_C(   196),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   132),  SIMDE_POLY8_C(    75),  SIMDE_POLY8_C(   140),  SIMDE_POLY8_C(    45),
         SIMDE_POLY8_C(    16),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    49),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(   105),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(    67),
         SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   132),  SIMDE_POLY8_C(    75),  SIMDE_POLY8_C(   140),  SIMDE_POLY8_C(    45),
         SIMDE_POLY8_C(    16),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    49),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(   105),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(    67),
         SIMDE_POLY8_C(   196),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(    47),  SIMDE_POLY8_C(    75),  SIMDE_POLY8_C(   140),  SIMDE_POLY8_C(    45),
         SIMDE_POLY8_C(    16),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    49),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(   105),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(    67),
         SIMDE_POLY8_C(   196),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   132),  SIMDE_POLY8_C(    75),  SIMDE_POLY8_C(   140),  SIMDE_POLY8_C(    45),
         SIMDE_POLY8_C(   203),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    49),  SIMDE_POLY8_C(   129) },
      {  SIMDE_POLY8_C(   105),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   218),  SIMDE_POLY8_C(    67),
         SIMDE_POLY8_C(   196),  SIMDE_POLY8_C(   121),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   132),  SIMDE_POLY8_C(    75),  SIMDE_POLY8_C(   140),  SIMDE_POLY8_C(    45),
         SIMDE_POLY8_C(    16),  SIMDE_POLY8_C(    48),  SIMDE_POLY8_C(    49),  SIMDE_POLY8_C(   107) } },
    { {  SIMDE_POLY8_C(     7),  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(    69),  SIMDE_POLY8_C(   189),
         SIMDE_POLY8_C(   193),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   183),  SIMDE_POLY8_C(   117),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   254) },
      {  SIMDE_POLY8_C(    46),  SIMDE_POLY8_C(   151),  SIMDE_POLY8_C(   116),  SIMDE_POLY8_C(   149),
         SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(    84),  SIMDE_POLY8_C(   239),  SIMDE_POLY8_C(   224) },
      {  SIMDE_POLY8_C(   224),  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(    69),  SIMDE_POLY8_C(   189),
         SIMDE_POLY8_C(   193),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   183),  SIMDE_POLY8_C(   117),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   254) },
      {  SIMDE_POLY8_C(     7),  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(    69),  SIMDE_POLY8_C(   189),
         SIMDE_POLY8_C(   239),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   183),  SIMDE_POLY8_C(   117),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   254) },
      {  SIMDE_POLY8_C(     7),  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(    69),  SIMDE_POLY8_C(   189),
         SIMDE_POLY8_C(   193),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   183),  SIMDE_POLY8_C(   117),
         SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   254) },
      {  SIMDE_POLY8_C(     7),  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(    69),  SIMDE_POLY8_C(   189),
         SIMDE_POLY8_C(   193),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   183),  SIMDE_POLY8_C(   117),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   149),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   254) },
      {  SIMDE_POLY8_C(     7),  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(    69),  SIMDE_POLY8_C(   189),
         SIMDE_POLY8_C(   193),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   183),  SIMDE_POLY8_C(   117),
         SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   125),  SIMDE_POLY8_C(   221),
         SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(   249),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   151) } },
    { {  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   229),  SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(   140),
         SIMDE_POLY8_C(   224),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(   182),  SIMDE_POLY8_C(   144),
         SIMDE_POLY8_C(    39),  SIMDE_POLY8_C(    35),  SIMDE_POLY8_C(   204),  SIMDE_POLY8_C(   158) },
      {  SIMDE_POLY8_C(    61),  SIMDE_POLY8_C(   217),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(    22),  SIMDE_POLY8_C(    54),  SIMDE_POLY8_C(    63),  SIMDE_POLY8_C(    57) },
      {  SIMDE_POLY8_C(    57),  SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   229),  SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(   140),
         SIMDE_POLY8_C(   224),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(   182),  SIMDE_POLY8_C(   144),
         SIMDE_POLY8_C(    39),  SIMDE_POLY8_C(    35),  SIMDE_POLY8_C(   204),  SIMDE_POLY8_C(   158) },
      {  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(    63),  SIMDE_POLY8_C(   229),  SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(   140),
         SIMDE_POLY8_C(   224),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(   182),  SIMDE_POLY8_C(   144),
         SIMDE_POLY8_C(    39),  SIMDE_POLY8_C(    35),  SIMDE_POLY8_C(   204),  SIMDE_POLY8_C(   158) },
      {  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   229),  SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(   140),
         SIMDE_POLY8_C(    22),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(   182),  SIMDE_POLY8_C(   144),
         SIMDE_POLY8_C(    39),  SIMDE_POLY8_C(    35),  SIMDE_POLY8_C(   204),  SIMDE_POLY8_C(   158) },
      {  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   229),  SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(   140),
         SIMDE_POLY8_C(   224),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(   182),  SIMDE_POLY8_C(   144),
         SIMDE_POLY8_C(    85),  SIMDE_POLY8_C(    35),  SIMDE_POLY8_C(   204),  SIMDE_POLY8_C(   158) },
      {  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    32),  SIMDE_POLY8_C(   181),  SIMDE_POLY8_C(    85),
         SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(   229),  SIMDE_POLY8_C(    36),  SIMDE_POLY8_C(   140),
         SIMDE_POLY8_C(   224),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(   182),  SIMDE_POLY8_C(   144),
         SIMDE_POLY8_C(    39),  SIMDE_POLY8_C(    35),  SIMDE_POLY8_C(   204),  SIMDE_POLY8_C(   217) } },
    { {  SIMDE_POLY8_C(    42),  SIMDE_POLY8_C(    33),  SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(   160),
         SIMDE_POLY8_C(   201),  SIMDE_POLY8_C(    17),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    21),
         SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(    89),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   109),
         SIMDE_POLY8_C(   248),  SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(   137) },
      {  SIMDE_POLY8_C(   101),  SIMDE_POLY8_C(   207),  SIMDE_POLY8_C(   250),  SIMDE_POLY8_C(   139),
         SIMDE_POLY8_C(   236),  SIMDE_POLY8_C(    39),  SIMDE_POLY8_C(   230),  SIMDE_POLY8_C(   206) },
      {  SIMDE_POLY8_C(   206),  SIMDE_POLY8_C(    33),  SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(   160),
         SIMDE_POLY8_C(   201),  SIMDE_POLY8_C(    17),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    21),
         SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(    89),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   109),
         SIMDE_POLY8_C(   248),  SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(   137) },
      {  SIMDE_POLY8_C(    42),  SIMDE_POLY8_C(    33),  SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(   160),
         SIMDE_POLY8_C(   230),  SIMDE_POLY8_C(    17),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    21),
         SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(    89),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   109),
         SIMDE_POLY8_C(   248),  SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(   137) },
      {  SIMDE_POLY8_C(    42),  SIMDE_POLY8_C(    33),  SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(   160),
         SIMDE_POLY8_C(   201),  SIMDE_POLY8_C(    17),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    21),
         SIMDE_POLY8_C(   236),  SIMDE_POLY8_C(    89),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   109),
         SIMDE_POLY8_C(   248),  SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(   137) },
      {  SIMDE_POLY8_C(    42),  SIMDE_POLY8_C(    33),  SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(   160),
         SIMDE_POLY8_C(   201),  SIMDE_POLY8_C(    17),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    21),
         SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(    89),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   109),
         SIMDE_POLY8_C(   139),  SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(   137) },
      {  SIMDE_POLY8_C(    42),  SIMDE_POLY8_C(    33),  SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(   160),
         SIMDE_POLY8_C(   201),  SIMDE_POLY8_C(    17),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    21),
         SIMDE_POLY8_C(   152),  SIMDE_POLY8_C(    89),  SIMDE_POLY8_C(   243),  SIMDE_POLY8_C(   109),
         SIMDE_POLY8_C(   248),  SIMDE_POLY8_C(    92),  SIMDE_POLY8_C(   158),  SIMDE_POLY8_C(   207) } },
    { {  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   142),  SIMDE_POLY8_C(   110),
         SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    86),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(    19),
         SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   222),  SIMDE_POLY8_C(    38),  SIMDE_POLY8_C(    88),
         SIMDE_POLY8_C(   118),  SIMDE_POLY8_C(    99),  SIMDE_POLY8_C(   223),  SIMDE_POLY8_C(   239) },
      {  SIMDE_POLY8_C(    87),  SIMDE_POLY8_C(   213),  SIMDE_POLY8_C(    68),  SIMDE_POLY8_C(   244),
         SIMDE_POLY8_C(    30),  SIMDE_POLY8_C(   172),  SIMDE_POLY8_C(     2),  SIMDE_POLY8_C(   136) },
      {  SIMDE_POLY8_C(   136),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   142),  SIMDE_POLY8_C(   110),
         SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    86),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(    19),
         SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   222),  SIMDE_POLY8_C(    38),  SIMDE_POLY8_C(    88),
         SIMDE_POLY8_C(   118),  SIMDE_POLY8_C(    99),  SIMDE_POLY8_C(   223),  SIMDE_POLY8_C(   239) },
      {  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   142),  SIMDE_POLY8_C(   110),
         SIMDE_POLY8_C(     2),  SIMDE_POLY8_C(    86),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(    19),
         SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   222),  SIMDE_POLY8_C(    38),  SIMDE_POLY8_C(    88),
         SIMDE_POLY8_C(   118),  SIMDE_POLY8_C(    99),  SIMDE_POLY8_C(   223),  SIMDE_POLY8_C(   239) },
      {  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   142),  SIMDE_POLY8_C(   110),
         SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    86),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(    19),
         SIMDE_POLY8_C(    30),  SIMDE_POLY8_C(   222),  SIMDE_POLY8_C(    38),  SIMDE_POLY8_C(    88),
         SIMDE_POLY8_C(   118),  SIMDE_POLY8_C(    99),  SIMDE_POLY8_C(   223),  SIMDE_POLY8_C(   239) },
      {  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   142),  SIMDE_POLY8_C(   110),
         SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    86),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(    19),
         SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   222),  SIMDE_POLY8_C(    38),  SIMDE_POLY8_C(    88),
         SIMDE_POLY8_C(   244),  SIMDE_POLY8_C(    99),  SIMDE_POLY8_C(   223),  SIMDE_POLY8_C(   239) },
      {  SIMDE_POLY8_C(    14),  SIMDE_POLY8_C(     0),  SIMDE_POLY8_C(   142),  SIMDE_POLY8_C(   110),
         SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    86),  SIMDE_POLY8_C(   235),  SIMDE_POLY8_C(    19),
         SIMDE_POLY8_C(    79),  SIMDE_POLY8_C(   222),  SIMDE_POLY8_C(    38),  SIMDE_POLY8_C(    88),
         SIMDE_POLY8_C(   118),  SIMDE_POLY8_C(    99),  SIMDE_POLY8_C(   223),  SIMDE_POLY8_C(   213) } },
    { {  SIMDE_POLY8_C(   155),  SIMDE_POLY8_C(   176),  SIMDE_POLY8_C(   228),  SIMDE_POLY8_C(    41),
         SIMDE_POLY8_C(   114),  SIMDE_POLY8_C(    45),  SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    68),
         SIMDE_POLY8_C(   185),  SIMDE_POLY8_C(   174),  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    46),
         SIMDE_POLY8_C(    81),  SIMDE_POLY8_C(   187),  SIMDE_POLY8_C(     3),  SIMDE_POLY8_C(   123) },
      {  SIMDE_POLY8_C(   151),  SIMDE_POLY8_C(    65),  SIMDE_POLY8_C(    26),  SIMDE_POLY8_C(     1),
         SIMDE_POLY8_C(   212),  SIMDE_POLY8_C(   113),  SIMDE_POLY8_C(    67),  SIMDE_POLY8_C(    18) },
      {  SIMDE_POLY8_C(    18),  SIMDE_POLY8_C(   176),  SIMDE_POLY8_C(   228),  SIMDE_POLY8_C(    41),
         SIMDE_POLY8_C(   114),  SIMDE_POLY8_C(    45),  SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    68),
         SIMDE_POLY8_C(   185),  SIMDE_POLY8_C(   174),  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    46),
         SIMDE_POLY8_C(    81),  SIMDE_POLY8_C(   187),  SIMDE_POLY8_C(     3),  SIMDE_POLY8_C(   123) },
      {  SIMDE_POLY8_C(   155),  SIMDE_POLY8_C(   176),  SIMDE_POLY8_C(   228),  SIMDE_POLY8_C(    41),
         SIMDE_POLY8_C(    67),  SIMDE_POLY8_C(    45),  SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    68),
         SIMDE_POLY8_C(   185),  SIMDE_POLY8_C(   174),  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    46),
         SIMDE_POLY8_C(    81),  SIMDE_POLY8_C(   187),  SIMDE_POLY8_C(     3),  SIMDE_POLY8_C(   123) },
      {  SIMDE_POLY8_C(   155),  SIMDE_POLY8_C(   176),  SIMDE_POLY8_C(   228),  SIMDE_POLY8_C(    41),
         SIMDE_POLY8_C(   114),  SIMDE_POLY8_C(    45),  SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    68),
         SIMDE_POLY8_C(   212),  SIMDE_POLY8_C(   174),  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    46),
         SIMDE_POLY8_C(    81),  SIMDE_POLY8_C(   187),  SIMDE_POLY8_C(     3),  SIMDE_POLY8_C(   123) },
      {  SIMDE_POLY8_C(   155),  SIMDE_POLY8_C(   176),  SIMDE_POLY8_C(   228),  SIMDE_POLY8_C(    41),
         SIMDE_POLY8_C(   114),  SIMDE_POLY8_C(    45),  SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    68),
         SIMDE_POLY8_C(   185),  SIMDE_POLY8_C(   174),  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    46),
         SIMDE_POLY8_C(     1),  SIMDE_POLY8_C(   187),  SIMDE_POLY8_C(     3),  SIMDE_POLY8_C(   123) },
      {  SIMDE_POLY8_C(   155),  SIMDE_POLY8_C(   176),  SIMDE_POLY8_C(   228),  SIMDE_POLY8_C(    41),
         SIMDE_POLY8_C(   114),  SIMDE_POLY8_C(    45),  SIMDE_POLY8_C(   120),  SIMDE_POLY8_C(    68),
         SIMDE_POLY8_C(   185),  SIMDE_POLY8_C(   174),  SIMDE_POLY8_C(   129),  SIMDE_POLY8_C(    46),
         SIMDE_POLY8_C(    81),  SIMDE_POLY8_C(   187),  SIMDE_POLY8_C(     3),  SIMDE_POLY8_C(    65) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly8x16_t a = simde_vld1q_p8(test_vec[i].a);
    simde_poly8x8_t b = simde_vld1_p8(test_vec[i].b);

    simde_poly8x16_t r0_7 = simde_vcopyq_lane_p8(a, 0, b, 7);
    simde_poly8x16_t r4_6 = simde_vcopyq_lane_p8(a, 4, b, 6);
    simde_poly8x16_t r8_4 = simde_vcopyq_lane_p8(a, 8, b, 4);
    simde_poly8x16_t r12_3 = simde_vcopyq_lane_p8(a, 12, b, 3);
    simde_poly8x16_t r15_1 = simde_vcopyq_lane_p8(a, 15, b, 1);

    simde_test_arm_neon_assert_equal_p8x16(r0_7, simde_vld1q_p8(test_vec[i].r0_7));
    simde_test_arm_neon_assert_equal_p8x16(r4_6, simde_vld1q_p8(test_vec[i].r4_6));
    simde_test_arm_neon_assert_equal_p8x16(r8_4, simde_vld1q_p8(test_vec[i].r8_4));
    simde_test_arm_neon_assert_equal_p8x16(r12_3, simde_vld1q_p8(test_vec[i].r12_3));
    simde_test_arm_neon_assert_equal_p8x16(r15_1, simde_vld1q_p8(test_vec[i].r15_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly8x16_t a = simde_test_arm_neon_random_p8x16();
    simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
    simde_poly8x16_t r0_7 = simde_vcopyq_lane_p8(a, 0, b, 7);
    simde_poly8x16_t r4_6 = simde_vcopyq_lane_p8(a, 4, b, 6);
    simde_poly8x16_t r8_4 = simde_vcopyq_lane_p8(a, 8, b, 4);
    simde_poly8x16_t r12_3 = simde_vcopyq_lane_p8(a, 12, b, 3);
    simde_poly8x16_t r15_1 = simde_vcopyq_lane_p8(a, 15, b, 1);

    simde_test_arm_neon_write_p8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r4_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r8_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r12_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r15_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly16_t a[8];
    simde_poly16_t b[4];
    simde_poly16_t r0_3[8];
    simde_poly16_t r3_2[8];
    simde_poly16_t r5_1[8];
    simde_poly16_t r7_0[8];
  } test_vec[] = {
    { {  SIMDE_POLY16_C(   45106),  SIMDE_POLY16_C(   38241),  SIMDE_POLY16_C(    4836),  SIMDE_POLY16_C(   40111),
         SIMDE_POLY16_C(   37552),  SIMDE_POLY16_C(   53688),  SIMDE_POLY16_C(   17469),  SIMDE_POLY16_C(   24387) },
      {  SIMDE_POLY16_C(   47087),  SIMDE_POLY16_C(   53333),  SIMDE_POLY16_C(   17428),  SIMDE_POLY16_C(   45727) },
      {  SIMDE_POLY16_C(   45727),  SIMDE_POLY16_C(   38241),  SIMDE_POLY16_C(    4836),  SIMDE_POLY16_C(   40111),
         SIMDE_POLY16_C(   37552),  SIMDE_POLY16_C(   53688),  SIMDE_POLY16_C(   17469),  SIMDE_POLY16_C(   24387) },
      {  SIMDE_POLY16_C(   45106),  SIMDE_POLY16_C(   38241),  SIMDE_POLY16_C(    4836),  SIMDE_POLY16_C(   17428),
         SIMDE_POLY16_C(   37552),  SIMDE_POLY16_C(   53688),  SIMDE_POLY16_C(   17469),  SIMDE_POLY16_C(   24387) },
      {  SIMDE_POLY16_C(   45106),  SIMDE_POLY16_C(   38241),  SIMDE_POLY16_C(    4836),  SIMDE_POLY16_C(   40111),
         SIMDE_POLY16_C(   37552),  SIMDE_POLY16_C(   53333),  SIMDE_POLY16_C(   17469),  SIMDE_POLY16_C(   24387) },
      {  SIMDE_POLY16_C(   45106),  SIMDE_POLY16_C(   38241),  SIMDE_POLY16_C(    4836),  SIMDE_POLY16_C(   40111),
         SIMDE_POLY16_C(   37552),  SIMDE_POLY16_C(   53688),  SIMDE_POLY16_C(   17469),  SIMDE_POLY16_C(   47087) } },
    { {  SIMDE_POLY16_C(    5206),  SIMDE_POLY16_C(   60332),  SIMDE_POLY16_C(   40277),  SIMDE_POLY16_C(   19674),
         SIMDE_POLY16_C(    6622),  SIMDE_POLY16_C(   38757),  SIMDE_POLY16_C(   64251),  SIMDE_POLY16_C(   47386) },
      {  SIMDE_POLY16_C(    8478),  SIMDE_POLY16_C(    4749),  SIMDE_POLY16_C(   53363),  SIMDE_POLY16_C(   29869) },
      {  SIMDE_POLY16_C(   29869),  SIMDE_POLY16_C(   60332),  SIMDE_POLY16_C(   40277),  SIMDE_POLY16_C(   19674),
         SIMDE_POLY16_C(    6622),  SIMDE_POLY16_C(   38757),  SIMDE_POLY16_C(   64251),  SIMDE_POLY16_C(   47386) },
      {  SIMDE_POLY16_C(    5206),  SIMDE_POLY16_C(   60332),  SIMDE_POLY16_C(   40277),  SIMDE_POLY16_C(   53363),
         SIMDE_POLY16_C(    6622),  SIMDE_POLY16_C(   38757),  SIMDE_POLY16_C(   64251),  SIMDE_POLY16_C(   47386) },
      {  SIMDE_POLY16_C(    5206),  SIMDE_POLY16_C(   60332),  SIMDE_POLY16_C(   40277),  SIMDE_POLY16_C(   19674),
         SIMDE_POLY16_C(    6622),  SIMDE_POLY16_C(    4749),  SIMDE_POLY16_C(   64251),  SIMDE_POLY16_C(   47386) },
      {  SIMDE_POLY16_C(    5206),  SIMDE_POLY16_C(   60332),  SIMDE_POLY16_C(   40277),  SIMDE_POLY16_C(   19674),
         SIMDE_POLY16_C(    6622),  SIMDE_POLY16_C(   38757),  SIMDE_POLY16_C(   64251),  SIMDE_POLY16_C(    8478) } },
    { {  SIMDE_POLY16_C(   59206),  SIMDE_POLY16_C(   36412),  SIMDE_POLY16_C(   15257),  SIMDE_POLY16_C(   46944),
         SIMDE_POLY16_C(   46282),  SIMDE_POLY16_C(   17117),  SIMDE_POLY16_C(   45233),  SIMDE_POLY16_C(    4994) },
      {  SIMDE_POLY16_C(   46395),  SIMDE_POLY16_C(   50547),  SIMDE_POLY16_C(   19830),  SIMDE_POLY16_C(   44578) },
      {  SIMDE_POLY16_C(   44578),  SIMDE_POLY16_C(   36412),  SIMDE_POLY16_C(   15257),  SIMDE_POLY16_C(   46944),
         SIMDE_POLY16_C(   46282),  SIMDE_POLY16_C(   17117),  SIMDE_POLY16_C(   45233),  SIMDE_POLY16_C(    4994) },
      {  SIMDE_POLY16_C(   59206),  SIMDE_POLY16_C(   36412),  SIMDE_POLY16_C(   15257),  SIMDE_POLY16_C(   19830),
         SIMDE_POLY16_C(   46282),  SIMDE_POLY16_C(   17117),  SIMDE_POLY16_C(   45233),  SIMDE_POLY16_C(    4994) },
      {  SIMDE_POLY16_C(   59206),  SIMDE_POLY16_C(   36412),  SIMDE_POLY16_C(   15257),  SIMDE_POLY16_C(   46944),
         SIMDE_POLY16_C(   46282),  SIMDE_POLY16_C(   50547),  SIMDE_POLY16_C(   45233),  SIMDE_POLY16_C(    4994) },
      {  SIMDE_POLY16_C(   59206),  SIMDE_POLY16_C(   36412),  SIMDE_POLY16_C(   15257),  SIMDE_POLY16_C(   46944),
         SIMDE_POLY16_C(   46282),  SIMDE_POLY16_C(   17117),  SIMDE_POLY16_C(   45233),  SIMDE_POLY16_C(   46395) } },
    { {  SIMDE_POLY16_C(   13682),  SIMDE_POLY16_C(   54233),  SIMDE_POLY16_C(   15911),  SIMDE_POLY16_C(   26730),
         SIMDE_POLY16_C(     502),  SIMDE_POLY16_C(   64753),  SIMDE_POLY16_C(   30819),  SIMDE_POLY16_C(   45749) },
      {  SIMDE_POLY16_C(   24828),  SIMDE_POLY16_C(   29679),  SIMDE_POLY16_C(   21740),  SIMDE_POLY16_C(   34938) },
      {  SIMDE_POLY16_C(   34938),  SIMDE_POLY16_C(   54233),  SIMDE_POLY16_C(   15911),  SIMDE_POLY16_C(   26730),
         SIMDE_POLY16_C(     502),  SIMDE_POLY16_C(   64753),  SIMDE_POLY16_C(   30819),  SIMDE_POLY16_C(   45749) },
      {  SIMDE_POLY16_C(   13682),  SIMDE_POLY16_C(   54233),  SIMDE_POLY16_C(   15911),  SIMDE_POLY16_C(   21740),
         SIMDE_POLY16_C(     502),  SIMDE_POLY16_C(   64753),  SIMDE_POLY16_C(   30819),  SIMDE_POLY16_C(   45749) },
      {  SIMDE_POLY16_C(   13682),  SIMDE_POLY16_C(   54233),  SIMDE_POLY16_C(   15911),  SIMDE_POLY16_C(   26730),
         SIMDE_POLY16_C(     502),  SIMDE_POLY16_C(   29679),  SIMDE_POLY16_C(   30819),  SIMDE_POLY16_C(   45749) },
      {  SIMDE_POLY16_C(   13682),  SIMDE_POLY16_C(   54233),  SIMDE_POLY16_C(   15911),  SIMDE_POLY16_C(   26730),
         SIMDE_POLY16_C(     502),  SIMDE_POLY16_C(   64753),  SIMDE_POLY16_C(   30819),  SIMDE_POLY16_C(   24828) } },
    { {  SIMDE_POLY16_C(   12489),  SIMDE_POLY16_C(    1881),  SIMDE_POLY16_C(   42262),  SIMDE_POLY16_C(   53977),
         SIMDE_POLY16_C(   19091),  SIMDE_POLY16_C(   33756),  SIMDE_POLY16_C(   22902),  SIMDE_POLY16_C(   39968) },
      {  SIMDE_POLY16_C(     373),  SIMDE_POLY16_C(   54089),  SIMDE_POLY16_C(   12533),  SIMDE_POLY16_C(   41276) },
      {  SIMDE_POLY16_C(   41276),  SIMDE_POLY16_C(    1881),  SIMDE_POLY16_C(   42262),  SIMDE_POLY16_C(   53977),
         SIMDE_POLY16_C(   19091),  SIMDE_POLY16_C(   33756),  SIMDE_POLY16_C(   22902),  SIMDE_POLY16_C(   39968) },
      {  SIMDE_POLY16_C(   12489),  SIMDE_POLY16_C(    1881),  SIMDE_POLY16_C(   42262),  SIMDE_POLY16_C(   12533),
         SIMDE_POLY16_C(   19091),  SIMDE_POLY16_C(   33756),  SIMDE_POLY16_C(   22902),  SIMDE_POLY16_C(   39968) },
      {  SIMDE_POLY16_C(   12489),  SIMDE_POLY16_C(    1881),  SIMDE_POLY16_C(   42262),  SIMDE_POLY16_C(   53977),
         SIMDE_POLY16_C(   19091),  SIMDE_POLY16_C(   54089),  SIMDE_POLY16_C(   22902),  SIMDE_POLY16_C(   39968) },
      {  SIMDE_POLY16_C(   12489),  SIMDE_POLY16_C(    1881),  SIMDE_POLY16_C(   42262),  SIMDE_POLY16_C(   53977),
         SIMDE_POLY16_C(   19091),  SIMDE_POLY16_C(   33756),  SIMDE_POLY16_C(   22902),  SIMDE_POLY16_C(     373) } },
    { {  SIMDE_POLY16_C(    8219),  SIMDE_POLY16_C(   44521),  SIMDE_POLY16_C(   54001),  SIMDE_POLY16_C(    7888),
         SIMDE_POLY16_C(   57460),  SIMDE_POLY16_C(   14245),  SIMDE_POLY16_C(   48545),  SIMDE_POLY16_C(   24933) },
      {  SIMDE_POLY16_C(   62999),  SIMDE_POLY16_C(   52731),  SIMDE_POLY16_C(   45056),  SIMDE_POLY16_C(   13736) },
      {  SIMDE_POLY16_C(   13736),  SIMDE_POLY16_C(   44521),  SIMDE_POLY16_C(   54001),  SIMDE_POLY16_C(    7888),
         SIMDE_POLY16_C(   57460),  SIMDE_POLY16_C(   14245),  SIMDE_POLY16_C(   48545),  SIMDE_POLY16_C(   24933) },
      {  SIMDE_POLY16_C(    8219),  SIMDE_POLY16_C(   44521),  SIMDE_POLY16_C(   54001),  SIMDE_POLY16_C(   45056),
         SIMDE_POLY16_C(   57460),  SIMDE_POLY16_C(   14245),  SIMDE_POLY16_C(   48545),  SIMDE_POLY16_C(   24933) },
      {  SIMDE_POLY16_C(    8219),  SIMDE_POLY16_C(   44521),  SIMDE_POLY16_C(   54001),  SIMDE_POLY16_C(    7888),
         SIMDE_POLY16_C(   57460),  SIMDE_POLY16_C(   52731),  SIMDE_POLY16_C(   48545),  SIMDE_POLY16_C(   24933) },
      {  SIMDE_POLY16_C(    8219),  SIMDE_POLY16_C(   44521),  SIMDE_POLY16_C(   54001),  SIMDE_POLY16_C(    7888),
         SIMDE_POLY16_C(   57460),  SIMDE_POLY16_C(   14245),  SIMDE_POLY16_C(   48545),  SIMDE_POLY16_C(   62999) } },
    { {  SIMDE_POLY16_C(   17803),  SIMDE_POLY16_C(   23302),  SIMDE_POLY16_C(   51288),  SIMDE_POLY16_C(    6738),
         SIMDE_POLY16_C(   26381),  SIMDE_POLY16_C(   44920),  SIMDE_POLY16_C(     438),  SIMDE_POLY16_C(   12440) },
      {  SIMDE_POLY16_C(   64520),  SIMDE_POLY16_C(    6608),  SIMDE_POLY16_C(   27242),  SIMDE_POLY16_C(    9986) },
      {  SIMDE_POLY16_C(    9986),  SIMDE_POLY16_C(   23302),  SIMDE_POLY16_C(   51288),  SIMDE_POLY16_C(    6738),
         SIMDE_POLY16_C(   26381),  SIMDE_POLY16_C(   44920),  SIMDE_POLY16_C(     438),  SIMDE_POLY16_C(   12440) },
      {  SIMDE_POLY16_C(   17803),  SIMDE_POLY16_C(   23302),  SIMDE_POLY16_C(   51288),  SIMDE_POLY16_C(   27242),
         SIMDE_POLY16_C(   26381),  SIMDE_POLY16_C(   44920),  SIMDE_POLY16_C(     438),  SIMDE_POLY16_C(   12440) },
      {  SIMDE_POLY16_C(   17803),  SIMDE_POLY16_C(   23302),  SIMDE_POLY16_C(   51288),  SIMDE_POLY16_C(    6738),
         SIMDE_POLY16_C(   26381),  SIMDE_POLY16_C(    6608),  SIMDE_POLY16_C(     438),  SIMDE_POLY16_C(   12440) },
      {  SIMDE_POLY16_C(   17803),  SIMDE_POLY16_C(   23302),  SIMDE_POLY16_C(   51288),  SIMDE_POLY16_C(    6738),
         SIMDE_POLY16_C(   26381),  SIMDE_POLY16_C(   44920),  SIMDE_POLY16_C(     438),  SIMDE_POLY16_C(   64520) } },
    { {  SIMDE_POLY16_C(   40969),  SIMDE_POLY16_C(   63552),  SIMDE_POLY16_C(   36257),  SIMDE_POLY16_C(    5157),
         SIMDE_POLY16_C(   49006),  SIMDE_POLY16_C(    3329),  SIMDE_POLY16_C(   25930),  SIMDE_POLY16_C(   37093) },
      {  SIMDE_POLY16_C(   24602),  SIMDE_POLY16_C(   27093),  SIMDE_POLY16_C(   33126),  SIMDE_POLY16_C(   48029) },
      {  SIMDE_POLY16_C(   48029),  SIMDE_POLY16_C(   63552),  SIMDE_POLY16_C(   36257),  SIMDE_POLY16_C(    5157),
         SIMDE_POLY16_C(   49006),  SIMDE_POLY16_C(    3329),  SIMDE_POLY16_C(   25930),  SIMDE_POLY16_C(   37093) },
      {  SIMDE_POLY16_C(   40969),  SIMDE_POLY16_C(   63552),  SIMDE_POLY16_C(   36257),  SIMDE_POLY16_C(   33126),
         SIMDE_POLY16_C(   49006),  SIMDE_POLY16_C(    3329),  SIMDE_POLY16_C(   25930),  SIMDE_POLY16_C(   37093) },
      {  SIMDE_POLY16_C(   40969),  SIMDE_POLY16_C(   63552),  SIMDE_POLY16_C(   36257),  SIMDE_POLY16_C(    5157),
         SIMDE_POLY16_C(   49006),  SIMDE_POLY16_C(   27093),  SIMDE_POLY16_C(   25930),  SIMDE_POLY16_C(   37093) },
      {  SIMDE_POLY16_C(   40969),  SIMDE_POLY16_C(   63552),  SIMDE_POLY16_C(   36257),  SIMDE_POLY16_C(    5157),
         SIMDE_POLY16_C(   49006),  SIMDE_POLY16_C(    3329),  SIMDE_POLY16_C(   25930),  SIMDE_POLY16_C(   24602) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly16x8_t a = simde_vld1q_p16(test_vec[i].a);
    simde_poly16x4_t b = simde_vld1_p16(test_vec[i].b);

    simde_poly16x8_t r0_3 = simde_vcopyq_lane_p16(a, 0, b, 3);
    simde_poly16x8_t r3_2 = simde_vcopyq_lane_p16(a, 3, b, 2);
    simde_poly16x8_t r5_1 = simde_vcopyq_lane_p16(a, 5, b, 1);
    simde_poly16x8_t r7_0 = simde_vcopyq_lane_p16(a, 7, b, 0);

    simde_test_arm_neon_assert_equal_p16x8(r0_3, simde_vld1q_p16(test_vec[i].r0_3));
    simde_test_arm_neon_assert_equal_p16x8(r3_2, simde_vld1q_p16(test_vec[i].r3_2));
    simde_test_arm_neon_assert_equal_p16x8(r5_1, simde_vld1q_p16(test_vec[i].r5_1));
    simde_test_arm_neon_assert_equal_p16x8(r7_0, simde_vld1q_p16(test_vec[i].r7_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly16x8_t a = simde_test_arm_neon_random_p16x8();
    simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
    simde_poly16x8_t r0_3 = simde_vcopyq_lane_p16(a, 0, b, 3);
    simde_poly16x8_t r3_2 = simde_vcopyq_lane_p16(a, 3, b, 2);
    simde_poly16x8_t r5_1 = simde_vcopyq_lane_p16(a, 5, b, 1);
    simde_poly16x8_t r7_0 = simde_vcopyq_lane_p16(a, 7, b, 0);

    simde_test_arm_neon_write_p16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r3_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r5_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r7_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly64_t a[2];
    simde_poly64_t b[1];
    simde_poly64_t r0_0[2];
    simde_poly64_t r1_0[2];
  } test_vec[] = {
    { {  SIMDE_POLY64_C(13088088903368892823),  SIMDE_POLY64_C(11535793185305623270) },
      {  SIMDE_POLY64_C( 5924534224249363076) },
      {  SIMDE_POLY64_C( 5924534224249363076),  SIMDE_POLY64_C(11535793185305623270) },
      {  SIMDE_POLY64_C(13088088903368892823),  SIMDE_POLY64_C( 5924534224249363076) } },
    { {  SIMDE_POLY64_C(18271803387774738026),  SIMDE_POLY64_C(  840258608695505479) },
      {  SIMDE_POLY64_C(18149383589595975661) },
      {  SIMDE_POLY64_C(18149383589595975661),  SIMDE_POLY64_C(  840258608695505479) },
      {  SIMDE_POLY64_C(18271803387774738026),  SIMDE_POLY64_C(18149383589595975661) } },
    { {  SIMDE_POLY64_C( 1426608908501472439),  SIMDE_POLY64_C(17579859043434713714) },
      {  SIMDE_POLY64_C( 3863851528950464347) },
      {  SIMDE_POLY64_C( 3863851528950464347),  SIMDE_POLY64_C(17579859043434713714) },
      {  SIMDE_POLY64_C( 1426608908501472439),  SIMDE_POLY64_C( 3863851528950464347) } },
    { {  SIMDE_POLY64_C( 2887535003750440669),  SIMDE_POLY64_C( 9706127502422434237) },
      {  SIMDE_POLY64_C(  585016102035113102) },
      {  SIMDE_POLY64_C(  585016102035113102),  SIMDE_POLY64_C( 9706127502422434237) },
      {  SIMDE_POLY64_C( 2887535003750440669),  SIMDE_POLY64_C(  585016102035113102) } },
    { {  SIMDE_POLY64_C(11767062204421784175),  SIMDE_POLY64_C( 6611989932014277560) },
      {  SIMDE_POLY64_C( 1728274990776995191) },
      {  SIMDE_POLY64_C( 1728274990776995191),  SIMDE_POLY64_C( 6611989932014277560) },
      {  SIMDE_POLY64_C(11767062204421784175),  SIMDE_POLY64_C( 1728274990776995191) } },
    { {  SIMDE_POLY64_C(11529019270513437728),  SIMDE_POLY64_C( 7695879568420221205) },
      {  SIMDE_POLY64_C(15611393117687386357) },
      {  SIMDE_POLY64_C(15611393117687386357),  SIMDE_POLY64_C( 7695879568420221205) },
      {  SIMDE_POLY64_C(11529019270513437728),  SIMDE_POLY64_C(15611393117687386357) } },
    { {  SIMDE_POLY64_C(11313965299073639025),  SIMDE_POLY64_C( 5304856213118510799) },
      {  SIMDE_POLY64_C( 4627035757479335269) },
      {  SIMDE_POLY64_C( 4627035757479335269),  SIMDE_POLY64_C( 5304856213118510799) },
      {  SIMDE_POLY64_C(11313965299073639025),  SIMDE_POLY64_C( 4627035757479335269) } },
    { {  SIMDE_POLY64_C(10403068332418732573),  SIMDE_POLY64_C(18189821306737318447) },
      {  SIMDE_POLY64_C(15540049615037950397) },
      {  SIMDE_POLY64_C(15540049615037950397),  SIMDE_POLY64_C(18189821306737318447) },
      {  SIMDE_POLY64_C(10403068332418732573),  SIMDE_POLY64_C(15540049615037950397) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly64x2_t a = simde_vld1q_p64(test_vec[i].a);
    simde_poly64x1_t b = simde_vld1_p64(test_vec[i].b);

    simde_poly64x2_t r0_0 = simde_vcopyq_lane_p64(a, 0, b, 0);
    simde_poly64x2_t r1_0 = simde_vcopyq_lane_p64(a, 1, b, 0);

    simde_test_arm_neon_assert_equal_p64x2(r0_0, simde_vld1q_p64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_p64x2(r1_0, simde_vld1q_p64(test_vec[i].r1_0));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly64x2_t a = simde_test_arm_neon_random_p64x2();
    simde_poly64x1_t b = simde_test_arm_neon_random_p64x1();
    simde_poly64x2_t r0_0 = simde_vcopyq_lane_p64(a, 0, b, 0);
    simde_poly64x2_t r1_0 = simde_vcopyq_lane_p64(a, 1, b, 0);

    simde_test_arm_neon_write_p64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r1_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly8_t a[16];
    simde_poly8_t b[16];
    simde_poly8_t r0_15[16];
    simde_poly8_t r3_12[16];
    simde_poly8_t r7_8[16];
    simde_poly8_t r11_4[16];
    simde_poly8_t r15_1[16];
  } test_vec[] = {
    { {  SIMDE_POLY8_C(  246),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  144),  SIMDE_POLY8_C(   17),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  150),
         SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(  193),  SIMDE_POLY8_C(   93),
         SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  228) },
      {  SIMDE_POLY8_C(  163),  SIMDE_POLY8_C(  179),  SIMDE_POLY8_C(  104),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   51),  SIMDE_POLY8_C(  215),  SIMDE_POLY8_C(  174),
         SIMDE_POLY8_C(   37),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(   16),  SIMDE_POLY8_C(  157),
         SIMDE_POLY8_C(   67),  SIMDE_POLY8_C(  118),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(   84) },
      {  SIMDE_POLY8_C(   84),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  144),  SIMDE_POLY8_C(   17),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  150),
         SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(  193),  SIMDE_POLY8_C(   93),
         SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  228) },
      {  SIMDE_POLY8_C(  246),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  144),  SIMDE_POLY8_C(   67),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  150),
         SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(  193),  SIMDE_POLY8_C(   93),
         SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  228) },
      {  SIMDE_POLY8_C(  246),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  144),  SIMDE_POLY8_C(   17),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(   37),
         SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(  193),  SIMDE_POLY8_C(   93),
         SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  228) },
      {  SIMDE_POLY8_C(  246),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  144),  SIMDE_POLY8_C(   17),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  150),
         SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(  193),  SIMDE_POLY8_C(  232),
         SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  228) },
      {  SIMDE_POLY8_C(  246),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  144),  SIMDE_POLY8_C(   17),
         SIMDE_POLY8_C(  184),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  185),  SIMDE_POLY8_C(  150),
         SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(  193),  SIMDE_POLY8_C(   93),
         SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  223),  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  179) } },
    { {  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(  122),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(  147),
         SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  241) },
      {  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  173),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(   20),
         SIMDE_POLY8_C(  151),  SIMDE_POLY8_C(  249),  SIMDE_POLY8_C(  195),  SIMDE_POLY8_C(  179),
         SIMDE_POLY8_C(   11),  SIMDE_POLY8_C(   61),  SIMDE_POLY8_C(   82),  SIMDE_POLY8_C(  120),
         SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(  192),  SIMDE_POLY8_C(   93),  SIMDE_POLY8_C(  178) },
      {  SIMDE_POLY8_C(  178),  SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(  122),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(  147),
         SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  241) },
      {  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(   20),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(  147),
         SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  241) },
      {  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(  122),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(   11),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(  147),
         SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  241) },
      {  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(  122),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(  151),
         SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  241) },
      {  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(  229),  SIMDE_POLY8_C(   20),  SIMDE_POLY8_C(  122),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(   32),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  169),  SIMDE_POLY8_C(  181),  SIMDE_POLY8_C(  147),
         SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  103),  SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(  173) } },
    { {  SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   42),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   22),
         SIMDE_POLY8_C(   22),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(   19),  SIMDE_POLY8_C(  207),
         SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  175) },
      {  SIMDE_POLY8_C(  167),  SIMDE_POLY8_C(   39),  SIMDE_POLY8_C(  158),  SIMDE_POLY8_C(  122),
         SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   90),  SIMDE_POLY8_C(  131),  SIMDE_POLY8_C(  127),
         SIMDE_POLY8_C(   57),  SIMDE_POLY8_C(  210),  SIMDE_POLY8_C(  100),  SIMDE_POLY8_C(  133),
         SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(   80) },
      {  SIMDE_POLY8_C(   80),  SIMDE_POLY8_C(   42),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   22),
         SIMDE_POLY8_C(   22),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(   19),  SIMDE_POLY8_C(  207),
         SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  175) },
      {  SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   42),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(   22),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(   19),  SIMDE_POLY8_C(  207),
         SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  175) },
      {  SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   42),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   22),
         SIMDE_POLY8_C(   22),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(   19),  SIMDE_POLY8_C(   57),
         SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  175) },
      {  SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   42),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   22),
         SIMDE_POLY8_C(   22),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(   19),  SIMDE_POLY8_C(  207),
         SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(   43),
         SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  175) },
      {  SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   42),  SIMDE_POLY8_C(  232),  SIMDE_POLY8_C(   22),
         SIMDE_POLY8_C(   22),  SIMDE_POLY8_C(  177),  SIMDE_POLY8_C(   19),  SIMDE_POLY8_C(  207),
         SIMDE_POLY8_C(  243),  SIMDE_POLY8_C(   35),  SIMDE_POLY8_C(  139),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(   39) } },
    { {  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  105),
         SIMDE_POLY8_C(  211),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   53),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  235),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  134),  SIMDE_POLY8_C(  244),  SIMDE_POLY8_C(    1) },
      {  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(   16),  SIMDE_POLY8_C(  118),  SIMDE_POLY8_C(  213),
         SIMDE_POLY8_C(   68),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(   78),  SIMDE_POLY8_C(   94),
         SIMDE_POLY8_C(   96),  SIMDE_POLY8_C(   68),  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(  218),
         SIMDE_POLY8_C(  191),  SIMDE_POLY8_C(  115),  SIMDE_POLY8_C(  146),  SIMDE_POLY8_C(  235) },
      {  SIMDE_POLY8_C(  235),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  105),
         SIMDE_POLY8_C(  211),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   53),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  235),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  134),  SIMDE_POLY8_C(  244),  SIMDE_POLY8_C(    1) },
      {  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  191),
         SIMDE_POLY8_C(  211),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   53),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  235),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  134),  SIMDE_POLY8_C(  244),  SIMDE_POLY8_C(    1) },
      {  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  105),
         SIMDE_POLY8_C(  211),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   96),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  235),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  134),  SIMDE_POLY8_C(  244),  SIMDE_POLY8_C(    1) },
      {  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  105),
         SIMDE_POLY8_C(  211),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   53),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(   68),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  134),  SIMDE_POLY8_C(  244),  SIMDE_POLY8_C(    1) },
      {  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(    5),  SIMDE_POLY8_C(  105),
         SIMDE_POLY8_C(  211),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   43),  SIMDE_POLY8_C(   53),
         SIMDE_POLY8_C(  171),  SIMDE_POLY8_C(   15),  SIMDE_POLY8_C(   83),  SIMDE_POLY8_C(  235),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(  134),  SIMDE_POLY8_C(  244),  SIMDE_POLY8_C(   16) } },
    { {  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   45),  SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(   76),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  127),  SIMDE_POLY8_C(  154),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(   70) },
      {  SIMDE_POLY8_C(  249),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(   59),
         SIMDE_POLY8_C(    2),  SIMDE_POLY8_C(   33),  SIMDE_POLY8_C(   73),  SIMDE_POLY8_C(   97),
         SIMDE_POLY8_C(  161),  SIMDE_POLY8_C(  222),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   96),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   99),  SIMDE_POLY8_C(  202) },
      {  SIMDE_POLY8_C(  202),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   45),  SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(   76),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  127),  SIMDE_POLY8_C(  154),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(   70) },
      {  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(  205),
         SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   45),  SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(   76),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  127),  SIMDE_POLY8_C(  154),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(   70) },
      {  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   45),  SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(  161),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  127),  SIMDE_POLY8_C(  154),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(   70) },
      {  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   45),  SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(   76),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  127),  SIMDE_POLY8_C(  154),  SIMDE_POLY8_C(    2),
         SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(   70) },
      {  SIMDE_POLY8_C(  110),  SIMDE_POLY8_C(  242),  SIMDE_POLY8_C(   72),  SIMDE_POLY8_C(   45),
         SIMDE_POLY8_C(   85),  SIMDE_POLY8_C(   45),  SIMDE_POLY8_C(  124),  SIMDE_POLY8_C(   76),
         SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  127),  SIMDE_POLY8_C(  154),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  152),  SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(   62),  SIMDE_POLY8_C(  143) } },
    { {  SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  113),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  243),
         SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(    0),
         SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   91) },
      {  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(   25),  SIMDE_POLY8_C(  230),  SIMDE_POLY8_C(  142),
         SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   57),  SIMDE_POLY8_C(    7),
         SIMDE_POLY8_C(  239),  SIMDE_POLY8_C(  176),  SIMDE_POLY8_C(    8),  SIMDE_POLY8_C(   43),
         SIMDE_POLY8_C(   54),  SIMDE_POLY8_C(  231),  SIMDE_POLY8_C(   29),  SIMDE_POLY8_C(   24) },
      {  SIMDE_POLY8_C(   24),  SIMDE_POLY8_C(  113),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  243),
         SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(    0),
         SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   91) },
      {  SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  113),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(   54),
         SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  243),
         SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(    0),
         SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   91) },
      {  SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  113),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  239),
         SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(    0),
         SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   91) },
      {  SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  113),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  243),
         SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(   76),
         SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   91) },
      {  SIMDE_POLY8_C(  205),  SIMDE_POLY8_C(  113),  SIMDE_POLY8_C(  133),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(   49),  SIMDE_POLY8_C(  168),  SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  243),
         SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   38),  SIMDE_POLY8_C(   75),  SIMDE_POLY8_C(    0),
         SIMDE_POLY8_C(  164),  SIMDE_POLY8_C(  135),  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   25) } },
    { {  SIMDE_POLY8_C(   41),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  142),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(   46),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(  144) },
      {  SIMDE_POLY8_C(   28),  SIMDE_POLY8_C(   82),  SIMDE_POLY8_C(  123),  SIMDE_POLY8_C(  131),
         SIMDE_POLY8_C(  204),  SIMDE_POLY8_C(  199),  SIMDE_POLY8_C(  247),  SIMDE_POLY8_C(  126),
         SIMDE_POLY8_C(   30),  SIMDE_POLY8_C(  111),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   50),
         SIMDE_POLY8_C(  252),  SIMDE_POLY8_C(   65),  SIMDE_POLY8_C(   21),  SIMDE_POLY8_C(  254) },
      {  SIMDE_POLY8_C(  254),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  142),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(   46),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(  144) },
      {  SIMDE_POLY8_C(   41),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  252),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(   46),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(  144) },
      {  SIMDE_POLY8_C(   41),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  142),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   30),
         SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(   46),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(  144) },
      {  SIMDE_POLY8_C(   41),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  142),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(  204),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(  144) },
      {  SIMDE_POLY8_C(   41),  SIMDE_POLY8_C(    0),  SIMDE_POLY8_C(   18),  SIMDE_POLY8_C(  142),
         SIMDE_POLY8_C(   56),  SIMDE_POLY8_C(  132),  SIMDE_POLY8_C(    1),  SIMDE_POLY8_C(   98),
         SIMDE_POLY8_C(  122),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   66),  SIMDE_POLY8_C(   46),
         SIMDE_POLY8_C(   71),  SIMDE_POLY8_C(   48),  SIMDE_POLY8_C(   59),  SIMDE_POLY8_C(   82) } },
    { {  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  183),
         SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   13),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  167) },
      {  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  212),  SIMDE_POLY8_C(  225),
         SIMDE_POLY8_C(  136),  SIMDE_POLY8_C(  233),  SIMDE_POLY8_C(    4),  SIMDE_POLY8_C(   29),
         SIMDE_POLY8_C(  196),  SIMDE_POLY8_C(  145),  SIMDE_POLY8_C(  157),  SIMDE_POLY8_C(  121),
         SIMDE_POLY8_C(   58),  SIMDE_POLY8_C(   57),  SIMDE_POLY8_C(  166),  SIMDE_POLY8_C(   79) },
      {  SIMDE_POLY8_C(   79),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  183),
         SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   13),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  167) },
      {  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(   58),
         SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   13),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  167) },
      {  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  183),
         SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  196),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   13),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  167) },
      {  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  183),
         SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(  136),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  167) },
      {  SIMDE_POLY8_C(  214),  SIMDE_POLY8_C(  112),  SIMDE_POLY8_C(   60),  SIMDE_POLY8_C(  183),
         SIMDE_POLY8_C(  213),  SIMDE_POLY8_C(  143),  SIMDE_POLY8_C(   98),  SIMDE_POLY8_C(  231),
         SIMDE_POLY8_C(  105),  SIMDE_POLY8_C(   97),  SIMDE_POLY8_C(   76),  SIMDE_POLY8_C(   13),
         SIMDE_POLY8_C(  190),  SIMDE_POLY8_C(   12),  SIMDE_POLY8_C(  121),  SIMDE_POLY8_C(  212) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly8x16_t a = simde_vld1q_p8(test_vec[i].a);
    simde_poly8x16_t b = simde_vld1q_p8(test_vec[i].b);

    simde_poly8x16_t r0_15 = simde_vcopyq_laneq_p8(a, 0, b, 15);
    simde_poly8x16_t r3_12 = simde_vcopyq_laneq_p8(a, 3, b, 12);
    simde_poly8x16_t r7_8 = simde_vcopyq_laneq_p8(a, 7, b, 8);
    simde_poly8x16_t r11_4 = simde_vcopyq_laneq_p8(a, 11, b, 4);
    simde_poly8x16_t r15_1 = simde_vcopyq_laneq_p8(a, 15, b, 1);

    simde_test_arm_neon_assert_equal_p8x16(r0_15, simde_vld1q_p8(test_vec[i].r0_15));
    simde_test_arm_neon_assert_equal_p8x16(r3_12, simde_vld1q_p8(test_vec[i].r3_12));
    simde_test_arm_neon_assert_equal_p8x16(r7_8, simde_vld1q_p8(test_vec[i].r7_8));
    simde_test_arm_neon_assert_equal_p8x16(r11_4, simde_vld1q_p8(test_vec[i].r11_4));
    simde_test_arm_neon_assert_equal_p8x16(r15_1, simde_vld1q_p8(test_vec[i].r15_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly8x16_t a = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t r0_15 = simde_vcopyq_laneq_p8(a, 0, b, 15);
    simde_poly8x16_t r3_12 = simde_vcopyq_laneq_p8(a, 3, b, 12);
    simde_poly8x16_t r7_8 = simde_vcopyq_laneq_p8(a, 7, b, 8);
    simde_poly8x16_t r11_4 = simde_vcopyq_laneq_p8(a, 11, b, 4);
    simde_poly8x16_t r15_1 = simde_vcopyq_laneq_p8(a, 15, b, 1);

    simde_test_arm_neon_write_p8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r0_15, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r3_12, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r7_8, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r11_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, r15_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly16_t a[8];
    simde_poly16_t b[8];
    simde_poly16_t r0_7[8];
    simde_poly16_t r1_6[8];
    simde_poly16_t r3_4[8];
    simde_poly16_t r5_3[8];
    simde_poly16_t r7_1[8];
  } test_vec[] = {
    { {  SIMDE_POLY16_C(   25081),  SIMDE_POLY16_C(   12133),  SIMDE_POLY16_C(   16658),  SIMDE_POLY16_C(   10269),
         SIMDE_POLY16_C(   62695),  SIMDE_POLY16_C(   42052),  SIMDE_POLY16_C(   28583),  SIMDE_POLY16_C(   55868) },
      {  SIMDE_POLY16_C(   64179),  SIMDE_POLY16_C(    3756),  SIMDE_POLY16_C(   15151),  SIMDE_POLY16_C(   33917),
         SIMDE_POLY16_C(   33797),  SIMDE_POLY16_C(   56243),  SIMDE_POLY16_C(   48168),  SIMDE_POLY16_C(   62591) },
      {  SIMDE_POLY16_C(   62591),  SIMDE_POLY16_C(   12133),  SIMDE_POLY16_C(   16658),  SIMDE_POLY16_C(   10269),
         SIMDE_POLY16_C(   62695),  SIMDE_POLY16_C(   42052),  SIMDE_POLY16_C(   28583),  SIMDE_POLY16_C(   55868) },
      {  SIMDE_POLY16_C(   25081),  SIMDE_POLY16_C(   48168),  SIMDE_POLY16_C(   16658),  SIMDE_POLY16_C(   10269),
         SIMDE_POLY16_C(   62695),  SIMDE_POLY16_C(   42052),  SIMDE_POLY16_C(   28583),  SIMDE_POLY16_C(   55868) },
      {  SIMDE_POLY16_C(   25081),  SIMDE_POLY16_C(   12133),  SIMDE_POLY16_C(   16658),  SIMDE_POLY16_C(   33797),
         SIMDE_POLY16_C(   62695),  SIMDE_POLY16_C(   42052),  SIMDE_POLY16_C(   28583),  SIMDE_POLY16_C(   55868) },
      {  SIMDE_POLY16_C(   25081),  SIMDE_POLY16_C(   12133),  SIMDE_POLY16_C(   16658),  SIMDE_POLY16_C(   10269),
         SIMDE_POLY16_C(   62695),  SIMDE_POLY16_C(   33917),  SIMDE_POLY16_C(   28583),  SIMDE_POLY16_C(   55868) },
      {  SIMDE_POLY16_C(   25081),  SIMDE_POLY16_C(   12133),  SIMDE_POLY16_C(   16658),  SIMDE_POLY16_C(   10269),
         SIMDE_POLY16_C(   62695),  SIMDE_POLY16_C(   42052),  SIMDE_POLY16_C(   28583),  SIMDE_POLY16_C(    3756) } },
    { {  SIMDE_POLY16_C(   42773),  SIMDE_POLY16_C(   60819),  SIMDE_POLY16_C(    5780),  SIMDE_POLY16_C(   38892),
         SIMDE_POLY16_C(   50295),  SIMDE_POLY16_C(   55830),  SIMDE_POLY16_C(   29603),  SIMDE_POLY16_C(    6234) },
      {  SIMDE_POLY16_C(   14631),  SIMDE_POLY16_C(   14975),  SIMDE_POLY16_C(   18813),  SIMDE_POLY16_C(   48357),
         SIMDE_POLY16_C(   43565),  SIMDE_POLY16_C(   52059),  SIMDE_POLY16_C(   49414),  SIMDE_POLY16_C(   62266) },
      {  SIMDE_POLY16_C(   62266),  SIMDE_POLY16_C(   60819),  SIMDE_POLY16_C(    5780),  SIMDE_POLY16_C(   38892),
         SIMDE_POLY16_C(   50295),  SIMDE_POLY16_C(   55830),  SIMDE_POLY16_C(   29603),  SIMDE_POLY16_C(    6234) },
      {  SIMDE_POLY16_C(   42773),  SIMDE_POLY16_C(   49414),  SIMDE_POLY16_C(    5780),  SIMDE_POLY16_C(   38892),
         SIMDE_POLY16_C(   50295),  SIMDE_POLY16_C(   55830),  SIMDE_POLY16_C(   29603),  SIMDE_POLY16_C(    6234) },
      {  SIMDE_POLY16_C(   42773),  SIMDE_POLY16_C(   60819),  SIMDE_POLY16_C(    5780),  SIMDE_POLY16_C(   43565),
         SIMDE_POLY16_C(   50295),  SIMDE_POLY16_C(   55830),  SIMDE_POLY16_C(   29603),  SIMDE_POLY16_C(    6234) },
      {  SIMDE_POLY16_C(   42773),  SIMDE_POLY16_C(   60819),  SIMDE_POLY16_C(    5780),  SIMDE_POLY16_C(   38892),
         SIMDE_POLY16_C(   50295),  SIMDE_POLY16_C(   48357),  SIMDE_POLY16_C(   29603),  SIMDE_POLY16_C(    6234) },
      {  SIMDE_POLY16_C(   42773),  SIMDE_POLY16_C(   60819),  SIMDE_POLY16_C(    5780),  SIMDE_POLY16_C(   38892),
         SIMDE_POLY16_C(   50295),  SIMDE_POLY16_C(   55830),  SIMDE_POLY16_C(   29603),  SIMDE_POLY16_C(   14975) } },
    { {  SIMDE_POLY16_C(   59618),  SIMDE_POLY16_C(   16122),  SIMDE_POLY16_C(   25506),  SIMDE_POLY16_C(   64566),
         SIMDE_POLY16_C(   25795),  SIMDE_POLY16_C(   55880),  SIMDE_POLY16_C(   14803),  SIMDE_POLY16_C(   20543) },
      {  SIMDE_POLY16_C(   40023),  SIMDE_POLY16_C(   25126),  SIMDE_POLY16_C(   26717),  SIMDE_POLY16_C(   35096),
         SIMDE_POLY16_C(   32251),  SIMDE_POLY16_C(   38772),  SIMDE_POLY16_C(    8275),  SIMDE_POLY16_C(   33753) },
      {  SIMDE_POLY16_C(   33753),  SIMDE_POLY16_C(   16122),  SIMDE_POLY16_C(   25506),  SIMDE_POLY16_C(   64566),
         SIMDE_POLY16_C(   25795),  SIMDE_POLY16_C(   55880),  SIMDE_POLY16_C(   14803),  SIMDE_POLY16_C(   20543) },
      {  SIMDE_POLY16_C(   59618),  SIMDE_POLY16_C(    8275),  SIMDE_POLY16_C(   25506),  SIMDE_POLY16_C(   64566),
         SIMDE_POLY16_C(   25795),  SIMDE_POLY16_C(   55880),  SIMDE_POLY16_C(   14803),  SIMDE_POLY16_C(   20543) },
      {  SIMDE_POLY16_C(   59618),  SIMDE_POLY16_C(   16122),  SIMDE_POLY16_C(   25506),  SIMDE_POLY16_C(   32251),
         SIMDE_POLY16_C(   25795),  SIMDE_POLY16_C(   55880),  SIMDE_POLY16_C(   14803),  SIMDE_POLY16_C(   20543) },
      {  SIMDE_POLY16_C(   59618),  SIMDE_POLY16_C(   16122),  SIMDE_POLY16_C(   25506),  SIMDE_POLY16_C(   64566),
         SIMDE_POLY16_C(   25795),  SIMDE_POLY16_C(   35096),  SIMDE_POLY16_C(   14803),  SIMDE_POLY16_C(   20543) },
      {  SIMDE_POLY16_C(   59618),  SIMDE_POLY16_C(   16122),  SIMDE_POLY16_C(   25506),  SIMDE_POLY16_C(   64566),
         SIMDE_POLY16_C(   25795),  SIMDE_POLY16_C(   55880),  SIMDE_POLY16_C(   14803),  SIMDE_POLY16_C(   25126) } },
    { {  SIMDE_POLY16_C(   43675),  SIMDE_POLY16_C(   35166),  SIMDE_POLY16_C(   34629),  SIMDE_POLY16_C(   36341),
         SIMDE_POLY16_C(   64989),  SIMDE_POLY16_C(    2813),  SIMDE_POLY16_C(   39062),  SIMDE_POLY16_C(   26525) },
      {  SIMDE_POLY16_C(   57069),  SIMDE_POLY16_C(   55607),  SIMDE_POLY16_C(   20903),  SIMDE_POLY16_C(   57247),
         SIMDE_POLY16_C(   36244),  SIMDE_POLY16_C(   62344),  SIMDE_POLY16_C(   41912),  SIMDE_POLY16_C(   44736) },
      {  SIMDE_POLY16_C(   44736),  SIMDE_POLY16_C(   35166),  SIMDE_POLY16_C(   34629),  SIMDE_POLY16_C(   36341),
         SIMDE_POLY16_C(   64989),  SIMDE_POLY16_C(    2813),  SIMDE_POLY16_C(   39062),  SIMDE_POLY16_C(   26525) },
      {  SIMDE_POLY16_C(   43675),  SIMDE_POLY16_C(   41912),  SIMDE_POLY16_C(   34629),  SIMDE_POLY16_C(   36341),
         SIMDE_POLY16_C(   64989),  SIMDE_POLY16_C(    2813),  SIMDE_POLY16_C(   39062),  SIMDE_POLY16_C(   26525) },
      {  SIMDE_POLY16_C(   43675),  SIMDE_POLY16_C(   35166),  SIMDE_POLY16_C(   34629),  SIMDE_POLY16_C(   36244),
         SIMDE_POLY16_C(   64989),  SIMDE_POLY16_C(    2813),  SIMDE_POLY16_C(   39062),  SIMDE_POLY16_C(   26525) },
      {  SIMDE_POLY16_C(   43675),  SIMDE_POLY16_C(   35166),  SIMDE_POLY16_C(   34629),  SIMDE_POLY16_C(   36341),
         SIMDE_POLY16_C(   64989),  SIMDE_POLY16_C(   57247),  SIMDE_POLY16_C(   39062),  SIMDE_POLY16_C(   26525) },
      {  SIMDE_POLY16_C(   43675),  SIMDE_POLY16_C(   35166),  SIMDE_POLY16_C(   34629),  SIMDE_POLY16_C(   36341),
         SIMDE_POLY16_C(   64989),  SIMDE_POLY16_C(    2813),  SIMDE_POLY16_C(   39062),  SIMDE_POLY16_C(   55607) } },
    { {  SIMDE_POLY16_C(   63367),  SIMDE_POLY16_C(   50618),  SIMDE_POLY16_C(   52629),  SIMDE_POLY16_C(   26557),
         SIMDE_POLY16_C(   49457),  SIMDE_POLY16_C(   55560),  SIMDE_POLY16_C(   59740),  SIMDE_POLY16_C(   54035) },
      {  SIMDE_POLY16_C(   35397),  SIMDE_POLY16_C(   27456),  SIMDE_POLY16_C(   19596),  SIMDE_POLY16_C(   23074),
         SIMDE_POLY16_C(   44230),  SIMDE_POLY16_C(   28458),  SIMDE_POLY16_C(   34027),  SIMDE_POLY16_C(   31882) },
      {  SIMDE_POLY16_C(   31882),  SIMDE_POLY16_C(   50618),  SIMDE_POLY16_C(   52629),  SIMDE_POLY16_C(   26557),
         SIMDE_POLY16_C(   49457),  SIMDE_POLY16_C(   55560),  SIMDE_POLY16_C(   59740),  SIMDE_POLY16_C(   54035) },
      {  SIMDE_POLY16_C(   63367),  SIMDE_POLY16_C(   34027),  SIMDE_POLY16_C(   52629),  SIMDE_POLY16_C(   26557),
         SIMDE_POLY16_C(   49457),  SIMDE_POLY16_C(   55560),  SIMDE_POLY16_C(   59740),  SIMDE_POLY16_C(   54035) },
      {  SIMDE_POLY16_C(   63367),  SIMDE_POLY16_C(   50618),  SIMDE_POLY16_C(   52629),  SIMDE_POLY16_C(   44230),
         SIMDE_POLY16_C(   49457),  SIMDE_POLY16_C(   55560),  SIMDE_POLY16_C(   59740),  SIMDE_POLY16_C(   54035) },
      {  SIMDE_POLY16_C(   63367),  SIMDE_POLY16_C(   50618),  SIMDE_POLY16_C(   52629),  SIMDE_POLY16_C(   26557),
         SIMDE_POLY16_C(   49457),  SIMDE_POLY16_C(   23074),  SIMDE_POLY16_C(   59740),  SIMDE_POLY16_C(   54035) },
      {  SIMDE_POLY16_C(   63367),  SIMDE_POLY16_C(   50618),  SIMDE_POLY16_C(   52629),  SIMDE_POLY16_C(   26557),
         SIMDE_POLY16_C(   49457),  SIMDE_POLY16_C(   55560),  SIMDE_POLY16_C(   59740),  SIMDE_POLY16_C(   27456) } },
    { {  SIMDE_POLY16_C(   23413),  SIMDE_POLY16_C(   40483),  SIMDE_POLY16_C(      63),  SIMDE_POLY16_C(   52152),
         SIMDE_POLY16_C(   38959),  SIMDE_POLY16_C(    4929),  SIMDE_POLY16_C(   21435),  SIMDE_POLY16_C(   62787) },
      {  SIMDE_POLY16_C(   49317),  SIMDE_POLY16_C(   18538),  SIMDE_POLY16_C(   17793),  SIMDE_POLY16_C(   61704),
         SIMDE_POLY16_C(   41671),  SIMDE_POLY16_C(   53824),  SIMDE_POLY16_C(   25678),  SIMDE_POLY16_C(   37125) },
      {  SIMDE_POLY16_C(   37125),  SIMDE_POLY16_C(   40483),  SIMDE_POLY16_C(      63),  SIMDE_POLY16_C(   52152),
         SIMDE_POLY16_C(   38959),  SIMDE_POLY16_C(    4929),  SIMDE_POLY16_C(   21435),  SIMDE_POLY16_C(   62787) },
      {  SIMDE_POLY16_C(   23413),  SIMDE_POLY16_C(   25678),  SIMDE_POLY16_C(      63),  SIMDE_POLY16_C(   52152),
         SIMDE_POLY16_C(   38959),  SIMDE_POLY16_C(    4929),  SIMDE_POLY16_C(   21435),  SIMDE_POLY16_C(   62787) },
      {  SIMDE_POLY16_C(   23413),  SIMDE_POLY16_C(   40483),  SIMDE_POLY16_C(      63),  SIMDE_POLY16_C(   41671),
         SIMDE_POLY16_C(   38959),  SIMDE_POLY16_C(    4929),  SIMDE_POLY16_C(   21435),  SIMDE_POLY16_C(   62787) },
      {  SIMDE_POLY16_C(   23413),  SIMDE_POLY16_C(   40483),  SIMDE_POLY16_C(      63),  SIMDE_POLY16_C(   52152),
         SIMDE_POLY16_C(   38959),  SIMDE_POLY16_C(   61704),  SIMDE_POLY16_C(   21435),  SIMDE_POLY16_C(   62787) },
      {  SIMDE_POLY16_C(   23413),  SIMDE_POLY16_C(   40483),  SIMDE_POLY16_C(      63),  SIMDE_POLY16_C(   52152),
         SIMDE_POLY16_C(   38959),  SIMDE_POLY16_C(    4929),  SIMDE_POLY16_C(   21435),  SIMDE_POLY16_C(   18538) } },
    { {  SIMDE_POLY16_C(   41696),  SIMDE_POLY16_C(    7636),  SIMDE_POLY16_C(   15486),  SIMDE_POLY16_C(     842),
         SIMDE_POLY16_C(   14005),  SIMDE_POLY16_C(   39402),  SIMDE_POLY16_C(   58283),  SIMDE_POLY16_C(    8456) },
      {  SIMDE_POLY16_C(   47670),  SIMDE_POLY16_C(    2324),  SIMDE_POLY16_C(   19969),  SIMDE_POLY16_C(   53005),
         SIMDE_POLY16_C(    4511),  SIMDE_POLY16_C(   36060),  SIMDE_POLY16_C(   54065),  SIMDE_POLY16_C(   35479) },
      {  SIMDE_POLY16_C(   35479),  SIMDE_POLY16_C(    7636),  SIMDE_POLY16_C(   15486),  SIMDE_POLY16_C(     842),
         SIMDE_POLY16_C(   14005),  SIMDE_POLY16_C(   39402),  SIMDE_POLY16_C(   58283),  SIMDE_POLY16_C(    8456) },
      {  SIMDE_POLY16_C(   41696),  SIMDE_POLY16_C(   54065),  SIMDE_POLY16_C(   15486),  SIMDE_POLY16_C(     842),
         SIMDE_POLY16_C(   14005),  SIMDE_POLY16_C(   39402),  SIMDE_POLY16_C(   58283),  SIMDE_POLY16_C(    8456) },
      {  SIMDE_POLY16_C(   41696),  SIMDE_POLY16_C(    7636),  SIMDE_POLY16_C(   15486),  SIMDE_POLY16_C(    4511),
         SIMDE_POLY16_C(   14005),  SIMDE_POLY16_C(   39402),  SIMDE_POLY16_C(   58283),  SIMDE_POLY16_C(    8456) },
      {  SIMDE_POLY16_C(   41696),  SIMDE_POLY16_C(    7636),  SIMDE_POLY16_C(   15486),  SIMDE_POLY16_C(     842),
         SIMDE_POLY16_C(   14005),  SIMDE_POLY16_C(   53005),  SIMDE_POLY16_C(   58283),  SIMDE_POLY16_C(    8456) },
      {  SIMDE_POLY16_C(   41696),  SIMDE_POLY16_C(    7636),  SIMDE_POLY16_C(   15486),  SIMDE_POLY16_C(     842),
         SIMDE_POLY16_C(   14005),  SIMDE_POLY16_C(   39402),  SIMDE_POLY16_C(   58283),  SIMDE_POLY16_C(    2324) } },
    { {  SIMDE_POLY16_C(   31497),  SIMDE_POLY16_C(    5172),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(    4122),
         SIMDE_POLY16_C(   52072),  SIMDE_POLY16_C(   14663),  SIMDE_POLY16_C(    6643),  SIMDE_POLY16_C(   19646) },
      {  SIMDE_POLY16_C(    3117),  SIMDE_POLY16_C(    6887),  SIMDE_POLY16_C(    8411),  SIMDE_POLY16_C(   34695),
         SIMDE_POLY16_C(   37761),  SIMDE_POLY16_C(   62501),  SIMDE_POLY16_C(    1235),  SIMDE_POLY16_C(    7430) },
      {  SIMDE_POLY16_C(    7430),  SIMDE_POLY16_C(    5172),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(    4122),
         SIMDE_POLY16_C(   52072),  SIMDE_POLY16_C(   14663),  SIMDE_POLY16_C(    6643),  SIMDE_POLY16_C(   19646) },
      {  SIMDE_POLY16_C(   31497),  SIMDE_POLY16_C(    1235),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(    4122),
         SIMDE_POLY16_C(   52072),  SIMDE_POLY16_C(   14663),  SIMDE_POLY16_C(    6643),  SIMDE_POLY16_C(   19646) },
      {  SIMDE_POLY16_C(   31497),  SIMDE_POLY16_C(    5172),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(   37761),
         SIMDE_POLY16_C(   52072),  SIMDE_POLY16_C(   14663),  SIMDE_POLY16_C(    6643),  SIMDE_POLY16_C(   19646) },
      {  SIMDE_POLY16_C(   31497),  SIMDE_POLY16_C(    5172),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(    4122),
         SIMDE_POLY16_C(   52072),  SIMDE_POLY16_C(   34695),  SIMDE_POLY16_C(    6643),  SIMDE_POLY16_C(   19646) },
      {  SIMDE_POLY16_C(   31497),  SIMDE_POLY16_C(    5172),  SIMDE_POLY16_C(   59315),  SIMDE_POLY16_C(    4122),
         SIMDE_POLY16_C(   52072),  SIMDE_POLY16_C(   14663),  SIMDE_POLY16_C(    6643),  SIMDE_POLY16_C(    6887) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly16x8_t a = simde_vld1q_p16(test_vec[i].a);
    simde_poly16x8_t b = simde_vld1q_p16(test_vec[i].b);

    simde_poly16x8_t r0_7 = simde_vcopyq_laneq_p16(a, 0, b, 7);
    simde_poly16x8_t r1_6 = simde_vcopyq_laneq_p16(a, 1, b, 6);
    simde_poly16x8_t r3_4 = simde_vcopyq_laneq_p16(a, 3, b, 4);
    simde_poly16x8_t r5_3 = simde_vcopyq_laneq_p16(a, 5, b, 3);
    simde_poly16x8_t r7_1 = simde_vcopyq_laneq_p16(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_p16x8(r0_7, simde_vld1q_p16(test_vec[i].r0_7));
    simde_test_arm_neon_assert_equal_p16x8(r1_6, simde_vld1q_p16(test_vec[i].r1_6));
    simde_test_arm_neon_assert_equal_p16x8(r3_4, simde_vld1q_p16(test_vec[i].r3_4));
    simde_test_arm_neon_assert_equal_p16x8(r5_3, simde_vld1q_p16(test_vec[i].r5_3));
    simde_test_arm_neon_assert_equal_p16x8(r7_1, simde_vld1q_p16(test_vec[i].r7_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly16x8_t a = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t r0_7 = simde_vcopyq_laneq_p16(a, 0, b, 7);
    simde_poly16x8_t r1_6 = simde_vcopyq_laneq_p16(a, 1, b, 6);
    simde_poly16x8_t r3_4 = simde_vcopyq_laneq_p16(a, 3, b, 4);
    simde_poly16x8_t r5_3 = simde_vcopyq_laneq_p16(a, 5, b, 3);
    simde_poly16x8_t r7_1 = simde_vcopyq_laneq_p16(a, 7, b, 1);

    simde_test_arm_neon_write_p16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r1_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r3_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r5_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, r7_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly64_t a[2];
    simde_poly64_t b[2];
    simde_poly64_t r0_0[2];
    simde_poly64_t r0_1[2];
    simde_poly64_t r1_0[2];
    simde_poly64_t r1_1[2];
  } test_vec[] = {
    { {  SIMDE_POLY64_C(13439609365108810888),  SIMDE_POLY64_C(15937695336418566217) },
      {  SIMDE_POLY64_C(11757999458065731058),  SIMDE_POLY64_C(17975820540431480162) },
      {  SIMDE_POLY64_C(11757999458065731058),  SIMDE_POLY64_C(15937695336418566217) },
      {  SIMDE_POLY64_C(17975820540431480162),  SIMDE_POLY64_C(15937695336418566217) },
      {  SIMDE_POLY64_C(13439609365108810888),  SIMDE_POLY64_C(11757999458065731058) },
      {  SIMDE_POLY64_C(13439609365108810888),  SIMDE_POLY64_C(17975820540431480162) } },
    { {  SIMDE_POLY64_C(16564546751237621820),  SIMDE_POLY64_C(12241248961613285278) },
      {  SIMDE_POLY64_C( 7641825135841022951),  SIMDE_POLY64_C(12315251603794302270) },
      {  SIMDE_POLY64_C( 7641825135841022951),  SIMDE_POLY64_C(12241248961613285278) },
      {  SIMDE_POLY64_C(12315251603794302270),  SIMDE_POLY64_C(12241248961613285278) },
      {  SIMDE_POLY64_C(16564546751237621820),  SIMDE_POLY64_C( 7641825135841022951) },
      {  SIMDE_POLY64_C(16564546751237621820),  SIMDE_POLY64_C(12315251603794302270) } },
    { {  SIMDE_POLY64_C(17704957791680247171),  SIMDE_POLY64_C( 9371616720984263202) },
      {  SIMDE_POLY64_C( 7276494259531683395),  SIMDE_POLY64_C( 5859910920720482327) },
      {  SIMDE_POLY64_C( 7276494259531683395),  SIMDE_POLY64_C( 9371616720984263202) },
      {  SIMDE_POLY64_C( 5859910920720482327),  SIMDE_POLY64_C( 9371616720984263202) },
      {  SIMDE_POLY64_C(17704957791680247171),  SIMDE_POLY64_C( 7276494259531683395) },
      {  SIMDE_POLY64_C(17704957791680247171),  SIMDE_POLY64_C( 5859910920720482327) } },
    { {  SIMDE_POLY64_C(14662575302122884717),  SIMDE_POLY64_C( 3176330314367196783) },
      {  SIMDE_POLY64_C( 7453175549508455517),  SIMDE_POLY64_C( 4453488503906172319) },
      {  SIMDE_POLY64_C( 7453175549508455517),  SIMDE_POLY64_C( 3176330314367196783) },
      {  SIMDE_POLY64_C( 4453488503906172319),  SIMDE_POLY64_C( 3176330314367196783) },
      {  SIMDE_POLY64_C(14662575302122884717),  SIMDE_POLY64_C( 7453175549508455517) },
      {  SIMDE_POLY64_C(14662575302122884717),  SIMDE_POLY64_C( 4453488503906172319) } },
    { {  SIMDE_POLY64_C(12249441119495819269),  SIMDE_POLY64_C(  186417079881519408) },
      {  SIMDE_POLY64_C(16358619248331576219),  SIMDE_POLY64_C(  987352505179597987) },
      {  SIMDE_POLY64_C(16358619248331576219),  SIMDE_POLY64_C(  186417079881519408) },
      {  SIMDE_POLY64_C(  987352505179597987),  SIMDE_POLY64_C(  186417079881519408) },
      {  SIMDE_POLY64_C(12249441119495819269),  SIMDE_POLY64_C(16358619248331576219) },
      {  SIMDE_POLY64_C(12249441119495819269),  SIMDE_POLY64_C(  987352505179597987) } },
    { {  SIMDE_POLY64_C( 3211036171106824205),  SIMDE_POLY64_C(17735964159800454359) },
      {  SIMDE_POLY64_C(14856931664874395873),  SIMDE_POLY64_C( 5092631228929164180) },
      {  SIMDE_POLY64_C(14856931664874395873),  SIMDE_POLY64_C(17735964159800454359) },
      {  SIMDE_POLY64_C( 5092631228929164180),  SIMDE_POLY64_C(17735964159800454359) },
      {  SIMDE_POLY64_C( 3211036171106824205),  SIMDE_POLY64_C(14856931664874395873) },
      {  SIMDE_POLY64_C( 3211036171106824205),  SIMDE_POLY64_C( 5092631228929164180) } },
    { {  SIMDE_POLY64_C(16290890406714175431),  SIMDE_POLY64_C( 7369026070235053466) },
      {  SIMDE_POLY64_C(14159949742399780407),  SIMDE_POLY64_C(12799840516808467205) },
      {  SIMDE_POLY64_C(14159949742399780407),  SIMDE_POLY64_C( 7369026070235053466) },
      {  SIMDE_POLY64_C(12799840516808467205),  SIMDE_POLY64_C( 7369026070235053466) },
      {  SIMDE_POLY64_C(16290890406714175431),  SIMDE_POLY64_C(14159949742399780407) },
      {  SIMDE_POLY64_C(16290890406714175431),  SIMDE_POLY64_C(12799840516808467205) } },
    { {  SIMDE_POLY64_C(11596480201225729972),  SIMDE_POLY64_C(15597658933811404841) },
      {  SIMDE_POLY64_C( 4501987111170332097),  SIMDE_POLY64_C(16539108248642911739) },
      {  SIMDE_POLY64_C( 4501987111170332097),  SIMDE_POLY64_C(15597658933811404841) },
      {  SIMDE_POLY64_C(16539108248642911739),  SIMDE_POLY64_C(15597658933811404841) },
      {  SIMDE_POLY64_C(11596480201225729972),  SIMDE_POLY64_C( 4501987111170332097) },
      {  SIMDE_POLY64_C(11596480201225729972),  SIMDE_POLY64_C(16539108248642911739) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly64x2_t a = simde_vld1q_p64(test_vec[i].a);
    simde_poly64x2_t b = simde_vld1q_p64(test_vec[i].b);

    simde_poly64x2_t r0_0 = simde_vcopyq_laneq_p64(a, 0, b, 0);
    simde_poly64x2_t r0_1 = simde_vcopyq_laneq_p64(a, 0, b, 1);
    simde_poly64x2_t r1_0 = simde_vcopyq_laneq_p64(a, 1, b, 0);
    simde_poly64x2_t r1_1 = simde_vcopyq_laneq_p64(a, 1, b, 1);

    simde_test_arm_neon_assert_equal_p64x2(r0_0, simde_vld1q_p64(test_vec[i].r0_0));
    simde_test_arm_neon_assert_equal_p64x2(r0_1, simde_vld1q_p64(test_vec[i].r0_1));
    simde_test_arm_neon_assert_equal_p64x2(r1_0, simde_vld1q_p64(test_vec[i].r1_0));
    simde_test_arm_neon_assert_equal_p64x2(r1_1, simde_vld1q_p64(test_vec[i].r1_1));
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_poly64x2_t a = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t r0_0 = simde_vcopyq_laneq_p64(a, 0, b, 0);
    simde_poly64x2_t r0_1 = simde_vcopyq_laneq_p64(a, 0, b, 1);
    simde_poly64x2_t r1_0 = simde_vcopyq_laneq_p64(a, 1, b, 0);
    simde_poly64x2_t r1_1 = simde_vcopyq_laneq_p64(a, 1, b, 1);

    simde_test_arm_neon_write_p64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r0_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r1_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, r1_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_lane_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16_t a[4];
    simde_bfloat16_t b[4];
    simde_bfloat16_t r00[4];
    simde_bfloat16_t r01[4];
    simde_bfloat16_t r13[4];
    simde_bfloat16_t r22[4];
    simde_bfloat16_t r33[4];
  } test_vec[] = {
    { { SIMDE_BFLOAT16_VALUE(   908.00), SIMDE_BFLOAT16_VALUE(  -852.00), SIMDE_BFLOAT16_VALUE(   788.00), SIMDE_BFLOAT16_VALUE(   880.00) },
      { SIMDE_BFLOAT16_VALUE(    15.94), SIMDE_BFLOAT16_VALUE(   964.00), SIMDE_BFLOAT16_VALUE(  -406.00), SIMDE_BFLOAT16_VALUE(   484.00) },
      { SIMDE_BFLOAT16_VALUE(    15.94), SIMDE_BFLOAT16_VALUE(  -852.00), SIMDE_BFLOAT16_VALUE(   788.00), SIMDE_BFLOAT16_VALUE(   880.00) },
      { SIMDE_BFLOAT16_VALUE(   964.00), SIMDE_BFLOAT16_VALUE(  -852.00), SIMDE_BFLOAT16_VALUE(   788.00), SIMDE_BFLOAT16_VALUE(   880.00) },
      { SIMDE_BFLOAT16_VALUE(   908.00), SIMDE_BFLOAT16_VALUE(   484.00), SIMDE_BFLOAT16_VALUE(   788.00), SIMDE_BFLOAT16_VALUE(   880.00) },
      { SIMDE_BFLOAT16_VALUE(   908.00), SIMDE_BFLOAT16_VALUE(  -852.00), SIMDE_BFLOAT16_VALUE(  -406.00), SIMDE_BFLOAT16_VALUE(   880.00) },
      { SIMDE_BFLOAT16_VALUE(   908.00), SIMDE_BFLOAT16_VALUE(  -852.00), SIMDE_BFLOAT16_VALUE(   788.00), SIMDE_BFLOAT16_VALUE(   484.00) } },
    { { SIMDE_BFLOAT16_VALUE(   -24.38), SIMDE_BFLOAT16_VALUE(  -424.00), SIMDE_BFLOAT16_VALUE(   864.00), SIMDE_BFLOAT16_VALUE(    25.25) },
      { SIMDE_BFLOAT16_VALUE(    95.00), SIMDE_BFLOAT16_VALUE(  -494.00), SIMDE_BFLOAT16_VALUE(  -340.00), SIMDE_BFLOAT16_VALUE(  -744.00) },
      { SIMDE_BFLOAT16_VALUE(    95.00), SIMDE_BFLOAT16_VALUE(  -424.00), SIMDE_BFLOAT16_VALUE(   864.00), SIMDE_BFLOAT16_VALUE(    25.25) },
      { SIMDE_BFLOAT16_VALUE(  -494.00), SIMDE_BFLOAT16_VALUE(  -424.00), SIMDE_BFLOAT16_VALUE(   864.00), SIMDE_BFLOAT16_VALUE(    25.25) },
      { SIMDE_BFLOAT16_VALUE(   -24.38), SIMDE_BFLOAT16_VALUE(  -744.00), SIMDE_BFLOAT16_VALUE(   864.00), SIMDE_BFLOAT16_VALUE(    25.25) },
      { SIMDE_BFLOAT16_VALUE(   -24.38), SIMDE_BFLOAT16_VALUE(  -424.00), SIMDE_BFLOAT16_VALUE(  -340.00), SIMDE_BFLOAT16_VALUE(    25.25) },
      { SIMDE_BFLOAT16_VALUE(   -24.38), SIMDE_BFLOAT16_VALUE(  -424.00), SIMDE_BFLOAT16_VALUE(   864.00), SIMDE_BFLOAT16_VALUE(  -744.00) } },
    { { SIMDE_BFLOAT16_VALUE(  -310.00), SIMDE_BFLOAT16_VALUE(   556.00), SIMDE_BFLOAT16_VALUE(  -434.00), SIMDE_BFLOAT16_VALUE(   884.00) },
      { SIMDE_BFLOAT16_VALUE(   430.00), SIMDE_BFLOAT16_VALUE(  -784.00), SIMDE_BFLOAT16_VALUE(  -458.00), SIMDE_BFLOAT16_VALUE(   224.00) },
      { SIMDE_BFLOAT16_VALUE(   430.00), SIMDE_BFLOAT16_VALUE(   556.00), SIMDE_BFLOAT16_VALUE(  -434.00), SIMDE_BFLOAT16_VALUE(   884.00) },
      { SIMDE_BFLOAT16_VALUE(  -784.00), SIMDE_BFLOAT16_VALUE(   556.00), SIMDE_BFLOAT16_VALUE(  -434.00), SIMDE_BFLOAT16_VALUE(   884.00) },
      { SIMDE_BFLOAT16_VALUE(  -310.00), SIMDE_BFLOAT16_VALUE(   224.00), SIMDE_BFLOAT16_VALUE(  -434.00), SIMDE_BFLOAT16_VALUE(   884.00) },
      { SIMDE_BFLOAT16_VALUE(  -310.00), SIMDE_BFLOAT16_VALUE(   556.00), SIMDE_BFLOAT16_VALUE(  -458.00), SIMDE_BFLOAT16_VALUE(   884.00) },
      { SIMDE_BFLOAT16_VALUE(  -310.00), SIMDE_BFLOAT16_VALUE(   556.00), SIMDE_BFLOAT16_VALUE(  -434.00), SIMDE_BFLOAT16_VALUE(   224.00) } },
    { { SIMDE_BFLOAT16_VALUE(  -964.00), SIMDE_BFLOAT16_VALUE(   -90.00), SIMDE_BFLOAT16_VALUE(  -940.00), SIMDE_BFLOAT16_VALUE(  -204.00) },
      { SIMDE_BFLOAT16_VALUE(  -390.00), SIMDE_BFLOAT16_VALUE(   -57.00), SIMDE_BFLOAT16_VALUE(   332.00), SIMDE_BFLOAT16_VALUE(  -480.00) },
      { SIMDE_BFLOAT16_VALUE(  -390.00), SIMDE_BFLOAT16_VALUE(   -90.00), SIMDE_BFLOAT16_VALUE(  -940.00), SIMDE_BFLOAT16_VALUE(  -204.00) },
      { SIMDE_BFLOAT16_VALUE(   -57.00), SIMDE_BFLOAT16_VALUE(   -90.00), SIMDE_BFLOAT16_VALUE(  -940.00), SIMDE_BFLOAT16_VALUE(  -204.00) },
      { SIMDE_BFLOAT16_VALUE(  -964.00), SIMDE_BFLOAT16_VALUE(  -480.00), SIMDE_BFLOAT16_VALUE(  -940.00), SIMDE_BFLOAT16_VALUE(  -204.00) },
      { SIMDE_BFLOAT16_VALUE(  -964.00), SIMDE_BFLOAT16_VALUE(   -90.00), SIMDE_BFLOAT16_VALUE(   332.00), SIMDE_BFLOAT16_VALUE(  -204.00) },
      { SIMDE_BFLOAT16_VALUE(  -964.00), SIMDE_BFLOAT16_VALUE(   -90.00), SIMDE_BFLOAT16_VALUE(  -940.00), SIMDE_BFLOAT16_VALUE(  -480.00) } },
    { { SIMDE_BFLOAT16_VALUE(    89.50), SIMDE_BFLOAT16_VALUE(   124.50), SIMDE_BFLOAT16_VALUE(  -596.00), SIMDE_BFLOAT16_VALUE(  -892.00) },
      { SIMDE_BFLOAT16_VALUE(    90.00), SIMDE_BFLOAT16_VALUE(    -6.28), SIMDE_BFLOAT16_VALUE(   588.00), SIMDE_BFLOAT16_VALUE(  -932.00) },
      { SIMDE_BFLOAT16_VALUE(    90.00), SIMDE_BFLOAT16_VALUE(   124.50), SIMDE_BFLOAT16_VALUE(  -596.00), SIMDE_BFLOAT16_VALUE(  -892.00) },
      { SIMDE_BFLOAT16_VALUE(    -6.28), SIMDE_BFLOAT16_VALUE(   124.50), SIMDE_BFLOAT16_VALUE(  -596.00), SIMDE_BFLOAT16_VALUE(  -892.00) },
      { SIMDE_BFLOAT16_VALUE(    89.50), SIMDE_BFLOAT16_VALUE(  -932.00), SIMDE_BFLOAT16_VALUE(  -596.00), SIMDE_BFLOAT16_VALUE(  -892.00) },
      { SIMDE_BFLOAT16_VALUE(    89.50), SIMDE_BFLOAT16_VALUE(   124.50), SIMDE_BFLOAT16_VALUE(   588.00), SIMDE_BFLOAT16_VALUE(  -892.00) },
      { SIMDE_BFLOAT16_VALUE(    89.50), SIMDE_BFLOAT16_VALUE(   124.50), SIMDE_BFLOAT16_VALUE(  -596.00), SIMDE_BFLOAT16_VALUE(  -932.00) } },
    { { SIMDE_BFLOAT16_VALUE(   568.00), SIMDE_BFLOAT16_VALUE(   456.00), SIMDE_BFLOAT16_VALUE(    91.00), SIMDE_BFLOAT16_VALUE(  -336.00) },
      { SIMDE_BFLOAT16_VALUE(   960.00), SIMDE_BFLOAT16_VALUE(   748.00), SIMDE_BFLOAT16_VALUE(   -81.50), SIMDE_BFLOAT16_VALUE(  -348.00) },
      { SIMDE_BFLOAT16_VALUE(   960.00), SIMDE_BFLOAT16_VALUE(   456.00), SIMDE_BFLOAT16_VALUE(    91.00), SIMDE_BFLOAT16_VALUE(  -336.00) },
      { SIMDE_BFLOAT16_VALUE(   748.00), SIMDE_BFLOAT16_VALUE(   456.00), SIMDE_BFLOAT16_VALUE(    91.00), SIMDE_BFLOAT16_VALUE(  -336.00) },
      { SIMDE_BFLOAT16_VALUE(   568.00), SIMDE_BFLOAT16_VALUE(  -348.00), SIMDE_BFLOAT16_VALUE(    91.00), SIMDE_BFLOAT16_VALUE(  -336.00) },
      { SIMDE_BFLOAT16_VALUE(   568.00), SIMDE_BFLOAT16_VALUE(   456.00), SIMDE_BFLOAT16_VALUE(   -81.50), SIMDE_BFLOAT16_VALUE(  -336.00) },
      { SIMDE_BFLOAT16_VALUE(   568.00), SIMDE_BFLOAT16_VALUE(   456.00), SIMDE_BFLOAT16_VALUE(    91.00), SIMDE_BFLOAT16_VALUE(  -348.00) } },
    { { SIMDE_BFLOAT16_VALUE(   308.00), SIMDE_BFLOAT16_VALUE(   482.00), SIMDE_BFLOAT16_VALUE(  -462.00), SIMDE_BFLOAT16_VALUE(  -260.00) },
      { SIMDE_BFLOAT16_VALUE(   692.00), SIMDE_BFLOAT16_VALUE(    78.00), SIMDE_BFLOAT16_VALUE(   960.00), SIMDE_BFLOAT16_VALUE(   728.00) },
      { SIMDE_BFLOAT16_VALUE(   692.00), SIMDE_BFLOAT16_VALUE(   482.00), SIMDE_BFLOAT16_VALUE(  -462.00), SIMDE_BFLOAT16_VALUE(  -260.00) },
      { SIMDE_BFLOAT16_VALUE(    78.00), SIMDE_BFLOAT16_VALUE(   482.00), SIMDE_BFLOAT16_VALUE(  -462.00), SIMDE_BFLOAT16_VALUE(  -260.00) },
      { SIMDE_BFLOAT16_VALUE(   308.00), SIMDE_BFLOAT16_VALUE(   728.00), SIMDE_BFLOAT16_VALUE(  -462.00), SIMDE_BFLOAT16_VALUE(  -260.00) },
      { SIMDE_BFLOAT16_VALUE(   308.00), SIMDE_BFLOAT16_VALUE(   482.00), SIMDE_BFLOAT16_VALUE(   960.00), SIMDE_BFLOAT16_VALUE(  -260.00) },
      { SIMDE_BFLOAT16_VALUE(   308.00), SIMDE_BFLOAT16_VALUE(   482.00), SIMDE_BFLOAT16_VALUE(  -462.00), SIMDE_BFLOAT16_VALUE(   728.00) } },
    { { SIMDE_BFLOAT16_VALUE(   984.00), SIMDE_BFLOAT16_VALUE(  -980.00), SIMDE_BFLOAT16_VALUE(  -472.00), SIMDE_BFLOAT16_VALUE(  -402.00) },
      { SIMDE_BFLOAT16_VALUE(   -37.25), SIMDE_BFLOAT16_VALUE(   860.00), SIMDE_BFLOAT16_VALUE(   114.50), SIMDE_BFLOAT16_VALUE(  -944.00) },
      { SIMDE_BFLOAT16_VALUE(   -37.25), SIMDE_BFLOAT16_VALUE(  -980.00), SIMDE_BFLOAT16_VALUE(  -472.00), SIMDE_BFLOAT16_VALUE(  -402.00) },
      { SIMDE_BFLOAT16_VALUE(   860.00), SIMDE_BFLOAT16_VALUE(  -980.00), SIMDE_BFLOAT16_VALUE(  -472.00), SIMDE_BFLOAT16_VALUE(  -402.00) },
      { SIMDE_BFLOAT16_VALUE(   984.00), SIMDE_BFLOAT16_VALUE(  -944.00), SIMDE_BFLOAT16_VALUE(  -472.00), SIMDE_BFLOAT16_VALUE(  -402.00) },
      { SIMDE_BFLOAT16_VALUE(   984.00), SIMDE_BFLOAT16_VALUE(  -980.00), SIMDE_BFLOAT16_VALUE(   114.50), SIMDE_BFLOAT16_VALUE(  -402.00) },
      { SIMDE_BFLOAT16_VALUE(   984.00), SIMDE_BFLOAT16_VALUE(  -980.00), SIMDE_BFLOAT16_VALUE(  -472.00), SIMDE_BFLOAT16_VALUE(  -944.00) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_bfloat16x4_t a = simde_vld1_bf16(test_vec[i].a);
    simde_bfloat16x4_t b = simde_vld1_bf16(test_vec[i].b);

    simde_bfloat16x4_t r00 = simde_vcopy_lane_bf16(a, 0, b, 0);
    simde_bfloat16x4_t r01 = simde_vcopy_lane_bf16(a, 0, b, 1);
    simde_bfloat16x4_t r13 = simde_vcopy_lane_bf16(a, 1, b, 3);
    simde_bfloat16x4_t r22 = simde_vcopy_lane_bf16(a, 2, b, 2);
    simde_bfloat16x4_t r33 = simde_vcopy_lane_bf16(a, 3, b, 3);

    simde_test_arm_neon_assert_equal_bf16x4(r00, simde_vld1_bf16(test_vec[i].r00), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r01, simde_vld1_bf16(test_vec[i].r01), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r13, simde_vld1_bf16(test_vec[i].r13), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r22, simde_vld1_bf16(test_vec[i].r22), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r33, simde_vld1_bf16(test_vec[i].r33), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_bfloat16x4_t a = simde_test_arm_neon_random_bf16x4(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x4_t b = simde_test_arm_neon_random_bf16x4(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x4_t r00 = simde_vcopy_lane_bf16(a, 0, b, 0);
    simde_bfloat16x4_t r01 = simde_vcopy_lane_bf16(a, 0, b, 1);
    simde_bfloat16x4_t r13 = simde_vcopy_lane_bf16(a, 1, b, 3);
    simde_bfloat16x4_t r22 = simde_vcopy_lane_bf16(a, 2, b, 2);
    simde_bfloat16x4_t r33 = simde_vcopy_lane_bf16(a, 3, b, 3);

    simde_test_arm_neon_write_bf16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_bf16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r00, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r01, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r13, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r22, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r33, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopy_laneq_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16_t a[4];
    simde_bfloat16_t b[8];
    simde_bfloat16_t r0_0[4];
    simde_bfloat16_t r1_3[4];
    simde_bfloat16_t r2_5[4];
    simde_bfloat16_t r3_7[4];
  } test_vec[] = {
    { { SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(  -536.00), SIMDE_BFLOAT16_VALUE(  -217.00), SIMDE_BFLOAT16_VALUE(  -788.00) },
      { SIMDE_BFLOAT16_VALUE(   572.00), SIMDE_BFLOAT16_VALUE(   143.00), SIMDE_BFLOAT16_VALUE(   732.00), SIMDE_BFLOAT16_VALUE(  -114.00),
        SIMDE_BFLOAT16_VALUE(  -392.00), SIMDE_BFLOAT16_VALUE(   272.00), SIMDE_BFLOAT16_VALUE(   498.00), SIMDE_BFLOAT16_VALUE(   382.00) },
      { SIMDE_BFLOAT16_VALUE(   572.00), SIMDE_BFLOAT16_VALUE(  -536.00), SIMDE_BFLOAT16_VALUE(  -217.00), SIMDE_BFLOAT16_VALUE(  -788.00) },
      { SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(  -114.00), SIMDE_BFLOAT16_VALUE(  -217.00), SIMDE_BFLOAT16_VALUE(  -788.00) },
      { SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(  -536.00), SIMDE_BFLOAT16_VALUE(   272.00), SIMDE_BFLOAT16_VALUE(  -788.00) },
      { SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(  -536.00), SIMDE_BFLOAT16_VALUE(  -217.00), SIMDE_BFLOAT16_VALUE(   382.00) } },
    { { SIMDE_BFLOAT16_VALUE(   128.00), SIMDE_BFLOAT16_VALUE(   652.00), SIMDE_BFLOAT16_VALUE(   290.00), SIMDE_BFLOAT16_VALUE(  -860.00) },
      { SIMDE_BFLOAT16_VALUE(   302.00), SIMDE_BFLOAT16_VALUE(  -672.00), SIMDE_BFLOAT16_VALUE(  -752.00), SIMDE_BFLOAT16_VALUE(   736.00),
        SIMDE_BFLOAT16_VALUE(  -106.50), SIMDE_BFLOAT16_VALUE(  -524.00), SIMDE_BFLOAT16_VALUE(  -996.00), SIMDE_BFLOAT16_VALUE(   420.00) },
      { SIMDE_BFLOAT16_VALUE(   302.00), SIMDE_BFLOAT16_VALUE(   652.00), SIMDE_BFLOAT16_VALUE(   290.00), SIMDE_BFLOAT16_VALUE(  -860.00) },
      { SIMDE_BFLOAT16_VALUE(   128.00), SIMDE_BFLOAT16_VALUE(   736.00), SIMDE_BFLOAT16_VALUE(   290.00), SIMDE_BFLOAT16_VALUE(  -860.00) },
      { SIMDE_BFLOAT16_VALUE(   128.00), SIMDE_BFLOAT16_VALUE(   652.00), SIMDE_BFLOAT16_VALUE(  -524.00), SIMDE_BFLOAT16_VALUE(  -860.00) },
      { SIMDE_BFLOAT16_VALUE(   128.00), SIMDE_BFLOAT16_VALUE(   652.00), SIMDE_BFLOAT16_VALUE(   290.00), SIMDE_BFLOAT16_VALUE(   420.00) } },
    { { SIMDE_BFLOAT16_VALUE(  -640.00), SIMDE_BFLOAT16_VALUE(  -696.00), SIMDE_BFLOAT16_VALUE(  -688.00), SIMDE_BFLOAT16_VALUE(  -632.00) },
      { SIMDE_BFLOAT16_VALUE(    86.50), SIMDE_BFLOAT16_VALUE(   428.00), SIMDE_BFLOAT16_VALUE(  -912.00), SIMDE_BFLOAT16_VALUE(   175.00),
        SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(  -131.00), SIMDE_BFLOAT16_VALUE(   382.00), SIMDE_BFLOAT16_VALUE(   462.00) },
      { SIMDE_BFLOAT16_VALUE(    86.50), SIMDE_BFLOAT16_VALUE(  -696.00), SIMDE_BFLOAT16_VALUE(  -688.00), SIMDE_BFLOAT16_VALUE(  -632.00) },
      { SIMDE_BFLOAT16_VALUE(  -640.00), SIMDE_BFLOAT16_VALUE(   175.00), SIMDE_BFLOAT16_VALUE(  -688.00), SIMDE_BFLOAT16_VALUE(  -632.00) },
      { SIMDE_BFLOAT16_VALUE(  -640.00), SIMDE_BFLOAT16_VALUE(  -696.00), SIMDE_BFLOAT16_VALUE(  -131.00), SIMDE_BFLOAT16_VALUE(  -632.00) },
      { SIMDE_BFLOAT16_VALUE(  -640.00), SIMDE_BFLOAT16_VALUE(  -696.00), SIMDE_BFLOAT16_VALUE(  -688.00), SIMDE_BFLOAT16_VALUE(   462.00) } },
    { { SIMDE_BFLOAT16_VALUE(  -988.00), SIMDE_BFLOAT16_VALUE(   118.50), SIMDE_BFLOAT16_VALUE(  -648.00), SIMDE_BFLOAT16_VALUE(  -380.00) },
      { SIMDE_BFLOAT16_VALUE(  -608.00), SIMDE_BFLOAT16_VALUE(   844.00), SIMDE_BFLOAT16_VALUE(  -996.00), SIMDE_BFLOAT16_VALUE(   520.00),
        SIMDE_BFLOAT16_VALUE(   502.00), SIMDE_BFLOAT16_VALUE(   292.00), SIMDE_BFLOAT16_VALUE(   656.00), SIMDE_BFLOAT16_VALUE(  -194.00) },
      { SIMDE_BFLOAT16_VALUE(  -608.00), SIMDE_BFLOAT16_VALUE(   118.50), SIMDE_BFLOAT16_VALUE(  -648.00), SIMDE_BFLOAT16_VALUE(  -380.00) },
      { SIMDE_BFLOAT16_VALUE(  -988.00), SIMDE_BFLOAT16_VALUE(   520.00), SIMDE_BFLOAT16_VALUE(  -648.00), SIMDE_BFLOAT16_VALUE(  -380.00) },
      { SIMDE_BFLOAT16_VALUE(  -988.00), SIMDE_BFLOAT16_VALUE(   118.50), SIMDE_BFLOAT16_VALUE(   292.00), SIMDE_BFLOAT16_VALUE(  -380.00) },
      { SIMDE_BFLOAT16_VALUE(  -988.00), SIMDE_BFLOAT16_VALUE(   118.50), SIMDE_BFLOAT16_VALUE(  -648.00), SIMDE_BFLOAT16_VALUE(  -194.00) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_bfloat16x4_t a = simde_vld1_bf16(test_vec[i].a);
    simde_bfloat16x8_t b = simde_vld1q_bf16(test_vec[i].b);

    simde_bfloat16x4_t r0_0 = simde_vcopy_laneq_bf16(a, 0, b, 0);
    simde_bfloat16x4_t r1_3 = simde_vcopy_laneq_bf16(a, 1, b, 3);
    simde_bfloat16x4_t r2_5 = simde_vcopy_laneq_bf16(a, 2, b, 5);
    simde_bfloat16x4_t r3_7 = simde_vcopy_laneq_bf16(a, 3, b, 7);

    simde_test_arm_neon_assert_equal_bf16x4(r0_0, simde_vld1_bf16(test_vec[i].r0_0), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r1_3, simde_vld1_bf16(test_vec[i].r1_3), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r2_5, simde_vld1_bf16(test_vec[i].r2_5), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r3_7, simde_vld1_bf16(test_vec[i].r3_7), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_bfloat16x4_t a = simde_test_arm_neon_random_bf16x4(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x8_t b = simde_test_arm_neon_random_bf16x8(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x4_t r0_0 = simde_vcopy_laneq_bf16(a, 0, b, 0);
    simde_bfloat16x4_t r1_3 = simde_vcopy_laneq_bf16(a, 1, b, 3);
    simde_bfloat16x4_t r2_5 = simde_vcopy_laneq_bf16(a, 2, b, 5);
    simde_bfloat16x4_t r3_7 = simde_vcopy_laneq_bf16(a, 3, b, 7);

    simde_test_arm_neon_write_bf16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_bf16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r0_0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r1_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r2_5, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r3_7, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_lane_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16_t a[8];
    simde_bfloat16_t b[4];
    simde_bfloat16_t r0_3[8];
    simde_bfloat16_t r3_2[8];
    simde_bfloat16_t r5_1[8];
    simde_bfloat16_t r7_0[8];
  } test_vec[] = {
    { { SIMDE_BFLOAT16_VALUE(   616.00), SIMDE_BFLOAT16_VALUE(   900.00), SIMDE_BFLOAT16_VALUE(  -454.00), SIMDE_BFLOAT16_VALUE(  -486.00),
        SIMDE_BFLOAT16_VALUE(  -620.00), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(   932.00), SIMDE_BFLOAT16_VALUE(  -262.00) },
      { SIMDE_BFLOAT16_VALUE(  -151.00), SIMDE_BFLOAT16_VALUE(  -756.00), SIMDE_BFLOAT16_VALUE(   100.50), SIMDE_BFLOAT16_VALUE(   932.00) },
      { SIMDE_BFLOAT16_VALUE(   932.00), SIMDE_BFLOAT16_VALUE(   900.00), SIMDE_BFLOAT16_VALUE(  -454.00), SIMDE_BFLOAT16_VALUE(  -486.00),
        SIMDE_BFLOAT16_VALUE(  -620.00), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(   932.00), SIMDE_BFLOAT16_VALUE(  -262.00) },
      { SIMDE_BFLOAT16_VALUE(   616.00), SIMDE_BFLOAT16_VALUE(   900.00), SIMDE_BFLOAT16_VALUE(  -454.00), SIMDE_BFLOAT16_VALUE(   100.50),
        SIMDE_BFLOAT16_VALUE(  -620.00), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(   932.00), SIMDE_BFLOAT16_VALUE(  -262.00) },
      { SIMDE_BFLOAT16_VALUE(   616.00), SIMDE_BFLOAT16_VALUE(   900.00), SIMDE_BFLOAT16_VALUE(  -454.00), SIMDE_BFLOAT16_VALUE(  -486.00),
        SIMDE_BFLOAT16_VALUE(  -620.00), SIMDE_BFLOAT16_VALUE(  -756.00), SIMDE_BFLOAT16_VALUE(   932.00), SIMDE_BFLOAT16_VALUE(  -262.00) },
      { SIMDE_BFLOAT16_VALUE(   616.00), SIMDE_BFLOAT16_VALUE(   900.00), SIMDE_BFLOAT16_VALUE(  -454.00), SIMDE_BFLOAT16_VALUE(  -486.00),
        SIMDE_BFLOAT16_VALUE(  -620.00), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(   932.00), SIMDE_BFLOAT16_VALUE(  -151.00) } },
    { { SIMDE_BFLOAT16_VALUE(   672.00), SIMDE_BFLOAT16_VALUE(   186.00), SIMDE_BFLOAT16_VALUE(   111.00), SIMDE_BFLOAT16_VALUE(   560.00),
        SIMDE_BFLOAT16_VALUE(  -944.00), SIMDE_BFLOAT16_VALUE(  -504.00), SIMDE_BFLOAT16_VALUE(    23.75), SIMDE_BFLOAT16_VALUE(  -932.00) },
      { SIMDE_BFLOAT16_VALUE(   612.00), SIMDE_BFLOAT16_VALUE(   372.00), SIMDE_BFLOAT16_VALUE(  -314.00), SIMDE_BFLOAT16_VALUE(  -992.00) },
      { SIMDE_BFLOAT16_VALUE(  -992.00), SIMDE_BFLOAT16_VALUE(   186.00), SIMDE_BFLOAT16_VALUE(   111.00), SIMDE_BFLOAT16_VALUE(   560.00),
        SIMDE_BFLOAT16_VALUE(  -944.00), SIMDE_BFLOAT16_VALUE(  -504.00), SIMDE_BFLOAT16_VALUE(    23.75), SIMDE_BFLOAT16_VALUE(  -932.00) },
      { SIMDE_BFLOAT16_VALUE(   672.00), SIMDE_BFLOAT16_VALUE(   186.00), SIMDE_BFLOAT16_VALUE(   111.00), SIMDE_BFLOAT16_VALUE(  -314.00),
        SIMDE_BFLOAT16_VALUE(  -944.00), SIMDE_BFLOAT16_VALUE(  -504.00), SIMDE_BFLOAT16_VALUE(    23.75), SIMDE_BFLOAT16_VALUE(  -932.00) },
      { SIMDE_BFLOAT16_VALUE(   672.00), SIMDE_BFLOAT16_VALUE(   186.00), SIMDE_BFLOAT16_VALUE(   111.00), SIMDE_BFLOAT16_VALUE(   560.00),
        SIMDE_BFLOAT16_VALUE(  -944.00), SIMDE_BFLOAT16_VALUE(   372.00), SIMDE_BFLOAT16_VALUE(    23.75), SIMDE_BFLOAT16_VALUE(  -932.00) },
      { SIMDE_BFLOAT16_VALUE(   672.00), SIMDE_BFLOAT16_VALUE(   186.00), SIMDE_BFLOAT16_VALUE(   111.00), SIMDE_BFLOAT16_VALUE(   560.00),
        SIMDE_BFLOAT16_VALUE(  -944.00), SIMDE_BFLOAT16_VALUE(  -504.00), SIMDE_BFLOAT16_VALUE(    23.75), SIMDE_BFLOAT16_VALUE(   612.00) } },
    { { SIMDE_BFLOAT16_VALUE(   220.00), SIMDE_BFLOAT16_VALUE(  -312.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(  -276.00),
        SIMDE_BFLOAT16_VALUE(   980.00), SIMDE_BFLOAT16_VALUE(   184.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(   596.00) },
      { SIMDE_BFLOAT16_VALUE(    87.00), SIMDE_BFLOAT16_VALUE(  -928.00), SIMDE_BFLOAT16_VALUE(  -884.00), SIMDE_BFLOAT16_VALUE(   464.00) },
      { SIMDE_BFLOAT16_VALUE(   464.00), SIMDE_BFLOAT16_VALUE(  -312.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(  -276.00),
        SIMDE_BFLOAT16_VALUE(   980.00), SIMDE_BFLOAT16_VALUE(   184.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(   596.00) },
      { SIMDE_BFLOAT16_VALUE(   220.00), SIMDE_BFLOAT16_VALUE(  -312.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(  -884.00),
        SIMDE_BFLOAT16_VALUE(   980.00), SIMDE_BFLOAT16_VALUE(   184.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(   596.00) },
      { SIMDE_BFLOAT16_VALUE(   220.00), SIMDE_BFLOAT16_VALUE(  -312.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(  -276.00),
        SIMDE_BFLOAT16_VALUE(   980.00), SIMDE_BFLOAT16_VALUE(  -928.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(   596.00) },
      { SIMDE_BFLOAT16_VALUE(   220.00), SIMDE_BFLOAT16_VALUE(  -312.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(  -276.00),
        SIMDE_BFLOAT16_VALUE(   980.00), SIMDE_BFLOAT16_VALUE(   184.00), SIMDE_BFLOAT16_VALUE(   524.00), SIMDE_BFLOAT16_VALUE(    87.00) } },
    { { SIMDE_BFLOAT16_VALUE(  -380.00), SIMDE_BFLOAT16_VALUE(  -952.00), SIMDE_BFLOAT16_VALUE(  -796.00), SIMDE_BFLOAT16_VALUE(   466.00),
        SIMDE_BFLOAT16_VALUE(  -708.00), SIMDE_BFLOAT16_VALUE(   300.00), SIMDE_BFLOAT16_VALUE(   402.00), SIMDE_BFLOAT16_VALUE(   960.00) },
      { SIMDE_BFLOAT16_VALUE(  -510.00), SIMDE_BFLOAT16_VALUE(  -484.00), SIMDE_BFLOAT16_VALUE(   520.00), SIMDE_BFLOAT16_VALUE(  -456.00) },
      { SIMDE_BFLOAT16_VALUE(  -456.00), SIMDE_BFLOAT16_VALUE(  -952.00), SIMDE_BFLOAT16_VALUE(  -796.00), SIMDE_BFLOAT16_VALUE(   466.00),
        SIMDE_BFLOAT16_VALUE(  -708.00), SIMDE_BFLOAT16_VALUE(   300.00), SIMDE_BFLOAT16_VALUE(   402.00), SIMDE_BFLOAT16_VALUE(   960.00) },
      { SIMDE_BFLOAT16_VALUE(  -380.00), SIMDE_BFLOAT16_VALUE(  -952.00), SIMDE_BFLOAT16_VALUE(  -796.00), SIMDE_BFLOAT16_VALUE(   520.00),
        SIMDE_BFLOAT16_VALUE(  -708.00), SIMDE_BFLOAT16_VALUE(   300.00), SIMDE_BFLOAT16_VALUE(   402.00), SIMDE_BFLOAT16_VALUE(   960.00) },
      { SIMDE_BFLOAT16_VALUE(  -380.00), SIMDE_BFLOAT16_VALUE(  -952.00), SIMDE_BFLOAT16_VALUE(  -796.00), SIMDE_BFLOAT16_VALUE(   466.00),
        SIMDE_BFLOAT16_VALUE(  -708.00), SIMDE_BFLOAT16_VALUE(  -484.00), SIMDE_BFLOAT16_VALUE(   402.00), SIMDE_BFLOAT16_VALUE(   960.00) },
      { SIMDE_BFLOAT16_VALUE(  -380.00), SIMDE_BFLOAT16_VALUE(  -952.00), SIMDE_BFLOAT16_VALUE(  -796.00), SIMDE_BFLOAT16_VALUE(   466.00),
        SIMDE_BFLOAT16_VALUE(  -708.00), SIMDE_BFLOAT16_VALUE(   300.00), SIMDE_BFLOAT16_VALUE(   402.00), SIMDE_BFLOAT16_VALUE(  -510.00) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_bfloat16x8_t a = simde_vld1q_bf16(test_vec[i].a);
    simde_bfloat16x4_t b = simde_vld1_bf16(test_vec[i].b);

    simde_bfloat16x8_t r0_3 = simde_vcopyq_lane_bf16(a, 0, b, 3);
    simde_bfloat16x8_t r3_2 = simde_vcopyq_lane_bf16(a, 3, b, 2);
    simde_bfloat16x8_t r5_1 = simde_vcopyq_lane_bf16(a, 5, b, 1);
    simde_bfloat16x8_t r7_0 = simde_vcopyq_lane_bf16(a, 7, b, 0);

    simde_test_arm_neon_assert_equal_bf16x8(r0_3, simde_vld1q_bf16(test_vec[i].r0_3), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r3_2, simde_vld1q_bf16(test_vec[i].r3_2), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r5_1, simde_vld1q_bf16(test_vec[i].r5_1), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r7_0, simde_vld1q_bf16(test_vec[i].r7_0), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_bfloat16x8_t a = simde_test_arm_neon_random_bf16x8(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x4_t b = simde_test_arm_neon_random_bf16x4(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x8_t r0_3 = simde_vcopyq_lane_bf16(a, 0, b, 3);
    simde_bfloat16x8_t r3_2 = simde_vcopyq_lane_bf16(a, 3, b, 2);
    simde_bfloat16x8_t r5_1 = simde_vcopyq_lane_bf16(a, 5, b, 1);
    simde_bfloat16x8_t r7_0 = simde_vcopyq_lane_bf16(a, 7, b, 0);

    simde_test_arm_neon_write_bf16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_bf16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r0_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r3_2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r5_1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r7_0, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vcopyq_laneq_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16_t a[8];
    simde_bfloat16_t b[8];
    simde_bfloat16_t r0_7[8];
    simde_bfloat16_t r1_6[8];
    simde_bfloat16_t r3_4[8];
    simde_bfloat16_t r5_3[8];
    simde_bfloat16_t r7_1[8];
  } test_vec[] = {
    { { SIMDE_BFLOAT16_VALUE(     9.06), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(  -388.00), SIMDE_BFLOAT16_VALUE(  -376.00),
        SIMDE_BFLOAT16_VALUE(   916.00), SIMDE_BFLOAT16_VALUE(   296.00), SIMDE_BFLOAT16_VALUE(  -370.00), SIMDE_BFLOAT16_VALUE(   139.00) },
      { SIMDE_BFLOAT16_VALUE(   980.00), SIMDE_BFLOAT16_VALUE(  -844.00), SIMDE_BFLOAT16_VALUE(   860.00), SIMDE_BFLOAT16_VALUE(   964.00),
        SIMDE_BFLOAT16_VALUE(   336.00), SIMDE_BFLOAT16_VALUE(   388.00), SIMDE_BFLOAT16_VALUE(   560.00), SIMDE_BFLOAT16_VALUE(  -572.00) },
      { SIMDE_BFLOAT16_VALUE(  -572.00), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(  -388.00), SIMDE_BFLOAT16_VALUE(  -376.00),
        SIMDE_BFLOAT16_VALUE(   916.00), SIMDE_BFLOAT16_VALUE(   296.00), SIMDE_BFLOAT16_VALUE(  -370.00), SIMDE_BFLOAT16_VALUE(   139.00) },
      { SIMDE_BFLOAT16_VALUE(     9.06), SIMDE_BFLOAT16_VALUE(   560.00), SIMDE_BFLOAT16_VALUE(  -388.00), SIMDE_BFLOAT16_VALUE(  -376.00),
        SIMDE_BFLOAT16_VALUE(   916.00), SIMDE_BFLOAT16_VALUE(   296.00), SIMDE_BFLOAT16_VALUE(  -370.00), SIMDE_BFLOAT16_VALUE(   139.00) },
      { SIMDE_BFLOAT16_VALUE(     9.06), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(  -388.00), SIMDE_BFLOAT16_VALUE(   336.00),
        SIMDE_BFLOAT16_VALUE(   916.00), SIMDE_BFLOAT16_VALUE(   296.00), SIMDE_BFLOAT16_VALUE(  -370.00), SIMDE_BFLOAT16_VALUE(   139.00) },
      { SIMDE_BFLOAT16_VALUE(     9.06), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(  -388.00), SIMDE_BFLOAT16_VALUE(  -376.00),
        SIMDE_BFLOAT16_VALUE(   916.00), SIMDE_BFLOAT16_VALUE(   964.00), SIMDE_BFLOAT16_VALUE(  -370.00), SIMDE_BFLOAT16_VALUE(   139.00) },
      { SIMDE_BFLOAT16_VALUE(     9.06), SIMDE_BFLOAT16_VALUE(  -452.00), SIMDE_BFLOAT16_VALUE(  -388.00), SIMDE_BFLOAT16_VALUE(  -376.00),
        SIMDE_BFLOAT16_VALUE(   916.00), SIMDE_BFLOAT16_VALUE(   296.00), SIMDE_BFLOAT16_VALUE(  -370.00), SIMDE_BFLOAT16_VALUE(  -844.00) } },
    { { SIMDE_BFLOAT16_VALUE(   460.00), SIMDE_BFLOAT16_VALUE(   676.00), SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(  -916.00),
        SIMDE_BFLOAT16_VALUE(   720.00), SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(   544.00), SIMDE_BFLOAT16_VALUE(  -984.00) },
      { SIMDE_BFLOAT16_VALUE(   390.00), SIMDE_BFLOAT16_VALUE(   -49.25), SIMDE_BFLOAT16_VALUE(   972.00), SIMDE_BFLOAT16_VALUE(   880.00),
        SIMDE_BFLOAT16_VALUE(   464.00), SIMDE_BFLOAT16_VALUE(   496.00), SIMDE_BFLOAT16_VALUE(  -576.00), SIMDE_BFLOAT16_VALUE(  -524.00) },
      { SIMDE_BFLOAT16_VALUE(  -524.00), SIMDE_BFLOAT16_VALUE(   676.00), SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(  -916.00),
        SIMDE_BFLOAT16_VALUE(   720.00), SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(   544.00), SIMDE_BFLOAT16_VALUE(  -984.00) },
      { SIMDE_BFLOAT16_VALUE(   460.00), SIMDE_BFLOAT16_VALUE(  -576.00), SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(  -916.00),
        SIMDE_BFLOAT16_VALUE(   720.00), SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(   544.00), SIMDE_BFLOAT16_VALUE(  -984.00) },
      { SIMDE_BFLOAT16_VALUE(   460.00), SIMDE_BFLOAT16_VALUE(   676.00), SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(   464.00),
        SIMDE_BFLOAT16_VALUE(   720.00), SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(   544.00), SIMDE_BFLOAT16_VALUE(  -984.00) },
      { SIMDE_BFLOAT16_VALUE(   460.00), SIMDE_BFLOAT16_VALUE(   676.00), SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(  -916.00),
        SIMDE_BFLOAT16_VALUE(   720.00), SIMDE_BFLOAT16_VALUE(   880.00), SIMDE_BFLOAT16_VALUE(   544.00), SIMDE_BFLOAT16_VALUE(  -984.00) },
      { SIMDE_BFLOAT16_VALUE(   460.00), SIMDE_BFLOAT16_VALUE(   676.00), SIMDE_BFLOAT16_VALUE(   888.00), SIMDE_BFLOAT16_VALUE(  -916.00),
        SIMDE_BFLOAT16_VALUE(   720.00), SIMDE_BFLOAT16_VALUE(  -908.00), SIMDE_BFLOAT16_VALUE(   544.00), SIMDE_BFLOAT16_VALUE(   -49.25) } },
    { { SIMDE_BFLOAT16_VALUE(  -956.00), SIMDE_BFLOAT16_VALUE(    33.75), SIMDE_BFLOAT16_VALUE(    96.00), SIMDE_BFLOAT16_VALUE(   960.00),
        SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   724.00), SIMDE_BFLOAT16_VALUE(   101.50), SIMDE_BFLOAT16_VALUE(  -684.00) },
      { SIMDE_BFLOAT16_VALUE(   876.00), SIMDE_BFLOAT16_VALUE(   -36.50), SIMDE_BFLOAT16_VALUE(  -720.00), SIMDE_BFLOAT16_VALUE(   216.00),
        SIMDE_BFLOAT16_VALUE(  -644.00), SIMDE_BFLOAT16_VALUE(   840.00), SIMDE_BFLOAT16_VALUE(   640.00), SIMDE_BFLOAT16_VALUE(   812.00) },
      { SIMDE_BFLOAT16_VALUE(   812.00), SIMDE_BFLOAT16_VALUE(    33.75), SIMDE_BFLOAT16_VALUE(    96.00), SIMDE_BFLOAT16_VALUE(   960.00),
        SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   724.00), SIMDE_BFLOAT16_VALUE(   101.50), SIMDE_BFLOAT16_VALUE(  -684.00) },
      { SIMDE_BFLOAT16_VALUE(  -956.00), SIMDE_BFLOAT16_VALUE(   640.00), SIMDE_BFLOAT16_VALUE(    96.00), SIMDE_BFLOAT16_VALUE(   960.00),
        SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   724.00), SIMDE_BFLOAT16_VALUE(   101.50), SIMDE_BFLOAT16_VALUE(  -684.00) },
      { SIMDE_BFLOAT16_VALUE(  -956.00), SIMDE_BFLOAT16_VALUE(    33.75), SIMDE_BFLOAT16_VALUE(    96.00), SIMDE_BFLOAT16_VALUE(  -644.00),
        SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   724.00), SIMDE_BFLOAT16_VALUE(   101.50), SIMDE_BFLOAT16_VALUE(  -684.00) },
      { SIMDE_BFLOAT16_VALUE(  -956.00), SIMDE_BFLOAT16_VALUE(    33.75), SIMDE_BFLOAT16_VALUE(    96.00), SIMDE_BFLOAT16_VALUE(   960.00),
        SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   216.00), SIMDE_BFLOAT16_VALUE(   101.50), SIMDE_BFLOAT16_VALUE(  -684.00) },
      { SIMDE_BFLOAT16_VALUE(  -956.00), SIMDE_BFLOAT16_VALUE(    33.75), SIMDE_BFLOAT16_VALUE(    96.00), SIMDE_BFLOAT16_VALUE(   960.00),
        SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   724.00), SIMDE_BFLOAT16_VALUE(   101.50), SIMDE_BFLOAT16_VALUE(   -36.50) } },
    { { SIMDE_BFLOAT16_VALUE(   516.00), SIMDE_BFLOAT16_VALUE(   528.00), SIMDE_BFLOAT16_VALUE(   892.00), SIMDE_BFLOAT16_VALUE(   240.00),
        SIMDE_BFLOAT16_VALUE(   620.00), SIMDE_BFLOAT16_VALUE(   442.00), SIMDE_BFLOAT16_VALUE(   252.00), SIMDE_BFLOAT16_VALUE(    13.44) },
      { SIMDE_BFLOAT16_VALUE(  -604.00), SIMDE_BFLOAT16_VALUE(   226.00), SIMDE_BFLOAT16_VALUE(  -106.00), SIMDE_BFLOAT16_VALUE(   856.00),
        SIMDE_BFLOAT16_VALUE(  -276.00), SIMDE_BFLOAT16_VALUE(   316.00), SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(  -233.00) },
      { SIMDE_BFLOAT16_VALUE(  -233.00), SIMDE_BFLOAT16_VALUE(   528.00), SIMDE_BFLOAT16_VALUE(   892.00), SIMDE_BFLOAT16_VALUE(   240.00),
        SIMDE_BFLOAT16_VALUE(   620.00), SIMDE_BFLOAT16_VALUE(   442.00), SIMDE_BFLOAT16_VALUE(   252.00), SIMDE_BFLOAT16_VALUE(    13.44) },
      { SIMDE_BFLOAT16_VALUE(   516.00), SIMDE_BFLOAT16_VALUE(  -668.00), SIMDE_BFLOAT16_VALUE(   892.00), SIMDE_BFLOAT16_VALUE(   240.00),
        SIMDE_BFLOAT16_VALUE(   620.00), SIMDE_BFLOAT16_VALUE(   442.00), SIMDE_BFLOAT16_VALUE(   252.00), SIMDE_BFLOAT16_VALUE(    13.44) },
      { SIMDE_BFLOAT16_VALUE(   516.00), SIMDE_BFLOAT16_VALUE(   528.00), SIMDE_BFLOAT16_VALUE(   892.00), SIMDE_BFLOAT16_VALUE(  -276.00),
        SIMDE_BFLOAT16_VALUE(   620.00), SIMDE_BFLOAT16_VALUE(   442.00), SIMDE_BFLOAT16_VALUE(   252.00), SIMDE_BFLOAT16_VALUE(    13.44) },
      { SIMDE_BFLOAT16_VALUE(   516.00), SIMDE_BFLOAT16_VALUE(   528.00), SIMDE_BFLOAT16_VALUE(   892.00), SIMDE_BFLOAT16_VALUE(   240.00),
        SIMDE_BFLOAT16_VALUE(   620.00), SIMDE_BFLOAT16_VALUE(   856.00), SIMDE_BFLOAT16_VALUE(   252.00), SIMDE_BFLOAT16_VALUE(    13.44) },
      { SIMDE_BFLOAT16_VALUE(   516.00), SIMDE_BFLOAT16_VALUE(   528.00), SIMDE_BFLOAT16_VALUE(   892.00), SIMDE_BFLOAT16_VALUE(   240.00),
        SIMDE_BFLOAT16_VALUE(   620.00), SIMDE_BFLOAT16_VALUE(   442.00), SIMDE_BFLOAT16_VALUE(   252.00), SIMDE_BFLOAT16_VALUE(   226.00) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_bfloat16x8_t a = simde_vld1q_bf16(test_vec[i].a);
    simde_bfloat16x8_t b = simde_vld1q_bf16(test_vec[i].b);

    simde_bfloat16x8_t r0_7 = simde_vcopyq_laneq_bf16(a, 0, b, 7);
    simde_bfloat16x8_t r1_6 = simde_vcopyq_laneq_bf16(a, 1, b, 6);
    simde_bfloat16x8_t r3_4 = simde_vcopyq_laneq_bf16(a, 3, b, 4);
    simde_bfloat16x8_t r5_3 = simde_vcopyq_laneq_bf16(a, 5, b, 3);
    simde_bfloat16x8_t r7_1 = simde_vcopyq_laneq_bf16(a, 7, b, 1);

    simde_test_arm_neon_assert_equal_bf16x8(r0_7, simde_vld1q_bf16(test_vec[i].r0_7), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r1_6, simde_vld1q_bf16(test_vec[i].r1_6), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r3_4, simde_vld1q_bf16(test_vec[i].r3_4), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r5_3, simde_vld1q_bf16(test_vec[i].r5_3), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r7_1, simde_vld1q_bf16(test_vec[i].r7_1), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 4 ; i++) {
    simde_bfloat16x8_t a = simde_test_arm_neon_random_bf16x8(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x8_t b = simde_test_arm_neon_random_bf16x8(SIMDE_BFLOAT16_VALUE(-1000.0), SIMDE_BFLOAT16_VALUE(1000.0));
    simde_bfloat16x8_t r0_7 = simde_vcopyq_laneq_bf16(a, 0, b, 7);
    simde_bfloat16x8_t r1_6 = simde_vcopyq_laneq_bf16(a, 1, b, 6);
    simde_bfloat16x8_t r3_4 = simde_vcopyq_laneq_bf16(a, 3, b, 4);
    simde_bfloat16x8_t r5_3 = simde_vcopyq_laneq_bf16(a, 5, b, 3);
    simde_bfloat16x8_t r7_1 = simde_vcopyq_laneq_bf16(a, 7, b, 1);

    simde_test_arm_neon_write_bf16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_bf16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r0_7, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r1_6, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r3_4, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r5_3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r7_1, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_f64)

SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_f64)

SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_f64)

SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_f64)

SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_p64)

SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_lane_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopy_laneq_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_lane_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vcopyq_laneq_bf16)
SIMDE_TEST_FUNC_LIST_END

#include "test-neon-footer.h"