5241f43e创建于 2024年7月31日历史提交
#define SIMDE_TEST_ARM_NEON_INSN st4

#include "test-neon.h"
#include "../../../simde/arm/neon/st4.h"
#include "../../../simde/arm/neon/ld4.h"
#include "../../../simde/arm/neon/get_lane.h"

/* Implementor notes (seanptmaher):
 *
 * the way that I'm opting to test this is that I'll have a r[4][x]
 * array of vectors, as well as a flat buffer of results. The flat
 * buffer contains the expected result of a st4, done on arm hardware,
 * which will be compared against a st4 done at test time.
 *
 * To test the ld4, the stored st4 will be ld4'd, and then
 * individually compared against the r[4][x] vector.
 */

#if !defined(SIMDE_BUG_INTEL_857088)

static int
test_simde_vst4_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_float16_t r0[4];
    simde_float16_t r1[4];
    simde_float16_t r2[4];
    simde_float16_t r3[4];
    simde_float16_t a[16];
  } test_vec[] = {
    { { SIMDE_FLOAT16_VALUE( - 47.024),  SIMDE_FLOAT16_VALUE(  6.719),  SIMDE_FLOAT16_VALUE( 41.219),  SIMDE_FLOAT16_VALUE( 13.593) },
      { SIMDE_FLOAT16_VALUE( - 94.191),  SIMDE_FLOAT16_VALUE( 54.699),  SIMDE_FLOAT16_VALUE( 93.339), SIMDE_FLOAT16_VALUE( - 70.910) },
      { SIMDE_FLOAT16_VALUE( - 57.135), SIMDE_FLOAT16_VALUE( - 74.250),  SIMDE_FLOAT16_VALUE( 44.190), SIMDE_FLOAT16_VALUE( - 50.049) },
      {  SIMDE_FLOAT16_VALUE(  4.436),  SIMDE_FLOAT16_VALUE( 57.399),  SIMDE_FLOAT16_VALUE( 71.170), SIMDE_FLOAT16_VALUE( - 90.745) },
      { SIMDE_FLOAT16_VALUE( - 47.024), SIMDE_FLOAT16_VALUE( - 94.191), SIMDE_FLOAT16_VALUE( - 57.135),  SIMDE_FLOAT16_VALUE(  4.436),
         SIMDE_FLOAT16_VALUE(  6.719),  SIMDE_FLOAT16_VALUE( 54.699), SIMDE_FLOAT16_VALUE( - 74.250),  SIMDE_FLOAT16_VALUE( 57.399),
         SIMDE_FLOAT16_VALUE( 41.219),  SIMDE_FLOAT16_VALUE( 93.339),  SIMDE_FLOAT16_VALUE( 44.190),  SIMDE_FLOAT16_VALUE( 71.170),
         SIMDE_FLOAT16_VALUE( 13.593), SIMDE_FLOAT16_VALUE( - 70.910), SIMDE_FLOAT16_VALUE( - 50.049), SIMDE_FLOAT16_VALUE( - 90.745) } },
    { { SIMDE_FLOAT16_VALUE( - 57.272), SIMDE_FLOAT16_VALUE( - 89.707),  SIMDE_FLOAT16_VALUE( 23.428), SIMDE_FLOAT16_VALUE( -  9.662) },
      { SIMDE_FLOAT16_VALUE( - 66.994), SIMDE_FLOAT16_VALUE( - 28.587), SIMDE_FLOAT16_VALUE( - 24.075),  SIMDE_FLOAT16_VALUE( 72.816) },
      {  SIMDE_FLOAT16_VALUE( 87.704),  SIMDE_FLOAT16_VALUE( 11.476), SIMDE_FLOAT16_VALUE( -  9.653),  SIMDE_FLOAT16_VALUE( 93.611) },
      {  SIMDE_FLOAT16_VALUE( 96.922),  SIMDE_FLOAT16_VALUE( 35.294),  SIMDE_FLOAT16_VALUE(  9.081),  SIMDE_FLOAT16_VALUE( 56.455) },
      { SIMDE_FLOAT16_VALUE( - 57.272), SIMDE_FLOAT16_VALUE( - 66.994),  SIMDE_FLOAT16_VALUE( 87.704),  SIMDE_FLOAT16_VALUE( 96.922),
        SIMDE_FLOAT16_VALUE( - 89.707), SIMDE_FLOAT16_VALUE( - 28.587),  SIMDE_FLOAT16_VALUE( 11.476),  SIMDE_FLOAT16_VALUE( 35.294),
         SIMDE_FLOAT16_VALUE( 23.428), SIMDE_FLOAT16_VALUE( - 24.075), SIMDE_FLOAT16_VALUE( -  9.653),  SIMDE_FLOAT16_VALUE(  9.081),
        SIMDE_FLOAT16_VALUE( -  9.662),  SIMDE_FLOAT16_VALUE( 72.816),  SIMDE_FLOAT16_VALUE( 93.611),  SIMDE_FLOAT16_VALUE( 56.455) } },
    { { SIMDE_FLOAT16_VALUE( - 93.105), SIMDE_FLOAT16_VALUE( -  3.401),  SIMDE_FLOAT16_VALUE( 38.259), SIMDE_FLOAT16_VALUE( - 77.939) },
      { SIMDE_FLOAT16_VALUE( - 61.605), SIMDE_FLOAT16_VALUE( - 53.766), SIMDE_FLOAT16_VALUE( - 79.385),  SIMDE_FLOAT16_VALUE( 51.701) },
      { SIMDE_FLOAT16_VALUE( - 13.690),  SIMDE_FLOAT16_VALUE( 61.359), SIMDE_FLOAT16_VALUE( - 48.410),  SIMDE_FLOAT16_VALUE( 83.577) },
      { SIMDE_FLOAT16_VALUE( - 31.493),  SIMDE_FLOAT16_VALUE( 67.547), SIMDE_FLOAT16_VALUE( - 49.486), SIMDE_FLOAT16_VALUE( - 70.863) },
      { SIMDE_FLOAT16_VALUE( - 93.105), SIMDE_FLOAT16_VALUE( - 61.605), SIMDE_FLOAT16_VALUE( - 13.690), SIMDE_FLOAT16_VALUE( - 31.493),
        SIMDE_FLOAT16_VALUE( -  3.401), SIMDE_FLOAT16_VALUE( - 53.766),  SIMDE_FLOAT16_VALUE( 61.359),  SIMDE_FLOAT16_VALUE( 67.547),
         SIMDE_FLOAT16_VALUE( 38.259), SIMDE_FLOAT16_VALUE( - 79.385), SIMDE_FLOAT16_VALUE( - 48.410), SIMDE_FLOAT16_VALUE( - 49.486),
        SIMDE_FLOAT16_VALUE( - 77.939),  SIMDE_FLOAT16_VALUE( 51.701),  SIMDE_FLOAT16_VALUE( 83.577), SIMDE_FLOAT16_VALUE( - 70.863) } },
    { { SIMDE_FLOAT16_VALUE( - 59.131), SIMDE_FLOAT16_VALUE( - 86.919),  SIMDE_FLOAT16_VALUE( 79.472), SIMDE_FLOAT16_VALUE( -  8.816) },
      {  SIMDE_FLOAT16_VALUE(  1.504), SIMDE_FLOAT16_VALUE( - 19.699), SIMDE_FLOAT16_VALUE( - 54.045),  SIMDE_FLOAT16_VALUE( 80.818) },
      {  SIMDE_FLOAT16_VALUE( 96.502),  SIMDE_FLOAT16_VALUE( 74.467), SIMDE_FLOAT16_VALUE( - 62.320), SIMDE_FLOAT16_VALUE( - 13.596) },
      {  SIMDE_FLOAT16_VALUE( 93.177), SIMDE_FLOAT16_VALUE( - 66.739), SIMDE_FLOAT16_VALUE( - 38.338),  SIMDE_FLOAT16_VALUE( 99.656) },
      { SIMDE_FLOAT16_VALUE( - 59.131),  SIMDE_FLOAT16_VALUE(  1.504),  SIMDE_FLOAT16_VALUE( 96.502),  SIMDE_FLOAT16_VALUE( 93.177),
        SIMDE_FLOAT16_VALUE( - 86.919), SIMDE_FLOAT16_VALUE( - 19.699),  SIMDE_FLOAT16_VALUE( 74.467), SIMDE_FLOAT16_VALUE( - 66.739),
         SIMDE_FLOAT16_VALUE( 79.472), SIMDE_FLOAT16_VALUE( - 54.045), SIMDE_FLOAT16_VALUE( - 62.320), SIMDE_FLOAT16_VALUE( - 38.338),
        SIMDE_FLOAT16_VALUE( -  8.816),  SIMDE_FLOAT16_VALUE( 80.818), SIMDE_FLOAT16_VALUE( - 13.596),  SIMDE_FLOAT16_VALUE( 99.656) } },
    { { SIMDE_FLOAT16_VALUE( - 37.162),  SIMDE_FLOAT16_VALUE( 16.071),  SIMDE_FLOAT16_VALUE( 53.822),  SIMDE_FLOAT16_VALUE( 26.764) },
      {  SIMDE_FLOAT16_VALUE( 12.408),  SIMDE_FLOAT16_VALUE( 83.245), SIMDE_FLOAT16_VALUE( - 72.788),  SIMDE_FLOAT16_VALUE( 33.763) },
      {  SIMDE_FLOAT16_VALUE( 62.702),  SIMDE_FLOAT16_VALUE( 47.064), SIMDE_FLOAT16_VALUE( - 22.343), SIMDE_FLOAT16_VALUE( - 73.798) },
      {  SIMDE_FLOAT16_VALUE( 47.563), SIMDE_FLOAT16_VALUE( - 15.230), SIMDE_FLOAT16_VALUE( - 20.486),  SIMDE_FLOAT16_VALUE(  9.512) },
      { SIMDE_FLOAT16_VALUE( - 37.162),  SIMDE_FLOAT16_VALUE( 12.408),  SIMDE_FLOAT16_VALUE( 62.702),  SIMDE_FLOAT16_VALUE( 47.563),
         SIMDE_FLOAT16_VALUE( 16.071),  SIMDE_FLOAT16_VALUE( 83.245),  SIMDE_FLOAT16_VALUE( 47.064), SIMDE_FLOAT16_VALUE( - 15.230),
         SIMDE_FLOAT16_VALUE( 53.822), SIMDE_FLOAT16_VALUE( - 72.788), SIMDE_FLOAT16_VALUE( - 22.343), SIMDE_FLOAT16_VALUE( - 20.486),
         SIMDE_FLOAT16_VALUE( 26.764),  SIMDE_FLOAT16_VALUE( 33.763), SIMDE_FLOAT16_VALUE( - 73.798),  SIMDE_FLOAT16_VALUE(  9.512) } },
    { {  SIMDE_FLOAT16_VALUE( 81.267), SIMDE_FLOAT16_VALUE( - 14.419), SIMDE_FLOAT16_VALUE( - 86.910),  SIMDE_FLOAT16_VALUE( 96.117) },
      {  SIMDE_FLOAT16_VALUE( 63.922), SIMDE_FLOAT16_VALUE( - 13.784),  SIMDE_FLOAT16_VALUE( 60.900), SIMDE_FLOAT16_VALUE( - 46.465) },
      { SIMDE_FLOAT16_VALUE( -  8.848), SIMDE_FLOAT16_VALUE( - 38.930), SIMDE_FLOAT16_VALUE( - 83.013), SIMDE_FLOAT16_VALUE( - 82.394) },
      { SIMDE_FLOAT16_VALUE( - 76.512),  SIMDE_FLOAT16_VALUE( 98.430), SIMDE_FLOAT16_VALUE( - 36.632),  SIMDE_FLOAT16_VALUE( 72.951) },
      {  SIMDE_FLOAT16_VALUE( 81.267),  SIMDE_FLOAT16_VALUE( 63.922), SIMDE_FLOAT16_VALUE( -  8.848), SIMDE_FLOAT16_VALUE( - 76.512),
        SIMDE_FLOAT16_VALUE( - 14.419), SIMDE_FLOAT16_VALUE( - 13.784), SIMDE_FLOAT16_VALUE( - 38.930),  SIMDE_FLOAT16_VALUE( 98.430),
        SIMDE_FLOAT16_VALUE( - 86.910),  SIMDE_FLOAT16_VALUE( 60.900), SIMDE_FLOAT16_VALUE( - 83.013), SIMDE_FLOAT16_VALUE( - 36.632),
         SIMDE_FLOAT16_VALUE( 96.117), SIMDE_FLOAT16_VALUE( - 46.465), SIMDE_FLOAT16_VALUE( - 82.394),  SIMDE_FLOAT16_VALUE( 72.951) } },
    { { SIMDE_FLOAT16_VALUE( - 59.414), SIMDE_FLOAT16_VALUE( -  0.156),  SIMDE_FLOAT16_VALUE( 25.048),  SIMDE_FLOAT16_VALUE( 72.088) },
      { SIMDE_FLOAT16_VALUE( -  6.793),  SIMDE_FLOAT16_VALUE(  3.483), SIMDE_FLOAT16_VALUE( - 70.169), SIMDE_FLOAT16_VALUE( - 17.526) },
      { SIMDE_FLOAT16_VALUE( - 45.584),  SIMDE_FLOAT16_VALUE( 48.819),  SIMDE_FLOAT16_VALUE( 99.172), SIMDE_FLOAT16_VALUE( - 28.748) },
      {  SIMDE_FLOAT16_VALUE( 87.589),  SIMDE_FLOAT16_VALUE( 24.842),  SIMDE_FLOAT16_VALUE( 68.343),  SIMDE_FLOAT16_VALUE( 86.487) },
      { SIMDE_FLOAT16_VALUE( - 59.414), SIMDE_FLOAT16_VALUE( -  6.793), SIMDE_FLOAT16_VALUE( - 45.584),  SIMDE_FLOAT16_VALUE( 87.589),
        SIMDE_FLOAT16_VALUE( -  0.156),  SIMDE_FLOAT16_VALUE(  3.483),  SIMDE_FLOAT16_VALUE( 48.819),  SIMDE_FLOAT16_VALUE( 24.842),
         SIMDE_FLOAT16_VALUE( 25.048), SIMDE_FLOAT16_VALUE( - 70.169),  SIMDE_FLOAT16_VALUE( 99.172),  SIMDE_FLOAT16_VALUE( 68.343),
         SIMDE_FLOAT16_VALUE( 72.088), SIMDE_FLOAT16_VALUE( - 17.526), SIMDE_FLOAT16_VALUE( - 28.748),  SIMDE_FLOAT16_VALUE( 86.487) } },
    { { SIMDE_FLOAT16_VALUE( - 20.140), SIMDE_FLOAT16_VALUE( - 42.975),  SIMDE_FLOAT16_VALUE( 95.423),  SIMDE_FLOAT16_VALUE( 44.578) },
      { SIMDE_FLOAT16_VALUE( - 89.956),  SIMDE_FLOAT16_VALUE( 30.266), SIMDE_FLOAT16_VALUE( - 96.275), SIMDE_FLOAT16_VALUE( - 86.081) },
      { SIMDE_FLOAT16_VALUE( - 51.282),  SIMDE_FLOAT16_VALUE( 69.208),  SIMDE_FLOAT16_VALUE( 62.760),  SIMDE_FLOAT16_VALUE( 60.084) },
      {  SIMDE_FLOAT16_VALUE( 50.762),  SIMDE_FLOAT16_VALUE( 51.328), SIMDE_FLOAT16_VALUE( -  5.349),  SIMDE_FLOAT16_VALUE(  8.335) },
      { SIMDE_FLOAT16_VALUE( - 20.140), SIMDE_FLOAT16_VALUE( - 89.956), SIMDE_FLOAT16_VALUE( - 51.282),  SIMDE_FLOAT16_VALUE( 50.762),
        SIMDE_FLOAT16_VALUE( - 42.975),  SIMDE_FLOAT16_VALUE( 30.266),  SIMDE_FLOAT16_VALUE( 69.208),  SIMDE_FLOAT16_VALUE( 51.328),
         SIMDE_FLOAT16_VALUE( 95.423), SIMDE_FLOAT16_VALUE( - 96.275),  SIMDE_FLOAT16_VALUE( 62.760), SIMDE_FLOAT16_VALUE( -  5.349),
         SIMDE_FLOAT16_VALUE( 44.578), SIMDE_FLOAT16_VALUE( - 86.081),  SIMDE_FLOAT16_VALUE( 60.084),  SIMDE_FLOAT16_VALUE(  8.335) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float16x4x4_t r_ = { { simde_vld1_f16(test_vec[i].r0),
                                 simde_vld1_f16(test_vec[i].r1),
                                 simde_vld1_f16(test_vec[i].r2),
                                 simde_vld1_f16(test_vec[i].r3), } };

    simde_float16_t a_[16];
    simde_vst4_f16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_f16(a_);
    simde_test_arm_neon_assert_equal_f16x4(r_.val[0], simde_vld1_f16(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_f16x4(r_.val[1], simde_vld1_f16(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_f16x4(r_.val[2], simde_vld1_f16(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_f16x4(r_.val[3], simde_vld1_f16(test_vec[i].r3), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float16x4_t r0 = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
    simde_float16x4_t r1 = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
    simde_float16x4_t r2 = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
    simde_float16x4_t r3 = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
    simde_float16x16_t a = simde_vst4_f16(r0, r1, r2, r3);

    simde_test_arm_neon_write_f16x4(2, r0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f16x4(2, r1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x4(2, r2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x4(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x16(2, a, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst4_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32 r0[2];
    simde_float32 r1[2];
    simde_float32 r2[2];
    simde_float32 r3[2];
    simde_float32 a[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(    77.38), SIMDE_FLOAT32_C(   677.34) },
      { SIMDE_FLOAT32_C(  -113.63), SIMDE_FLOAT32_C(  -677.73) },
      { SIMDE_FLOAT32_C(  -489.72), SIMDE_FLOAT32_C(   841.42) },
      { SIMDE_FLOAT32_C(   -32.02), SIMDE_FLOAT32_C(   794.35) },
      {
      SIMDE_FLOAT32_C(    77.38),
      SIMDE_FLOAT32_C(  -113.63),
      SIMDE_FLOAT32_C(  -489.72),
      SIMDE_FLOAT32_C(   -32.02),
      SIMDE_FLOAT32_C(   677.34),
      SIMDE_FLOAT32_C(  -677.73),
      SIMDE_FLOAT32_C(   841.42),
      SIMDE_FLOAT32_C(   794.35),
      }
    },
    { { SIMDE_FLOAT32_C(  -290.22), SIMDE_FLOAT32_C(  -690.11) },
      { SIMDE_FLOAT32_C(  -998.58), SIMDE_FLOAT32_C(  -130.70) },
      { SIMDE_FLOAT32_C(  -215.14), SIMDE_FLOAT32_C(   735.01) },
      { SIMDE_FLOAT32_C(   247.54), SIMDE_FLOAT32_C(    37.32) },
      {
      SIMDE_FLOAT32_C(  -290.22),
      SIMDE_FLOAT32_C(  -998.58),
      SIMDE_FLOAT32_C(  -215.14),
      SIMDE_FLOAT32_C(   247.54),
      SIMDE_FLOAT32_C(  -690.11),
      SIMDE_FLOAT32_C(  -130.70),
      SIMDE_FLOAT32_C(   735.01),
      SIMDE_FLOAT32_C(    37.32),
      }
    },
    { { SIMDE_FLOAT32_C(   469.24), SIMDE_FLOAT32_C(   265.50) },
      { SIMDE_FLOAT32_C(   319.83), SIMDE_FLOAT32_C(  -183.68) },
      { SIMDE_FLOAT32_C(  -305.25), SIMDE_FLOAT32_C(  -951.48) },
      { SIMDE_FLOAT32_C(   557.71), SIMDE_FLOAT32_C(  -797.73) },
      {
      SIMDE_FLOAT32_C(   469.24),
      SIMDE_FLOAT32_C(   319.83),
      SIMDE_FLOAT32_C(  -305.25),
      SIMDE_FLOAT32_C(   557.71),
      SIMDE_FLOAT32_C(   265.50),
      SIMDE_FLOAT32_C(  -183.68),
      SIMDE_FLOAT32_C(  -951.48),
      SIMDE_FLOAT32_C(  -797.73),
      }
    },
    { { SIMDE_FLOAT32_C(   453.48), SIMDE_FLOAT32_C(  -751.30) },
      { SIMDE_FLOAT32_C(  -461.55), SIMDE_FLOAT32_C(  -927.67) },
      { SIMDE_FLOAT32_C(  -520.41), SIMDE_FLOAT32_C(   745.85) },
      { SIMDE_FLOAT32_C(  -100.92), SIMDE_FLOAT32_C(   556.97) },
      {
      SIMDE_FLOAT32_C(   453.48),
      SIMDE_FLOAT32_C(  -461.55),
      SIMDE_FLOAT32_C(  -520.41),
      SIMDE_FLOAT32_C(  -100.92),
      SIMDE_FLOAT32_C(  -751.30),
      SIMDE_FLOAT32_C(  -927.67),
      SIMDE_FLOAT32_C(   745.85),
      SIMDE_FLOAT32_C(   556.97),
      }
    },
    { { SIMDE_FLOAT32_C(   423.19), SIMDE_FLOAT32_C(   785.44) },
      { SIMDE_FLOAT32_C(   879.23), SIMDE_FLOAT32_C(   933.48) },
      { SIMDE_FLOAT32_C(   626.86), SIMDE_FLOAT32_C(  -152.79) },
      { SIMDE_FLOAT32_C(   727.83), SIMDE_FLOAT32_C(  -663.36) },
      {
      SIMDE_FLOAT32_C(   423.19),
      SIMDE_FLOAT32_C(   879.23),
      SIMDE_FLOAT32_C(   626.86),
      SIMDE_FLOAT32_C(   727.83),
      SIMDE_FLOAT32_C(   785.44),
      SIMDE_FLOAT32_C(   933.48),
      SIMDE_FLOAT32_C(  -152.79),
      SIMDE_FLOAT32_C(  -663.36),
      }
    },
    { { SIMDE_FLOAT32_C(   157.09), SIMDE_FLOAT32_C(   729.25) },
      { SIMDE_FLOAT32_C(   205.94), SIMDE_FLOAT32_C(   941.95) },
      { SIMDE_FLOAT32_C(   464.26), SIMDE_FLOAT32_C(  -546.52) },
      { SIMDE_FLOAT32_C(   -20.73), SIMDE_FLOAT32_C(   -66.51) },
      {
      SIMDE_FLOAT32_C(   157.09),
      SIMDE_FLOAT32_C(   205.94),
      SIMDE_FLOAT32_C(   464.26),
      SIMDE_FLOAT32_C(   -20.73),
      SIMDE_FLOAT32_C(   729.25),
      SIMDE_FLOAT32_C(   941.95),
      SIMDE_FLOAT32_C(  -546.52),
      SIMDE_FLOAT32_C(   -66.51),
      }
    },
    { { SIMDE_FLOAT32_C(   718.98), SIMDE_FLOAT32_C(  -700.91) },
      { SIMDE_FLOAT32_C(   749.81), SIMDE_FLOAT32_C(  -586.28) },
      { SIMDE_FLOAT32_C(  -652.38), SIMDE_FLOAT32_C(   307.52) },
      { SIMDE_FLOAT32_C(  -384.00), SIMDE_FLOAT32_C(   801.10) },
      {
      SIMDE_FLOAT32_C(   718.98),
      SIMDE_FLOAT32_C(   749.81),
      SIMDE_FLOAT32_C(  -652.38),
      SIMDE_FLOAT32_C(  -384.00),
      SIMDE_FLOAT32_C(  -700.91),
      SIMDE_FLOAT32_C(  -586.28),
      SIMDE_FLOAT32_C(   307.52),
      SIMDE_FLOAT32_C(   801.10),
      }
    },
    { { SIMDE_FLOAT32_C(   556.22), SIMDE_FLOAT32_C(   154.44) },
      { SIMDE_FLOAT32_C(   873.42), SIMDE_FLOAT32_C(  -964.19) },
      { SIMDE_FLOAT32_C(   -99.70), SIMDE_FLOAT32_C(  -227.50) },
      { SIMDE_FLOAT32_C(   592.78), SIMDE_FLOAT32_C(  -676.51) },
      {
      SIMDE_FLOAT32_C(   556.22),
      SIMDE_FLOAT32_C(   873.42),
      SIMDE_FLOAT32_C(   -99.70),
      SIMDE_FLOAT32_C(   592.78),
      SIMDE_FLOAT32_C(   154.44),
      SIMDE_FLOAT32_C(  -964.19),
      SIMDE_FLOAT32_C(  -227.50),
      SIMDE_FLOAT32_C(  -676.51),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32x2x4_t r_ = { { simde_vld1_f32(test_vec[i].r0),
                                 simde_vld1_f32(test_vec[i].r1),
                                 simde_vld1_f32(test_vec[i].r2),
                                 simde_vld1_f32(test_vec[i].r3), } };

    simde_float32 a_[8];
    simde_vst4_f32(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_f32(a_);
    simde_test_arm_neon_assert_equal_f32x2(r_.val[0], simde_vld1_f32(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_f32x2(r_.val[1], simde_vld1_f32(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_f32x2(r_.val[2], simde_vld1_f32(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_f32x2(r_.val[3], simde_vld1_f32(test_vec[i].r3), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float32x2_t a0 = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t a1 = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t a2 = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2_t a3 = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
    simde_float32x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_f32x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_float32_t buf[8];
    simde_vst4_f32(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_f32(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64 r0[1];
    simde_float64 r1[1];
    simde_float64 r2[1];
    simde_float64 r3[1];
    simde_float64 a[4];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   624.60) },
      { SIMDE_FLOAT64_C(   658.33) },
      { SIMDE_FLOAT64_C(   990.90) },
      { SIMDE_FLOAT64_C(  -345.25) },
      {
      SIMDE_FLOAT64_C(   624.60),
      SIMDE_FLOAT64_C(   658.33),
      SIMDE_FLOAT64_C(   990.90),
      SIMDE_FLOAT64_C(  -345.25),
      }
    },
    { { SIMDE_FLOAT64_C(   563.48) },
      { SIMDE_FLOAT64_C(   508.25) },
      { SIMDE_FLOAT64_C(   888.63) },
      { SIMDE_FLOAT64_C(  -575.04) },
      {
      SIMDE_FLOAT64_C(   563.48),
      SIMDE_FLOAT64_C(   508.25),
      SIMDE_FLOAT64_C(   888.63),
      SIMDE_FLOAT64_C(  -575.04),
      }
    },
    { { SIMDE_FLOAT64_C(  -646.15) },
      { SIMDE_FLOAT64_C(   389.76) },
      { SIMDE_FLOAT64_C(   742.88) },
      { SIMDE_FLOAT64_C(  -788.98) },
      {
      SIMDE_FLOAT64_C(  -646.15),
      SIMDE_FLOAT64_C(   389.76),
      SIMDE_FLOAT64_C(   742.88),
      SIMDE_FLOAT64_C(  -788.98),
      }
    },
    { { SIMDE_FLOAT64_C(   856.06) },
      { SIMDE_FLOAT64_C(   722.96) },
      { SIMDE_FLOAT64_C(  -525.80) },
      { SIMDE_FLOAT64_C(  -581.83) },
      {
      SIMDE_FLOAT64_C(   856.06),
      SIMDE_FLOAT64_C(   722.96),
      SIMDE_FLOAT64_C(  -525.80),
      SIMDE_FLOAT64_C(  -581.83),
      }
    },
    { { SIMDE_FLOAT64_C(   936.61) },
      { SIMDE_FLOAT64_C(  -287.02) },
      { SIMDE_FLOAT64_C(   260.93) },
      { SIMDE_FLOAT64_C(   698.72) },
      {
      SIMDE_FLOAT64_C(   936.61),
      SIMDE_FLOAT64_C(  -287.02),
      SIMDE_FLOAT64_C(   260.93),
      SIMDE_FLOAT64_C(   698.72),
      }
    },
    { { SIMDE_FLOAT64_C(  -737.87) },
      { SIMDE_FLOAT64_C(   387.05) },
      { SIMDE_FLOAT64_C(   511.74) },
      { SIMDE_FLOAT64_C(  -545.62) },
      {
      SIMDE_FLOAT64_C(  -737.87),
      SIMDE_FLOAT64_C(   387.05),
      SIMDE_FLOAT64_C(   511.74),
      SIMDE_FLOAT64_C(  -545.62),
      }
    },
    { { SIMDE_FLOAT64_C(  -116.76) },
      { SIMDE_FLOAT64_C(   449.01) },
      { SIMDE_FLOAT64_C(   535.14) },
      { SIMDE_FLOAT64_C(   592.89) },
      {
      SIMDE_FLOAT64_C(  -116.76),
      SIMDE_FLOAT64_C(   449.01),
      SIMDE_FLOAT64_C(   535.14),
      SIMDE_FLOAT64_C(   592.89),
      }
    },
    { { SIMDE_FLOAT64_C(  -783.83) },
      { SIMDE_FLOAT64_C(   958.98) },
      { SIMDE_FLOAT64_C(  -896.71) },
      { SIMDE_FLOAT64_C(   840.77) },
      {
      SIMDE_FLOAT64_C(  -783.83),
      SIMDE_FLOAT64_C(   958.98),
      SIMDE_FLOAT64_C(  -896.71),
      SIMDE_FLOAT64_C(   840.77),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64x1x4_t r_ = { { simde_vld1_f64(test_vec[i].r0),
                                 simde_vld1_f64(test_vec[i].r1),
                                 simde_vld1_f64(test_vec[i].r2),
                                 simde_vld1_f64(test_vec[i].r3), } };

    simde_float64_t a_[4];
    simde_vst4_f64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_f64(a_);
    simde_test_arm_neon_assert_equal_f64x1(r_.val[0], simde_vld1_f64(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_f64x1(r_.val[1], simde_vld1_f64(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_f64x1(r_.val[2], simde_vld1_f64(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_f64x1(r_.val[3], simde_vld1_f64(test_vec[i].r3), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float64x1_t a0 = simde_test_arm_neon_random_f64x1(-1000.0f, 1000.0f);
    simde_float64x1_t a1 = simde_test_arm_neon_random_f64x1(-1000.0f, 1000.0f);
    simde_float64x1_t a2 = simde_test_arm_neon_random_f64x1(-1000.0f, 1000.0f);
    simde_float64x1_t a3 = simde_test_arm_neon_random_f64x1(-1000.0f, 1000.0f);
    simde_float64x1x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_f64x1(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x1(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x1(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_float64_t buf[4];
    simde_vst4_f64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_f64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int8_t r0[8];
    int8_t r1[8];
    int8_t r2[8];
    int8_t r3[8];
    int8_t a[32];
  } test_vec[] = {
    { { -INT8_C(  32), -INT8_C(  94), -INT8_C( 106),  INT8_C( 115), -INT8_C(  56),  INT8_C( 118), -INT8_C(  83),  INT8_C(  12) },
      { -INT8_C(  18), -INT8_C(   2), -INT8_C(   8),  INT8_C(  95), -INT8_C( 117),  INT8_C(  56),  INT8_C(  92), -INT8_C(  94) },
      { -INT8_C(  45), -INT8_C(  37), -INT8_C( 110), -INT8_C(  10),      INT8_MAX,  INT8_C( 100), -INT8_C(  25),  INT8_C( 115) },
      { -INT8_C(   6),  INT8_C(  60), -INT8_C(  25),  INT8_C(  92), -INT8_C(  89), -INT8_C( 118), -INT8_C(  50), -INT8_C( 120) },
      {
      -INT8_C(  32),
      -INT8_C(  18),
      -INT8_C(  45),
      -INT8_C(   6),
      -INT8_C(  94),
      -INT8_C(   2),
      -INT8_C(  37),
       INT8_C(  60),
      -INT8_C( 106),
      -INT8_C(   8),
      -INT8_C( 110),
      -INT8_C(  25),
       INT8_C( 115),
       INT8_C(  95),
      -INT8_C(  10),
       INT8_C(  92),
      -INT8_C(  56),
      -INT8_C( 117),
           INT8_MAX,
      -INT8_C(  89),
       INT8_C( 118),
       INT8_C(  56),
       INT8_C( 100),
      -INT8_C( 118),
      -INT8_C(  83),
       INT8_C(  92),
      -INT8_C(  25),
      -INT8_C(  50),
       INT8_C(  12),
      -INT8_C(  94),
       INT8_C( 115),
      -INT8_C( 120),
      }
    },
    { {  INT8_C(  44),  INT8_C( 100), -INT8_C(   5), -INT8_C(  11), -INT8_C(  38), -INT8_C(  87),  INT8_C(   1), -INT8_C(  55) },
      { -INT8_C(  89), -INT8_C(   7),  INT8_C(  40),  INT8_C(  50),  INT8_C(  49), -INT8_C( 123), -INT8_C(  44),  INT8_C(   5) },
      {  INT8_C(  96),  INT8_C( 102), -INT8_C(   5), -INT8_C(  33), -INT8_C(  53), -INT8_C(  30),  INT8_C(  82), -INT8_C(  59) },
      {  INT8_C(  30),  INT8_C(  57),  INT8_C(  34), -INT8_C(  58), -INT8_C(  61), -INT8_C(  16),  INT8_C(  78), -INT8_C(  16) },
      {
       INT8_C(  44),
      -INT8_C(  89),
       INT8_C(  96),
       INT8_C(  30),
       INT8_C( 100),
      -INT8_C(   7),
       INT8_C( 102),
       INT8_C(  57),
      -INT8_C(   5),
       INT8_C(  40),
      -INT8_C(   5),
       INT8_C(  34),
      -INT8_C(  11),
       INT8_C(  50),
      -INT8_C(  33),
      -INT8_C(  58),
      -INT8_C(  38),
       INT8_C(  49),
      -INT8_C(  53),
      -INT8_C(  61),
      -INT8_C(  87),
      -INT8_C( 123),
      -INT8_C(  30),
      -INT8_C(  16),
       INT8_C(   1),
      -INT8_C(  44),
       INT8_C(  82),
       INT8_C(  78),
      -INT8_C(  55),
       INT8_C(   5),
      -INT8_C(  59),
      -INT8_C(  16),
      }
    },
    { {  INT8_C(  84),  INT8_C(  73), -INT8_C(  27),  INT8_C(  46), -INT8_C(  14), -INT8_C(  26), -INT8_C(   9), -INT8_C( 103) },
      { -INT8_C(  33),  INT8_C(  32), -INT8_C(  52),  INT8_C(  17), -INT8_C(  91), -INT8_C(  96),  INT8_C(  22),  INT8_C(   5) },
      {  INT8_C(   7),  INT8_C(  17), -INT8_C(  28), -INT8_C(  46), -INT8_C(  13),  INT8_C(  55), -INT8_C( 105),  INT8_C(  17) },
      {  INT8_C( 112), -INT8_C(  71), -INT8_C(  41),  INT8_C(  52), -INT8_C(  87),  INT8_C(  37),  INT8_C(  36), -INT8_C(   3) },
      {
       INT8_C(  84),
      -INT8_C(  33),
       INT8_C(   7),
       INT8_C( 112),
       INT8_C(  73),
       INT8_C(  32),
       INT8_C(  17),
      -INT8_C(  71),
      -INT8_C(  27),
      -INT8_C(  52),
      -INT8_C(  28),
      -INT8_C(  41),
       INT8_C(  46),
       INT8_C(  17),
      -INT8_C(  46),
       INT8_C(  52),
      -INT8_C(  14),
      -INT8_C(  91),
      -INT8_C(  13),
      -INT8_C(  87),
      -INT8_C(  26),
      -INT8_C(  96),
       INT8_C(  55),
       INT8_C(  37),
      -INT8_C(   9),
       INT8_C(  22),
      -INT8_C( 105),
       INT8_C(  36),
      -INT8_C( 103),
       INT8_C(   5),
       INT8_C(  17),
      -INT8_C(   3),
      }
    },
    { {  INT8_C( 111),  INT8_C(   9),  INT8_C(  44),  INT8_C(  97), -INT8_C(  17),  INT8_C(  35), -INT8_C(   5), -INT8_C(  50) },
      {  INT8_C(  67), -INT8_C(  57), -INT8_C(  33), -INT8_C(  24),  INT8_C( 103), -INT8_C(  11), -INT8_C(  19),  INT8_C( 110) },
      {  INT8_C(   6), -INT8_C(  46),  INT8_C(  64), -INT8_C(   7),  INT8_C(   9), -INT8_C(  40),  INT8_C(  11),  INT8_C( 121) },
      { -INT8_C( 111), -INT8_C(  30), -INT8_C(  83),  INT8_C(  59),  INT8_C(   8), -INT8_C(  47),  INT8_C(  56),  INT8_C( 119) },
      {
       INT8_C( 111),
       INT8_C(  67),
       INT8_C(   6),
      -INT8_C( 111),
       INT8_C(   9),
      -INT8_C(  57),
      -INT8_C(  46),
      -INT8_C(  30),
       INT8_C(  44),
      -INT8_C(  33),
       INT8_C(  64),
      -INT8_C(  83),
       INT8_C(  97),
      -INT8_C(  24),
      -INT8_C(   7),
       INT8_C(  59),
      -INT8_C(  17),
       INT8_C( 103),
       INT8_C(   9),
       INT8_C(   8),
       INT8_C(  35),
      -INT8_C(  11),
      -INT8_C(  40),
      -INT8_C(  47),
      -INT8_C(   5),
      -INT8_C(  19),
       INT8_C(  11),
       INT8_C(  56),
      -INT8_C(  50),
       INT8_C( 110),
       INT8_C( 121),
       INT8_C( 119),
      }
    },
    { { -INT8_C(  38),  INT8_C( 100), -INT8_C(  40), -INT8_C(  55), -INT8_C( 120), -INT8_C(  45), -INT8_C( 104), -INT8_C(  53) },
      { -INT8_C( 102),  INT8_C( 119), -INT8_C(  76),  INT8_C(   2),  INT8_C( 109), -INT8_C(  95),  INT8_C( 112),  INT8_C( 115) },
      {  INT8_C( 115), -INT8_C(  79),  INT8_C( 109),  INT8_C( 124), -INT8_C( 119),  INT8_C( 120), -INT8_C(  10),  INT8_C(  26) },
      {  INT8_C(  90), -INT8_C(  93),  INT8_C(  85),  INT8_C(  98),  INT8_C( 117), -INT8_C( 114), -INT8_C(  39),  INT8_C(  79) },
      {
      -INT8_C(  38),
      -INT8_C( 102),
       INT8_C( 115),
       INT8_C(  90),
       INT8_C( 100),
       INT8_C( 119),
      -INT8_C(  79),
      -INT8_C(  93),
      -INT8_C(  40),
      -INT8_C(  76),
       INT8_C( 109),
       INT8_C(  85),
      -INT8_C(  55),
       INT8_C(   2),
       INT8_C( 124),
       INT8_C(  98),
      -INT8_C( 120),
       INT8_C( 109),
      -INT8_C( 119),
       INT8_C( 117),
      -INT8_C(  45),
      -INT8_C(  95),
       INT8_C( 120),
      -INT8_C( 114),
      -INT8_C( 104),
       INT8_C( 112),
      -INT8_C(  10),
      -INT8_C(  39),
      -INT8_C(  53),
       INT8_C( 115),
       INT8_C(  26),
       INT8_C(  79),
      }
    },
    { { -INT8_C(  14), -INT8_C(  78),  INT8_C(  25),  INT8_C( 122), -INT8_C( 123), -INT8_C(  79),  INT8_C(  70),  INT8_C(  32) },
      {  INT8_C(  40), -INT8_C(   6),  INT8_C(  34), -INT8_C( 107), -INT8_C( 101), -INT8_C( 110),  INT8_C(   9),  INT8_C(  15) },
      {  INT8_C(  67),  INT8_C( 118), -INT8_C( 117), -INT8_C(  52), -INT8_C(  18), -INT8_C( 127), -INT8_C(  25),  INT8_C(  72) },
      {  INT8_C(  37),  INT8_C(  60), -INT8_C(  85), -INT8_C( 102), -INT8_C(  54), -INT8_C( 124), -INT8_C(  23), -INT8_C(  67) },
      {
      -INT8_C(  14),
       INT8_C(  40),
       INT8_C(  67),
       INT8_C(  37),
      -INT8_C(  78),
      -INT8_C(   6),
       INT8_C( 118),
       INT8_C(  60),
       INT8_C(  25),
       INT8_C(  34),
      -INT8_C( 117),
      -INT8_C(  85),
       INT8_C( 122),
      -INT8_C( 107),
      -INT8_C(  52),
      -INT8_C( 102),
      -INT8_C( 123),
      -INT8_C( 101),
      -INT8_C(  18),
      -INT8_C(  54),
      -INT8_C(  79),
      -INT8_C( 110),
      -INT8_C( 127),
      -INT8_C( 124),
       INT8_C(  70),
       INT8_C(   9),
      -INT8_C(  25),
      -INT8_C(  23),
       INT8_C(  32),
       INT8_C(  15),
       INT8_C(  72),
      -INT8_C(  67),
      }
    },
    { {  INT8_C(  54),  INT8_C(   2),  INT8_C(  55), -INT8_C(  68), -INT8_C(  77),  INT8_C( 125), -INT8_C(  36), -INT8_C(  36) },
      {  INT8_C( 119), -INT8_C(   2),  INT8_C( 113),  INT8_C(  19), -INT8_C( 112),  INT8_C( 122),  INT8_C(  34), -INT8_C(  44) },
      { -INT8_C(  16), -INT8_C(  83), -INT8_C(  96), -INT8_C(  34),  INT8_C(  47), -INT8_C( 121),  INT8_C(  39),  INT8_C(  84) },
      { -INT8_C(  60), -INT8_C(  46), -INT8_C(  18), -INT8_C( 114),  INT8_C(  86), -INT8_C(  41),  INT8_C(  75), -INT8_C( 115) },
      {
       INT8_C(  54),
       INT8_C( 119),
      -INT8_C(  16),
      -INT8_C(  60),
       INT8_C(   2),
      -INT8_C(   2),
      -INT8_C(  83),
      -INT8_C(  46),
       INT8_C(  55),
       INT8_C( 113),
      -INT8_C(  96),
      -INT8_C(  18),
      -INT8_C(  68),
       INT8_C(  19),
      -INT8_C(  34),
      -INT8_C( 114),
      -INT8_C(  77),
      -INT8_C( 112),
       INT8_C(  47),
       INT8_C(  86),
       INT8_C( 125),
       INT8_C( 122),
      -INT8_C( 121),
      -INT8_C(  41),
      -INT8_C(  36),
       INT8_C(  34),
       INT8_C(  39),
       INT8_C(  75),
      -INT8_C(  36),
      -INT8_C(  44),
       INT8_C(  84),
      -INT8_C( 115),
      }
    },
    { { -INT8_C(  38), -INT8_C( 125),  INT8_C(  73), -INT8_C( 115),  INT8_C(   0),  INT8_C(  37),  INT8_C( 105),  INT8_C( 120) },
      {  INT8_C(  35), -INT8_C(  37), -INT8_C( 117), -INT8_C(  77),  INT8_C(  85), -INT8_C(  83), -INT8_C( 121),  INT8_C(  70) },
      {  INT8_C(  90),  INT8_C(  40),  INT8_C(  36), -INT8_C( 119), -INT8_C(  81),  INT8_C(  75), -INT8_C(  35),  INT8_C( 115) },
      {  INT8_C(  29), -INT8_C(  53),  INT8_C(   2),  INT8_C( 116), -INT8_C(  93),  INT8_C(  77),  INT8_C(   1),  INT8_C( 125) },
      {
      -INT8_C(  38),
       INT8_C(  35),
       INT8_C(  90),
       INT8_C(  29),
      -INT8_C( 125),
      -INT8_C(  37),
       INT8_C(  40),
      -INT8_C(  53),
       INT8_C(  73),
      -INT8_C( 117),
       INT8_C(  36),
       INT8_C(   2),
      -INT8_C( 115),
      -INT8_C(  77),
      -INT8_C( 119),
       INT8_C( 116),
       INT8_C(   0),
       INT8_C(  85),
      -INT8_C(  81),
      -INT8_C(  93),
       INT8_C(  37),
      -INT8_C(  83),
       INT8_C(  75),
       INT8_C(  77),
       INT8_C( 105),
      -INT8_C( 121),
      -INT8_C(  35),
       INT8_C(   1),
       INT8_C( 120),
       INT8_C(  70),
       INT8_C( 115),
       INT8_C( 125),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int8x8x4_t r_ = { { simde_vld1_s8(test_vec[i].r0),
                              simde_vld1_s8(test_vec[i].r1),
                              simde_vld1_s8(test_vec[i].r2),
                              simde_vld1_s8(test_vec[i].r3), } };
    int8_t a_[32];
    simde_vst4_s8(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(a_)));

    r_ = simde_vld4_s8(a_);
    simde_test_arm_neon_assert_equal_i8x8(r_.val[0], simde_vld1_s8(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i8x8(r_.val[1], simde_vld1_s8(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i8x8(r_.val[2], simde_vld1_s8(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int8x8_t a0 = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t a1 = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t a2 = simde_test_arm_neon_random_i8x8();
    simde_int8x8_t a3 = simde_test_arm_neon_random_i8x8();
    simde_int8x8x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i8x8(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x8(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x8(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int8_t buf[32];
    simde_vst4_s8(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i8(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t r0[4];
    int16_t r1[4];
    int16_t r2[4];
    int16_t r3[4];
    int16_t a[16];
  } test_vec[] = {
    { {  INT16_C(  5398), -INT16_C( 25729),  INT16_C( 15178),  INT16_C(   458) },
      {  INT16_C( 10086),  INT16_C( 28789), -INT16_C( 32315), -INT16_C(  3249) },
      {  INT16_C( 31188),  INT16_C( 24333),  INT16_C( 18929), -INT16_C( 14162) },
      { -INT16_C(  4559),  INT16_C( 31053),  INT16_C( 11632), -INT16_C( 30981) },
      {
       INT16_C(  5398),
       INT16_C( 10086),
       INT16_C( 31188),
      -INT16_C(  4559),
      -INT16_C( 25729),
       INT16_C( 28789),
       INT16_C( 24333),
       INT16_C( 31053),
       INT16_C( 15178),
      -INT16_C( 32315),
       INT16_C( 18929),
       INT16_C( 11632),
       INT16_C(   458),
      -INT16_C(  3249),
      -INT16_C( 14162),
      -INT16_C( 30981),
      }
    },
    { {  INT16_C( 31298), -INT16_C( 29663), -INT16_C(  5194),  INT16_C(  7309) },
      {  INT16_C(   786), -INT16_C( 10356), -INT16_C(  9340),  INT16_C( 22730) },
      { -INT16_C( 10156),  INT16_C( 17848),  INT16_C( 26145),  INT16_C( 21005) },
      {  INT16_C( 23381), -INT16_C( 14900), -INT16_C( 14456), -INT16_C( 13493) },
      {
       INT16_C( 31298),
       INT16_C(   786),
      -INT16_C( 10156),
       INT16_C( 23381),
      -INT16_C( 29663),
      -INT16_C( 10356),
       INT16_C( 17848),
      -INT16_C( 14900),
      -INT16_C(  5194),
      -INT16_C(  9340),
       INT16_C( 26145),
      -INT16_C( 14456),
       INT16_C(  7309),
       INT16_C( 22730),
       INT16_C( 21005),
      -INT16_C( 13493),
      }
    },
    { {  INT16_C( 27713), -INT16_C(  2217), -INT16_C(  6824),  INT16_C( 27155) },
      { -INT16_C( 24600),  INT16_C( 27714),  INT16_C(  3195), -INT16_C( 12347) },
      {  INT16_C( 32228),  INT16_C(  1301),  INT16_C(  8931),  INT16_C( 14424) },
      {  INT16_C(  9341),  INT16_C(  1789),  INT16_C( 18667),  INT16_C( 11473) },
      {
       INT16_C( 27713),
      -INT16_C( 24600),
       INT16_C( 32228),
       INT16_C(  9341),
      -INT16_C(  2217),
       INT16_C( 27714),
       INT16_C(  1301),
       INT16_C(  1789),
      -INT16_C(  6824),
       INT16_C(  3195),
       INT16_C(  8931),
       INT16_C( 18667),
       INT16_C( 27155),
      -INT16_C( 12347),
       INT16_C( 14424),
       INT16_C( 11473),
      }
    },
    { {  INT16_C( 10421),  INT16_C(  3364),  INT16_C( 14093), -INT16_C(  2697) },
      { -INT16_C( 17961),  INT16_C( 21090),  INT16_C( 10182), -INT16_C( 21983) },
      {  INT16_C( 13988), -INT16_C( 30800),  INT16_C(  2137), -INT16_C( 10560) },
      { -INT16_C( 17108),  INT16_C(  6108), -INT16_C( 21242), -INT16_C( 17597) },
      {
       INT16_C( 10421),
      -INT16_C( 17961),
       INT16_C( 13988),
      -INT16_C( 17108),
       INT16_C(  3364),
       INT16_C( 21090),
      -INT16_C( 30800),
       INT16_C(  6108),
       INT16_C( 14093),
       INT16_C( 10182),
       INT16_C(  2137),
      -INT16_C( 21242),
      -INT16_C(  2697),
      -INT16_C( 21983),
      -INT16_C( 10560),
      -INT16_C( 17597),
      }
    },
    { {  INT16_C( 26582), -INT16_C(  7224),  INT16_C( 16287),  INT16_C( 30425) },
      {  INT16_C( 15353), -INT16_C( 16440), -INT16_C(  5790),  INT16_C(  1641) },
      {  INT16_C(  6432),  INT16_C( 31117),  INT16_C( 19745),  INT16_C( 19791) },
      {  INT16_C( 11275),  INT16_C(  4452), -INT16_C( 22311), -INT16_C( 20532) },
      {
       INT16_C( 26582),
       INT16_C( 15353),
       INT16_C(  6432),
       INT16_C( 11275),
      -INT16_C(  7224),
      -INT16_C( 16440),
       INT16_C( 31117),
       INT16_C(  4452),
       INT16_C( 16287),
      -INT16_C(  5790),
       INT16_C( 19745),
      -INT16_C( 22311),
       INT16_C( 30425),
       INT16_C(  1641),
       INT16_C( 19791),
      -INT16_C( 20532),
      }
    },
    { { -INT16_C( 27633), -INT16_C( 20845),  INT16_C( 27859), -INT16_C( 13276) },
      { -INT16_C(  4953),  INT16_C(  2443), -INT16_C(  2602), -INT16_C(  2545) },
      { -INT16_C( 25586),  INT16_C( 12399), -INT16_C( 16662), -INT16_C(  2691) },
      { -INT16_C(  7446), -INT16_C( 15354), -INT16_C( 11638), -INT16_C( 26253) },
      {
      -INT16_C( 27633),
      -INT16_C(  4953),
      -INT16_C( 25586),
      -INT16_C(  7446),
      -INT16_C( 20845),
       INT16_C(  2443),
       INT16_C( 12399),
      -INT16_C( 15354),
       INT16_C( 27859),
      -INT16_C(  2602),
      -INT16_C( 16662),
      -INT16_C( 11638),
      -INT16_C( 13276),
      -INT16_C(  2545),
      -INT16_C(  2691),
      -INT16_C( 26253),
      }
    },
    { {  INT16_C(  1638),  INT16_C( 14664),  INT16_C( 27762),  INT16_C(  6406) },
      { -INT16_C( 28327),  INT16_C( 12066),  INT16_C( 12678), -INT16_C( 27355) },
      { -INT16_C( 27442), -INT16_C( 18235),  INT16_C( 16978),  INT16_C( 15789) },
      { -INT16_C( 19676), -INT16_C( 20991),  INT16_C( 29829), -INT16_C(  5304) },
      {
       INT16_C(  1638),
      -INT16_C( 28327),
      -INT16_C( 27442),
      -INT16_C( 19676),
       INT16_C( 14664),
       INT16_C( 12066),
      -INT16_C( 18235),
      -INT16_C( 20991),
       INT16_C( 27762),
       INT16_C( 12678),
       INT16_C( 16978),
       INT16_C( 29829),
       INT16_C(  6406),
      -INT16_C( 27355),
       INT16_C( 15789),
      -INT16_C(  5304),
      }
    },
    { { -INT16_C( 28549), -INT16_C(  4828),  INT16_C( 11004),  INT16_C( 21767) },
      {  INT16_C( 10684),  INT16_C( 17028), -INT16_C( 22181),  INT16_C( 10711) },
      { -INT16_C( 25539), -INT16_C( 28447), -INT16_C( 28961),  INT16_C(   973) },
      { -INT16_C( 12735), -INT16_C( 14670), -INT16_C(  1470), -INT16_C( 16975) },
      {
      -INT16_C( 28549),
       INT16_C( 10684),
      -INT16_C( 25539),
      -INT16_C( 12735),
      -INT16_C(  4828),
       INT16_C( 17028),
      -INT16_C( 28447),
      -INT16_C( 14670),
       INT16_C( 11004),
      -INT16_C( 22181),
      -INT16_C( 28961),
      -INT16_C(  1470),
       INT16_C( 21767),
       INT16_C( 10711),
       INT16_C(   973),
      -INT16_C( 16975),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int16x4x4_t r_ = { { simde_vld1_s16(test_vec[i].r0),
                               simde_vld1_s16(test_vec[i].r1),
                               simde_vld1_s16(test_vec[i].r2),
                               simde_vld1_s16(test_vec[i].r3), } };

    int16_t a_[16];
    simde_vst4_s16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_s16(a_);
    simde_test_arm_neon_assert_equal_i16x4(r_.val[0], simde_vld1_s16(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i16x4(r_.val[1], simde_vld1_s16(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i16x4(r_.val[2], simde_vld1_s16(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int16x4_t a0 = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t a1 = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t a2 = simde_test_arm_neon_random_i16x4();
    simde_int16x4_t a3 = simde_test_arm_neon_random_i16x4();
    simde_int16x4x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i16x4(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x4(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x4(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int16_t buf[16];
    simde_vst4_s16(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i16(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t r0[2];
    int32_t r1[2];
    int32_t r2[2];
    int32_t r3[2];
    int32_t a[8];
  } test_vec[] = {
    { { -INT32_C(  1421389733),  INT32_C(  1091510019) },
      { -INT32_C(   855567543),  INT32_C(  1758550749) },
      { -INT32_C(   548252799),  INT32_C(  1558828652) },
      { -INT32_C(  1985916028), -INT32_C(   288439918) },
      {
      -INT32_C(  1421389733),
      -INT32_C(   855567543),
      -INT32_C(   548252799),
      -INT32_C(  1985916028),
       INT32_C(  1091510019),
       INT32_C(  1758550749),
       INT32_C(  1558828652),
      -INT32_C(   288439918),
      }
    },
    { {  INT32_C(   362354193),  INT32_C(  2119608373) },
      { -INT32_C(  1723049796),  INT32_C(   872488370) },
      { -INT32_C(   585936016), -INT32_C(  1371931606) },
      { -INT32_C(   499655856), -INT32_C(  1378876004) },
      {
       INT32_C(   362354193),
      -INT32_C(  1723049796),
      -INT32_C(   585936016),
      -INT32_C(   499655856),
       INT32_C(  2119608373),
       INT32_C(   872488370),
      -INT32_C(  1371931606),
      -INT32_C(  1378876004),
      }
    },
    { {  INT32_C(  1371695387), -INT32_C(   825288430) },
      {  INT32_C(   593959793), -INT32_C(  1453889479) },
      { -INT32_C(   427398468), -INT32_C(  1214988185) },
      {  INT32_C(   932826011), -INT32_C(   320574768) },
      {
       INT32_C(  1371695387),
       INT32_C(   593959793),
      -INT32_C(   427398468),
       INT32_C(   932826011),
      -INT32_C(   825288430),
      -INT32_C(  1453889479),
      -INT32_C(  1214988185),
      -INT32_C(   320574768),
      }
    },
    { { -INT32_C(   448944173),  INT32_C(   833817792) },
      {  INT32_C(  1632901672),  INT32_C(  1057664131) },
      {  INT32_C(  2099613974), -INT32_C(   332089007) },
      {  INT32_C(  1411632772),  INT32_C(   188745528) },
      {
      -INT32_C(   448944173),
       INT32_C(  1632901672),
       INT32_C(  2099613974),
       INT32_C(  1411632772),
       INT32_C(   833817792),
       INT32_C(  1057664131),
      -INT32_C(   332089007),
       INT32_C(   188745528),
      }
    },
    { {  INT32_C(  1861320110), -INT32_C(  1298160502) },
      {  INT32_C(  1108604095), -INT32_C(  1233052256) },
      { -INT32_C(    13326674), -INT32_C(   471111585) },
      {  INT32_C(  1849101878), -INT32_C(   998606826) },
      {
       INT32_C(  1861320110),
       INT32_C(  1108604095),
      -INT32_C(    13326674),
       INT32_C(  1849101878),
      -INT32_C(  1298160502),
      -INT32_C(  1233052256),
      -INT32_C(   471111585),
      -INT32_C(   998606826),
      }
    },
    { {  INT32_C(  2134076405), -INT32_C(   835595761) },
      {  INT32_C(  1712342214),  INT32_C(   270373218) },
      { -INT32_C(  1777315529), -INT32_C(   260441159) },
      {  INT32_C(   543076618),  INT32_C(   518314025) },
      {
       INT32_C(  2134076405),
       INT32_C(  1712342214),
      -INT32_C(  1777315529),
       INT32_C(   543076618),
      -INT32_C(   835595761),
       INT32_C(   270373218),
      -INT32_C(   260441159),
       INT32_C(   518314025),
      }
    },
    { {  INT32_C(  1402869571), -INT32_C(  1339961366) },
      {  INT32_C(  1981231636), -INT32_C(    75090749) },
      {  INT32_C(  1049728645), -INT32_C(  1674703982) },
      { -INT32_C(   440627780), -INT32_C(  1459380123) },
      {
       INT32_C(  1402869571),
       INT32_C(  1981231636),
       INT32_C(  1049728645),
      -INT32_C(   440627780),
      -INT32_C(  1339961366),
      -INT32_C(    75090749),
      -INT32_C(  1674703982),
      -INT32_C(  1459380123),
      }
    },
    { { -INT32_C(  1560501832), -INT32_C(  2058216079) },
      {  INT32_C(   335243599),  INT32_C(   571376029) },
      { -INT32_C(  1436442856),  INT32_C(  1715900330) },
      { -INT32_C(  2109013476),  INT32_C(  1512787874) },
      {
      -INT32_C(  1560501832),
       INT32_C(   335243599),
      -INT32_C(  1436442856),
      -INT32_C(  2109013476),
      -INT32_C(  2058216079),
       INT32_C(   571376029),
       INT32_C(  1715900330),
       INT32_C(  1512787874),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int32x2x4_t r_ = { { simde_vld1_s32(test_vec[i].r0),
                               simde_vld1_s32(test_vec[i].r1),
                               simde_vld1_s32(test_vec[i].r2),
                               simde_vld1_s32(test_vec[i].r3), } };

    int32_t a_[8];
    simde_vst4_s32(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_s32(a_);
    simde_test_arm_neon_assert_equal_i32x2(r_.val[0], simde_vld1_s32(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i32x2(r_.val[1], simde_vld1_s32(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i32x2(r_.val[2], simde_vld1_s32(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int32x2_t a0 = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t a1 = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t a2 = simde_test_arm_neon_random_i32x2();
    simde_int32x2_t a3 = simde_test_arm_neon_random_i32x2();
    simde_int32x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i32x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int32_t buf[8];
    simde_vst4_s32(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i32(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t r0[1];
    int64_t r1[1];
    int64_t r2[1];
    int64_t r3[1];
    int64_t a[4];
  } test_vec[] = {
    { { -INT64_C( 1447547888260701651) },
      { -INT64_C( 3827526438922877263) },
      {  INT64_C(  524167343945907796) },
      { -INT64_C( 7563624692450300060) },
      {
      -INT64_C( 1447547888260701651),
      -INT64_C( 3827526438922877263),
       INT64_C(  524167343945907796),
      -INT64_C( 7563624692450300060),
      }
    },
    { { -INT64_C( 2808569240011087299) },
      { -INT64_C( 3116109957209416452) },
      {  INT64_C( 2183170197427815128) },
      {  INT64_C( 5016629588355083676) },
      {
      -INT64_C( 2808569240011087299),
      -INT64_C( 3116109957209416452),
       INT64_C( 2183170197427815128),
       INT64_C( 5016629588355083676),
      }
    },
    { { -INT64_C( 7166522641185002871) },
      {  INT64_C( 3915129315457696769) },
      {  INT64_C(  481824040889826519) },
      {  INT64_C( 9043980067198029365) },
      {
      -INT64_C( 7166522641185002871),
       INT64_C( 3915129315457696769),
       INT64_C(  481824040889826519),
       INT64_C( 9043980067198029365),
      }
    },
    { {  INT64_C( 5157389337233449302) },
      {  INT64_C( 5931837169018086846) },
      { -INT64_C( 3762032262956986790) },
      { -INT64_C( 2858789043925624863) },
      {
       INT64_C( 5157389337233449302),
       INT64_C( 5931837169018086846),
      -INT64_C( 3762032262956986790),
      -INT64_C( 2858789043925624863),
      }
    },
    { { -INT64_C(  362152481212431765) },
      {  INT64_C( 4202536713573548678) },
      { -INT64_C( 6154229596725299658) },
      { -INT64_C( 7639562743766343777) },
      {
      -INT64_C(  362152481212431765),
       INT64_C( 4202536713573548678),
      -INT64_C( 6154229596725299658),
      -INT64_C( 7639562743766343777),
      }
    },
    { { -INT64_C( 5797751023027631788) },
      {  INT64_C( 4547793440195256322) },
      { -INT64_C( 8958886834058028232) },
      {  INT64_C( 5909181196396735299) },
      {
      -INT64_C( 5797751023027631788),
       INT64_C( 4547793440195256322),
      -INT64_C( 8958886834058028232),
       INT64_C( 5909181196396735299),
      }
    },
    { { -INT64_C( 8412040716332414871) },
      {  INT64_C( 3266952460168524301) },
      {  INT64_C( 5192327137732747942) },
      { -INT64_C( 4876072028891401467) },
      {
      -INT64_C( 8412040716332414871),
       INT64_C( 3266952460168524301),
       INT64_C( 5192327137732747942),
      -INT64_C( 4876072028891401467),
      }
    },
    { { -INT64_C( 5687041768591247361) },
      { -INT64_C( 5502239805841833597) },
      { -INT64_C( 5562425281119136896) },
      {  INT64_C( 4039457532579972095) },
      {
      -INT64_C( 5687041768591247361),
      -INT64_C( 5502239805841833597),
      -INT64_C( 5562425281119136896),
       INT64_C( 4039457532579972095),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int64x1x4_t r_ = { { simde_vld1_s64(test_vec[i].r0),
                               simde_vld1_s64(test_vec[i].r1),
                               simde_vld1_s64(test_vec[i].r2),
                               simde_vld1_s64(test_vec[i].r3), } };

    int64_t a_[4];
    simde_vst4_s64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_s64(a_);
    simde_test_arm_neon_assert_equal_i64x1(r_.val[0], simde_vld1_s64(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i64x1(r_.val[1], simde_vld1_s64(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i64x1(r_.val[2], simde_vld1_s64(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int64x1_t a0 = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t a1 = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t a2 = simde_test_arm_neon_random_i64x1();
    simde_int64x1_t a3 = simde_test_arm_neon_random_i64x1();
    simde_int64x1x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i64x1(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x1(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x1(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int64_t buf[4];
    simde_vst4_s64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t r0[8];
    uint8_t r1[8];
    uint8_t r2[8];
    uint8_t r3[8];
    uint8_t a[32];
  } test_vec[] = {
    { { UINT8_C(195), UINT8_C(195), UINT8_C( 72), UINT8_C(180), UINT8_C(152), UINT8_C(218), UINT8_C( 85), UINT8_C(252) },
      { UINT8_C(167), UINT8_C( 84), UINT8_C(101), UINT8_C(151), UINT8_C( 48), UINT8_C(151), UINT8_C( 79), UINT8_C( 76) },
      { UINT8_C(221), UINT8_C( 97), UINT8_C( 95), UINT8_C(196), UINT8_C( 26), UINT8_C( 93), UINT8_C(153), UINT8_C(174) },
      { UINT8_C(240), UINT8_C( 96), UINT8_C( 57), UINT8_C( 51), UINT8_C(183), UINT8_C( 88), UINT8_C(175), UINT8_C(122) },
      {
      UINT8_C(195),
      UINT8_C(167),
      UINT8_C(221),
      UINT8_C(240),
      UINT8_C(195),
      UINT8_C( 84),
      UINT8_C( 97),
      UINT8_C( 96),
      UINT8_C( 72),
      UINT8_C(101),
      UINT8_C( 95),
      UINT8_C( 57),
      UINT8_C(180),
      UINT8_C(151),
      UINT8_C(196),
      UINT8_C( 51),
      UINT8_C(152),
      UINT8_C( 48),
      UINT8_C( 26),
      UINT8_C(183),
      UINT8_C(218),
      UINT8_C(151),
      UINT8_C( 93),
      UINT8_C( 88),
      UINT8_C( 85),
      UINT8_C( 79),
      UINT8_C(153),
      UINT8_C(175),
      UINT8_C(252),
      UINT8_C( 76),
      UINT8_C(174),
      UINT8_C(122),
      }
    },
    { { UINT8_C( 27), UINT8_C(247), UINT8_C( 47), UINT8_C(180), UINT8_C(209), UINT8_C(132), UINT8_C(176), UINT8_C(120) },
      { UINT8_C(216), UINT8_C( 22), UINT8_C( 15), UINT8_C(  9), UINT8_C(173), UINT8_C( 95), UINT8_C( 85), UINT8_C(138) },
      { UINT8_C(192), UINT8_C(180), UINT8_C( 79), UINT8_C(219), UINT8_C( 17), UINT8_C(232), UINT8_C(137), UINT8_C(  2) },
      { UINT8_C( 73), UINT8_C(195), UINT8_C( 53), UINT8_C(  0), UINT8_C( 27), UINT8_C(228), UINT8_C(123), UINT8_C( 54) },
      {
      UINT8_C( 27),
      UINT8_C(216),
      UINT8_C(192),
      UINT8_C( 73),
      UINT8_C(247),
      UINT8_C( 22),
      UINT8_C(180),
      UINT8_C(195),
      UINT8_C( 47),
      UINT8_C( 15),
      UINT8_C( 79),
      UINT8_C( 53),
      UINT8_C(180),
      UINT8_C(  9),
      UINT8_C(219),
      UINT8_C(  0),
      UINT8_C(209),
      UINT8_C(173),
      UINT8_C( 17),
      UINT8_C( 27),
      UINT8_C(132),
      UINT8_C( 95),
      UINT8_C(232),
      UINT8_C(228),
      UINT8_C(176),
      UINT8_C( 85),
      UINT8_C(137),
      UINT8_C(123),
      UINT8_C(120),
      UINT8_C(138),
      UINT8_C(  2),
      UINT8_C( 54),
      }
    },
    { { UINT8_C(219), UINT8_C(170), UINT8_C(234), UINT8_C(172), UINT8_C( 46), UINT8_C(155), UINT8_C( 36), UINT8_C(  6) },
      { UINT8_C(177), UINT8_C( 52), UINT8_C( 15), UINT8_C( 94), UINT8_C(147), UINT8_C(101), UINT8_C(233), UINT8_C( 83) },
      { UINT8_C( 25), UINT8_C( 56), UINT8_C( 46), UINT8_C( 43), UINT8_C( 32), UINT8_C(184), UINT8_C( 45), UINT8_C(105) },
      { UINT8_C(123), UINT8_C( 98), UINT8_C(106), UINT8_C(150), UINT8_C( 71), UINT8_C(229), UINT8_C(204), UINT8_C( 34) },
      {
      UINT8_C(219),
      UINT8_C(177),
      UINT8_C( 25),
      UINT8_C(123),
      UINT8_C(170),
      UINT8_C( 52),
      UINT8_C( 56),
      UINT8_C( 98),
      UINT8_C(234),
      UINT8_C( 15),
      UINT8_C( 46),
      UINT8_C(106),
      UINT8_C(172),
      UINT8_C( 94),
      UINT8_C( 43),
      UINT8_C(150),
      UINT8_C( 46),
      UINT8_C(147),
      UINT8_C( 32),
      UINT8_C( 71),
      UINT8_C(155),
      UINT8_C(101),
      UINT8_C(184),
      UINT8_C(229),
      UINT8_C( 36),
      UINT8_C(233),
      UINT8_C( 45),
      UINT8_C(204),
      UINT8_C(  6),
      UINT8_C( 83),
      UINT8_C(105),
      UINT8_C( 34),
      }
    },
    { { UINT8_C(143), UINT8_C(183), UINT8_C(207), UINT8_C(189), UINT8_C( 82), UINT8_C(243), UINT8_C(195), UINT8_C(  3) },
      { UINT8_C( 39), UINT8_C(211), UINT8_C( 97), UINT8_C(186), UINT8_C( 56), UINT8_C( 74), UINT8_C( 14), UINT8_C( 81) },
      { UINT8_C(130), UINT8_C( 60), UINT8_C(124), UINT8_C(163), UINT8_C(244), UINT8_C(169), UINT8_C( 12), UINT8_C(111) },
      { UINT8_C( 12), UINT8_C(118), UINT8_C(  5), UINT8_C( 83), UINT8_C( 91), UINT8_C(210), UINT8_C(117), UINT8_C(234) },
      {
      UINT8_C(143),
      UINT8_C( 39),
      UINT8_C(130),
      UINT8_C( 12),
      UINT8_C(183),
      UINT8_C(211),
      UINT8_C( 60),
      UINT8_C(118),
      UINT8_C(207),
      UINT8_C( 97),
      UINT8_C(124),
      UINT8_C(  5),
      UINT8_C(189),
      UINT8_C(186),
      UINT8_C(163),
      UINT8_C( 83),
      UINT8_C( 82),
      UINT8_C( 56),
      UINT8_C(244),
      UINT8_C( 91),
      UINT8_C(243),
      UINT8_C( 74),
      UINT8_C(169),
      UINT8_C(210),
      UINT8_C(195),
      UINT8_C( 14),
      UINT8_C( 12),
      UINT8_C(117),
      UINT8_C(  3),
      UINT8_C( 81),
      UINT8_C(111),
      UINT8_C(234),
      }
    },
    { { UINT8_C(137), UINT8_C( 68), UINT8_C(167), UINT8_C(219), UINT8_C( 56), UINT8_C(107), UINT8_C(222), UINT8_C( 95) },
      { UINT8_C( 62), UINT8_C( 63), UINT8_C( 26), UINT8_C(118), UINT8_C(138), UINT8_C( 40), UINT8_C(199), UINT8_C( 12) },
      { UINT8_C(100), UINT8_C( 68), UINT8_C(175), UINT8_C( 89), UINT8_C(237), UINT8_C(188), UINT8_C(200), UINT8_C(249) },
      { UINT8_C( 50), UINT8_C(206), UINT8_C( 76), UINT8_C(142), UINT8_C(160), UINT8_C(194), UINT8_C(120), UINT8_C( 41) },
      {
      UINT8_C(137),
      UINT8_C( 62),
      UINT8_C(100),
      UINT8_C( 50),
      UINT8_C( 68),
      UINT8_C( 63),
      UINT8_C( 68),
      UINT8_C(206),
      UINT8_C(167),
      UINT8_C( 26),
      UINT8_C(175),
      UINT8_C( 76),
      UINT8_C(219),
      UINT8_C(118),
      UINT8_C( 89),
      UINT8_C(142),
      UINT8_C( 56),
      UINT8_C(138),
      UINT8_C(237),
      UINT8_C(160),
      UINT8_C(107),
      UINT8_C( 40),
      UINT8_C(188),
      UINT8_C(194),
      UINT8_C(222),
      UINT8_C(199),
      UINT8_C(200),
      UINT8_C(120),
      UINT8_C( 95),
      UINT8_C( 12),
      UINT8_C(249),
      UINT8_C( 41),
      }
    },
    { { UINT8_C(  6), UINT8_C( 32), UINT8_C(  4), UINT8_C( 62), UINT8_C(139), UINT8_C(226), UINT8_C(158), UINT8_C(201) },
      { UINT8_C( 33), UINT8_C(184), UINT8_C( 63), UINT8_C(171), UINT8_C(224), UINT8_C(  6), UINT8_C(184), UINT8_C( 68) },
      { UINT8_C( 74), UINT8_C(103), UINT8_C(157), UINT8_C( 56), UINT8_C( 35), UINT8_C(102), UINT8_C( 49), UINT8_C( 86) },
      { UINT8_C( 52), UINT8_C(126), UINT8_C(228), UINT8_C(212), UINT8_C( 64), UINT8_C( 92), UINT8_C(253), UINT8_C( 70) },
      {
      UINT8_C(  6),
      UINT8_C( 33),
      UINT8_C( 74),
      UINT8_C( 52),
      UINT8_C( 32),
      UINT8_C(184),
      UINT8_C(103),
      UINT8_C(126),
      UINT8_C(  4),
      UINT8_C( 63),
      UINT8_C(157),
      UINT8_C(228),
      UINT8_C( 62),
      UINT8_C(171),
      UINT8_C( 56),
      UINT8_C(212),
      UINT8_C(139),
      UINT8_C(224),
      UINT8_C( 35),
      UINT8_C( 64),
      UINT8_C(226),
      UINT8_C(  6),
      UINT8_C(102),
      UINT8_C( 92),
      UINT8_C(158),
      UINT8_C(184),
      UINT8_C( 49),
      UINT8_C(253),
      UINT8_C(201),
      UINT8_C( 68),
      UINT8_C( 86),
      UINT8_C( 70),
      }
    },
    { { UINT8_C(124), UINT8_C(  1), UINT8_C(133), UINT8_C(  7), UINT8_C(227), UINT8_C( 35), UINT8_C(208), UINT8_C(  4) },
      { UINT8_C(219), UINT8_C( 15), UINT8_C(176), UINT8_C(187), UINT8_C( 22), UINT8_C(104),    UINT8_MAX, UINT8_C( 96) },
      { UINT8_C(207), UINT8_C(157), UINT8_C(152), UINT8_C(243), UINT8_C(  3), UINT8_C(202), UINT8_C( 73), UINT8_C( 55) },
      { UINT8_C( 72), UINT8_C( 45), UINT8_C( 11), UINT8_C(136), UINT8_C(137), UINT8_C(  8), UINT8_C(206), UINT8_C(  6) },
      {
      UINT8_C(124),
      UINT8_C(219),
      UINT8_C(207),
      UINT8_C( 72),
      UINT8_C(  1),
      UINT8_C( 15),
      UINT8_C(157),
      UINT8_C( 45),
      UINT8_C(133),
      UINT8_C(176),
      UINT8_C(152),
      UINT8_C( 11),
      UINT8_C(  7),
      UINT8_C(187),
      UINT8_C(243),
      UINT8_C(136),
      UINT8_C(227),
      UINT8_C( 22),
      UINT8_C(  3),
      UINT8_C(137),
      UINT8_C( 35),
      UINT8_C(104),
      UINT8_C(202),
      UINT8_C(  8),
      UINT8_C(208),
         UINT8_MAX,
      UINT8_C( 73),
      UINT8_C(206),
      UINT8_C(  4),
      UINT8_C( 96),
      UINT8_C( 55),
      UINT8_C(  6),
      }
    },
    { { UINT8_C(  9), UINT8_C( 83), UINT8_C( 13), UINT8_C(236), UINT8_C(118), UINT8_C(222), UINT8_C(240), UINT8_C( 81) },
      { UINT8_C(237), UINT8_C(160), UINT8_C( 12), UINT8_C(  3), UINT8_C(  8), UINT8_C( 12), UINT8_C(100), UINT8_C(216) },
      { UINT8_C(169), UINT8_C(252), UINT8_C(203), UINT8_C(172), UINT8_C(198), UINT8_C( 20), UINT8_C(227), UINT8_C( 14) },
      { UINT8_C( 65), UINT8_C(238), UINT8_C(150), UINT8_C(202), UINT8_C(246), UINT8_C(101), UINT8_C(208),    UINT8_MAX },
      {
      UINT8_C(  9),
      UINT8_C(237),
      UINT8_C(169),
      UINT8_C( 65),
      UINT8_C( 83),
      UINT8_C(160),
      UINT8_C(252),
      UINT8_C(238),
      UINT8_C( 13),
      UINT8_C( 12),
      UINT8_C(203),
      UINT8_C(150),
      UINT8_C(236),
      UINT8_C(  3),
      UINT8_C(172),
      UINT8_C(202),
      UINT8_C(118),
      UINT8_C(  8),
      UINT8_C(198),
      UINT8_C(246),
      UINT8_C(222),
      UINT8_C( 12),
      UINT8_C( 20),
      UINT8_C(101),
      UINT8_C(240),
      UINT8_C(100),
      UINT8_C(227),
      UINT8_C(208),
      UINT8_C( 81),
      UINT8_C(216),
      UINT8_C( 14),
         UINT8_MAX,
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x8x4_t r_ = { { simde_vld1_u8(test_vec[i].r0),
                               simde_vld1_u8(test_vec[i].r1),
                               simde_vld1_u8(test_vec[i].r2),
                               simde_vld1_u8(test_vec[i].r3), } };

    uint8_t a_[32];
    simde_vst4_u8(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_u8(a_);
    simde_test_arm_neon_assert_equal_u8x8(r_.val[0], simde_vld1_u8(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u8x8(r_.val[1], simde_vld1_u8(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u8x8(r_.val[2], simde_vld1_u8(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint8x8_t a0 = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t a1 = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t a2 = simde_test_arm_neon_random_u8x8();
    simde_uint8x8_t a3 = simde_test_arm_neon_random_u8x8();
    simde_uint8x8x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u8x8(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x8(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x8(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint8_t buf[32];
    simde_vst4_u8(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_u8(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t r0[4];
    uint16_t r1[4];
    uint16_t r2[4];
    uint16_t r3[4];
    uint16_t a[16];
  } test_vec[] = {
    { { UINT16_C( 7053), UINT16_C(18194), UINT16_C(41501), UINT16_C( 5028) },
      { UINT16_C(23380), UINT16_C(23265), UINT16_C(39297), UINT16_C(36422) },
      { UINT16_C(64123), UINT16_C(47306), UINT16_C(63985), UINT16_C(40762) },
      { UINT16_C(48714), UINT16_C(44810), UINT16_C(41814), UINT16_C(58351) },
      {
      UINT16_C( 7053),
      UINT16_C(23380),
      UINT16_C(64123),
      UINT16_C(48714),
      UINT16_C(18194),
      UINT16_C(23265),
      UINT16_C(47306),
      UINT16_C(44810),
      UINT16_C(41501),
      UINT16_C(39297),
      UINT16_C(63985),
      UINT16_C(41814),
      UINT16_C( 5028),
      UINT16_C(36422),
      UINT16_C(40762),
      UINT16_C(58351),
      }
    },
    { { UINT16_C(  446), UINT16_C(56106), UINT16_C(53155), UINT16_C(63470) },
      { UINT16_C(53034), UINT16_C(44114), UINT16_C(39016), UINT16_C(58170) },
      { UINT16_C( 1171), UINT16_C(33948), UINT16_C(55037), UINT16_C(18211) },
      { UINT16_C(11669), UINT16_C(60407), UINT16_C(59088), UINT16_C(36558) },
      {
      UINT16_C(  446),
      UINT16_C(53034),
      UINT16_C( 1171),
      UINT16_C(11669),
      UINT16_C(56106),
      UINT16_C(44114),
      UINT16_C(33948),
      UINT16_C(60407),
      UINT16_C(53155),
      UINT16_C(39016),
      UINT16_C(55037),
      UINT16_C(59088),
      UINT16_C(63470),
      UINT16_C(58170),
      UINT16_C(18211),
      UINT16_C(36558),
      }
    },
    { { UINT16_C(63719), UINT16_C(35434), UINT16_C(22727), UINT16_C(62081) },
      { UINT16_C(54056), UINT16_C(37022), UINT16_C(55404), UINT16_C(65396) },
      { UINT16_C( 4316), UINT16_C(55939), UINT16_C(42726), UINT16_C(31521) },
      { UINT16_C( 6355), UINT16_C(42086), UINT16_C(13566), UINT16_C(58674) },
      {
      UINT16_C(63719),
      UINT16_C(54056),
      UINT16_C( 4316),
      UINT16_C( 6355),
      UINT16_C(35434),
      UINT16_C(37022),
      UINT16_C(55939),
      UINT16_C(42086),
      UINT16_C(22727),
      UINT16_C(55404),
      UINT16_C(42726),
      UINT16_C(13566),
      UINT16_C(62081),
      UINT16_C(65396),
      UINT16_C(31521),
      UINT16_C(58674),
      }
    },
    { { UINT16_C(39981), UINT16_C(62575), UINT16_C(61941), UINT16_C( 7654) },
      { UINT16_C(33988), UINT16_C(12461), UINT16_C( 8540), UINT16_C(14639) },
      { UINT16_C(45617), UINT16_C( 6163), UINT16_C(13400), UINT16_C(11411) },
      { UINT16_C(64077), UINT16_C(19408), UINT16_C(  558), UINT16_C(23345) },
      {
      UINT16_C(39981),
      UINT16_C(33988),
      UINT16_C(45617),
      UINT16_C(64077),
      UINT16_C(62575),
      UINT16_C(12461),
      UINT16_C( 6163),
      UINT16_C(19408),
      UINT16_C(61941),
      UINT16_C( 8540),
      UINT16_C(13400),
      UINT16_C(  558),
      UINT16_C( 7654),
      UINT16_C(14639),
      UINT16_C(11411),
      UINT16_C(23345),
      }
    },
    { { UINT16_C(41119), UINT16_C(37968), UINT16_C(13969), UINT16_C(22193) },
      { UINT16_C(24251), UINT16_C( 6022), UINT16_C(46720), UINT16_C(45392) },
      { UINT16_C(25448), UINT16_C(49609), UINT16_C(23960), UINT16_C(58861) },
      { UINT16_C(48471), UINT16_C(34096), UINT16_C(25023), UINT16_C(24289) },
      {
      UINT16_C(41119),
      UINT16_C(24251),
      UINT16_C(25448),
      UINT16_C(48471),
      UINT16_C(37968),
      UINT16_C( 6022),
      UINT16_C(49609),
      UINT16_C(34096),
      UINT16_C(13969),
      UINT16_C(46720),
      UINT16_C(23960),
      UINT16_C(25023),
      UINT16_C(22193),
      UINT16_C(45392),
      UINT16_C(58861),
      UINT16_C(24289),
      }
    },
    { { UINT16_C(12546), UINT16_C(37874), UINT16_C(41831), UINT16_C( 8937) },
      { UINT16_C(28674), UINT16_C(33338), UINT16_C(35366), UINT16_C(36403) },
      { UINT16_C(65006), UINT16_C(34383), UINT16_C(15450), UINT16_C(45419) },
      { UINT16_C(39929), UINT16_C(47414), UINT16_C( 6141), UINT16_C(65303) },
      {
      UINT16_C(12546),
      UINT16_C(28674),
      UINT16_C(65006),
      UINT16_C(39929),
      UINT16_C(37874),
      UINT16_C(33338),
      UINT16_C(34383),
      UINT16_C(47414),
      UINT16_C(41831),
      UINT16_C(35366),
      UINT16_C(15450),
      UINT16_C( 6141),
      UINT16_C( 8937),
      UINT16_C(36403),
      UINT16_C(45419),
      UINT16_C(65303),
      }
    },
    { { UINT16_C( 2632), UINT16_C(45202), UINT16_C(31917), UINT16_C(45010) },
      { UINT16_C( 3308), UINT16_C( 4657), UINT16_C(26007), UINT16_C(34208) },
      { UINT16_C(61538), UINT16_C(48139), UINT16_C(30252), UINT16_C( 9837) },
      { UINT16_C(41745), UINT16_C( 3807), UINT16_C(63163), UINT16_C(  781) },
      {
      UINT16_C( 2632),
      UINT16_C( 3308),
      UINT16_C(61538),
      UINT16_C(41745),
      UINT16_C(45202),
      UINT16_C( 4657),
      UINT16_C(48139),
      UINT16_C( 3807),
      UINT16_C(31917),
      UINT16_C(26007),
      UINT16_C(30252),
      UINT16_C(63163),
      UINT16_C(45010),
      UINT16_C(34208),
      UINT16_C( 9837),
      UINT16_C(  781),
      }
    },
    { { UINT16_C(40960), UINT16_C(44723), UINT16_C(34332), UINT16_C( 2141) },
      { UINT16_C(36754), UINT16_C(10522), UINT16_C(47860), UINT16_C(22190) },
      { UINT16_C(47530), UINT16_C(55058), UINT16_C(32559), UINT16_C(16893) },
      { UINT16_C(56354), UINT16_C(56655), UINT16_C(24018), UINT16_C(54241) },
      {
      UINT16_C(40960),
      UINT16_C(36754),
      UINT16_C(47530),
      UINT16_C(56354),
      UINT16_C(44723),
      UINT16_C(10522),
      UINT16_C(55058),
      UINT16_C(56655),
      UINT16_C(34332),
      UINT16_C(47860),
      UINT16_C(32559),
      UINT16_C(24018),
      UINT16_C( 2141),
      UINT16_C(22190),
      UINT16_C(16893),
      UINT16_C(54241),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x4x4_t r_ = { { simde_vld1_u16(test_vec[i].r0),
                                simde_vld1_u16(test_vec[i].r1),
                                simde_vld1_u16(test_vec[i].r2),
                                simde_vld1_u16(test_vec[i].r3), } };

    uint16_t a_[16];
    simde_vst4_u16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_u16(a_);
    simde_test_arm_neon_assert_equal_u16x4(r_.val[0], simde_vld1_u16(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u16x4(r_.val[1], simde_vld1_u16(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u16x4(r_.val[2], simde_vld1_u16(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint16x4_t a0 = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t a1 = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t a2 = simde_test_arm_neon_random_u16x4();
    simde_uint16x4_t a3 = simde_test_arm_neon_random_u16x4();
    simde_uint16x4x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u16x4(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x4(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x4(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint16_t buf[16];
    simde_vst4_u16(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_u16(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t r0[2];
    uint32_t r1[2];
    uint32_t r2[2];
    uint32_t r3[2];
    uint32_t a[8];
  } test_vec[] = {
    { { UINT32_C( 160598487), UINT32_C(3431268484) },
      { UINT32_C( 277942869), UINT32_C(3957648286) },
      { UINT32_C(3792231046), UINT32_C(2849176706) },
      { UINT32_C(4241723360), UINT32_C(2166330026) },
      {
      UINT32_C( 160598487),
      UINT32_C( 277942869),
      UINT32_C(3792231046),
      UINT32_C(4241723360),
      UINT32_C(3431268484),
      UINT32_C(3957648286),
      UINT32_C(2849176706),
      UINT32_C(2166330026),
      }
    },
    { { UINT32_C(2676666651), UINT32_C( 124456881) },
      { UINT32_C(3222797601), UINT32_C(1856765160) },
      { UINT32_C(1481683926), UINT32_C(2399216303) },
      { UINT32_C(1535956145), UINT32_C(2178788198) },
      {
      UINT32_C(2676666651),
      UINT32_C(3222797601),
      UINT32_C(1481683926),
      UINT32_C(1535956145),
      UINT32_C( 124456881),
      UINT32_C(1856765160),
      UINT32_C(2399216303),
      UINT32_C(2178788198),
      }
    },
    { { UINT32_C( 237004636), UINT32_C(2551548791) },
      { UINT32_C(1884826760), UINT32_C(4275962920) },
      { UINT32_C(1733701303), UINT32_C(  49698640) },
      { UINT32_C(2438824491), UINT32_C(2316450349) },
      {
      UINT32_C( 237004636),
      UINT32_C(1884826760),
      UINT32_C(1733701303),
      UINT32_C(2438824491),
      UINT32_C(2551548791),
      UINT32_C(4275962920),
      UINT32_C(  49698640),
      UINT32_C(2316450349),
      }
    },
    { { UINT32_C( 429404834), UINT32_C(1186049470) },
      { UINT32_C(  45550297), UINT32_C(3305149710) },
      { UINT32_C( 338450372), UINT32_C(3658884014) },
      { UINT32_C(3547034789), UINT32_C(1348304558) },
      {
      UINT32_C( 429404834),
      UINT32_C(  45550297),
      UINT32_C( 338450372),
      UINT32_C(3547034789),
      UINT32_C(1186049470),
      UINT32_C(3305149710),
      UINT32_C(3658884014),
      UINT32_C(1348304558),
      }
    },
    { { UINT32_C(1852437936), UINT32_C(2075466658) },
      { UINT32_C( 863857701), UINT32_C(3321396737) },
      { UINT32_C(2212111829), UINT32_C(3982356552) },
      { UINT32_C( 331401572), UINT32_C(4150467911) },
      {
      UINT32_C(1852437936),
      UINT32_C( 863857701),
      UINT32_C(2212111829),
      UINT32_C( 331401572),
      UINT32_C(2075466658),
      UINT32_C(3321396737),
      UINT32_C(3982356552),
      UINT32_C(4150467911),
      }
    },
    { { UINT32_C(3026636050), UINT32_C( 221256680) },
      { UINT32_C(2285940103), UINT32_C(   5126187) },
      { UINT32_C(2776901725), UINT32_C(2106843416) },
      { UINT32_C(4052767658), UINT32_C(2213147505) },
      {
      UINT32_C(3026636050),
      UINT32_C(2285940103),
      UINT32_C(2776901725),
      UINT32_C(4052767658),
      UINT32_C( 221256680),
      UINT32_C(   5126187),
      UINT32_C(2106843416),
      UINT32_C(2213147505),
      }
    },
    { { UINT32_C(2822262720), UINT32_C(4055197802) },
      { UINT32_C(1098511637), UINT32_C(2336343854) },
      { UINT32_C( 137479663), UINT32_C(1367721127) },
      { UINT32_C(2286097687), UINT32_C(3373018120) },
      {
      UINT32_C(2822262720),
      UINT32_C(1098511637),
      UINT32_C( 137479663),
      UINT32_C(2286097687),
      UINT32_C(4055197802),
      UINT32_C(2336343854),
      UINT32_C(1367721127),
      UINT32_C(3373018120),
      }
    },
    { { UINT32_C(3849405563), UINT32_C(3252037548) },
      { UINT32_C(1241665308), UINT32_C( 114705431) },
      { UINT32_C(2953709321), UINT32_C(3791819723) },
      { UINT32_C(2976597416), UINT32_C(3967448945) },
      {
      UINT32_C(3849405563),
      UINT32_C(1241665308),
      UINT32_C(2953709321),
      UINT32_C(2976597416),
      UINT32_C(3252037548),
      UINT32_C( 114705431),
      UINT32_C(3791819723),
      UINT32_C(3967448945),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x2x4_t r_ = { { simde_vld1_u32(test_vec[i].r0),
                                simde_vld1_u32(test_vec[i].r1),
                                simde_vld1_u32(test_vec[i].r2),
                                simde_vld1_u32(test_vec[i].r3), } };

    uint32_t a_[8];
    simde_vst4_u32(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_u32(a_);
    simde_test_arm_neon_assert_equal_u32x2(r_.val[0], simde_vld1_u32(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u32x2(r_.val[1], simde_vld1_u32(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u32x2(r_.val[2], simde_vld1_u32(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint32x2_t a0 = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t a1 = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t a2 = simde_test_arm_neon_random_u32x2();
    simde_uint32x2_t a3 = simde_test_arm_neon_random_u32x2();
    simde_uint32x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u32x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint32_t buf[8];
    simde_vst4_u32(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_u32(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t r0[1];
    uint64_t r1[1];
    uint64_t r2[1];
    uint64_t r3[1];
    uint64_t a[4];
  } test_vec[] = {
    { { UINT64_C( 5721188545113066611) },
      { UINT64_C(14561941195432479727) },
      { UINT64_C(18383632674776778752) },
      { UINT64_C(15980372823853894486) },
      {
      UINT64_C( 5721188545113066611),
      UINT64_C(14561941195432479727),
      UINT64_C(18383632674776778752),
      UINT64_C(15980372823853894486),
      }
    },
    { { UINT64_C(17453329832926135356) },
      { UINT64_C( 9305115780059437306) },
      { UINT64_C(10769792532928690161) },
      { UINT64_C( 9174047135429923592) },
      {
      UINT64_C(17453329832926135356),
      UINT64_C( 9305115780059437306),
      UINT64_C(10769792532928690161),
      UINT64_C( 9174047135429923592),
      }
    },
    { { UINT64_C( 4971021025742920199) },
      { UINT64_C(12229453011547344821) },
      { UINT64_C(11171622612186862901) },
      { UINT64_C(15125726142156113446) },
      {
      UINT64_C( 4971021025742920199),
      UINT64_C(12229453011547344821),
      UINT64_C(11171622612186862901),
      UINT64_C(15125726142156113446),
      }
    },
    { { UINT64_C(11783624364083859705) },
      { UINT64_C( 1623425490471166758) },
      { UINT64_C( 6869277207765361957) },
      { UINT64_C(13489603327554052761) },
      {
      UINT64_C(11783624364083859705),
      UINT64_C( 1623425490471166758),
      UINT64_C( 6869277207765361957),
      UINT64_C(13489603327554052761),
      }
    },
    { { UINT64_C(  905933701970267906) },
      { UINT64_C( 2422780449713187752) },
      { UINT64_C( 6174203900964972822) },
      { UINT64_C( 3174171503893182608) },
      {
      UINT64_C(  905933701970267906),
      UINT64_C( 2422780449713187752),
      UINT64_C( 6174203900964972822),
      UINT64_C( 3174171503893182608),
      }
    },
    { { UINT64_C( 4030069174546664187) },
      { UINT64_C( 6860775845552772889) },
      { UINT64_C(14815256441915314056) },
      { UINT64_C( 4191491432061489877) },
      {
      UINT64_C( 4030069174546664187),
      UINT64_C( 6860775845552772889),
      UINT64_C(14815256441915314056),
      UINT64_C( 4191491432061489877),
      }
    },
    { { UINT64_C( 1079748961840678709) },
      { UINT64_C(11927881590574923233) },
      { UINT64_C( 7670619264820787049) },
      { UINT64_C(17460338915384332758) },
      {
      UINT64_C( 1079748961840678709),
      UINT64_C(11927881590574923233),
      UINT64_C( 7670619264820787049),
      UINT64_C(17460338915384332758),
      }
    },
    { { UINT64_C( 6259919325679283164) },
      { UINT64_C(14209428967911261040) },
      { UINT64_C( 8448153254045096767) },
      { UINT64_C( 1738065358680139632) },
      {
      UINT64_C( 6259919325679283164),
      UINT64_C(14209428967911261040),
      UINT64_C( 8448153254045096767),
      UINT64_C( 1738065358680139632),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x1x4_t r_ = { { simde_vld1_u64(test_vec[i].r0),
                                simde_vld1_u64(test_vec[i].r1),
                                simde_vld1_u64(test_vec[i].r2),
                                simde_vld1_u64(test_vec[i].r3), } };

    uint64_t a_[4];
    simde_vst4_u64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_u64(a_);
    simde_test_arm_neon_assert_equal_u64x1(r_.val[0], simde_vld1_u64(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u64x1(r_.val[1], simde_vld1_u64(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u64x1(r_.val[2], simde_vld1_u64(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint64x1_t a0 = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t a1 = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t a2 = simde_test_arm_neon_random_u64x1();
    simde_uint64x1_t a3 = simde_test_arm_neon_random_u64x1();
    simde_uint64x1x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u64x1(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x1(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x1(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint64_t buf[4];
    simde_vst4_u64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_u64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_float16_t r0[8];
    simde_float16_t r1[8];
    simde_float16_t r2[8];
    simde_float16_t r3[8];
    simde_float16_t a[32];
  } test_vec[] = {
    { { SIMDE_FLOAT16_VALUE( - 14.743),  SIMDE_FLOAT16_VALUE( 96.869),  SIMDE_FLOAT16_VALUE( 35.732), SIMDE_FLOAT16_VALUE( - 11.204),
        SIMDE_FLOAT16_VALUE( - 36.507), SIMDE_FLOAT16_VALUE( - 87.762), SIMDE_FLOAT16_VALUE( - 30.140),  SIMDE_FLOAT16_VALUE( 40.553) },
      {  SIMDE_FLOAT16_VALUE( 90.636), SIMDE_FLOAT16_VALUE( - 74.102), SIMDE_FLOAT16_VALUE( - 11.935),  SIMDE_FLOAT16_VALUE( 76.173),
        SIMDE_FLOAT16_VALUE( - 60.016), SIMDE_FLOAT16_VALUE( - 12.468), SIMDE_FLOAT16_VALUE( - 42.341), SIMDE_FLOAT16_VALUE( - 48.188) },
      { SIMDE_FLOAT16_VALUE( - 65.064), SIMDE_FLOAT16_VALUE( - 77.067), SIMDE_FLOAT16_VALUE( -  3.798),  SIMDE_FLOAT16_VALUE( 78.248),
        SIMDE_FLOAT16_VALUE( - 75.705), SIMDE_FLOAT16_VALUE( - 81.300),  SIMDE_FLOAT16_VALUE( 41.755),  SIMDE_FLOAT16_VALUE(  0.822) },
      {  SIMDE_FLOAT16_VALUE( 45.696), SIMDE_FLOAT16_VALUE( - 91.718),  SIMDE_FLOAT16_VALUE( 81.433),  SIMDE_FLOAT16_VALUE( 42.239),
         SIMDE_FLOAT16_VALUE( 70.791),  SIMDE_FLOAT16_VALUE( 21.361),  SIMDE_FLOAT16_VALUE( 51.896), SIMDE_FLOAT16_VALUE( - 38.175) },
      { SIMDE_FLOAT16_VALUE( - 14.743),  SIMDE_FLOAT16_VALUE( 90.636), SIMDE_FLOAT16_VALUE( - 65.064),  SIMDE_FLOAT16_VALUE( 45.696),
         SIMDE_FLOAT16_VALUE( 96.869), SIMDE_FLOAT16_VALUE( - 74.102), SIMDE_FLOAT16_VALUE( - 77.067), SIMDE_FLOAT16_VALUE( - 91.718),
         SIMDE_FLOAT16_VALUE( 35.732), SIMDE_FLOAT16_VALUE( - 11.935), SIMDE_FLOAT16_VALUE( -  3.798),  SIMDE_FLOAT16_VALUE( 81.433),
        SIMDE_FLOAT16_VALUE( - 11.204),  SIMDE_FLOAT16_VALUE( 76.173),  SIMDE_FLOAT16_VALUE( 78.248),  SIMDE_FLOAT16_VALUE( 42.239),
        SIMDE_FLOAT16_VALUE( - 36.507), SIMDE_FLOAT16_VALUE( - 60.016), SIMDE_FLOAT16_VALUE( - 75.705),  SIMDE_FLOAT16_VALUE( 70.791),
        SIMDE_FLOAT16_VALUE( - 87.762), SIMDE_FLOAT16_VALUE( - 12.468), SIMDE_FLOAT16_VALUE( - 81.300),  SIMDE_FLOAT16_VALUE( 21.361),
        SIMDE_FLOAT16_VALUE( - 30.140), SIMDE_FLOAT16_VALUE( - 42.341),  SIMDE_FLOAT16_VALUE( 41.755),  SIMDE_FLOAT16_VALUE( 51.896),
         SIMDE_FLOAT16_VALUE( 40.553), SIMDE_FLOAT16_VALUE( - 48.188),  SIMDE_FLOAT16_VALUE(  0.822), SIMDE_FLOAT16_VALUE( - 38.175) } },
    { {  SIMDE_FLOAT16_VALUE( 20.836), SIMDE_FLOAT16_VALUE( -  6.255),  SIMDE_FLOAT16_VALUE( 79.168),  SIMDE_FLOAT16_VALUE( 29.039),
         SIMDE_FLOAT16_VALUE( 96.927),  SIMDE_FLOAT16_VALUE( 41.696), SIMDE_FLOAT16_VALUE( - 42.924), SIMDE_FLOAT16_VALUE( -  7.066) },
      {  SIMDE_FLOAT16_VALUE( 14.370),  SIMDE_FLOAT16_VALUE(  7.192), SIMDE_FLOAT16_VALUE( - 88.540),  SIMDE_FLOAT16_VALUE( 13.116),
         SIMDE_FLOAT16_VALUE( 64.603), SIMDE_FLOAT16_VALUE( - 63.088), SIMDE_FLOAT16_VALUE( - 11.758),  SIMDE_FLOAT16_VALUE( 14.850) },
      {  SIMDE_FLOAT16_VALUE( 27.807),  SIMDE_FLOAT16_VALUE( 11.530), SIMDE_FLOAT16_VALUE( - 32.331), SIMDE_FLOAT16_VALUE( - 44.759),
         SIMDE_FLOAT16_VALUE( 24.258), SIMDE_FLOAT16_VALUE( - 86.786), SIMDE_FLOAT16_VALUE( - 94.826),  SIMDE_FLOAT16_VALUE( 48.908) },
      {  SIMDE_FLOAT16_VALUE( 20.925),  SIMDE_FLOAT16_VALUE( 99.983), SIMDE_FLOAT16_VALUE( - 59.823),  SIMDE_FLOAT16_VALUE( 71.958),
         SIMDE_FLOAT16_VALUE( 63.444),  SIMDE_FLOAT16_VALUE( 71.547),  SIMDE_FLOAT16_VALUE( 68.404),  SIMDE_FLOAT16_VALUE( 32.576) },
      {  SIMDE_FLOAT16_VALUE( 20.836),  SIMDE_FLOAT16_VALUE( 14.370),  SIMDE_FLOAT16_VALUE( 27.807),  SIMDE_FLOAT16_VALUE( 20.925),
        SIMDE_FLOAT16_VALUE( -  6.255),  SIMDE_FLOAT16_VALUE(  7.192),  SIMDE_FLOAT16_VALUE( 11.530),  SIMDE_FLOAT16_VALUE( 99.983),
         SIMDE_FLOAT16_VALUE( 79.168), SIMDE_FLOAT16_VALUE( - 88.540), SIMDE_FLOAT16_VALUE( - 32.331), SIMDE_FLOAT16_VALUE( - 59.823),
         SIMDE_FLOAT16_VALUE( 29.039),  SIMDE_FLOAT16_VALUE( 13.116), SIMDE_FLOAT16_VALUE( - 44.759),  SIMDE_FLOAT16_VALUE( 71.958),
         SIMDE_FLOAT16_VALUE( 96.927),  SIMDE_FLOAT16_VALUE( 64.603),  SIMDE_FLOAT16_VALUE( 24.258),  SIMDE_FLOAT16_VALUE( 63.444),
         SIMDE_FLOAT16_VALUE( 41.696), SIMDE_FLOAT16_VALUE( - 63.088), SIMDE_FLOAT16_VALUE( - 86.786),  SIMDE_FLOAT16_VALUE( 71.547),
        SIMDE_FLOAT16_VALUE( - 42.924), SIMDE_FLOAT16_VALUE( - 11.758), SIMDE_FLOAT16_VALUE( - 94.826),  SIMDE_FLOAT16_VALUE( 68.404),
        SIMDE_FLOAT16_VALUE( -  7.066),  SIMDE_FLOAT16_VALUE( 14.850),  SIMDE_FLOAT16_VALUE( 48.908),  SIMDE_FLOAT16_VALUE( 32.576) } },
    { { SIMDE_FLOAT16_VALUE( - 98.651),  SIMDE_FLOAT16_VALUE(  8.370),  SIMDE_FLOAT16_VALUE(  5.212), SIMDE_FLOAT16_VALUE( - 39.002),
        SIMDE_FLOAT16_VALUE( - 50.855),  SIMDE_FLOAT16_VALUE(  9.832),  SIMDE_FLOAT16_VALUE( 64.681),  SIMDE_FLOAT16_VALUE( 53.110) },
      {  SIMDE_FLOAT16_VALUE( 56.471),  SIMDE_FLOAT16_VALUE( 66.543), SIMDE_FLOAT16_VALUE( - 19.108),  SIMDE_FLOAT16_VALUE( 57.884),
         SIMDE_FLOAT16_VALUE(  8.069), SIMDE_FLOAT16_VALUE( - 92.092),  SIMDE_FLOAT16_VALUE( 21.120), SIMDE_FLOAT16_VALUE( - 28.746) },
      { SIMDE_FLOAT16_VALUE( - 33.477),  SIMDE_FLOAT16_VALUE( 94.776),  SIMDE_FLOAT16_VALUE( 39.423), SIMDE_FLOAT16_VALUE( - 14.126),
        SIMDE_FLOAT16_VALUE( - 86.375), SIMDE_FLOAT16_VALUE( - 35.066),  SIMDE_FLOAT16_VALUE( 93.908), SIMDE_FLOAT16_VALUE( - 70.598) },
      { SIMDE_FLOAT16_VALUE( - 47.494), SIMDE_FLOAT16_VALUE( - 73.328), SIMDE_FLOAT16_VALUE( -  6.515),  SIMDE_FLOAT16_VALUE( 64.596),
        SIMDE_FLOAT16_VALUE( - 85.478), SIMDE_FLOAT16_VALUE( - 93.767), SIMDE_FLOAT16_VALUE( - 96.092), SIMDE_FLOAT16_VALUE( - 43.609) },
      { SIMDE_FLOAT16_VALUE( - 98.651),  SIMDE_FLOAT16_VALUE( 56.471), SIMDE_FLOAT16_VALUE( - 33.477), SIMDE_FLOAT16_VALUE( - 47.494),
         SIMDE_FLOAT16_VALUE(  8.370),  SIMDE_FLOAT16_VALUE( 66.543),  SIMDE_FLOAT16_VALUE( 94.776), SIMDE_FLOAT16_VALUE( - 73.328),
         SIMDE_FLOAT16_VALUE(  5.212), SIMDE_FLOAT16_VALUE( - 19.108),  SIMDE_FLOAT16_VALUE( 39.423), SIMDE_FLOAT16_VALUE( -  6.515),
        SIMDE_FLOAT16_VALUE( - 39.002),  SIMDE_FLOAT16_VALUE( 57.884), SIMDE_FLOAT16_VALUE( - 14.126),  SIMDE_FLOAT16_VALUE( 64.596),
        SIMDE_FLOAT16_VALUE( - 50.855),  SIMDE_FLOAT16_VALUE(  8.069), SIMDE_FLOAT16_VALUE( - 86.375), SIMDE_FLOAT16_VALUE( - 85.478),
         SIMDE_FLOAT16_VALUE(  9.832), SIMDE_FLOAT16_VALUE( - 92.092), SIMDE_FLOAT16_VALUE( - 35.066), SIMDE_FLOAT16_VALUE( - 93.767),
         SIMDE_FLOAT16_VALUE( 64.681),  SIMDE_FLOAT16_VALUE( 21.120),  SIMDE_FLOAT16_VALUE( 93.908), SIMDE_FLOAT16_VALUE( - 96.092),
         SIMDE_FLOAT16_VALUE( 53.110), SIMDE_FLOAT16_VALUE( - 28.746), SIMDE_FLOAT16_VALUE( - 70.598), SIMDE_FLOAT16_VALUE( - 43.609) } },
    { {  SIMDE_FLOAT16_VALUE( 32.009), SIMDE_FLOAT16_VALUE( - 70.333),  SIMDE_FLOAT16_VALUE(  5.538),  SIMDE_FLOAT16_VALUE( 82.520),
        SIMDE_FLOAT16_VALUE( - 40.966), SIMDE_FLOAT16_VALUE( - 11.607), SIMDE_FLOAT16_VALUE( - 54.581),  SIMDE_FLOAT16_VALUE( 51.136) },
      { SIMDE_FLOAT16_VALUE( - 80.277),  SIMDE_FLOAT16_VALUE( 70.486), SIMDE_FLOAT16_VALUE( - 49.720),  SIMDE_FLOAT16_VALUE( 84.405),
        SIMDE_FLOAT16_VALUE( - 38.234),  SIMDE_FLOAT16_VALUE( 47.061), SIMDE_FLOAT16_VALUE( - 27.953), SIMDE_FLOAT16_VALUE( - 35.272) },
      {  SIMDE_FLOAT16_VALUE( 37.433),  SIMDE_FLOAT16_VALUE( 84.527),  SIMDE_FLOAT16_VALUE( 41.358), SIMDE_FLOAT16_VALUE( - 69.610),
         SIMDE_FLOAT16_VALUE( 51.678), SIMDE_FLOAT16_VALUE( - 94.404), SIMDE_FLOAT16_VALUE( - 16.678),  SIMDE_FLOAT16_VALUE( 76.803) },
      { SIMDE_FLOAT16_VALUE( - 82.082), SIMDE_FLOAT16_VALUE( - 90.814), SIMDE_FLOAT16_VALUE( - 62.857), SIMDE_FLOAT16_VALUE( - 73.589),
         SIMDE_FLOAT16_VALUE( 77.514), SIMDE_FLOAT16_VALUE( - 67.143), SIMDE_FLOAT16_VALUE( - 66.907),  SIMDE_FLOAT16_VALUE( 66.753) },
      {  SIMDE_FLOAT16_VALUE( 32.009), SIMDE_FLOAT16_VALUE( - 80.277),  SIMDE_FLOAT16_VALUE( 37.433), SIMDE_FLOAT16_VALUE( - 82.082),
        SIMDE_FLOAT16_VALUE( - 70.333),  SIMDE_FLOAT16_VALUE( 70.486),  SIMDE_FLOAT16_VALUE( 84.527), SIMDE_FLOAT16_VALUE( - 90.814),
         SIMDE_FLOAT16_VALUE(  5.538), SIMDE_FLOAT16_VALUE( - 49.720),  SIMDE_FLOAT16_VALUE( 41.358), SIMDE_FLOAT16_VALUE( - 62.857),
         SIMDE_FLOAT16_VALUE( 82.520),  SIMDE_FLOAT16_VALUE( 84.405), SIMDE_FLOAT16_VALUE( - 69.610), SIMDE_FLOAT16_VALUE( - 73.589),
        SIMDE_FLOAT16_VALUE( - 40.966), SIMDE_FLOAT16_VALUE( - 38.234),  SIMDE_FLOAT16_VALUE( 51.678),  SIMDE_FLOAT16_VALUE( 77.514),
        SIMDE_FLOAT16_VALUE( - 11.607),  SIMDE_FLOAT16_VALUE( 47.061), SIMDE_FLOAT16_VALUE( - 94.404), SIMDE_FLOAT16_VALUE( - 67.143),
        SIMDE_FLOAT16_VALUE( - 54.581), SIMDE_FLOAT16_VALUE( - 27.953), SIMDE_FLOAT16_VALUE( - 16.678), SIMDE_FLOAT16_VALUE( - 66.907),
         SIMDE_FLOAT16_VALUE( 51.136), SIMDE_FLOAT16_VALUE( - 35.272),  SIMDE_FLOAT16_VALUE( 76.803),  SIMDE_FLOAT16_VALUE( 66.753) } },
    { {  SIMDE_FLOAT16_VALUE( 13.527),  SIMDE_FLOAT16_VALUE( 15.879), SIMDE_FLOAT16_VALUE( - 25.658),  SIMDE_FLOAT16_VALUE( 64.222),
         SIMDE_FLOAT16_VALUE( 72.758),  SIMDE_FLOAT16_VALUE( 17.152),  SIMDE_FLOAT16_VALUE( 61.595), SIMDE_FLOAT16_VALUE( - 25.744) },
      {  SIMDE_FLOAT16_VALUE( 73.965),  SIMDE_FLOAT16_VALUE( 66.305), SIMDE_FLOAT16_VALUE( - 82.679), SIMDE_FLOAT16_VALUE( - 48.114),
         SIMDE_FLOAT16_VALUE( 35.804),  SIMDE_FLOAT16_VALUE( 11.885), SIMDE_FLOAT16_VALUE( - 98.287),  SIMDE_FLOAT16_VALUE( 61.933) },
      { SIMDE_FLOAT16_VALUE( - 79.049),  SIMDE_FLOAT16_VALUE( 99.270), SIMDE_FLOAT16_VALUE( - 46.729),  SIMDE_FLOAT16_VALUE( 30.358),
         SIMDE_FLOAT16_VALUE( 46.057), SIMDE_FLOAT16_VALUE( - 87.368),  SIMDE_FLOAT16_VALUE( 82.236), SIMDE_FLOAT16_VALUE( - 81.438) },
      {  SIMDE_FLOAT16_VALUE( 31.502),  SIMDE_FLOAT16_VALUE( 72.068), SIMDE_FLOAT16_VALUE( -  3.689),  SIMDE_FLOAT16_VALUE( 42.230),
         SIMDE_FLOAT16_VALUE(  9.827),  SIMDE_FLOAT16_VALUE( 27.830), SIMDE_FLOAT16_VALUE( - 62.111), SIMDE_FLOAT16_VALUE( - 46.971) },
      {  SIMDE_FLOAT16_VALUE( 13.527),  SIMDE_FLOAT16_VALUE( 73.965), SIMDE_FLOAT16_VALUE( - 79.049),  SIMDE_FLOAT16_VALUE( 31.502),
         SIMDE_FLOAT16_VALUE( 15.879),  SIMDE_FLOAT16_VALUE( 66.305),  SIMDE_FLOAT16_VALUE( 99.270),  SIMDE_FLOAT16_VALUE( 72.068),
        SIMDE_FLOAT16_VALUE( - 25.658), SIMDE_FLOAT16_VALUE( - 82.679), SIMDE_FLOAT16_VALUE( - 46.729), SIMDE_FLOAT16_VALUE( -  3.689),
         SIMDE_FLOAT16_VALUE( 64.222), SIMDE_FLOAT16_VALUE( - 48.114),  SIMDE_FLOAT16_VALUE( 30.358),  SIMDE_FLOAT16_VALUE( 42.230),
         SIMDE_FLOAT16_VALUE( 72.758),  SIMDE_FLOAT16_VALUE( 35.804),  SIMDE_FLOAT16_VALUE( 46.057),  SIMDE_FLOAT16_VALUE(  9.827),
         SIMDE_FLOAT16_VALUE( 17.152),  SIMDE_FLOAT16_VALUE( 11.885), SIMDE_FLOAT16_VALUE( - 87.368),  SIMDE_FLOAT16_VALUE( 27.830),
         SIMDE_FLOAT16_VALUE( 61.595), SIMDE_FLOAT16_VALUE( - 98.287),  SIMDE_FLOAT16_VALUE( 82.236), SIMDE_FLOAT16_VALUE( - 62.111),
        SIMDE_FLOAT16_VALUE( - 25.744),  SIMDE_FLOAT16_VALUE( 61.933), SIMDE_FLOAT16_VALUE( - 81.438), SIMDE_FLOAT16_VALUE( - 46.971) } },
    { { SIMDE_FLOAT16_VALUE( - 98.937), SIMDE_FLOAT16_VALUE( - 75.185),  SIMDE_FLOAT16_VALUE( 51.461),  SIMDE_FLOAT16_VALUE( 34.040),
        SIMDE_FLOAT16_VALUE( - 18.490),  SIMDE_FLOAT16_VALUE(  2.435), SIMDE_FLOAT16_VALUE( - 31.936), SIMDE_FLOAT16_VALUE( - 44.440) },
      {  SIMDE_FLOAT16_VALUE( 51.617),  SIMDE_FLOAT16_VALUE( 92.309), SIMDE_FLOAT16_VALUE( - 32.479),  SIMDE_FLOAT16_VALUE( 64.487),
         SIMDE_FLOAT16_VALUE( 33.205),  SIMDE_FLOAT16_VALUE( 26.250), SIMDE_FLOAT16_VALUE( -  8.956),  SIMDE_FLOAT16_VALUE( 43.765) },
      { SIMDE_FLOAT16_VALUE( - 80.764), SIMDE_FLOAT16_VALUE( - 42.445), SIMDE_FLOAT16_VALUE( - 77.677),  SIMDE_FLOAT16_VALUE( 54.417),
        SIMDE_FLOAT16_VALUE( - 58.892),  SIMDE_FLOAT16_VALUE( 67.912), SIMDE_FLOAT16_VALUE( - 19.769), SIMDE_FLOAT16_VALUE( - 94.018) },
      {  SIMDE_FLOAT16_VALUE( 32.228), SIMDE_FLOAT16_VALUE( - 45.404), SIMDE_FLOAT16_VALUE( - 11.380),  SIMDE_FLOAT16_VALUE( 85.317),
         SIMDE_FLOAT16_VALUE( 32.872), SIMDE_FLOAT16_VALUE( - 10.946),  SIMDE_FLOAT16_VALUE( 93.337),  SIMDE_FLOAT16_VALUE( 94.934) },
      { SIMDE_FLOAT16_VALUE( - 98.937),  SIMDE_FLOAT16_VALUE( 51.617), SIMDE_FLOAT16_VALUE( - 80.764),  SIMDE_FLOAT16_VALUE( 32.228),
        SIMDE_FLOAT16_VALUE( - 75.185),  SIMDE_FLOAT16_VALUE( 92.309), SIMDE_FLOAT16_VALUE( - 42.445), SIMDE_FLOAT16_VALUE( - 45.404),
         SIMDE_FLOAT16_VALUE( 51.461), SIMDE_FLOAT16_VALUE( - 32.479), SIMDE_FLOAT16_VALUE( - 77.677), SIMDE_FLOAT16_VALUE( - 11.380),
         SIMDE_FLOAT16_VALUE( 34.040),  SIMDE_FLOAT16_VALUE( 64.487),  SIMDE_FLOAT16_VALUE( 54.417),  SIMDE_FLOAT16_VALUE( 85.317),
        SIMDE_FLOAT16_VALUE( - 18.490),  SIMDE_FLOAT16_VALUE( 33.205), SIMDE_FLOAT16_VALUE( - 58.892),  SIMDE_FLOAT16_VALUE( 32.872),
         SIMDE_FLOAT16_VALUE(  2.435),  SIMDE_FLOAT16_VALUE( 26.250),  SIMDE_FLOAT16_VALUE( 67.912), SIMDE_FLOAT16_VALUE( - 10.946),
        SIMDE_FLOAT16_VALUE( - 31.936), SIMDE_FLOAT16_VALUE( -  8.956), SIMDE_FLOAT16_VALUE( - 19.769),  SIMDE_FLOAT16_VALUE( 93.337),
        SIMDE_FLOAT16_VALUE( - 44.440),  SIMDE_FLOAT16_VALUE( 43.765), SIMDE_FLOAT16_VALUE( - 94.018),  SIMDE_FLOAT16_VALUE( 94.934) } },
    { { SIMDE_FLOAT16_VALUE( - 82.721), SIMDE_FLOAT16_VALUE( -  5.083),  SIMDE_FLOAT16_VALUE( 28.116), SIMDE_FLOAT16_VALUE( -  2.078),
        SIMDE_FLOAT16_VALUE( -  8.045),  SIMDE_FLOAT16_VALUE( 98.088),  SIMDE_FLOAT16_VALUE( 77.205), SIMDE_FLOAT16_VALUE( - 86.702) },
      { SIMDE_FLOAT16_VALUE( - 75.686), SIMDE_FLOAT16_VALUE( - 67.078),  SIMDE_FLOAT16_VALUE( 38.647), SIMDE_FLOAT16_VALUE( -  7.111),
        SIMDE_FLOAT16_VALUE( - 74.933), SIMDE_FLOAT16_VALUE( - 54.055), SIMDE_FLOAT16_VALUE( - 51.905),  SIMDE_FLOAT16_VALUE( 53.734) },
      { SIMDE_FLOAT16_VALUE( - 39.474),  SIMDE_FLOAT16_VALUE( 89.193), SIMDE_FLOAT16_VALUE( - 72.210), SIMDE_FLOAT16_VALUE( - 42.032),
         SIMDE_FLOAT16_VALUE( 61.321), SIMDE_FLOAT16_VALUE( - 12.021), SIMDE_FLOAT16_VALUE( - 35.830), SIMDE_FLOAT16_VALUE( - 85.851) },
      {  SIMDE_FLOAT16_VALUE( 64.970),  SIMDE_FLOAT16_VALUE( 85.757),  SIMDE_FLOAT16_VALUE( 28.273),  SIMDE_FLOAT16_VALUE( 77.789),
         SIMDE_FLOAT16_VALUE( 50.825),  SIMDE_FLOAT16_VALUE( 95.876),  SIMDE_FLOAT16_VALUE( 44.735), SIMDE_FLOAT16_VALUE( - 28.570) },
      { SIMDE_FLOAT16_VALUE( - 82.721), SIMDE_FLOAT16_VALUE( - 75.686), SIMDE_FLOAT16_VALUE( - 39.474),  SIMDE_FLOAT16_VALUE( 64.970),
        SIMDE_FLOAT16_VALUE( -  5.083), SIMDE_FLOAT16_VALUE( - 67.078),  SIMDE_FLOAT16_VALUE( 89.193),  SIMDE_FLOAT16_VALUE( 85.757),
         SIMDE_FLOAT16_VALUE( 28.116),  SIMDE_FLOAT16_VALUE( 38.647), SIMDE_FLOAT16_VALUE( - 72.210),  SIMDE_FLOAT16_VALUE( 28.273),
        SIMDE_FLOAT16_VALUE( -  2.078), SIMDE_FLOAT16_VALUE( -  7.111), SIMDE_FLOAT16_VALUE( - 42.032),  SIMDE_FLOAT16_VALUE( 77.789),
        SIMDE_FLOAT16_VALUE( -  8.045), SIMDE_FLOAT16_VALUE( - 74.933),  SIMDE_FLOAT16_VALUE( 61.321),  SIMDE_FLOAT16_VALUE( 50.825),
         SIMDE_FLOAT16_VALUE( 98.088), SIMDE_FLOAT16_VALUE( - 54.055), SIMDE_FLOAT16_VALUE( - 12.021),  SIMDE_FLOAT16_VALUE( 95.876),
         SIMDE_FLOAT16_VALUE( 77.205), SIMDE_FLOAT16_VALUE( - 51.905), SIMDE_FLOAT16_VALUE( - 35.830),  SIMDE_FLOAT16_VALUE( 44.735),
        SIMDE_FLOAT16_VALUE( - 86.702),  SIMDE_FLOAT16_VALUE( 53.734), SIMDE_FLOAT16_VALUE( - 85.851), SIMDE_FLOAT16_VALUE( - 28.570) } },
    { {  SIMDE_FLOAT16_VALUE( 56.021), SIMDE_FLOAT16_VALUE( - 47.189),  SIMDE_FLOAT16_VALUE( 34.633), SIMDE_FLOAT16_VALUE( - 48.482),
        SIMDE_FLOAT16_VALUE( - 13.024), SIMDE_FLOAT16_VALUE( - 68.164), SIMDE_FLOAT16_VALUE( - 38.493), SIMDE_FLOAT16_VALUE( - 96.972) },
      {  SIMDE_FLOAT16_VALUE( 14.297),  SIMDE_FLOAT16_VALUE( 60.328), SIMDE_FLOAT16_VALUE( - 55.132),  SIMDE_FLOAT16_VALUE( 61.549),
         SIMDE_FLOAT16_VALUE( 25.753),  SIMDE_FLOAT16_VALUE( 72.855),  SIMDE_FLOAT16_VALUE( 28.394),  SIMDE_FLOAT16_VALUE( 58.315) },
      { SIMDE_FLOAT16_VALUE( - 52.297), SIMDE_FLOAT16_VALUE( - 59.309),  SIMDE_FLOAT16_VALUE( 39.064),  SIMDE_FLOAT16_VALUE( 92.546),
         SIMDE_FLOAT16_VALUE( 29.222),  SIMDE_FLOAT16_VALUE( 18.830),  SIMDE_FLOAT16_VALUE( 78.006), SIMDE_FLOAT16_VALUE( - 34.477) },
      {  SIMDE_FLOAT16_VALUE( 48.515),  SIMDE_FLOAT16_VALUE(  6.778),  SIMDE_FLOAT16_VALUE( 83.115), SIMDE_FLOAT16_VALUE( - 15.075),
        SIMDE_FLOAT16_VALUE( - 64.544), SIMDE_FLOAT16_VALUE( -  5.615), SIMDE_FLOAT16_VALUE( - 79.529), SIMDE_FLOAT16_VALUE( - 20.122) },
      {  SIMDE_FLOAT16_VALUE( 56.021),  SIMDE_FLOAT16_VALUE( 14.297), SIMDE_FLOAT16_VALUE( - 52.297),  SIMDE_FLOAT16_VALUE( 48.515),
        SIMDE_FLOAT16_VALUE( - 47.189),  SIMDE_FLOAT16_VALUE( 60.328), SIMDE_FLOAT16_VALUE( - 59.309),  SIMDE_FLOAT16_VALUE(  6.778),
         SIMDE_FLOAT16_VALUE( 34.633), SIMDE_FLOAT16_VALUE( - 55.132),  SIMDE_FLOAT16_VALUE( 39.064),  SIMDE_FLOAT16_VALUE( 83.115),
        SIMDE_FLOAT16_VALUE( - 48.482),  SIMDE_FLOAT16_VALUE( 61.549),  SIMDE_FLOAT16_VALUE( 92.546), SIMDE_FLOAT16_VALUE( - 15.075),
        SIMDE_FLOAT16_VALUE( - 13.024),  SIMDE_FLOAT16_VALUE( 25.753),  SIMDE_FLOAT16_VALUE( 29.222), SIMDE_FLOAT16_VALUE( - 64.544),
        SIMDE_FLOAT16_VALUE( - 68.164),  SIMDE_FLOAT16_VALUE( 72.855),  SIMDE_FLOAT16_VALUE( 18.830), SIMDE_FLOAT16_VALUE( -  5.615),
        SIMDE_FLOAT16_VALUE( - 38.493),  SIMDE_FLOAT16_VALUE( 28.394),  SIMDE_FLOAT16_VALUE( 78.006), SIMDE_FLOAT16_VALUE( - 79.529),
        SIMDE_FLOAT16_VALUE( - 96.972),  SIMDE_FLOAT16_VALUE( 58.315), SIMDE_FLOAT16_VALUE( - 34.477), SIMDE_FLOAT16_VALUE( - 20.122) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float16x8x4_t r_ = { { simde_vld1q_f16(test_vec[i].r0),
                                 simde_vld1q_f16(test_vec[i].r1),
                                 simde_vld1q_f16(test_vec[i].r2),
                                 simde_vld1q_f16(test_vec[i].r3), } };

    simde_float16_t a_[32];
    simde_vst4q_f16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_f16(a_);
    simde_test_arm_neon_assert_equal_f16x8(r_.val[0], simde_vld1q_f16(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_f16x8(r_.val[1], simde_vld1q_f16(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_f16x8(r_.val[2], simde_vld1q_f16(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_f16x8(r_.val[3], simde_vld1q_f16(test_vec[i].r3), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float16x8_t r0 = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
    simde_float16x8_t r1 = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
    simde_float16x8_t r2 = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
    simde_float16x8_t r3 = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
    simde_float16x32_t a = simde_vst4q_f16(r0, r1, r2, r3);

    simde_test_arm_neon_write_f16x8(2, r0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f16x8(2, r1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x8(2, r2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x32(2, a, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst4q_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32 r0[4];
    simde_float32 r1[4];
    simde_float32 r2[4];
    simde_float32 r3[4];
    simde_float32 a[16];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -988.70), SIMDE_FLOAT32_C(   709.53), SIMDE_FLOAT32_C(  -895.28), SIMDE_FLOAT32_C(  -307.54) },
      { SIMDE_FLOAT32_C(  -137.31), SIMDE_FLOAT32_C(   947.38), SIMDE_FLOAT32_C(   965.29), SIMDE_FLOAT32_C(  -533.59) },
      { SIMDE_FLOAT32_C(  -896.71), SIMDE_FLOAT32_C(   365.46), SIMDE_FLOAT32_C(  -161.98), SIMDE_FLOAT32_C(   -31.53) },
      { SIMDE_FLOAT32_C(  -334.29), SIMDE_FLOAT32_C(  -613.71), SIMDE_FLOAT32_C(   414.87), SIMDE_FLOAT32_C(  -872.42) },
      {
      SIMDE_FLOAT32_C(  -988.70),
      SIMDE_FLOAT32_C(  -137.31),
      SIMDE_FLOAT32_C(  -896.71),
      SIMDE_FLOAT32_C(  -334.29),
      SIMDE_FLOAT32_C(   709.53),
      SIMDE_FLOAT32_C(   947.38),
      SIMDE_FLOAT32_C(   365.46),
      SIMDE_FLOAT32_C(  -613.71),
      SIMDE_FLOAT32_C(  -895.28),
      SIMDE_FLOAT32_C(   965.29),
      SIMDE_FLOAT32_C(  -161.98),
      SIMDE_FLOAT32_C(   414.87),
      SIMDE_FLOAT32_C(  -307.54),
      SIMDE_FLOAT32_C(  -533.59),
      SIMDE_FLOAT32_C(   -31.53),
      SIMDE_FLOAT32_C(  -872.42),
      }
    },
    { { SIMDE_FLOAT32_C(  -175.89), SIMDE_FLOAT32_C(   -87.40), SIMDE_FLOAT32_C(  -428.46), SIMDE_FLOAT32_C(  -598.83) },
      { SIMDE_FLOAT32_C(  -917.69), SIMDE_FLOAT32_C(  -293.34), SIMDE_FLOAT32_C(   593.88), SIMDE_FLOAT32_C(  -196.10) },
      { SIMDE_FLOAT32_C(   921.26), SIMDE_FLOAT32_C(   218.55), SIMDE_FLOAT32_C(  -799.38), SIMDE_FLOAT32_C(  -616.04) },
      { SIMDE_FLOAT32_C(   227.38), SIMDE_FLOAT32_C(   356.05), SIMDE_FLOAT32_C(   155.96), SIMDE_FLOAT32_C(   238.69) },
      {
      SIMDE_FLOAT32_C(  -175.89),
      SIMDE_FLOAT32_C(  -917.69),
      SIMDE_FLOAT32_C(   921.26),
      SIMDE_FLOAT32_C(   227.38),
      SIMDE_FLOAT32_C(   -87.40),
      SIMDE_FLOAT32_C(  -293.34),
      SIMDE_FLOAT32_C(   218.55),
      SIMDE_FLOAT32_C(   356.05),
      SIMDE_FLOAT32_C(  -428.46),
      SIMDE_FLOAT32_C(   593.88),
      SIMDE_FLOAT32_C(  -799.38),
      SIMDE_FLOAT32_C(   155.96),
      SIMDE_FLOAT32_C(  -598.83),
      SIMDE_FLOAT32_C(  -196.10),
      SIMDE_FLOAT32_C(  -616.04),
      SIMDE_FLOAT32_C(   238.69),
      }
    },
    { { SIMDE_FLOAT32_C(    65.58), SIMDE_FLOAT32_C(   260.68), SIMDE_FLOAT32_C(   931.15), SIMDE_FLOAT32_C(   928.27) },
      { SIMDE_FLOAT32_C(   208.06), SIMDE_FLOAT32_C(   896.44), SIMDE_FLOAT32_C(  -605.32), SIMDE_FLOAT32_C(   311.35) },
      { SIMDE_FLOAT32_C(   261.91), SIMDE_FLOAT32_C(   232.70), SIMDE_FLOAT32_C(  -720.18), SIMDE_FLOAT32_C(   927.62) },
      { SIMDE_FLOAT32_C(   618.99), SIMDE_FLOAT32_C(   694.69), SIMDE_FLOAT32_C(  -944.80), SIMDE_FLOAT32_C(  -556.90) },
      {
      SIMDE_FLOAT32_C(    65.58),
      SIMDE_FLOAT32_C(   208.06),
      SIMDE_FLOAT32_C(   261.91),
      SIMDE_FLOAT32_C(   618.99),
      SIMDE_FLOAT32_C(   260.68),
      SIMDE_FLOAT32_C(   896.44),
      SIMDE_FLOAT32_C(   232.70),
      SIMDE_FLOAT32_C(   694.69),
      SIMDE_FLOAT32_C(   931.15),
      SIMDE_FLOAT32_C(  -605.32),
      SIMDE_FLOAT32_C(  -720.18),
      SIMDE_FLOAT32_C(  -944.80),
      SIMDE_FLOAT32_C(   928.27),
      SIMDE_FLOAT32_C(   311.35),
      SIMDE_FLOAT32_C(   927.62),
      SIMDE_FLOAT32_C(  -556.90),
      }
    },
    { { SIMDE_FLOAT32_C(  -392.71), SIMDE_FLOAT32_C(  -373.26), SIMDE_FLOAT32_C(  -155.73), SIMDE_FLOAT32_C(  -310.40) },
      { SIMDE_FLOAT32_C(   333.40), SIMDE_FLOAT32_C(  -561.84), SIMDE_FLOAT32_C(   493.50), SIMDE_FLOAT32_C(   254.66) },
      { SIMDE_FLOAT32_C(   656.70), SIMDE_FLOAT32_C(   694.12), SIMDE_FLOAT32_C(   638.62), SIMDE_FLOAT32_C(  -115.91) },
      { SIMDE_FLOAT32_C(    50.17), SIMDE_FLOAT32_C(  -205.42), SIMDE_FLOAT32_C(  -877.23), SIMDE_FLOAT32_C(  -884.25) },
      {
      SIMDE_FLOAT32_C(  -392.71),
      SIMDE_FLOAT32_C(   333.40),
      SIMDE_FLOAT32_C(   656.70),
      SIMDE_FLOAT32_C(    50.17),
      SIMDE_FLOAT32_C(  -373.26),
      SIMDE_FLOAT32_C(  -561.84),
      SIMDE_FLOAT32_C(   694.12),
      SIMDE_FLOAT32_C(  -205.42),
      SIMDE_FLOAT32_C(  -155.73),
      SIMDE_FLOAT32_C(   493.50),
      SIMDE_FLOAT32_C(   638.62),
      SIMDE_FLOAT32_C(  -877.23),
      SIMDE_FLOAT32_C(  -310.40),
      SIMDE_FLOAT32_C(   254.66),
      SIMDE_FLOAT32_C(  -115.91),
      SIMDE_FLOAT32_C(  -884.25),
      }
    },
    { { SIMDE_FLOAT32_C(  -944.74), SIMDE_FLOAT32_C(  -946.08), SIMDE_FLOAT32_C(  -955.97), SIMDE_FLOAT32_C(   263.32) },
      { SIMDE_FLOAT32_C(   950.37), SIMDE_FLOAT32_C(  -561.29), SIMDE_FLOAT32_C(  -425.33), SIMDE_FLOAT32_C(   212.28) },
      { SIMDE_FLOAT32_C(   671.41), SIMDE_FLOAT32_C(  -145.51), SIMDE_FLOAT32_C(   139.89), SIMDE_FLOAT32_C(   290.40) },
      { SIMDE_FLOAT32_C(  -450.81), SIMDE_FLOAT32_C(   195.09), SIMDE_FLOAT32_C(   733.51), SIMDE_FLOAT32_C(   156.48) },
      {
      SIMDE_FLOAT32_C(  -944.74),
      SIMDE_FLOAT32_C(   950.37),
      SIMDE_FLOAT32_C(   671.41),
      SIMDE_FLOAT32_C(  -450.81),
      SIMDE_FLOAT32_C(  -946.08),
      SIMDE_FLOAT32_C(  -561.29),
      SIMDE_FLOAT32_C(  -145.51),
      SIMDE_FLOAT32_C(   195.09),
      SIMDE_FLOAT32_C(  -955.97),
      SIMDE_FLOAT32_C(  -425.33),
      SIMDE_FLOAT32_C(   139.89),
      SIMDE_FLOAT32_C(   733.51),
      SIMDE_FLOAT32_C(   263.32),
      SIMDE_FLOAT32_C(   212.28),
      SIMDE_FLOAT32_C(   290.40),
      SIMDE_FLOAT32_C(   156.48),
      }
    },
    { { SIMDE_FLOAT32_C(   821.83), SIMDE_FLOAT32_C(  -422.22), SIMDE_FLOAT32_C(   846.08), SIMDE_FLOAT32_C(   155.24) },
      { SIMDE_FLOAT32_C(    15.94), SIMDE_FLOAT32_C(   339.58), SIMDE_FLOAT32_C(  -590.10), SIMDE_FLOAT32_C(  -327.36) },
      { SIMDE_FLOAT32_C(    33.70), SIMDE_FLOAT32_C(  -951.48), SIMDE_FLOAT32_C(   556.72), SIMDE_FLOAT32_C(  -916.13) },
      { SIMDE_FLOAT32_C(  -156.90), SIMDE_FLOAT32_C(   679.50), SIMDE_FLOAT32_C(  -800.38), SIMDE_FLOAT32_C(  -101.64) },
      {
      SIMDE_FLOAT32_C(   821.83),
      SIMDE_FLOAT32_C(    15.94),
      SIMDE_FLOAT32_C(    33.70),
      SIMDE_FLOAT32_C(  -156.90),
      SIMDE_FLOAT32_C(  -422.22),
      SIMDE_FLOAT32_C(   339.58),
      SIMDE_FLOAT32_C(  -951.48),
      SIMDE_FLOAT32_C(   679.50),
      SIMDE_FLOAT32_C(   846.08),
      SIMDE_FLOAT32_C(  -590.10),
      SIMDE_FLOAT32_C(   556.72),
      SIMDE_FLOAT32_C(  -800.38),
      SIMDE_FLOAT32_C(   155.24),
      SIMDE_FLOAT32_C(  -327.36),
      SIMDE_FLOAT32_C(  -916.13),
      SIMDE_FLOAT32_C(  -101.64),
      }
    },
    { { SIMDE_FLOAT32_C(   733.42), SIMDE_FLOAT32_C(  -756.36), SIMDE_FLOAT32_C(  -838.32), SIMDE_FLOAT32_C(   683.79) },
      { SIMDE_FLOAT32_C(  -317.65), SIMDE_FLOAT32_C(  -263.65), SIMDE_FLOAT32_C(  -103.93), SIMDE_FLOAT32_C(  -646.24) },
      { SIMDE_FLOAT32_C(   590.85), SIMDE_FLOAT32_C(  -964.04), SIMDE_FLOAT32_C(   644.16), SIMDE_FLOAT32_C(  -859.96) },
      { SIMDE_FLOAT32_C(   231.05), SIMDE_FLOAT32_C(   377.67), SIMDE_FLOAT32_C(   296.52), SIMDE_FLOAT32_C(    52.89) },
      {
      SIMDE_FLOAT32_C(   733.42),
      SIMDE_FLOAT32_C(  -317.65),
      SIMDE_FLOAT32_C(   590.85),
      SIMDE_FLOAT32_C(   231.05),
      SIMDE_FLOAT32_C(  -756.36),
      SIMDE_FLOAT32_C(  -263.65),
      SIMDE_FLOAT32_C(  -964.04),
      SIMDE_FLOAT32_C(   377.67),
      SIMDE_FLOAT32_C(  -838.32),
      SIMDE_FLOAT32_C(  -103.93),
      SIMDE_FLOAT32_C(   644.16),
      SIMDE_FLOAT32_C(   296.52),
      SIMDE_FLOAT32_C(   683.79),
      SIMDE_FLOAT32_C(  -646.24),
      SIMDE_FLOAT32_C(  -859.96),
      SIMDE_FLOAT32_C(    52.89),
      }
    },
    { { SIMDE_FLOAT32_C(   955.45), SIMDE_FLOAT32_C(   142.60), SIMDE_FLOAT32_C(  -791.88), SIMDE_FLOAT32_C(   -28.62) },
      { SIMDE_FLOAT32_C(  -517.82), SIMDE_FLOAT32_C(  -381.98), SIMDE_FLOAT32_C(   644.02), SIMDE_FLOAT32_C(   515.88) },
      { SIMDE_FLOAT32_C(  -333.46), SIMDE_FLOAT32_C(   200.74), SIMDE_FLOAT32_C(   599.74), SIMDE_FLOAT32_C(   509.64) },
      { SIMDE_FLOAT32_C(  -119.76), SIMDE_FLOAT32_C(   799.36), SIMDE_FLOAT32_C(  -592.00), SIMDE_FLOAT32_C(  -386.34) },
      {
      SIMDE_FLOAT32_C(   955.45),
      SIMDE_FLOAT32_C(  -517.82),
      SIMDE_FLOAT32_C(  -333.46),
      SIMDE_FLOAT32_C(  -119.76),
      SIMDE_FLOAT32_C(   142.60),
      SIMDE_FLOAT32_C(  -381.98),
      SIMDE_FLOAT32_C(   200.74),
      SIMDE_FLOAT32_C(   799.36),
      SIMDE_FLOAT32_C(  -791.88),
      SIMDE_FLOAT32_C(   644.02),
      SIMDE_FLOAT32_C(   599.74),
      SIMDE_FLOAT32_C(  -592.00),
      SIMDE_FLOAT32_C(   -28.62),
      SIMDE_FLOAT32_C(   515.88),
      SIMDE_FLOAT32_C(   509.64),
      SIMDE_FLOAT32_C(  -386.34),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float32x4x4_t r_ = { { simde_vld1q_f32(test_vec[i].r0),
                                 simde_vld1q_f32(test_vec[i].r1),
                                 simde_vld1q_f32(test_vec[i].r2),
                                 simde_vld1q_f32(test_vec[i].r3), } };

    simde_float32 a_[16];
    simde_vst4q_f32(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_f32(a_);
    simde_test_arm_neon_assert_equal_f32x4(r_.val[0], simde_vld1q_f32(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_f32x4(r_.val[1], simde_vld1q_f32(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_f32x4(r_.val[2], simde_vld1q_f32(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_f32x4(r_.val[3], simde_vld1q_f32(test_vec[i].r3), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float32x4_t a0 = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t a1 = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t a2 = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4_t a3 = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
    simde_float32x4x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_f32x4(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f32x4(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f32x4(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_float32_t buf[16];
    simde_vst4q_f32(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_f32(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64 r0[2];
    simde_float64 r1[2];
    simde_float64 r2[2];
    simde_float64 r3[2];
    simde_float64 a[8];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -818.28), SIMDE_FLOAT64_C(   -30.31) },
      { SIMDE_FLOAT64_C(   709.73), SIMDE_FLOAT64_C(  -485.43) },
      { SIMDE_FLOAT64_C(   859.77), SIMDE_FLOAT64_C(  -908.87) },
      { SIMDE_FLOAT64_C(   467.51), SIMDE_FLOAT64_C(   159.39) },
      {
      SIMDE_FLOAT64_C(  -818.28),
      SIMDE_FLOAT64_C(   709.73),
      SIMDE_FLOAT64_C(   859.77),
      SIMDE_FLOAT64_C(   467.51),
      SIMDE_FLOAT64_C(   -30.31),
      SIMDE_FLOAT64_C(  -485.43),
      SIMDE_FLOAT64_C(  -908.87),
      SIMDE_FLOAT64_C(   159.39),
      }
    },
    { { SIMDE_FLOAT64_C(  -267.86), SIMDE_FLOAT64_C(  -945.08) },
      { SIMDE_FLOAT64_C(   703.56), SIMDE_FLOAT64_C(  -499.98) },
      { SIMDE_FLOAT64_C(   229.30), SIMDE_FLOAT64_C(  -572.30) },
      { SIMDE_FLOAT64_C(   838.48), SIMDE_FLOAT64_C(  -276.60) },
      {
      SIMDE_FLOAT64_C(  -267.86),
      SIMDE_FLOAT64_C(   703.56),
      SIMDE_FLOAT64_C(   229.30),
      SIMDE_FLOAT64_C(   838.48),
      SIMDE_FLOAT64_C(  -945.08),
      SIMDE_FLOAT64_C(  -499.98),
      SIMDE_FLOAT64_C(  -572.30),
      SIMDE_FLOAT64_C(  -276.60),
      }
    },
    { { SIMDE_FLOAT64_C(   417.49), SIMDE_FLOAT64_C(   -54.87) },
      { SIMDE_FLOAT64_C(    57.43), SIMDE_FLOAT64_C(   286.91) },
      { SIMDE_FLOAT64_C(  -186.44), SIMDE_FLOAT64_C(   308.53) },
      { SIMDE_FLOAT64_C(   898.55), SIMDE_FLOAT64_C(  -632.39) },
      {
      SIMDE_FLOAT64_C(   417.49),
      SIMDE_FLOAT64_C(    57.43),
      SIMDE_FLOAT64_C(  -186.44),
      SIMDE_FLOAT64_C(   898.55),
      SIMDE_FLOAT64_C(   -54.87),
      SIMDE_FLOAT64_C(   286.91),
      SIMDE_FLOAT64_C(   308.53),
      SIMDE_FLOAT64_C(  -632.39),
      }
    },
    { { SIMDE_FLOAT64_C(   104.89), SIMDE_FLOAT64_C(  -475.34) },
      { SIMDE_FLOAT64_C(   -11.27), SIMDE_FLOAT64_C(   402.75) },
      { SIMDE_FLOAT64_C(  -840.97), SIMDE_FLOAT64_C(  -286.94) },
      { SIMDE_FLOAT64_C(  -305.37), SIMDE_FLOAT64_C(  -659.25) },
      {
      SIMDE_FLOAT64_C(   104.89),
      SIMDE_FLOAT64_C(   -11.27),
      SIMDE_FLOAT64_C(  -840.97),
      SIMDE_FLOAT64_C(  -305.37),
      SIMDE_FLOAT64_C(  -475.34),
      SIMDE_FLOAT64_C(   402.75),
      SIMDE_FLOAT64_C(  -286.94),
      SIMDE_FLOAT64_C(  -659.25),
      }
    },
    { { SIMDE_FLOAT64_C(   682.75), SIMDE_FLOAT64_C(  -595.64) },
      { SIMDE_FLOAT64_C(  -144.67), SIMDE_FLOAT64_C(   542.52) },
      { SIMDE_FLOAT64_C(  -504.51), SIMDE_FLOAT64_C(  -677.16) },
      { SIMDE_FLOAT64_C(  -298.09), SIMDE_FLOAT64_C(   227.63) },
      {
      SIMDE_FLOAT64_C(   682.75),
      SIMDE_FLOAT64_C(  -144.67),
      SIMDE_FLOAT64_C(  -504.51),
      SIMDE_FLOAT64_C(  -298.09),
      SIMDE_FLOAT64_C(  -595.64),
      SIMDE_FLOAT64_C(   542.52),
      SIMDE_FLOAT64_C(  -677.16),
      SIMDE_FLOAT64_C(   227.63),
      }
    },
    { { SIMDE_FLOAT64_C(  -622.24), SIMDE_FLOAT64_C(  -594.53) },
      { SIMDE_FLOAT64_C(   727.66), SIMDE_FLOAT64_C(   607.06) },
      { SIMDE_FLOAT64_C(  -166.83), SIMDE_FLOAT64_C(   566.14) },
      { SIMDE_FLOAT64_C(  -669.54), SIMDE_FLOAT64_C(  -749.34) },
      {
      SIMDE_FLOAT64_C(  -622.24),
      SIMDE_FLOAT64_C(   727.66),
      SIMDE_FLOAT64_C(  -166.83),
      SIMDE_FLOAT64_C(  -669.54),
      SIMDE_FLOAT64_C(  -594.53),
      SIMDE_FLOAT64_C(   607.06),
      SIMDE_FLOAT64_C(   566.14),
      SIMDE_FLOAT64_C(  -749.34),
      }
    },
    { { SIMDE_FLOAT64_C(  -488.73), SIMDE_FLOAT64_C(   387.89) },
      { SIMDE_FLOAT64_C(   537.58), SIMDE_FLOAT64_C(   324.83) },
      { SIMDE_FLOAT64_C(  -303.58), SIMDE_FLOAT64_C(   436.13) },
      { SIMDE_FLOAT64_C(   692.45), SIMDE_FLOAT64_C(   801.32) },
      {
      SIMDE_FLOAT64_C(  -488.73),
      SIMDE_FLOAT64_C(   537.58),
      SIMDE_FLOAT64_C(  -303.58),
      SIMDE_FLOAT64_C(   692.45),
      SIMDE_FLOAT64_C(   387.89),
      SIMDE_FLOAT64_C(   324.83),
      SIMDE_FLOAT64_C(   436.13),
      SIMDE_FLOAT64_C(   801.32),
      }
    },
    { { SIMDE_FLOAT64_C(   960.79), SIMDE_FLOAT64_C(  -318.82) },
      { SIMDE_FLOAT64_C(   204.07), SIMDE_FLOAT64_C(  -880.18) },
      { SIMDE_FLOAT64_C(   394.24), SIMDE_FLOAT64_C(   898.70) },
      { SIMDE_FLOAT64_C(  -539.42), SIMDE_FLOAT64_C(    76.99) },
      {
      SIMDE_FLOAT64_C(   960.79),
      SIMDE_FLOAT64_C(   204.07),
      SIMDE_FLOAT64_C(   394.24),
      SIMDE_FLOAT64_C(  -539.42),
      SIMDE_FLOAT64_C(  -318.82),
      SIMDE_FLOAT64_C(  -880.18),
      SIMDE_FLOAT64_C(   898.70),
      SIMDE_FLOAT64_C(    76.99),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_float64x2x4_t r_ = { { simde_vld1q_f64(test_vec[i].r0),
                                 simde_vld1q_f64(test_vec[i].r1),
                                 simde_vld1q_f64(test_vec[i].r2),
                                 simde_vld1q_f64(test_vec[i].r3), } };

    simde_float64_t a_[8];
    simde_vst4q_f64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_f64(a_);
    simde_test_arm_neon_assert_equal_f64x2(r_.val[0], simde_vld1q_f64(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_f64x2(r_.val[1], simde_vld1q_f64(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_f64x2(r_.val[2], simde_vld1q_f64(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_f64x2(r_.val[3], simde_vld1q_f64(test_vec[i].r3), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float64x2_t a0 = simde_test_arm_neon_random_f64x2(-1000.0f, 1000.0f);
    simde_float64x2_t a1 = simde_test_arm_neon_random_f64x2(-1000.0f, 1000.0f);
    simde_float64x2_t a2 = simde_test_arm_neon_random_f64x2(-1000.0f, 1000.0f);
    simde_float64x2_t a3 = simde_test_arm_neon_random_f64x2(-1000.0f, 1000.0f);
    simde_float64x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_f64x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f64x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f64x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_float64_t buf[8];
    simde_vst4q_f64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_f64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

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

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int8x16x4_t r_ = { { simde_vld1q_s8(test_vec[i].r0),
                               simde_vld1q_s8(test_vec[i].r1),
                               simde_vld1q_s8(test_vec[i].r2),
                               simde_vld1q_s8(test_vec[i].r3), } };

    int8_t a_[64];
    simde_vst4q_s8(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_s8(a_);
    simde_test_arm_neon_assert_equal_i8x16(r_.val[0], simde_vld1q_s8(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i8x16(r_.val[1], simde_vld1q_s8(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i8x16(r_.val[2], simde_vld1q_s8(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int8x16_t a0 = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t a1 = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t a2 = simde_test_arm_neon_random_i8x16();
    simde_int8x16_t a3 = simde_test_arm_neon_random_i8x16();
    simde_int8x16x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i8x16(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i8x16(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i8x16(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int8_t buf[64];
    simde_vst4q_s8(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i8(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t r0[8];
    int16_t r1[8];
    int16_t r2[8];
    int16_t r3[8];
    int16_t a[32];
  } test_vec[] = {
    { { -INT16_C(  5888),  INT16_C(   846),  INT16_C( 30499), -INT16_C( 13089),  INT16_C( 15915),  INT16_C( 21143),  INT16_C( 25352), -INT16_C( 16725) },
      { -INT16_C( 30030), -INT16_C( 28847), -INT16_C( 11856), -INT16_C( 11620),  INT16_C( 12783),  INT16_C( 25877),  INT16_C(  2830),  INT16_C(  3662) },
      { -INT16_C( 25356),  INT16_C(  6161), -INT16_C(  4077),  INT16_C( 16100),  INT16_C( 31791),  INT16_C( 14225),  INT16_C( 15583), -INT16_C( 28171) },
      {  INT16_C( 18119),  INT16_C( 30496), -INT16_C( 17385),  INT16_C(  1609),  INT16_C( 24301), -INT16_C(  1172), -INT16_C( 17814),  INT16_C( 24074) },
      {
      -INT16_C(  5888),
      -INT16_C( 30030),
      -INT16_C( 25356),
       INT16_C( 18119),
       INT16_C(   846),
      -INT16_C( 28847),
       INT16_C(  6161),
       INT16_C( 30496),
       INT16_C( 30499),
      -INT16_C( 11856),
      -INT16_C(  4077),
      -INT16_C( 17385),
      -INT16_C( 13089),
      -INT16_C( 11620),
       INT16_C( 16100),
       INT16_C(  1609),
       INT16_C( 15915),
       INT16_C( 12783),
       INT16_C( 31791),
       INT16_C( 24301),
       INT16_C( 21143),
       INT16_C( 25877),
       INT16_C( 14225),
      -INT16_C(  1172),
       INT16_C( 25352),
       INT16_C(  2830),
       INT16_C( 15583),
      -INT16_C( 17814),
      -INT16_C( 16725),
       INT16_C(  3662),
      -INT16_C( 28171),
       INT16_C( 24074),
      }
    },
    { {  INT16_C(  6999),  INT16_C( 27254),  INT16_C( 23308),  INT16_C( 15273),  INT16_C( 15063), -INT16_C( 18830),  INT16_C( 26486),  INT16_C( 15687) },
      {  INT16_C( 26542), -INT16_C( 14924), -INT16_C(   733),  INT16_C(  4300),  INT16_C( 14428), -INT16_C( 14836),  INT16_C(  5874),  INT16_C( 18724) },
      { -INT16_C( 25807),  INT16_C( 15796),  INT16_C( 24054), -INT16_C( 12936), -INT16_C(  5481),  INT16_C(  3459), -INT16_C( 13742),  INT16_C(    75) },
      { -INT16_C(   207),  INT16_C( 21701), -INT16_C( 28163),  INT16_C( 22884),  INT16_C( 28873), -INT16_C( 17377),  INT16_C( 17286), -INT16_C( 18427) },
      {
       INT16_C(  6999),
       INT16_C( 26542),
      -INT16_C( 25807),
      -INT16_C(   207),
       INT16_C( 27254),
      -INT16_C( 14924),
       INT16_C( 15796),
       INT16_C( 21701),
       INT16_C( 23308),
      -INT16_C(   733),
       INT16_C( 24054),
      -INT16_C( 28163),
       INT16_C( 15273),
       INT16_C(  4300),
      -INT16_C( 12936),
       INT16_C( 22884),
       INT16_C( 15063),
       INT16_C( 14428),
      -INT16_C(  5481),
       INT16_C( 28873),
      -INT16_C( 18830),
      -INT16_C( 14836),
       INT16_C(  3459),
      -INT16_C( 17377),
       INT16_C( 26486),
       INT16_C(  5874),
      -INT16_C( 13742),
       INT16_C( 17286),
       INT16_C( 15687),
       INT16_C( 18724),
       INT16_C(    75),
      -INT16_C( 18427),
      }
    },
    { { -INT16_C( 17954), -INT16_C( 11019),  INT16_C( 28182), -INT16_C( 21087),  INT16_C(  9304), -INT16_C( 21829),  INT16_C(  1774),  INT16_C(  8106) },
      {  INT16_C( 28677),  INT16_C(   627), -INT16_C( 10239), -INT16_C( 13477),  INT16_C( 31304), -INT16_C( 12409), -INT16_C( 29506), -INT16_C( 25465) },
      {  INT16_C( 31814),  INT16_C( 23665),  INT16_C(  4842),  INT16_C( 17162), -INT16_C( 15049),  INT16_C(  9709), -INT16_C( 26421), -INT16_C( 12219) },
      { -INT16_C( 18424),  INT16_C(  2515),  INT16_C( 11920), -INT16_C(  9772),  INT16_C( 23465),  INT16_C( 26536),  INT16_C( 12264),  INT16_C( 11779) },
      {
      -INT16_C( 17954),
       INT16_C( 28677),
       INT16_C( 31814),
      -INT16_C( 18424),
      -INT16_C( 11019),
       INT16_C(   627),
       INT16_C( 23665),
       INT16_C(  2515),
       INT16_C( 28182),
      -INT16_C( 10239),
       INT16_C(  4842),
       INT16_C( 11920),
      -INT16_C( 21087),
      -INT16_C( 13477),
       INT16_C( 17162),
      -INT16_C(  9772),
       INT16_C(  9304),
       INT16_C( 31304),
      -INT16_C( 15049),
       INT16_C( 23465),
      -INT16_C( 21829),
      -INT16_C( 12409),
       INT16_C(  9709),
       INT16_C( 26536),
       INT16_C(  1774),
      -INT16_C( 29506),
      -INT16_C( 26421),
       INT16_C( 12264),
       INT16_C(  8106),
      -INT16_C( 25465),
      -INT16_C( 12219),
       INT16_C( 11779),
      }
    },
    { {  INT16_C( 29867), -INT16_C( 26998), -INT16_C( 27513), -INT16_C( 16679), -INT16_C( 14759),  INT16_C(  9443),  INT16_C( 10334),  INT16_C( 26357) },
      { -INT16_C( 14111),  INT16_C( 29040),  INT16_C( 17654), -INT16_C( 24758), -INT16_C(  3424), -INT16_C( 30714),  INT16_C(  2593), -INT16_C( 12874) },
      {  INT16_C( 16510),  INT16_C(  1379),  INT16_C( 15573),  INT16_C( 11971), -INT16_C( 22782),  INT16_C( 24915),  INT16_C( 18639), -INT16_C( 20281) },
      {  INT16_C( 14096),  INT16_C(  1570),  INT16_C( 27772),  INT16_C(  7334), -INT16_C( 21409), -INT16_C( 32604),  INT16_C( 23222),  INT16_C( 13645) },
      {
       INT16_C( 29867),
      -INT16_C( 14111),
       INT16_C( 16510),
       INT16_C( 14096),
      -INT16_C( 26998),
       INT16_C( 29040),
       INT16_C(  1379),
       INT16_C(  1570),
      -INT16_C( 27513),
       INT16_C( 17654),
       INT16_C( 15573),
       INT16_C( 27772),
      -INT16_C( 16679),
      -INT16_C( 24758),
       INT16_C( 11971),
       INT16_C(  7334),
      -INT16_C( 14759),
      -INT16_C(  3424),
      -INT16_C( 22782),
      -INT16_C( 21409),
       INT16_C(  9443),
      -INT16_C( 30714),
       INT16_C( 24915),
      -INT16_C( 32604),
       INT16_C( 10334),
       INT16_C(  2593),
       INT16_C( 18639),
       INT16_C( 23222),
       INT16_C( 26357),
      -INT16_C( 12874),
      -INT16_C( 20281),
       INT16_C( 13645),
      }
    },
    { { -INT16_C( 20326),  INT16_C( 28474), -INT16_C(   276), -INT16_C(  4194), -INT16_C(  3675),  INT16_C( 29776),  INT16_C(  5945),  INT16_C( 18725) },
      {  INT16_C( 18255), -INT16_C( 13489), -INT16_C(  2637),  INT16_C(  4839), -INT16_C( 29790),  INT16_C( 22675), -INT16_C(  7963),  INT16_C( 32653) },
      { -INT16_C( 14191),  INT16_C( 32239), -INT16_C( 29242),  INT16_C( 27500), -INT16_C( 17282), -INT16_C( 18465),  INT16_C(  1236),  INT16_C(  8960) },
      {  INT16_C( 20299), -INT16_C(    18), -INT16_C( 10939), -INT16_C(  6383), -INT16_C( 23456),  INT16_C( 17727), -INT16_C( 12923),  INT16_C(  5828) },
      {
      -INT16_C( 20326),
       INT16_C( 18255),
      -INT16_C( 14191),
       INT16_C( 20299),
       INT16_C( 28474),
      -INT16_C( 13489),
       INT16_C( 32239),
      -INT16_C(    18),
      -INT16_C(   276),
      -INT16_C(  2637),
      -INT16_C( 29242),
      -INT16_C( 10939),
      -INT16_C(  4194),
       INT16_C(  4839),
       INT16_C( 27500),
      -INT16_C(  6383),
      -INT16_C(  3675),
      -INT16_C( 29790),
      -INT16_C( 17282),
      -INT16_C( 23456),
       INT16_C( 29776),
       INT16_C( 22675),
      -INT16_C( 18465),
       INT16_C( 17727),
       INT16_C(  5945),
      -INT16_C(  7963),
       INT16_C(  1236),
      -INT16_C( 12923),
       INT16_C( 18725),
       INT16_C( 32653),
       INT16_C(  8960),
       INT16_C(  5828),
      }
    },
    { { -INT16_C( 19563),  INT16_C( 23443),  INT16_C(    64), -INT16_C( 16698), -INT16_C( 23108), -INT16_C( 28555),  INT16_C( 30122), -INT16_C(  2637) },
      { -INT16_C( 24123),  INT16_C(  2804),  INT16_C(  1654), -INT16_C( 10511),  INT16_C( 12458),  INT16_C( 12059), -INT16_C(  7939), -INT16_C( 28091) },
      { -INT16_C(  9837), -INT16_C( 11027), -INT16_C( 19495), -INT16_C( 27246),  INT16_C(  2137),  INT16_C(   806), -INT16_C(  9859),  INT16_C( 17144) },
      { -INT16_C(  4741), -INT16_C(  3764),  INT16_C( 15859), -INT16_C( 25144), -INT16_C(  7314),  INT16_C( 27597),  INT16_C(  4803),  INT16_C( 22526) },
      {
      -INT16_C( 19563),
      -INT16_C( 24123),
      -INT16_C(  9837),
      -INT16_C(  4741),
       INT16_C( 23443),
       INT16_C(  2804),
      -INT16_C( 11027),
      -INT16_C(  3764),
       INT16_C(    64),
       INT16_C(  1654),
      -INT16_C( 19495),
       INT16_C( 15859),
      -INT16_C( 16698),
      -INT16_C( 10511),
      -INT16_C( 27246),
      -INT16_C( 25144),
      -INT16_C( 23108),
       INT16_C( 12458),
       INT16_C(  2137),
      -INT16_C(  7314),
      -INT16_C( 28555),
       INT16_C( 12059),
       INT16_C(   806),
       INT16_C( 27597),
       INT16_C( 30122),
      -INT16_C(  7939),
      -INT16_C(  9859),
       INT16_C(  4803),
      -INT16_C(  2637),
      -INT16_C( 28091),
       INT16_C( 17144),
       INT16_C( 22526),
      }
    },
    { { -INT16_C(  5141), -INT16_C( 15317), -INT16_C( 16993), -INT16_C(  1958), -INT16_C( 32571),  INT16_C( 17403), -INT16_C(  3239), -INT16_C( 11131) },
      { -INT16_C( 11552), -INT16_C( 11322), -INT16_C( 29169),  INT16_C( 32113),  INT16_C( 15985),  INT16_C( 13801), -INT16_C(  6320),  INT16_C( 15500) },
      { -INT16_C( 18478),  INT16_C( 28928),  INT16_C( 23156),  INT16_C( 14953),  INT16_C( 25818),  INT16_C( 13437),  INT16_C(   600),  INT16_C( 14344) },
      { -INT16_C( 12588), -INT16_C(  7156),  INT16_C( 32092), -INT16_C( 12703),  INT16_C( 19131),  INT16_C(  2819), -INT16_C( 28879),  INT16_C(  1095) },
      {
      -INT16_C(  5141),
      -INT16_C( 11552),
      -INT16_C( 18478),
      -INT16_C( 12588),
      -INT16_C( 15317),
      -INT16_C( 11322),
       INT16_C( 28928),
      -INT16_C(  7156),
      -INT16_C( 16993),
      -INT16_C( 29169),
       INT16_C( 23156),
       INT16_C( 32092),
      -INT16_C(  1958),
       INT16_C( 32113),
       INT16_C( 14953),
      -INT16_C( 12703),
      -INT16_C( 32571),
       INT16_C( 15985),
       INT16_C( 25818),
       INT16_C( 19131),
       INT16_C( 17403),
       INT16_C( 13801),
       INT16_C( 13437),
       INT16_C(  2819),
      -INT16_C(  3239),
      -INT16_C(  6320),
       INT16_C(   600),
      -INT16_C( 28879),
      -INT16_C( 11131),
       INT16_C( 15500),
       INT16_C( 14344),
       INT16_C(  1095),
      }
    },
    { {  INT16_C( 18502), -INT16_C( 17803), -INT16_C(  8286),  INT16_C( 32244),  INT16_C( 28995), -INT16_C( 25679), -INT16_C( 18060),  INT16_C( 18644) },
      { -INT16_C(  8056), -INT16_C(  7124), -INT16_C( 29091),  INT16_C(  6322), -INT16_C( 18984),  INT16_C(  2595),  INT16_C( 27460), -INT16_C( 30194) },
      { -INT16_C( 31821),  INT16_C( 21829),  INT16_C( 14690), -INT16_C( 22830), -INT16_C( 31829),  INT16_C(  8001),  INT16_C(  5437), -INT16_C( 15001) },
      { -INT16_C( 27403),  INT16_C( 21161),  INT16_C( 23586), -INT16_C(  1430), -INT16_C( 29167),  INT16_C( 22020),  INT16_C(  4857), -INT16_C( 21280) },
      {
       INT16_C( 18502),
      -INT16_C(  8056),
      -INT16_C( 31821),
      -INT16_C( 27403),
      -INT16_C( 17803),
      -INT16_C(  7124),
       INT16_C( 21829),
       INT16_C( 21161),
      -INT16_C(  8286),
      -INT16_C( 29091),
       INT16_C( 14690),
       INT16_C( 23586),
       INT16_C( 32244),
       INT16_C(  6322),
      -INT16_C( 22830),
      -INT16_C(  1430),
       INT16_C( 28995),
      -INT16_C( 18984),
      -INT16_C( 31829),
      -INT16_C( 29167),
      -INT16_C( 25679),
       INT16_C(  2595),
       INT16_C(  8001),
       INT16_C( 22020),
      -INT16_C( 18060),
       INT16_C( 27460),
       INT16_C(  5437),
       INT16_C(  4857),
       INT16_C( 18644),
      -INT16_C( 30194),
      -INT16_C( 15001),
      -INT16_C( 21280),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int16x8x4_t r_ = { { simde_vld1q_s16(test_vec[i].r0),
                               simde_vld1q_s16(test_vec[i].r1),
                               simde_vld1q_s16(test_vec[i].r2),
                               simde_vld1q_s16(test_vec[i].r3), } };

    int16_t a_[32];
    simde_vst4q_s16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_s16(a_);
    simde_test_arm_neon_assert_equal_i16x8(r_.val[0], simde_vld1q_s16(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i16x8(r_.val[1], simde_vld1q_s16(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i16x8(r_.val[2], simde_vld1q_s16(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int16x8_t a0 = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t a1 = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t a2 = simde_test_arm_neon_random_i16x8();
    simde_int16x8_t a3 = simde_test_arm_neon_random_i16x8();
    simde_int16x8x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i16x8(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i16x8(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i16x8(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int16_t buf[32];
    simde_vst4q_s16(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i16(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t r0[4];
    int32_t r1[4];
    int32_t r2[4];
    int32_t r3[4];
    int32_t a[16];
  } test_vec[] = {
    { {  INT32_C(   828023628), -INT32_C(   521468002),  INT32_C(   799178535),  INT32_C(   116664159) },
      { -INT32_C(  1033881595),  INT32_C(   549532486), -INT32_C(  1241418747), -INT32_C(  1122383247) },
      {  INT32_C(   200242029), -INT32_C(  1561535877), -INT32_C(  1177448871), -INT32_C(  1161837131) },
      {  INT32_C(  1132273661),  INT32_C(  1482899027),  INT32_C(   588145842), -INT32_C(  1662965969) },
      {
       INT32_C(   828023628),
      -INT32_C(  1033881595),
       INT32_C(   200242029),
       INT32_C(  1132273661),
      -INT32_C(   521468002),
       INT32_C(   549532486),
      -INT32_C(  1561535877),
       INT32_C(  1482899027),
       INT32_C(   799178535),
      -INT32_C(  1241418747),
      -INT32_C(  1177448871),
       INT32_C(   588145842),
       INT32_C(   116664159),
      -INT32_C(  1122383247),
      -INT32_C(  1161837131),
      -INT32_C(  1662965969),
      }
    },
    { {  INT32_C(   380162203),  INT32_C(    62428330), -INT32_C(   675509982),  INT32_C(  1284602702) },
      { -INT32_C(   292614501), -INT32_C(    12127411), -INT32_C(  2044504745),  INT32_C(   388170876) },
      {  INT32_C(  2116930516), -INT32_C(  2122193569), -INT32_C(  1118290322),  INT32_C(  1409935801) },
      {  INT32_C(  1161992440), -INT32_C(   482047605),  INT32_C(  1516857310),  INT32_C(  1064471659) },
      {
       INT32_C(   380162203),
      -INT32_C(   292614501),
       INT32_C(  2116930516),
       INT32_C(  1161992440),
       INT32_C(    62428330),
      -INT32_C(    12127411),
      -INT32_C(  2122193569),
      -INT32_C(   482047605),
      -INT32_C(   675509982),
      -INT32_C(  2044504745),
      -INT32_C(  1118290322),
       INT32_C(  1516857310),
       INT32_C(  1284602702),
       INT32_C(   388170876),
       INT32_C(  1409935801),
       INT32_C(  1064471659),
      }
    },
    { { -INT32_C(  1229086889), -INT32_C(   214483067),  INT32_C(   917540733),  INT32_C(  1904982393) },
      { -INT32_C(   575222446),  INT32_C(   885062230), -INT32_C(   846255518),  INT32_C(   235733430) },
      {  INT32_C(   633653920), -INT32_C(  2045117431),  INT32_C(    79546763), -INT32_C(   713734013) },
      {  INT32_C(  1823615765), -INT32_C(  2002750682),  INT32_C(  1398091677), -INT32_C(   782147024) },
      {
      -INT32_C(  1229086889),
      -INT32_C(   575222446),
       INT32_C(   633653920),
       INT32_C(  1823615765),
      -INT32_C(   214483067),
       INT32_C(   885062230),
      -INT32_C(  2045117431),
      -INT32_C(  2002750682),
       INT32_C(   917540733),
      -INT32_C(   846255518),
       INT32_C(    79546763),
       INT32_C(  1398091677),
       INT32_C(  1904982393),
       INT32_C(   235733430),
      -INT32_C(   713734013),
      -INT32_C(   782147024),
      }
    },
    { {  INT32_C(   922101293), -INT32_C(  1380118750),  INT32_C(  1555200729), -INT32_C(   684644414) },
      {  INT32_C(  2034492243), -INT32_C(   217979818),  INT32_C(  1145525779), -INT32_C(   434788167) },
      { -INT32_C(   266597426), -INT32_C(   190916325),  INT32_C(   357584979), -INT32_C(   890404489) },
      { -INT32_C(  1153224604),  INT32_C(   682509332),  INT32_C(  1416426907),  INT32_C(  1815773598) },
      {
       INT32_C(   922101293),
       INT32_C(  2034492243),
      -INT32_C(   266597426),
      -INT32_C(  1153224604),
      -INT32_C(  1380118750),
      -INT32_C(   217979818),
      -INT32_C(   190916325),
       INT32_C(   682509332),
       INT32_C(  1555200729),
       INT32_C(  1145525779),
       INT32_C(   357584979),
       INT32_C(  1416426907),
      -INT32_C(   684644414),
      -INT32_C(   434788167),
      -INT32_C(   890404489),
       INT32_C(  1815773598),
      }
    },
    { { -INT32_C(  1487055220), -INT32_C(  2086929616), -INT32_C(  1030100149), -INT32_C(   779254164) },
      { -INT32_C(   879963978), -INT32_C(  1326237163), -INT32_C(   838574288),  INT32_C(  1815756512) },
      { -INT32_C(  1005283436), -INT32_C(   582439022),  INT32_C(   127984027),  INT32_C(   500706663) },
      {  INT32_C(   317220093), -INT32_C(   809313377),  INT32_C(   446547514), -INT32_C(  1719150844) },
      {
      -INT32_C(  1487055220),
      -INT32_C(   879963978),
      -INT32_C(  1005283436),
       INT32_C(   317220093),
      -INT32_C(  2086929616),
      -INT32_C(  1326237163),
      -INT32_C(   582439022),
      -INT32_C(   809313377),
      -INT32_C(  1030100149),
      -INT32_C(   838574288),
       INT32_C(   127984027),
       INT32_C(   446547514),
      -INT32_C(   779254164),
       INT32_C(  1815756512),
       INT32_C(   500706663),
      -INT32_C(  1719150844),
      }
    },
    { {  INT32_C(    22911855), -INT32_C(   438327990), -INT32_C(   303202426), -INT32_C(  1458846292) },
      { -INT32_C(   910363862),  INT32_C(   160988879),  INT32_C(  1227109701),  INT32_C(  2078452492) },
      { -INT32_C(  1870839738),  INT32_C(  1819696357), -INT32_C(  2024184869),  INT32_C(  1378903080) },
      {  INT32_C(   656141400), -INT32_C(  1338985621), -INT32_C(   168209176),  INT32_C(  1165024511) },
      {
       INT32_C(    22911855),
      -INT32_C(   910363862),
      -INT32_C(  1870839738),
       INT32_C(   656141400),
      -INT32_C(   438327990),
       INT32_C(   160988879),
       INT32_C(  1819696357),
      -INT32_C(  1338985621),
      -INT32_C(   303202426),
       INT32_C(  1227109701),
      -INT32_C(  2024184869),
      -INT32_C(   168209176),
      -INT32_C(  1458846292),
       INT32_C(  2078452492),
       INT32_C(  1378903080),
       INT32_C(  1165024511),
      }
    },
    { {  INT32_C(    30862620),  INT32_C(   611142729), -INT32_C(   676608081), -INT32_C(  2094343125) },
      {  INT32_C(   866797000), -INT32_C(   505160711),  INT32_C(   802610479), -INT32_C(   713799751) },
      {  INT32_C(  2127972916),  INT32_C(  1168262294),  INT32_C(   907890187), -INT32_C(   222673110) },
      { -INT32_C(  2061081460),  INT32_C(  1869023551), -INT32_C(  1617019418), -INT32_C(  1183575420) },
      {
       INT32_C(    30862620),
       INT32_C(   866797000),
       INT32_C(  2127972916),
      -INT32_C(  2061081460),
       INT32_C(   611142729),
      -INT32_C(   505160711),
       INT32_C(  1168262294),
       INT32_C(  1869023551),
      -INT32_C(   676608081),
       INT32_C(   802610479),
       INT32_C(   907890187),
      -INT32_C(  1617019418),
      -INT32_C(  2094343125),
      -INT32_C(   713799751),
      -INT32_C(   222673110),
      -INT32_C(  1183575420),
      }
    },
    { { -INT32_C(   214480035), -INT32_C(  1707484785),  INT32_C(  1372608039),  INT32_C(   692357789) },
      {  INT32_C(   783248111),  INT32_C(  1520244339), -INT32_C(   654754989), -INT32_C(  1416532402) },
      {  INT32_C(  1218365625), -INT32_C(   907880543), -INT32_C(   904220115),  INT32_C(   754212413) },
      {  INT32_C(  1012573128),  INT32_C(   211220665), -INT32_C(  2115727565), -INT32_C(  1238600195) },
      {
      -INT32_C(   214480035),
       INT32_C(   783248111),
       INT32_C(  1218365625),
       INT32_C(  1012573128),
      -INT32_C(  1707484785),
       INT32_C(  1520244339),
      -INT32_C(   907880543),
       INT32_C(   211220665),
       INT32_C(  1372608039),
      -INT32_C(   654754989),
      -INT32_C(   904220115),
      -INT32_C(  2115727565),
       INT32_C(   692357789),
      -INT32_C(  1416532402),
       INT32_C(   754212413),
      -INT32_C(  1238600195),
      }
    },

  };


  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int32x4x4_t r_ = { { simde_vld1q_s32(test_vec[i].r0),
                               simde_vld1q_s32(test_vec[i].r1),
                               simde_vld1q_s32(test_vec[i].r2),
                               simde_vld1q_s32(test_vec[i].r3), } };

    int32_t a_[16];
    simde_vst4q_s32(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_s32(a_);
    simde_test_arm_neon_assert_equal_i32x4(r_.val[0], simde_vld1q_s32(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i32x4(r_.val[1], simde_vld1q_s32(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i32x4(r_.val[2], simde_vld1q_s32(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int32x4_t a0 = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t a1 = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t a2 = simde_test_arm_neon_random_i32x4();
    simde_int32x4_t a3 = simde_test_arm_neon_random_i32x4();
    simde_int32x4x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i32x4(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i32x4(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i32x4(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int32_t buf[16];
    simde_vst4q_s32(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i32(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t r0[2];
    int64_t r1[2];
    int64_t r2[2];
    int64_t r3[2];
    int64_t a[8];
  } test_vec[] = {
    { { -INT64_C( 8541829943489260097),  INT64_C( 3564085409604377743) },
      {  INT64_C( 3948167333166941086), -INT64_C( 5324707249671790809) },
      { -INT64_C( 8979769786078813461), -INT64_C( 3779948158193827698) },
      { -INT64_C( 6995210109496671887),  INT64_C(  815857554770381220) },
      {
      -INT64_C( 8541829943489260097),
       INT64_C( 3948167333166941086),
      -INT64_C( 8979769786078813461),
      -INT64_C( 6995210109496671887),
       INT64_C( 3564085409604377743),
      -INT64_C( 5324707249671790809),
      -INT64_C( 3779948158193827698),
       INT64_C(  815857554770381220),
      }
    },
    { {  INT64_C( 5664476923655507492),  INT64_C( 8231509200709555012) },
      {  INT64_C( 2308117329321948915),  INT64_C( 1695339124149153885) },
      { -INT64_C( 1050521044186535332),  INT64_C( 4058480232873726687) },
      { -INT64_C( 1463481250095138283), -INT64_C( 3087517191304090597) },
      {
       INT64_C( 5664476923655507492),
       INT64_C( 2308117329321948915),
      -INT64_C( 1050521044186535332),
      -INT64_C( 1463481250095138283),
       INT64_C( 8231509200709555012),
       INT64_C( 1695339124149153885),
       INT64_C( 4058480232873726687),
      -INT64_C( 3087517191304090597),
      }
    },
    { {  INT64_C(  141965789005764185),  INT64_C( 1075292658120940399) },
      {  INT64_C( 6136523074534608559), -INT64_C( 2735222639929617989) },
      { -INT64_C( 3962084270849000225), -INT64_C( 4018221210646223564) },
      { -INT64_C( 1835727935554266121),  INT64_C( 5916083336943233472) },
      {
       INT64_C(  141965789005764185),
       INT64_C( 6136523074534608559),
      -INT64_C( 3962084270849000225),
      -INT64_C( 1835727935554266121),
       INT64_C( 1075292658120940399),
      -INT64_C( 2735222639929617989),
      -INT64_C( 4018221210646223564),
       INT64_C( 5916083336943233472),
      }
    },
    { {  INT64_C(  668036694159981346),  INT64_C( 2458530176053002812) },
      {  INT64_C( 1396636312019346511), -INT64_C( 4212995808429900605) },
      {  INT64_C( 8018806691179125865),  INT64_C( 4870049206829940552) },
      { -INT64_C( 8832369474108790521), -INT64_C( 7493351864596184933) },
      {
       INT64_C(  668036694159981346),
       INT64_C( 1396636312019346511),
       INT64_C( 8018806691179125865),
      -INT64_C( 8832369474108790521),
       INT64_C( 2458530176053002812),
      -INT64_C( 4212995808429900605),
       INT64_C( 4870049206829940552),
      -INT64_C( 7493351864596184933),
      }
    },
    { {  INT64_C( 1279900569163940640),  INT64_C( 8274267464691648670) },
      {  INT64_C( 5425493607493440003),  INT64_C( 7764358908210644730) },
      {  INT64_C( 6028774767652214735),  INT64_C( 5470106943301692939) },
      { -INT64_C( 1637237753729927861),  INT64_C( 3105463238554407010) },
      {
       INT64_C( 1279900569163940640),
       INT64_C( 5425493607493440003),
       INT64_C( 6028774767652214735),
      -INT64_C( 1637237753729927861),
       INT64_C( 8274267464691648670),
       INT64_C( 7764358908210644730),
       INT64_C( 5470106943301692939),
       INT64_C( 3105463238554407010),
      }
    },
    { {  INT64_C( 7237967780673476457),  INT64_C( 6643025027209582492) },
      { -INT64_C(   49082622515068551), -INT64_C( 6991904161123245200) },
      { -INT64_C( 4298353615892071781),  INT64_C( 8282921226878858373) },
      {  INT64_C( 6464403697443686937), -INT64_C( 4439955325513801073) },
      {
       INT64_C( 7237967780673476457),
      -INT64_C(   49082622515068551),
      -INT64_C( 4298353615892071781),
       INT64_C( 6464403697443686937),
       INT64_C( 6643025027209582492),
      -INT64_C( 6991904161123245200),
       INT64_C( 8282921226878858373),
      -INT64_C( 4439955325513801073),
      }
    },
    { { -INT64_C( 3259742678585762089),  INT64_C( 6750995090579680069) },
      {  INT64_C( 5037217593653758628),  INT64_C(    6310274718567724) },
      {  INT64_C( 2641856918791900554),  INT64_C( 1283264675808678446) },
      { -INT64_C( 2695256297990790244), -INT64_C( 7512774877096598893) },
      {
      -INT64_C( 3259742678585762089),
       INT64_C( 5037217593653758628),
       INT64_C( 2641856918791900554),
      -INT64_C( 2695256297990790244),
       INT64_C( 6750995090579680069),
       INT64_C(    6310274718567724),
       INT64_C( 1283264675808678446),
      -INT64_C( 7512774877096598893),
      }
    },
    { { -INT64_C( 5975405342833591023),  INT64_C( 2641343072094352682) },
      {  INT64_C( 6942879150843053778), -INT64_C( 2569624869237061711) },
      {  INT64_C(  560099869357491608), -INT64_C( 6485106687171763116) },
      {  INT64_C( 4087439451308324747),  INT64_C( 5309266436860401159) },
      {
      -INT64_C( 5975405342833591023),
       INT64_C( 6942879150843053778),
       INT64_C(  560099869357491608),
       INT64_C( 4087439451308324747),
       INT64_C( 2641343072094352682),
      -INT64_C( 2569624869237061711),
      -INT64_C( 6485106687171763116),
       INT64_C( 5309266436860401159),
      }
    },

  };


  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_int64x2x4_t r_ = { { simde_vld1q_s64(test_vec[i].r0),
                               simde_vld1q_s64(test_vec[i].r1),
                               simde_vld1q_s64(test_vec[i].r2),
                               simde_vld1q_s64(test_vec[i].r3), } };

    int64_t a_[8];
    simde_vst4q_s64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_s64(a_);
    simde_test_arm_neon_assert_equal_i64x2(r_.val[0], simde_vld1q_s64(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_i64x2(r_.val[1], simde_vld1q_s64(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_i64x2(r_.val[2], simde_vld1q_s64(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_int64x2_t a0 = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t a1 = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t a2 = simde_test_arm_neon_random_i64x2();
    simde_int64x2_t a3 = simde_test_arm_neon_random_i64x2();
    simde_int64x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_i64x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_i64x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_i64x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    int64_t buf[8];
    simde_vst4q_s64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_i64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t r0[16];
    uint8_t r1[16];
    uint8_t r2[16];
    uint8_t r3[16];
    uint8_t a[64];
  } test_vec[] = {
    { { UINT8_C( 22), UINT8_C(175), UINT8_C(135), UINT8_C( 79), UINT8_C(237), UINT8_C(179), UINT8_C( 98), UINT8_C(110),
        UINT8_C( 15), UINT8_C( 62), UINT8_C(209), UINT8_C(178), UINT8_C(179), UINT8_C(169), UINT8_C( 95), UINT8_C( 83) },
      { UINT8_C( 45), UINT8_C(101), UINT8_C(113), UINT8_C(245), UINT8_C( 76), UINT8_C(222), UINT8_C(163), UINT8_C(217),
        UINT8_C(132), UINT8_C(175), UINT8_C(183), UINT8_C(169), UINT8_C(170), UINT8_C(171), UINT8_C(187), UINT8_C(192) },
      { UINT8_C( 90), UINT8_C( 66), UINT8_C( 16), UINT8_C( 71), UINT8_C(246), UINT8_C(114), UINT8_C(182), UINT8_C(  5),
        UINT8_C(176), UINT8_C(135), UINT8_C(183), UINT8_C( 99), UINT8_C( 48), UINT8_C( 22), UINT8_C(183), UINT8_C( 94) },
      { UINT8_C(124), UINT8_C( 40), UINT8_C( 83), UINT8_C(200), UINT8_C(  6), UINT8_C(246), UINT8_C(162), UINT8_C(139),
        UINT8_C(165), UINT8_C( 89), UINT8_C( 52), UINT8_C( 80), UINT8_C(  4), UINT8_C(240), UINT8_C( 16), UINT8_C( 95) },
      {
      UINT8_C( 22),
      UINT8_C( 45),
      UINT8_C( 90),
      UINT8_C(124),
      UINT8_C(175),
      UINT8_C(101),
      UINT8_C( 66),
      UINT8_C( 40),
      UINT8_C(135),
      UINT8_C(113),
      UINT8_C( 16),
      UINT8_C( 83),
      UINT8_C( 79),
      UINT8_C(245),
      UINT8_C( 71),
      UINT8_C(200),
      UINT8_C(237),
      UINT8_C( 76),
      UINT8_C(246),
      UINT8_C(  6),
      UINT8_C(179),
      UINT8_C(222),
      UINT8_C(114),
      UINT8_C(246),
      UINT8_C( 98),
      UINT8_C(163),
      UINT8_C(182),
      UINT8_C(162),
      UINT8_C(110),
      UINT8_C(217),
      UINT8_C(  5),
      UINT8_C(139),
      UINT8_C( 15),
      UINT8_C(132),
      UINT8_C(176),
      UINT8_C(165),
      UINT8_C( 62),
      UINT8_C(175),
      UINT8_C(135),
      UINT8_C( 89),
      UINT8_C(209),
      UINT8_C(183),
      UINT8_C(183),
      UINT8_C( 52),
      UINT8_C(178),
      UINT8_C(169),
      UINT8_C( 99),
      UINT8_C( 80),
      UINT8_C(179),
      UINT8_C(170),
      UINT8_C( 48),
      UINT8_C(  4),
      UINT8_C(169),
      UINT8_C(171),
      UINT8_C( 22),
      UINT8_C(240),
      UINT8_C( 95),
      UINT8_C(187),
      UINT8_C(183),
      UINT8_C( 16),
      UINT8_C( 83),
      UINT8_C(192),
      UINT8_C( 94),
      UINT8_C( 95),
      }
    },
    { { UINT8_C( 50), UINT8_C( 32), UINT8_C(166), UINT8_C( 40), UINT8_C(147), UINT8_C( 92), UINT8_C( 45), UINT8_C( 67),
        UINT8_C(227), UINT8_C(229), UINT8_C(167), UINT8_C( 20), UINT8_C(251), UINT8_C( 94), UINT8_C(114), UINT8_C(119) },
      { UINT8_C(134), UINT8_C(197), UINT8_C( 64), UINT8_C(141), UINT8_C(188), UINT8_C(226), UINT8_C( 24), UINT8_C( 97),
        UINT8_C( 59), UINT8_C( 76), UINT8_C(177), UINT8_C( 64), UINT8_C( 60), UINT8_C(194), UINT8_C(159), UINT8_C(111) },
      { UINT8_C(226), UINT8_C( 69), UINT8_C(151), UINT8_C(117), UINT8_C(162), UINT8_C(197), UINT8_C(185), UINT8_C(133),
        UINT8_C(170), UINT8_C( 96), UINT8_C(153), UINT8_C(165), UINT8_C(190), UINT8_C( 11), UINT8_C( 29), UINT8_C( 68) },
      { UINT8_C(209), UINT8_C( 93), UINT8_C(209), UINT8_C(141), UINT8_C( 63), UINT8_C(233), UINT8_C(238), UINT8_C(122),
        UINT8_C( 54), UINT8_C(160), UINT8_C(186), UINT8_C(114), UINT8_C( 98), UINT8_C( 89), UINT8_C(225), UINT8_C( 68) },
      {
      UINT8_C( 50),
      UINT8_C(134),
      UINT8_C(226),
      UINT8_C(209),
      UINT8_C( 32),
      UINT8_C(197),
      UINT8_C( 69),
      UINT8_C( 93),
      UINT8_C(166),
      UINT8_C( 64),
      UINT8_C(151),
      UINT8_C(209),
      UINT8_C( 40),
      UINT8_C(141),
      UINT8_C(117),
      UINT8_C(141),
      UINT8_C(147),
      UINT8_C(188),
      UINT8_C(162),
      UINT8_C( 63),
      UINT8_C( 92),
      UINT8_C(226),
      UINT8_C(197),
      UINT8_C(233),
      UINT8_C( 45),
      UINT8_C( 24),
      UINT8_C(185),
      UINT8_C(238),
      UINT8_C( 67),
      UINT8_C( 97),
      UINT8_C(133),
      UINT8_C(122),
      UINT8_C(227),
      UINT8_C( 59),
      UINT8_C(170),
      UINT8_C( 54),
      UINT8_C(229),
      UINT8_C( 76),
      UINT8_C( 96),
      UINT8_C(160),
      UINT8_C(167),
      UINT8_C(177),
      UINT8_C(153),
      UINT8_C(186),
      UINT8_C( 20),
      UINT8_C( 64),
      UINT8_C(165),
      UINT8_C(114),
      UINT8_C(251),
      UINT8_C( 60),
      UINT8_C(190),
      UINT8_C( 98),
      UINT8_C( 94),
      UINT8_C(194),
      UINT8_C( 11),
      UINT8_C( 89),
      UINT8_C(114),
      UINT8_C(159),
      UINT8_C( 29),
      UINT8_C(225),
      UINT8_C(119),
      UINT8_C(111),
      UINT8_C( 68),
      UINT8_C( 68),
      }
    },
    { { UINT8_C(159), UINT8_C(121), UINT8_C(186), UINT8_C( 65), UINT8_C( 62), UINT8_C(115), UINT8_C(198), UINT8_C(232),
        UINT8_C(211), UINT8_C( 96), UINT8_C(141), UINT8_C(145), UINT8_C(107), UINT8_C(170), UINT8_C(213), UINT8_C( 60) },
      { UINT8_C(  7), UINT8_C(167), UINT8_C(201), UINT8_C( 70), UINT8_C(144), UINT8_C(184), UINT8_C(193), UINT8_C(198),
        UINT8_C( 88), UINT8_C(123), UINT8_C( 57), UINT8_C(186), UINT8_C(213), UINT8_C( 26), UINT8_C(254), UINT8_C(116) },
      { UINT8_C(147), UINT8_C(184), UINT8_C(181), UINT8_C(209), UINT8_C( 43), UINT8_C(123), UINT8_C(185), UINT8_C(254),
        UINT8_C(219), UINT8_C( 71), UINT8_C(143), UINT8_C( 71), UINT8_C(241), UINT8_C(101), UINT8_C(131), UINT8_C(249) },
      { UINT8_C( 12), UINT8_C( 77), UINT8_C( 63), UINT8_C(156), UINT8_C(  5), UINT8_C(  0), UINT8_C( 99), UINT8_C( 93),
        UINT8_C(124), UINT8_C(156), UINT8_C( 23), UINT8_C( 81), UINT8_C(182), UINT8_C( 21), UINT8_C(197), UINT8_C( 74) },
      {
      UINT8_C(159),
      UINT8_C(  7),
      UINT8_C(147),
      UINT8_C( 12),
      UINT8_C(121),
      UINT8_C(167),
      UINT8_C(184),
      UINT8_C( 77),
      UINT8_C(186),
      UINT8_C(201),
      UINT8_C(181),
      UINT8_C( 63),
      UINT8_C( 65),
      UINT8_C( 70),
      UINT8_C(209),
      UINT8_C(156),
      UINT8_C( 62),
      UINT8_C(144),
      UINT8_C( 43),
      UINT8_C(  5),
      UINT8_C(115),
      UINT8_C(184),
      UINT8_C(123),
      UINT8_C(  0),
      UINT8_C(198),
      UINT8_C(193),
      UINT8_C(185),
      UINT8_C( 99),
      UINT8_C(232),
      UINT8_C(198),
      UINT8_C(254),
      UINT8_C( 93),
      UINT8_C(211),
      UINT8_C( 88),
      UINT8_C(219),
      UINT8_C(124),
      UINT8_C( 96),
      UINT8_C(123),
      UINT8_C( 71),
      UINT8_C(156),
      UINT8_C(141),
      UINT8_C( 57),
      UINT8_C(143),
      UINT8_C( 23),
      UINT8_C(145),
      UINT8_C(186),
      UINT8_C( 71),
      UINT8_C( 81),
      UINT8_C(107),
      UINT8_C(213),
      UINT8_C(241),
      UINT8_C(182),
      UINT8_C(170),
      UINT8_C( 26),
      UINT8_C(101),
      UINT8_C( 21),
      UINT8_C(213),
      UINT8_C(254),
      UINT8_C(131),
      UINT8_C(197),
      UINT8_C( 60),
      UINT8_C(116),
      UINT8_C(249),
      UINT8_C( 74),
      }
    },
    { { UINT8_C(206), UINT8_C(122), UINT8_C( 27), UINT8_C(249), UINT8_C(245), UINT8_C(213), UINT8_C(248), UINT8_C(209),
        UINT8_C( 28), UINT8_C(135), UINT8_C( 24), UINT8_C( 13), UINT8_C(236), UINT8_C(155), UINT8_C(  6), UINT8_C(248) },
      { UINT8_C(232), UINT8_C( 70), UINT8_C(149), UINT8_C(237), UINT8_C( 70), UINT8_C(248), UINT8_C( 74), UINT8_C(194),
        UINT8_C(148), UINT8_C( 97), UINT8_C( 19), UINT8_C( 74), UINT8_C(119), UINT8_C(216), UINT8_C(148), UINT8_C( 69) },
      { UINT8_C( 82), UINT8_C(176), UINT8_C( 62), UINT8_C( 72), UINT8_C(133), UINT8_C( 54), UINT8_C( 25), UINT8_C(161),
        UINT8_C(190), UINT8_C( 49), UINT8_C(174), UINT8_C(170), UINT8_C(204), UINT8_C(181), UINT8_C(163), UINT8_C(181) },
      { UINT8_C(251), UINT8_C( 56), UINT8_C(162), UINT8_C( 65), UINT8_C( 48), UINT8_C(237), UINT8_C(  4), UINT8_C(196),
        UINT8_C( 78), UINT8_C( 23), UINT8_C( 14), UINT8_C(197), UINT8_C(240), UINT8_C(163), UINT8_C( 10), UINT8_C( 66) },
      {
      UINT8_C(206),
      UINT8_C(232),
      UINT8_C( 82),
      UINT8_C(251),
      UINT8_C(122),
      UINT8_C( 70),
      UINT8_C(176),
      UINT8_C( 56),
      UINT8_C( 27),
      UINT8_C(149),
      UINT8_C( 62),
      UINT8_C(162),
      UINT8_C(249),
      UINT8_C(237),
      UINT8_C( 72),
      UINT8_C( 65),
      UINT8_C(245),
      UINT8_C( 70),
      UINT8_C(133),
      UINT8_C( 48),
      UINT8_C(213),
      UINT8_C(248),
      UINT8_C( 54),
      UINT8_C(237),
      UINT8_C(248),
      UINT8_C( 74),
      UINT8_C( 25),
      UINT8_C(  4),
      UINT8_C(209),
      UINT8_C(194),
      UINT8_C(161),
      UINT8_C(196),
      UINT8_C( 28),
      UINT8_C(148),
      UINT8_C(190),
      UINT8_C( 78),
      UINT8_C(135),
      UINT8_C( 97),
      UINT8_C( 49),
      UINT8_C( 23),
      UINT8_C( 24),
      UINT8_C( 19),
      UINT8_C(174),
      UINT8_C( 14),
      UINT8_C( 13),
      UINT8_C( 74),
      UINT8_C(170),
      UINT8_C(197),
      UINT8_C(236),
      UINT8_C(119),
      UINT8_C(204),
      UINT8_C(240),
      UINT8_C(155),
      UINT8_C(216),
      UINT8_C(181),
      UINT8_C(163),
      UINT8_C(  6),
      UINT8_C(148),
      UINT8_C(163),
      UINT8_C( 10),
      UINT8_C(248),
      UINT8_C( 69),
      UINT8_C(181),
      UINT8_C( 66),
      }
    },
    { { UINT8_C( 83), UINT8_C( 73), UINT8_C(138), UINT8_C(216), UINT8_C(127), UINT8_C(163), UINT8_C(121), UINT8_C( 61),
        UINT8_C(212), UINT8_C( 39), UINT8_C(232), UINT8_C(161), UINT8_C(220), UINT8_C(139), UINT8_C( 86), UINT8_C(215) },
      { UINT8_C(195), UINT8_C(248), UINT8_C( 25), UINT8_C(243), UINT8_C(229), UINT8_C( 29), UINT8_C(183), UINT8_C( 52),
        UINT8_C( 52), UINT8_C(197), UINT8_C(249), UINT8_C( 36), UINT8_C(104), UINT8_C(  4), UINT8_C(103), UINT8_C(187) },
      { UINT8_C( 77), UINT8_C(241), UINT8_C(147), UINT8_C(204), UINT8_C(149), UINT8_C( 12), UINT8_C( 10), UINT8_C(105),
        UINT8_C( 52), UINT8_C(242), UINT8_C( 10), UINT8_C( 16), UINT8_C(125), UINT8_C( 96), UINT8_C(232), UINT8_C( 64) },
      { UINT8_C( 89), UINT8_C(  1), UINT8_C( 51), UINT8_C( 62), UINT8_C( 30), UINT8_C(234), UINT8_C(114), UINT8_C( 82),
        UINT8_C(175), UINT8_C(108), UINT8_C(119), UINT8_C( 24), UINT8_C(112), UINT8_C(222), UINT8_C(211), UINT8_C(189) },
      {
      UINT8_C( 83),
      UINT8_C(195),
      UINT8_C( 77),
      UINT8_C( 89),
      UINT8_C( 73),
      UINT8_C(248),
      UINT8_C(241),
      UINT8_C(  1),
      UINT8_C(138),
      UINT8_C( 25),
      UINT8_C(147),
      UINT8_C( 51),
      UINT8_C(216),
      UINT8_C(243),
      UINT8_C(204),
      UINT8_C( 62),
      UINT8_C(127),
      UINT8_C(229),
      UINT8_C(149),
      UINT8_C( 30),
      UINT8_C(163),
      UINT8_C( 29),
      UINT8_C( 12),
      UINT8_C(234),
      UINT8_C(121),
      UINT8_C(183),
      UINT8_C( 10),
      UINT8_C(114),
      UINT8_C( 61),
      UINT8_C( 52),
      UINT8_C(105),
      UINT8_C( 82),
      UINT8_C(212),
      UINT8_C( 52),
      UINT8_C( 52),
      UINT8_C(175),
      UINT8_C( 39),
      UINT8_C(197),
      UINT8_C(242),
      UINT8_C(108),
      UINT8_C(232),
      UINT8_C(249),
      UINT8_C( 10),
      UINT8_C(119),
      UINT8_C(161),
      UINT8_C( 36),
      UINT8_C( 16),
      UINT8_C( 24),
      UINT8_C(220),
      UINT8_C(104),
      UINT8_C(125),
      UINT8_C(112),
      UINT8_C(139),
      UINT8_C(  4),
      UINT8_C( 96),
      UINT8_C(222),
      UINT8_C( 86),
      UINT8_C(103),
      UINT8_C(232),
      UINT8_C(211),
      UINT8_C(215),
      UINT8_C(187),
      UINT8_C( 64),
      UINT8_C(189),
      }
    },
    { { UINT8_C(207), UINT8_C(103), UINT8_C(137), UINT8_C(100), UINT8_C(115), UINT8_C(147), UINT8_C(206), UINT8_C(167),
        UINT8_C(133), UINT8_C(216), UINT8_C(184), UINT8_C(  2), UINT8_C( 57), UINT8_C(160), UINT8_C( 66), UINT8_C(146) },
      { UINT8_C(161), UINT8_C(117), UINT8_C(208), UINT8_C(191), UINT8_C( 95), UINT8_C( 67), UINT8_C( 17), UINT8_C( 15),
        UINT8_C(175), UINT8_C(136), UINT8_C( 39), UINT8_C( 31), UINT8_C(102), UINT8_C(250), UINT8_C(220), UINT8_C( 54) },
      { UINT8_C( 97), UINT8_C(101), UINT8_C(154), UINT8_C(213), UINT8_C(249), UINT8_C(104), UINT8_C(124), UINT8_C(126),
        UINT8_C( 65), UINT8_C( 52), UINT8_C(129), UINT8_C(122), UINT8_C(212), UINT8_C(195), UINT8_C( 12), UINT8_C(117) },
      { UINT8_C( 57), UINT8_C(220), UINT8_C( 52), UINT8_C(152), UINT8_C( 31), UINT8_C( 70), UINT8_C(167), UINT8_C(206),
        UINT8_C(206), UINT8_C(206), UINT8_C(237), UINT8_C( 53), UINT8_C(201), UINT8_C(201), UINT8_C(107), UINT8_C( 42) },
      {
      UINT8_C(207),
      UINT8_C(161),
      UINT8_C( 97),
      UINT8_C( 57),
      UINT8_C(103),
      UINT8_C(117),
      UINT8_C(101),
      UINT8_C(220),
      UINT8_C(137),
      UINT8_C(208),
      UINT8_C(154),
      UINT8_C( 52),
      UINT8_C(100),
      UINT8_C(191),
      UINT8_C(213),
      UINT8_C(152),
      UINT8_C(115),
      UINT8_C( 95),
      UINT8_C(249),
      UINT8_C( 31),
      UINT8_C(147),
      UINT8_C( 67),
      UINT8_C(104),
      UINT8_C( 70),
      UINT8_C(206),
      UINT8_C( 17),
      UINT8_C(124),
      UINT8_C(167),
      UINT8_C(167),
      UINT8_C( 15),
      UINT8_C(126),
      UINT8_C(206),
      UINT8_C(133),
      UINT8_C(175),
      UINT8_C( 65),
      UINT8_C(206),
      UINT8_C(216),
      UINT8_C(136),
      UINT8_C( 52),
      UINT8_C(206),
      UINT8_C(184),
      UINT8_C( 39),
      UINT8_C(129),
      UINT8_C(237),
      UINT8_C(  2),
      UINT8_C( 31),
      UINT8_C(122),
      UINT8_C( 53),
      UINT8_C( 57),
      UINT8_C(102),
      UINT8_C(212),
      UINT8_C(201),
      UINT8_C(160),
      UINT8_C(250),
      UINT8_C(195),
      UINT8_C(201),
      UINT8_C( 66),
      UINT8_C(220),
      UINT8_C( 12),
      UINT8_C(107),
      UINT8_C(146),
      UINT8_C( 54),
      UINT8_C(117),
      UINT8_C( 42),
      }
    },
    { { UINT8_C( 47), UINT8_C(  5),    UINT8_MAX, UINT8_C( 40), UINT8_C(110), UINT8_C(124), UINT8_C(166), UINT8_C(175),
        UINT8_C(176), UINT8_C( 39), UINT8_C( 41), UINT8_C(133), UINT8_C(235), UINT8_C( 53), UINT8_C(250), UINT8_C( 36) },
      { UINT8_C( 17), UINT8_C( 47), UINT8_C(188), UINT8_C( 49), UINT8_C(117), UINT8_C(100),    UINT8_MAX, UINT8_C( 67),
        UINT8_C( 50), UINT8_C(237), UINT8_C(120), UINT8_C(251), UINT8_C(182), UINT8_C(227), UINT8_C( 38), UINT8_C(229) },
      { UINT8_C(233), UINT8_C( 37), UINT8_C( 13), UINT8_C( 87), UINT8_C(161), UINT8_C(180), UINT8_C(  6), UINT8_C( 82),
        UINT8_C(219), UINT8_C( 47), UINT8_C(215), UINT8_C(198), UINT8_C(100), UINT8_C(209), UINT8_C(234), UINT8_C(117) },
      { UINT8_C(  0), UINT8_C(167), UINT8_C(166), UINT8_C(117), UINT8_C( 11), UINT8_C(166), UINT8_C(185), UINT8_C( 61),
        UINT8_C(147), UINT8_C( 49), UINT8_C( 57), UINT8_C( 73), UINT8_C( 21), UINT8_C( 95), UINT8_C( 47), UINT8_C(254) },
      {
      UINT8_C( 47),
      UINT8_C( 17),
      UINT8_C(233),
      UINT8_C(  0),
      UINT8_C(  5),
      UINT8_C( 47),
      UINT8_C( 37),
      UINT8_C(167),
         UINT8_MAX,
      UINT8_C(188),
      UINT8_C( 13),
      UINT8_C(166),
      UINT8_C( 40),
      UINT8_C( 49),
      UINT8_C( 87),
      UINT8_C(117),
      UINT8_C(110),
      UINT8_C(117),
      UINT8_C(161),
      UINT8_C( 11),
      UINT8_C(124),
      UINT8_C(100),
      UINT8_C(180),
      UINT8_C(166),
      UINT8_C(166),
         UINT8_MAX,
      UINT8_C(  6),
      UINT8_C(185),
      UINT8_C(175),
      UINT8_C( 67),
      UINT8_C( 82),
      UINT8_C( 61),
      UINT8_C(176),
      UINT8_C( 50),
      UINT8_C(219),
      UINT8_C(147),
      UINT8_C( 39),
      UINT8_C(237),
      UINT8_C( 47),
      UINT8_C( 49),
      UINT8_C( 41),
      UINT8_C(120),
      UINT8_C(215),
      UINT8_C( 57),
      UINT8_C(133),
      UINT8_C(251),
      UINT8_C(198),
      UINT8_C( 73),
      UINT8_C(235),
      UINT8_C(182),
      UINT8_C(100),
      UINT8_C( 21),
      UINT8_C( 53),
      UINT8_C(227),
      UINT8_C(209),
      UINT8_C( 95),
      UINT8_C(250),
      UINT8_C( 38),
      UINT8_C(234),
      UINT8_C( 47),
      UINT8_C( 36),
      UINT8_C(229),
      UINT8_C(117),
      UINT8_C(254),
      }
    },
    { { UINT8_C(132), UINT8_C( 60), UINT8_C( 85), UINT8_C( 38), UINT8_C(240), UINT8_C( 91), UINT8_C(120), UINT8_C(204),
        UINT8_C(138), UINT8_C( 79), UINT8_C(146), UINT8_C(238), UINT8_C( 32), UINT8_C(125), UINT8_C( 99), UINT8_C( 33) },
      { UINT8_C( 36), UINT8_C( 10), UINT8_C(150), UINT8_C( 47), UINT8_C(176), UINT8_C( 79), UINT8_C(108), UINT8_C( 67),
        UINT8_C(129), UINT8_C(165), UINT8_C(140), UINT8_C(150), UINT8_C(  4), UINT8_C(187), UINT8_C(148), UINT8_C(137) },
      { UINT8_C(248), UINT8_C(233), UINT8_C(175), UINT8_C(232), UINT8_C( 68), UINT8_C( 39), UINT8_C(180), UINT8_C(206),
        UINT8_C(118), UINT8_C( 71), UINT8_C(188), UINT8_C(150), UINT8_C(196), UINT8_C( 31), UINT8_C(183), UINT8_C(232) },
      { UINT8_C( 41), UINT8_C( 78), UINT8_C( 23), UINT8_C(217), UINT8_C(157), UINT8_C(131), UINT8_C( 28), UINT8_C( 30),
        UINT8_C( 41), UINT8_C(169), UINT8_C(180), UINT8_C( 45), UINT8_C(100), UINT8_C( 72), UINT8_C(182), UINT8_C( 92) },
      {
      UINT8_C(132),
      UINT8_C( 36),
      UINT8_C(248),
      UINT8_C( 41),
      UINT8_C( 60),
      UINT8_C( 10),
      UINT8_C(233),
      UINT8_C( 78),
      UINT8_C( 85),
      UINT8_C(150),
      UINT8_C(175),
      UINT8_C( 23),
      UINT8_C( 38),
      UINT8_C( 47),
      UINT8_C(232),
      UINT8_C(217),
      UINT8_C(240),
      UINT8_C(176),
      UINT8_C( 68),
      UINT8_C(157),
      UINT8_C( 91),
      UINT8_C( 79),
      UINT8_C( 39),
      UINT8_C(131),
      UINT8_C(120),
      UINT8_C(108),
      UINT8_C(180),
      UINT8_C( 28),
      UINT8_C(204),
      UINT8_C( 67),
      UINT8_C(206),
      UINT8_C( 30),
      UINT8_C(138),
      UINT8_C(129),
      UINT8_C(118),
      UINT8_C( 41),
      UINT8_C( 79),
      UINT8_C(165),
      UINT8_C( 71),
      UINT8_C(169),
      UINT8_C(146),
      UINT8_C(140),
      UINT8_C(188),
      UINT8_C(180),
      UINT8_C(238),
      UINT8_C(150),
      UINT8_C(150),
      UINT8_C( 45),
      UINT8_C( 32),
      UINT8_C(  4),
      UINT8_C(196),
      UINT8_C(100),
      UINT8_C(125),
      UINT8_C(187),
      UINT8_C( 31),
      UINT8_C( 72),
      UINT8_C( 99),
      UINT8_C(148),
      UINT8_C(183),
      UINT8_C(182),
      UINT8_C( 33),
      UINT8_C(137),
      UINT8_C(232),
      UINT8_C( 92),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint8x16x4_t r_ = { { simde_vld1q_u8(test_vec[i].r0),
                                simde_vld1q_u8(test_vec[i].r1),
                                simde_vld1q_u8(test_vec[i].r2),
                                simde_vld1q_u8(test_vec[i].r3), } };

    uint8_t a_[64];
    simde_vst4q_u8(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_u8(a_);
    simde_test_arm_neon_assert_equal_u8x16(r_.val[0], simde_vld1q_u8(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u8x16(r_.val[1], simde_vld1q_u8(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u8x16(r_.val[2], simde_vld1q_u8(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint8x16_t a0 = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t a1 = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t a2 = simde_test_arm_neon_random_u8x16();
    simde_uint8x16_t a3 = simde_test_arm_neon_random_u8x16();
    simde_uint8x16x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u8x16(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u8x16(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u8x16(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint8_t buf[64];
    simde_vst4q_u8(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_u8(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t r0[8];
    uint16_t r1[8];
    uint16_t r2[8];
    uint16_t r3[8];
    uint16_t a[32];
  } test_vec[] = {
    { { UINT16_C(15069), UINT16_C(48098), UINT16_C(50460), UINT16_C(57042), UINT16_C(60925), UINT16_C(31976), UINT16_C(20855), UINT16_C(12914) },
      { UINT16_C(15353), UINT16_C(16232), UINT16_C(47274), UINT16_C(46855), UINT16_C(31075), UINT16_C(46180), UINT16_C(53651), UINT16_C(28697) },
      { UINT16_C(64523), UINT16_C(10027), UINT16_C(64961), UINT16_C(48645), UINT16_C(60906), UINT16_C(24890), UINT16_C(44095), UINT16_C(14483) },
      { UINT16_C(64487), UINT16_C(37239), UINT16_C(32435), UINT16_C( 5705), UINT16_C(44535), UINT16_C(35531), UINT16_C(58494), UINT16_C(35322) },
      {
      UINT16_C(15069),
      UINT16_C(15353),
      UINT16_C(64523),
      UINT16_C(64487),
      UINT16_C(48098),
      UINT16_C(16232),
      UINT16_C(10027),
      UINT16_C(37239),
      UINT16_C(50460),
      UINT16_C(47274),
      UINT16_C(64961),
      UINT16_C(32435),
      UINT16_C(57042),
      UINT16_C(46855),
      UINT16_C(48645),
      UINT16_C( 5705),
      UINT16_C(60925),
      UINT16_C(31075),
      UINT16_C(60906),
      UINT16_C(44535),
      UINT16_C(31976),
      UINT16_C(46180),
      UINT16_C(24890),
      UINT16_C(35531),
      UINT16_C(20855),
      UINT16_C(53651),
      UINT16_C(44095),
      UINT16_C(58494),
      UINT16_C(12914),
      UINT16_C(28697),
      UINT16_C(14483),
      UINT16_C(35322),
      }
    },
    { { UINT16_C( 9696), UINT16_C(41393), UINT16_C(46626), UINT16_C( 3424), UINT16_C(39588), UINT16_C(58222), UINT16_C(  583), UINT16_C(11803) },
      { UINT16_C(37629), UINT16_C(45504), UINT16_C( 2321), UINT16_C( 2247), UINT16_C(37558), UINT16_C(13459), UINT16_C(36215), UINT16_C(22461) },
      { UINT16_C(28339), UINT16_C(54777), UINT16_C(22821), UINT16_C(51682), UINT16_C(20979), UINT16_C(15020), UINT16_C(51027), UINT16_C(20585) },
      { UINT16_C(10585), UINT16_C(27137), UINT16_C(51506), UINT16_C(59507), UINT16_C( 1627), UINT16_C(53788), UINT16_C(55699), UINT16_C(17962) },
      {
      UINT16_C( 9696),
      UINT16_C(37629),
      UINT16_C(28339),
      UINT16_C(10585),
      UINT16_C(41393),
      UINT16_C(45504),
      UINT16_C(54777),
      UINT16_C(27137),
      UINT16_C(46626),
      UINT16_C( 2321),
      UINT16_C(22821),
      UINT16_C(51506),
      UINT16_C( 3424),
      UINT16_C( 2247),
      UINT16_C(51682),
      UINT16_C(59507),
      UINT16_C(39588),
      UINT16_C(37558),
      UINT16_C(20979),
      UINT16_C( 1627),
      UINT16_C(58222),
      UINT16_C(13459),
      UINT16_C(15020),
      UINT16_C(53788),
      UINT16_C(  583),
      UINT16_C(36215),
      UINT16_C(51027),
      UINT16_C(55699),
      UINT16_C(11803),
      UINT16_C(22461),
      UINT16_C(20585),
      UINT16_C(17962),
      }
    },
    { { UINT16_C( 9032), UINT16_C(27932), UINT16_C(65148), UINT16_C(28470), UINT16_C(57935), UINT16_C(41642), UINT16_C( 5033), UINT16_C(  755) },
      { UINT16_C(62524), UINT16_C(28269), UINT16_C(57533), UINT16_C( 6486), UINT16_C(29414), UINT16_C(31211), UINT16_C( 5451), UINT16_C(37824) },
      { UINT16_C(56376), UINT16_C(46080), UINT16_C(14042), UINT16_C(10788), UINT16_C(52760), UINT16_C(49612), UINT16_C(49121), UINT16_C( 7620) },
      { UINT16_C(12724), UINT16_C(29067), UINT16_C(57617), UINT16_C(63370), UINT16_C(30291), UINT16_C(40560), UINT16_C(12427), UINT16_C(50226) },
      {
      UINT16_C( 9032),
      UINT16_C(62524),
      UINT16_C(56376),
      UINT16_C(12724),
      UINT16_C(27932),
      UINT16_C(28269),
      UINT16_C(46080),
      UINT16_C(29067),
      UINT16_C(65148),
      UINT16_C(57533),
      UINT16_C(14042),
      UINT16_C(57617),
      UINT16_C(28470),
      UINT16_C( 6486),
      UINT16_C(10788),
      UINT16_C(63370),
      UINT16_C(57935),
      UINT16_C(29414),
      UINT16_C(52760),
      UINT16_C(30291),
      UINT16_C(41642),
      UINT16_C(31211),
      UINT16_C(49612),
      UINT16_C(40560),
      UINT16_C( 5033),
      UINT16_C( 5451),
      UINT16_C(49121),
      UINT16_C(12427),
      UINT16_C(  755),
      UINT16_C(37824),
      UINT16_C( 7620),
      UINT16_C(50226),
      }
    },
    { { UINT16_C(12812), UINT16_C(59256), UINT16_C(40041), UINT16_C(33041), UINT16_C(56682), UINT16_C(19267), UINT16_C( 1949), UINT16_C(20840) },
      { UINT16_C(62264), UINT16_C(18882), UINT16_C(19924), UINT16_C(10048), UINT16_C(45251), UINT16_C(20166), UINT16_C(63713), UINT16_C(60690) },
      { UINT16_C(35626), UINT16_C(37844), UINT16_C(58663), UINT16_C(37397), UINT16_C(22723), UINT16_C(24797), UINT16_C(18015), UINT16_C(38833) },
      { UINT16_C(29497), UINT16_C( 3808), UINT16_C( 8384), UINT16_C(33589), UINT16_C(64464), UINT16_C(45522), UINT16_C(58611), UINT16_C( 7839) },
      {
      UINT16_C(12812),
      UINT16_C(62264),
      UINT16_C(35626),
      UINT16_C(29497),
      UINT16_C(59256),
      UINT16_C(18882),
      UINT16_C(37844),
      UINT16_C( 3808),
      UINT16_C(40041),
      UINT16_C(19924),
      UINT16_C(58663),
      UINT16_C( 8384),
      UINT16_C(33041),
      UINT16_C(10048),
      UINT16_C(37397),
      UINT16_C(33589),
      UINT16_C(56682),
      UINT16_C(45251),
      UINT16_C(22723),
      UINT16_C(64464),
      UINT16_C(19267),
      UINT16_C(20166),
      UINT16_C(24797),
      UINT16_C(45522),
      UINT16_C( 1949),
      UINT16_C(63713),
      UINT16_C(18015),
      UINT16_C(58611),
      UINT16_C(20840),
      UINT16_C(60690),
      UINT16_C(38833),
      UINT16_C( 7839),
      }
    },
    { { UINT16_C(29551), UINT16_C(38833), UINT16_C(50777), UINT16_C( 7209), UINT16_C( 1566), UINT16_C(32124), UINT16_C(11596), UINT16_C(34324) },
      { UINT16_C(62624), UINT16_C(24980), UINT16_C(51476), UINT16_C(58852), UINT16_C(46789), UINT16_C(47254), UINT16_C(13723), UINT16_C( 2774) },
      { UINT16_C(34985), UINT16_C(  673), UINT16_C(51790), UINT16_C(27934), UINT16_C(39633), UINT16_C( 7658), UINT16_C(65479), UINT16_C(26531) },
      { UINT16_C(14323), UINT16_C( 2248), UINT16_C(44289), UINT16_C(50925), UINT16_C(33635), UINT16_C(65150), UINT16_C(21945), UINT16_C(25097) },
      {
      UINT16_C(29551),
      UINT16_C(62624),
      UINT16_C(34985),
      UINT16_C(14323),
      UINT16_C(38833),
      UINT16_C(24980),
      UINT16_C(  673),
      UINT16_C( 2248),
      UINT16_C(50777),
      UINT16_C(51476),
      UINT16_C(51790),
      UINT16_C(44289),
      UINT16_C( 7209),
      UINT16_C(58852),
      UINT16_C(27934),
      UINT16_C(50925),
      UINT16_C( 1566),
      UINT16_C(46789),
      UINT16_C(39633),
      UINT16_C(33635),
      UINT16_C(32124),
      UINT16_C(47254),
      UINT16_C( 7658),
      UINT16_C(65150),
      UINT16_C(11596),
      UINT16_C(13723),
      UINT16_C(65479),
      UINT16_C(21945),
      UINT16_C(34324),
      UINT16_C( 2774),
      UINT16_C(26531),
      UINT16_C(25097),
      }
    },
    { { UINT16_C(43741), UINT16_C(11108), UINT16_C(33397), UINT16_C(18072), UINT16_C(33564), UINT16_C(58211), UINT16_C( 1922), UINT16_C(30026) },
      { UINT16_C( 4926), UINT16_C(16253), UINT16_C(27328), UINT16_C( 8965), UINT16_C(34030), UINT16_C(42786), UINT16_C(11225), UINT16_C(46601) },
      { UINT16_C(28117), UINT16_C(19169), UINT16_C(31471), UINT16_C( 2960), UINT16_C(62717), UINT16_C(32750), UINT16_C(14587), UINT16_C(14836) },
      { UINT16_C(29259), UINT16_C( 2937), UINT16_C(32476), UINT16_C(51759), UINT16_C(20738), UINT16_C(56177), UINT16_C(31356), UINT16_C(20881) },
      {
      UINT16_C(43741),
      UINT16_C( 4926),
      UINT16_C(28117),
      UINT16_C(29259),
      UINT16_C(11108),
      UINT16_C(16253),
      UINT16_C(19169),
      UINT16_C( 2937),
      UINT16_C(33397),
      UINT16_C(27328),
      UINT16_C(31471),
      UINT16_C(32476),
      UINT16_C(18072),
      UINT16_C( 8965),
      UINT16_C( 2960),
      UINT16_C(51759),
      UINT16_C(33564),
      UINT16_C(34030),
      UINT16_C(62717),
      UINT16_C(20738),
      UINT16_C(58211),
      UINT16_C(42786),
      UINT16_C(32750),
      UINT16_C(56177),
      UINT16_C( 1922),
      UINT16_C(11225),
      UINT16_C(14587),
      UINT16_C(31356),
      UINT16_C(30026),
      UINT16_C(46601),
      UINT16_C(14836),
      UINT16_C(20881),
      }
    },
    { { UINT16_C(29671), UINT16_C(54940), UINT16_C(11501), UINT16_C(60129), UINT16_C(53024), UINT16_C( 7017), UINT16_C(23816), UINT16_C(21333) },
      { UINT16_C(52943), UINT16_C(44127), UINT16_C(36428), UINT16_C(20342), UINT16_C(59615), UINT16_C(23338), UINT16_C(48226), UINT16_C(19116) },
      { UINT16_C(18479), UINT16_C( 7200), UINT16_C(  629), UINT16_C(38150), UINT16_C(28625), UINT16_C(55729), UINT16_C( 1740), UINT16_C(39981) },
      { UINT16_C(36052), UINT16_C( 8264), UINT16_C(48666), UINT16_C(63855), UINT16_C(39590), UINT16_C( 2388), UINT16_C(   86), UINT16_C(34131) },
      {
      UINT16_C(29671),
      UINT16_C(52943),
      UINT16_C(18479),
      UINT16_C(36052),
      UINT16_C(54940),
      UINT16_C(44127),
      UINT16_C( 7200),
      UINT16_C( 8264),
      UINT16_C(11501),
      UINT16_C(36428),
      UINT16_C(  629),
      UINT16_C(48666),
      UINT16_C(60129),
      UINT16_C(20342),
      UINT16_C(38150),
      UINT16_C(63855),
      UINT16_C(53024),
      UINT16_C(59615),
      UINT16_C(28625),
      UINT16_C(39590),
      UINT16_C( 7017),
      UINT16_C(23338),
      UINT16_C(55729),
      UINT16_C( 2388),
      UINT16_C(23816),
      UINT16_C(48226),
      UINT16_C( 1740),
      UINT16_C(   86),
      UINT16_C(21333),
      UINT16_C(19116),
      UINT16_C(39981),
      UINT16_C(34131),
      }
    },
    { { UINT16_C(29513), UINT16_C(48801), UINT16_C(42869), UINT16_C(18259), UINT16_C( 1046), UINT16_C(57888), UINT16_C(19722), UINT16_C(56958) },
      { UINT16_C(50905), UINT16_C(62463), UINT16_C(28293), UINT16_C(11244), UINT16_C(16392), UINT16_C(24116), UINT16_C(34625), UINT16_C(35555) },
      { UINT16_C(34043), UINT16_C(28744), UINT16_C(39723), UINT16_C(16823), UINT16_C(55456), UINT16_C(43556), UINT16_C(41509), UINT16_C(65417) },
      { UINT16_C(34921), UINT16_C(61170), UINT16_C(57334), UINT16_C(65305), UINT16_C(19999), UINT16_C(24669), UINT16_C(16853), UINT16_C(53482) },
      {
      UINT16_C(29513),
      UINT16_C(50905),
      UINT16_C(34043),
      UINT16_C(34921),
      UINT16_C(48801),
      UINT16_C(62463),
      UINT16_C(28744),
      UINT16_C(61170),
      UINT16_C(42869),
      UINT16_C(28293),
      UINT16_C(39723),
      UINT16_C(57334),
      UINT16_C(18259),
      UINT16_C(11244),
      UINT16_C(16823),
      UINT16_C(65305),
      UINT16_C( 1046),
      UINT16_C(16392),
      UINT16_C(55456),
      UINT16_C(19999),
      UINT16_C(57888),
      UINT16_C(24116),
      UINT16_C(43556),
      UINT16_C(24669),
      UINT16_C(19722),
      UINT16_C(34625),
      UINT16_C(41509),
      UINT16_C(16853),
      UINT16_C(56958),
      UINT16_C(35555),
      UINT16_C(65417),
      UINT16_C(53482),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint16x8x4_t r_ = { { simde_vld1q_u16(test_vec[i].r0),
                                simde_vld1q_u16(test_vec[i].r1),
                                simde_vld1q_u16(test_vec[i].r2),
                                simde_vld1q_u16(test_vec[i].r3), } };

    uint16_t a_[32];
    simde_vst4q_u16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_u16(a_);
    simde_test_arm_neon_assert_equal_u16x8(r_.val[0], simde_vld1q_u16(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u16x8(r_.val[1], simde_vld1q_u16(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u16x8(r_.val[2], simde_vld1q_u16(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint16x8_t a0 = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t a1 = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t a2 = simde_test_arm_neon_random_u16x8();
    simde_uint16x8_t a3 = simde_test_arm_neon_random_u16x8();
    simde_uint16x8x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u16x8(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u16x8(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u16x8(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint16_t buf[32];
    simde_vst4q_u16(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_u16(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}


static int
test_simde_vst4q_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t r0[4];
    uint32_t r1[4];
    uint32_t r2[4];
    uint32_t r3[4];
    uint32_t a[16];
  } test_vec[] = {
    { { UINT32_C( 816928038), UINT32_C(4024508959), UINT32_C(2589801649), UINT32_C(2940729031) },
      { UINT32_C(3956440918), UINT32_C( 899659297), UINT32_C(1093083275), UINT32_C( 598365436) },
      { UINT32_C(3377683625), UINT32_C( 800601470), UINT32_C( 969545329), UINT32_C(1659375884) },
      { UINT32_C(2991438481), UINT32_C(4243057777), UINT32_C( 154996236), UINT32_C( 204269667) },
      {
      UINT32_C( 816928038),
      UINT32_C(3956440918),
      UINT32_C(3377683625),
      UINT32_C(2991438481),
      UINT32_C(4024508959),
      UINT32_C( 899659297),
      UINT32_C( 800601470),
      UINT32_C(4243057777),
      UINT32_C(2589801649),
      UINT32_C(1093083275),
      UINT32_C( 969545329),
      UINT32_C( 154996236),
      UINT32_C(2940729031),
      UINT32_C( 598365436),
      UINT32_C(1659375884),
      UINT32_C( 204269667),
      }
    },
    { { UINT32_C(3268771652), UINT32_C( 653364916), UINT32_C(2959063972), UINT32_C(1578321869) },
      { UINT32_C(1930452994), UINT32_C(1500510029), UINT32_C(1751297285), UINT32_C(3648360085) },
      { UINT32_C(3264956942), UINT32_C(2095615192), UINT32_C( 355288904), UINT32_C(2440249487) },
      { UINT32_C(3976496032), UINT32_C(2135389050), UINT32_C(3051923744), UINT32_C(1183735096) },
      {
      UINT32_C(3268771652),
      UINT32_C(1930452994),
      UINT32_C(3264956942),
      UINT32_C(3976496032),
      UINT32_C( 653364916),
      UINT32_C(1500510029),
      UINT32_C(2095615192),
      UINT32_C(2135389050),
      UINT32_C(2959063972),
      UINT32_C(1751297285),
      UINT32_C( 355288904),
      UINT32_C(3051923744),
      UINT32_C(1578321869),
      UINT32_C(3648360085),
      UINT32_C(2440249487),
      UINT32_C(1183735096),
      }
    },
    { { UINT32_C(2148018599), UINT32_C(4277989814), UINT32_C(3339921720), UINT32_C( 173573737) },
      { UINT32_C(2214026249), UINT32_C(4026678992), UINT32_C( 547810024), UINT32_C(4016452679) },
      { UINT32_C( 342847070), UINT32_C(2551343967), UINT32_C(4267648405), UINT32_C(3020470443) },
      { UINT32_C(3828809748), UINT32_C( 651508030), UINT32_C(1799781156), UINT32_C( 224046255) },
      {
      UINT32_C(2148018599),
      UINT32_C(2214026249),
      UINT32_C( 342847070),
      UINT32_C(3828809748),
      UINT32_C(4277989814),
      UINT32_C(4026678992),
      UINT32_C(2551343967),
      UINT32_C( 651508030),
      UINT32_C(3339921720),
      UINT32_C( 547810024),
      UINT32_C(4267648405),
      UINT32_C(1799781156),
      UINT32_C( 173573737),
      UINT32_C(4016452679),
      UINT32_C(3020470443),
      UINT32_C( 224046255),
      }
    },
    { { UINT32_C(2049034523), UINT32_C(3390190389), UINT32_C(  63468120), UINT32_C(1052234026) },
      { UINT32_C( 254013137), UINT32_C(1278670888), UINT32_C( 582450291), UINT32_C(1144001065) },
      { UINT32_C( 280908251), UINT32_C(3722105221), UINT32_C(1843503939), UINT32_C(1168873588) },
      { UINT32_C(2941570695), UINT32_C( 972786374), UINT32_C( 811381255), UINT32_C(2691992772) },
      {
      UINT32_C(2049034523),
      UINT32_C( 254013137),
      UINT32_C( 280908251),
      UINT32_C(2941570695),
      UINT32_C(3390190389),
      UINT32_C(1278670888),
      UINT32_C(3722105221),
      UINT32_C( 972786374),
      UINT32_C(  63468120),
      UINT32_C( 582450291),
      UINT32_C(1843503939),
      UINT32_C( 811381255),
      UINT32_C(1052234026),
      UINT32_C(1144001065),
      UINT32_C(1168873588),
      UINT32_C(2691992772),
      }
    },
    { { UINT32_C(1655714525), UINT32_C(1178635011), UINT32_C(2729648430), UINT32_C(1088905145) },
      { UINT32_C(4109318957), UINT32_C(3442338502), UINT32_C(1644005789), UINT32_C(4076957973) },
      { UINT32_C(2807411363), UINT32_C(1810732349), UINT32_C(1879941558), UINT32_C( 766571520) },
      { UINT32_C(4112621615), UINT32_C( 667045770), UINT32_C(4002004952), UINT32_C(3571550768) },
      {
      UINT32_C(1655714525),
      UINT32_C(4109318957),
      UINT32_C(2807411363),
      UINT32_C(4112621615),
      UINT32_C(1178635011),
      UINT32_C(3442338502),
      UINT32_C(1810732349),
      UINT32_C( 667045770),
      UINT32_C(2729648430),
      UINT32_C(1644005789),
      UINT32_C(1879941558),
      UINT32_C(4002004952),
      UINT32_C(1088905145),
      UINT32_C(4076957973),
      UINT32_C( 766571520),
      UINT32_C(3571550768),
      }
    },
    { { UINT32_C(2038117948), UINT32_C(2196007116), UINT32_C( 166916361), UINT32_C( 355967973) },
      { UINT32_C(3440007235), UINT32_C(2163592615), UINT32_C(3178135180), UINT32_C(1167150856) },
      { UINT32_C(1371409541), UINT32_C(2127864692), UINT32_C(2055718548), UINT32_C(2895101545) },
      { UINT32_C(3195705623), UINT32_C(4080955238), UINT32_C(4121996525), UINT32_C(2168078843) },
      {
      UINT32_C(2038117948),
      UINT32_C(3440007235),
      UINT32_C(1371409541),
      UINT32_C(3195705623),
      UINT32_C(2196007116),
      UINT32_C(2163592615),
      UINT32_C(2127864692),
      UINT32_C(4080955238),
      UINT32_C( 166916361),
      UINT32_C(3178135180),
      UINT32_C(2055718548),
      UINT32_C(4121996525),
      UINT32_C( 355967973),
      UINT32_C(1167150856),
      UINT32_C(2895101545),
      UINT32_C(2168078843),
      }
    },
    { { UINT32_C(3251829069), UINT32_C( 809477788), UINT32_C(3601516397), UINT32_C(2625845637) },
      { UINT32_C( 962330067), UINT32_C(1496095084), UINT32_C(1095687238), UINT32_C(1791133981) },
      { UINT32_C( 506238338), UINT32_C(2823711547), UINT32_C(3095394610), UINT32_C(  89391666) },
      { UINT32_C(1799335935), UINT32_C(2412014409), UINT32_C(1708134984), UINT32_C( 500208539) },
      {
      UINT32_C(3251829069),
      UINT32_C( 962330067),
      UINT32_C( 506238338),
      UINT32_C(1799335935),
      UINT32_C( 809477788),
      UINT32_C(1496095084),
      UINT32_C(2823711547),
      UINT32_C(2412014409),
      UINT32_C(3601516397),
      UINT32_C(1095687238),
      UINT32_C(3095394610),
      UINT32_C(1708134984),
      UINT32_C(2625845637),
      UINT32_C(1791133981),
      UINT32_C(  89391666),
      UINT32_C( 500208539),
      }
    },
    { { UINT32_C(1664875560), UINT32_C(2584513127), UINT32_C(3042085763), UINT32_C(2361108109) },
      { UINT32_C(2683828822), UINT32_C(2905520997), UINT32_C(1762918093), UINT32_C(3112625041) },
      { UINT32_C(1176355551), UINT32_C(3487574348), UINT32_C(1099182772), UINT32_C( 801980377) },
      { UINT32_C(2681127993), UINT32_C(1280113791), UINT32_C(2360696826), UINT32_C( 558185538) },
      {
      UINT32_C(1664875560),
      UINT32_C(2683828822),
      UINT32_C(1176355551),
      UINT32_C(2681127993),
      UINT32_C(2584513127),
      UINT32_C(2905520997),
      UINT32_C(3487574348),
      UINT32_C(1280113791),
      UINT32_C(3042085763),
      UINT32_C(1762918093),
      UINT32_C(1099182772),
      UINT32_C(2360696826),
      UINT32_C(2361108109),
      UINT32_C(3112625041),
      UINT32_C( 801980377),
      UINT32_C( 558185538),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint32x4x4_t r_ = { { simde_vld1q_u32(test_vec[i].r0),
                                simde_vld1q_u32(test_vec[i].r1),
                                simde_vld1q_u32(test_vec[i].r2),
                                simde_vld1q_u32(test_vec[i].r3), } };

    uint32_t a_[16];
    simde_vst4q_u32(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_u32(a_);
    simde_test_arm_neon_assert_equal_u32x4(r_.val[0], simde_vld1q_u32(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u32x4(r_.val[1], simde_vld1q_u32(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u32x4(r_.val[2], simde_vld1q_u32(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint32x4_t a0 = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t a1 = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t a2 = simde_test_arm_neon_random_u32x4();
    simde_uint32x4_t a3 = simde_test_arm_neon_random_u32x4();
    simde_uint32x4x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u32x4(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u32x4(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u32x4(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint32_t buf[16];
    simde_vst4q_u32(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])); j++) {
      simde_test_codegen_write_u32(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t r0[2];
    uint64_t r1[2];
    uint64_t r2[2];
    uint64_t r3[2];
    uint64_t a[8];
  } test_vec[] = {
    { { UINT64_C(10037403692393182480), UINT64_C( 8361711425298189690) },
      { UINT64_C(12218369200614863841), UINT64_C( 2381342151739302120) },
      { UINT64_C(15453747378136373104), UINT64_C( 6105776580658310922) },
      { UINT64_C( 4376731735500977414), UINT64_C( 8959977481816756774) },
      {
      UINT64_C(10037403692393182480),
      UINT64_C(12218369200614863841),
      UINT64_C(15453747378136373104),
      UINT64_C( 4376731735500977414),
      UINT64_C( 8361711425298189690),
      UINT64_C( 2381342151739302120),
      UINT64_C( 6105776580658310922),
      UINT64_C( 8959977481816756774),
      }
    },
    { { UINT64_C(10431987683485534611), UINT64_C(16741170512735555212) },
      { UINT64_C( 8510035628354374282), UINT64_C( 1734736352801278346) },
      { UINT64_C(16421474816743668430), UINT64_C(15880597538443869594) },
      { UINT64_C(11675532657163853633), UINT64_C( 9779932425969316892) },
      {
      UINT64_C(10431987683485534611),
      UINT64_C( 8510035628354374282),
      UINT64_C(16421474816743668430),
      UINT64_C(11675532657163853633),
      UINT64_C(16741170512735555212),
      UINT64_C( 1734736352801278346),
      UINT64_C(15880597538443869594),
      UINT64_C( 9779932425969316892),
      }
    },
    { { UINT64_C( 2738962131928727751), UINT64_C( 6749212612852049276) },
      { UINT64_C( 5989212698123854948), UINT64_C( 7703879554845398697) },
      { UINT64_C(    8878023709869165), UINT64_C( 3019797439513018479) },
      { UINT64_C( 8387887008481400541), UINT64_C( 8441644595801381657) },
      {
      UINT64_C( 2738962131928727751),
      UINT64_C( 5989212698123854948),
      UINT64_C(    8878023709869165),
      UINT64_C( 8387887008481400541),
      UINT64_C( 6749212612852049276),
      UINT64_C( 7703879554845398697),
      UINT64_C( 3019797439513018479),
      UINT64_C( 8441644595801381657),
      }
    },
    { { UINT64_C(12107801399286214275), UINT64_C( 3115396163888797005) },
      { UINT64_C(13633423723477328371), UINT64_C( 5512018679744235777) },
      { UINT64_C(14352790015444249677), UINT64_C( 8262441203209495344) },
      { UINT64_C(10473512980685384184), UINT64_C(13727844063193584237) },
      {
      UINT64_C(12107801399286214275),
      UINT64_C(13633423723477328371),
      UINT64_C(14352790015444249677),
      UINT64_C(10473512980685384184),
      UINT64_C( 3115396163888797005),
      UINT64_C( 5512018679744235777),
      UINT64_C( 8262441203209495344),
      UINT64_C(13727844063193584237),
      }
    },
    { { UINT64_C( 7009417625986258438), UINT64_C( 3443434260875124951) },
      { UINT64_C(14669389872461773427), UINT64_C( 5703111053441904630) },
      { UINT64_C(13109158135934642779), UINT64_C(14527439590170348853) },
      { UINT64_C( 9293285077180769999), UINT64_C(15791886936142510736) },
      {
      UINT64_C( 7009417625986258438),
      UINT64_C(14669389872461773427),
      UINT64_C(13109158135934642779),
      UINT64_C( 9293285077180769999),
      UINT64_C( 3443434260875124951),
      UINT64_C( 5703111053441904630),
      UINT64_C(14527439590170348853),
      UINT64_C(15791886936142510736),
      }
    },
    { { UINT64_C( 4686933348686755703), UINT64_C(13493428713541211938) },
      { UINT64_C(   52883688490798768), UINT64_C( 2825448768405086939) },
      { UINT64_C( 1461005702183886329), UINT64_C(17170201446903051424) },
      { UINT64_C(17099573023644070109), UINT64_C( 2403935012266714758) },
      {
      UINT64_C( 4686933348686755703),
      UINT64_C(   52883688490798768),
      UINT64_C( 1461005702183886329),
      UINT64_C(17099573023644070109),
      UINT64_C(13493428713541211938),
      UINT64_C( 2825448768405086939),
      UINT64_C(17170201446903051424),
      UINT64_C( 2403935012266714758),
      }
    },
    { { UINT64_C(  153805605195667739), UINT64_C( 6669222462536724321) },
      { UINT64_C( 2235463927463523847), UINT64_C(16674210156985535772) },
      { UINT64_C( 6624539943386844555), UINT64_C( 6602708424234597831) },
      { UINT64_C( 6771013884191132222), UINT64_C( 9905958744852942022) },
      {
      UINT64_C(  153805605195667739),
      UINT64_C( 2235463927463523847),
      UINT64_C( 6624539943386844555),
      UINT64_C( 6771013884191132222),
      UINT64_C( 6669222462536724321),
      UINT64_C(16674210156985535772),
      UINT64_C( 6602708424234597831),
      UINT64_C( 9905958744852942022),
      }
    },
    { { UINT64_C( 5542635390721486485), UINT64_C(12506834188639594210) },
      { UINT64_C( 4907653102754399614), UINT64_C( 6579846770763152841) },
      { UINT64_C(  977235125474150077), UINT64_C(15264904023753630140) },
      { UINT64_C(11717712954493328602), UINT64_C( 9262982781576246122) },
      {
      UINT64_C( 5542635390721486485),
      UINT64_C( 4907653102754399614),
      UINT64_C(  977235125474150077),
      UINT64_C(11717712954493328602),
      UINT64_C(12506834188639594210),
      UINT64_C( 6579846770763152841),
      UINT64_C(15264904023753630140),
      UINT64_C( 9262982781576246122),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_uint64x2x4_t r_ = { { simde_vld1q_u64(test_vec[i].r0),
                                simde_vld1q_u64(test_vec[i].r1),
                                simde_vld1q_u64(test_vec[i].r2),
                                simde_vld1q_u64(test_vec[i].r3), } };

    uint64_t a_[8];
    simde_vst4q_u64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_u64(a_);
    simde_test_arm_neon_assert_equal_u64x2(r_.val[0], simde_vld1q_u64(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_u64x2(r_.val[1], simde_vld1q_u64(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_u64x2(r_.val[2], simde_vld1q_u64(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_uint64x2_t a0 = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t a1 = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t a2 = simde_test_arm_neon_random_u64x2();
    simde_uint64x2_t a3 = simde_test_arm_neon_random_u64x2();
    simde_uint64x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_u64x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_u64x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_u64x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    uint64_t buf[8];
    simde_vst4q_u64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])); j++) {
      simde_test_codegen_write_u64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly8_t r0[8];
    simde_poly8_t r1[8];
    simde_poly8_t r2[8];
    simde_poly8_t r3[8];
    simde_poly8_t a[32];
  } test_vec[] = {
    { { SIMDE_POLY8_C(195), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(180), SIMDE_POLY8_C(152), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(252) },
      { SIMDE_POLY8_C(167), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(101), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 76) },
      { SIMDE_POLY8_C(221), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(153), SIMDE_POLY8_C(174) },
      { SIMDE_POLY8_C(240), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(175), SIMDE_POLY8_C(122) },
      {
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C(221),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C( 84),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C( 72),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(180),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C( 51),
      SIMDE_POLY8_C(152),
      SIMDE_POLY8_C( 48),
      SIMDE_POLY8_C( 26),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(218),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C( 93),
      SIMDE_POLY8_C( 88),
      SIMDE_POLY8_C( 85),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C(153),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C( 76),
      SIMDE_POLY8_C(174),
      SIMDE_POLY8_C(122),
      }
    },
    { { SIMDE_POLY8_C( 27), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(180), SIMDE_POLY8_C(209), SIMDE_POLY8_C(132), SIMDE_POLY8_C(176), SIMDE_POLY8_C(120) },
      { SIMDE_POLY8_C(216), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(  9), SIMDE_POLY8_C(173), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(138) },
      { SIMDE_POLY8_C(192), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(232), SIMDE_POLY8_C(137), SIMDE_POLY8_C(  2) },
      { SIMDE_POLY8_C( 73), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(  0), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(228), SIMDE_POLY8_C(123), SIMDE_POLY8_C( 54) },
      {
      SIMDE_POLY8_C( 27),
      SIMDE_POLY8_C(216),
      SIMDE_POLY8_C(192),
      SIMDE_POLY8_C( 73),
      SIMDE_POLY8_C(247),
      SIMDE_POLY8_C( 22),
      SIMDE_POLY8_C(180),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C( 15),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C(180),
      SIMDE_POLY8_C(  9),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(  0),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C(173),
      SIMDE_POLY8_C( 17),
      SIMDE_POLY8_C( 27),
      SIMDE_POLY8_C(132),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C(228),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 85),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C(123),
      SIMDE_POLY8_C(120),
      SIMDE_POLY8_C(138),
      SIMDE_POLY8_C(  2),
      SIMDE_POLY8_C( 54),
      }
    },
    { { SIMDE_POLY8_C(219), SIMDE_POLY8_C(170), SIMDE_POLY8_C(234), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 46), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(  6) },
      { SIMDE_POLY8_C(177), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(147), SIMDE_POLY8_C(101), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 83) },
      { SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(105) },
      { SIMDE_POLY8_C(123), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(106), SIMDE_POLY8_C(150), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(229), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 34) },
      {
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(177),
      SIMDE_POLY8_C( 25),
      SIMDE_POLY8_C(123),
      SIMDE_POLY8_C(170),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C( 56),
      SIMDE_POLY8_C( 98),
      SIMDE_POLY8_C(234),
      SIMDE_POLY8_C( 15),
      SIMDE_POLY8_C( 46),
      SIMDE_POLY8_C(106),
      SIMDE_POLY8_C(172),
      SIMDE_POLY8_C( 94),
      SIMDE_POLY8_C( 43),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C( 46),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C( 71),
      SIMDE_POLY8_C(155),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C(229),
      SIMDE_POLY8_C( 36),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C(204),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C(105),
      SIMDE_POLY8_C( 34),
      }
    },
    { { SIMDE_POLY8_C(143), SIMDE_POLY8_C(183), SIMDE_POLY8_C(207), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(243), SIMDE_POLY8_C(195), SIMDE_POLY8_C(  3) },
      { SIMDE_POLY8_C( 39), SIMDE_POLY8_C(211), SIMDE_POLY8_C( 97), SIMDE_POLY8_C(186), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 81) },
      { SIMDE_POLY8_C(130), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(124), SIMDE_POLY8_C(163), SIMDE_POLY8_C(244), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(111) },
      { SIMDE_POLY8_C( 12), SIMDE_POLY8_C(118), SIMDE_POLY8_C(  5), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(210), SIMDE_POLY8_C(117), SIMDE_POLY8_C(234) },
      {
      SIMDE_POLY8_C(143),
      SIMDE_POLY8_C( 39),
      SIMDE_POLY8_C(130),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(211),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(  5),
      SIMDE_POLY8_C(189),
      SIMDE_POLY8_C(186),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C( 82),
      SIMDE_POLY8_C( 56),
      SIMDE_POLY8_C(244),
      SIMDE_POLY8_C( 91),
      SIMDE_POLY8_C(243),
      SIMDE_POLY8_C( 74),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C(210),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(  3),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C(234),
      }
    },
    { { SIMDE_POLY8_C(137), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(167), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(107), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 95) },
      { SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 26), SIMDE_POLY8_C(118), SIMDE_POLY8_C(138), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 12) },
      { SIMDE_POLY8_C(100), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(237), SIMDE_POLY8_C(188), SIMDE_POLY8_C(200), SIMDE_POLY8_C(249) },
      { SIMDE_POLY8_C( 50), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(142), SIMDE_POLY8_C(160), SIMDE_POLY8_C(194), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 41) },
      {
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C( 50),
      SIMDE_POLY8_C( 68),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C( 68),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C( 26),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C( 76),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C(142),
      SIMDE_POLY8_C( 56),
      SIMDE_POLY8_C(138),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(160),
      SIMDE_POLY8_C(107),
      SIMDE_POLY8_C( 40),
      SIMDE_POLY8_C(188),
      SIMDE_POLY8_C(194),
      SIMDE_POLY8_C(222),
      SIMDE_POLY8_C(199),
      SIMDE_POLY8_C(200),
      SIMDE_POLY8_C(120),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C( 41),
      }
    },
    { { SIMDE_POLY8_C(  6), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(  4), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(139), SIMDE_POLY8_C(226), SIMDE_POLY8_C(158), SIMDE_POLY8_C(201) },
      { SIMDE_POLY8_C( 33), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(171), SIMDE_POLY8_C(224), SIMDE_POLY8_C(  6), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 68) },
      { SIMDE_POLY8_C( 74), SIMDE_POLY8_C(103), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(102), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 86) },
      { SIMDE_POLY8_C( 52), SIMDE_POLY8_C(126), SIMDE_POLY8_C(228), SIMDE_POLY8_C(212), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 70) },
      {
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C( 33),
      SIMDE_POLY8_C( 74),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(126),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C(228),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C( 56),
      SIMDE_POLY8_C(212),
      SIMDE_POLY8_C(139),
      SIMDE_POLY8_C(224),
      SIMDE_POLY8_C( 35),
      SIMDE_POLY8_C( 64),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(102),
      SIMDE_POLY8_C( 92),
      SIMDE_POLY8_C(158),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C(253),
      SIMDE_POLY8_C(201),
      SIMDE_POLY8_C( 68),
      SIMDE_POLY8_C( 86),
      SIMDE_POLY8_C( 70),
      }
    },
    { { SIMDE_POLY8_C(124), SIMDE_POLY8_C(  1), SIMDE_POLY8_C(133), SIMDE_POLY8_C(  7), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(208), SIMDE_POLY8_C(  4) },
      { SIMDE_POLY8_C(219), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(176), SIMDE_POLY8_C(187), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(104),    SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 96) },
      { SIMDE_POLY8_C(207), SIMDE_POLY8_C(157), SIMDE_POLY8_C(152), SIMDE_POLY8_C(243), SIMDE_POLY8_C(  3), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 55) },
      { SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(136), SIMDE_POLY8_C(137), SIMDE_POLY8_C(  8), SIMDE_POLY8_C(206), SIMDE_POLY8_C(  6) },
      {
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C( 72),
      SIMDE_POLY8_C(  1),
      SIMDE_POLY8_C( 15),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C(152),
      SIMDE_POLY8_C( 11),
      SIMDE_POLY8_C(  7),
      SIMDE_POLY8_C(187),
      SIMDE_POLY8_C(243),
      SIMDE_POLY8_C(136),
      SIMDE_POLY8_C(227),
      SIMDE_POLY8_C( 22),
      SIMDE_POLY8_C(  3),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C( 35),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C(202),
      SIMDE_POLY8_C(  8),
      SIMDE_POLY8_C(208),
         SIMDE_POLY8_C(UINT8_MAX),
      SIMDE_POLY8_C( 73),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C( 55),
      SIMDE_POLY8_C(  6),
      }
    },
    { { SIMDE_POLY8_C(  9), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(236), SIMDE_POLY8_C(118), SIMDE_POLY8_C(222), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 81) },
      { SIMDE_POLY8_C(237), SIMDE_POLY8_C(160), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(  3), SIMDE_POLY8_C(  8), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(100), SIMDE_POLY8_C(216) },
      { SIMDE_POLY8_C(169), SIMDE_POLY8_C(252), SIMDE_POLY8_C(203), SIMDE_POLY8_C(172), SIMDE_POLY8_C(198), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 14) },
      { SIMDE_POLY8_C( 65), SIMDE_POLY8_C(238), SIMDE_POLY8_C(150), SIMDE_POLY8_C(202), SIMDE_POLY8_C(246), SIMDE_POLY8_C(101), SIMDE_POLY8_C(208),    SIMDE_POLY8_C(UINT8_MAX) },
      {
      SIMDE_POLY8_C(  9),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C(160),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C( 13),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(203),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C(236),
      SIMDE_POLY8_C(  3),
      SIMDE_POLY8_C(172),
      SIMDE_POLY8_C(202),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C(  8),
      SIMDE_POLY8_C(198),
      SIMDE_POLY8_C(246),
      SIMDE_POLY8_C(222),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C( 20),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C(227),
      SIMDE_POLY8_C(208),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C(216),
      SIMDE_POLY8_C( 14),
         SIMDE_POLY8_C(UINT8_MAX),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly8x8x4_t r_ = { { simde_vld1_p8(test_vec[i].r0),
                               simde_vld1_p8(test_vec[i].r1),
                               simde_vld1_p8(test_vec[i].r2),
                               simde_vld1_p8(test_vec[i].r3), } };

    simde_poly8_t a_[32];
    simde_vst4_p8(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_p8(a_);
    simde_test_arm_neon_assert_equal_p8x8(r_.val[0], simde_vld1_p8(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_p8x8(r_.val[1], simde_vld1_p8(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_p8x8(r_.val[2], simde_vld1_p8(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_poly8x8_t a0 = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t a1 = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t a2 = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t a3 = simde_test_arm_neon_random_p8x8();
    simde_poly8x8x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_p8x8(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x8(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_poly8_t buf[32];
    simde_vst4_p8(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_p8(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly16_t r0[4];
    simde_poly16_t r1[4];
    simde_poly16_t r2[4];
    simde_poly16_t r3[4];
    simde_poly16_t a[16];
  } test_vec[] = {
    { { SIMDE_POLY16_C( 7053), SIMDE_POLY16_C(18194), SIMDE_POLY16_C(41501), SIMDE_POLY16_C( 5028) },
      { SIMDE_POLY16_C(23380), SIMDE_POLY16_C(23265), SIMDE_POLY16_C(39297), SIMDE_POLY16_C(36422) },
      { SIMDE_POLY16_C(64123), SIMDE_POLY16_C(47306), SIMDE_POLY16_C(63985), SIMDE_POLY16_C(40762) },
      { SIMDE_POLY16_C(48714), SIMDE_POLY16_C(44810), SIMDE_POLY16_C(41814), SIMDE_POLY16_C(58351) },
      {
      SIMDE_POLY16_C( 7053),
      SIMDE_POLY16_C(23380),
      SIMDE_POLY16_C(64123),
      SIMDE_POLY16_C(48714),
      SIMDE_POLY16_C(18194),
      SIMDE_POLY16_C(23265),
      SIMDE_POLY16_C(47306),
      SIMDE_POLY16_C(44810),
      SIMDE_POLY16_C(41501),
      SIMDE_POLY16_C(39297),
      SIMDE_POLY16_C(63985),
      SIMDE_POLY16_C(41814),
      SIMDE_POLY16_C( 5028),
      SIMDE_POLY16_C(36422),
      SIMDE_POLY16_C(40762),
      SIMDE_POLY16_C(58351),
      }
    },
    { { SIMDE_POLY16_C(  446), SIMDE_POLY16_C(56106), SIMDE_POLY16_C(53155), SIMDE_POLY16_C(63470) },
      { SIMDE_POLY16_C(53034), SIMDE_POLY16_C(44114), SIMDE_POLY16_C(39016), SIMDE_POLY16_C(58170) },
      { SIMDE_POLY16_C( 1171), SIMDE_POLY16_C(33948), SIMDE_POLY16_C(55037), SIMDE_POLY16_C(18211) },
      { SIMDE_POLY16_C(11669), SIMDE_POLY16_C(60407), SIMDE_POLY16_C(59088), SIMDE_POLY16_C(36558) },
      {
      SIMDE_POLY16_C(  446),
      SIMDE_POLY16_C(53034),
      SIMDE_POLY16_C( 1171),
      SIMDE_POLY16_C(11669),
      SIMDE_POLY16_C(56106),
      SIMDE_POLY16_C(44114),
      SIMDE_POLY16_C(33948),
      SIMDE_POLY16_C(60407),
      SIMDE_POLY16_C(53155),
      SIMDE_POLY16_C(39016),
      SIMDE_POLY16_C(55037),
      SIMDE_POLY16_C(59088),
      SIMDE_POLY16_C(63470),
      SIMDE_POLY16_C(58170),
      SIMDE_POLY16_C(18211),
      SIMDE_POLY16_C(36558),
      }
    },
    { { SIMDE_POLY16_C(63719), SIMDE_POLY16_C(35434), SIMDE_POLY16_C(22727), SIMDE_POLY16_C(62081) },
      { SIMDE_POLY16_C(54056), SIMDE_POLY16_C(37022), SIMDE_POLY16_C(55404), SIMDE_POLY16_C(65396) },
      { SIMDE_POLY16_C( 4316), SIMDE_POLY16_C(55939), SIMDE_POLY16_C(42726), SIMDE_POLY16_C(31521) },
      { SIMDE_POLY16_C( 6355), SIMDE_POLY16_C(42086), SIMDE_POLY16_C(13566), SIMDE_POLY16_C(58674) },
      {
      SIMDE_POLY16_C(63719),
      SIMDE_POLY16_C(54056),
      SIMDE_POLY16_C( 4316),
      SIMDE_POLY16_C( 6355),
      SIMDE_POLY16_C(35434),
      SIMDE_POLY16_C(37022),
      SIMDE_POLY16_C(55939),
      SIMDE_POLY16_C(42086),
      SIMDE_POLY16_C(22727),
      SIMDE_POLY16_C(55404),
      SIMDE_POLY16_C(42726),
      SIMDE_POLY16_C(13566),
      SIMDE_POLY16_C(62081),
      SIMDE_POLY16_C(65396),
      SIMDE_POLY16_C(31521),
      SIMDE_POLY16_C(58674),
      }
    },
    { { SIMDE_POLY16_C(39981), SIMDE_POLY16_C(62575), SIMDE_POLY16_C(61941), SIMDE_POLY16_C( 7654) },
      { SIMDE_POLY16_C(33988), SIMDE_POLY16_C(12461), SIMDE_POLY16_C( 8540), SIMDE_POLY16_C(14639) },
      { SIMDE_POLY16_C(45617), SIMDE_POLY16_C( 6163), SIMDE_POLY16_C(13400), SIMDE_POLY16_C(11411) },
      { SIMDE_POLY16_C(64077), SIMDE_POLY16_C(19408), SIMDE_POLY16_C(  558), SIMDE_POLY16_C(23345) },
      {
      SIMDE_POLY16_C(39981),
      SIMDE_POLY16_C(33988),
      SIMDE_POLY16_C(45617),
      SIMDE_POLY16_C(64077),
      SIMDE_POLY16_C(62575),
      SIMDE_POLY16_C(12461),
      SIMDE_POLY16_C( 6163),
      SIMDE_POLY16_C(19408),
      SIMDE_POLY16_C(61941),
      SIMDE_POLY16_C( 8540),
      SIMDE_POLY16_C(13400),
      SIMDE_POLY16_C(  558),
      SIMDE_POLY16_C( 7654),
      SIMDE_POLY16_C(14639),
      SIMDE_POLY16_C(11411),
      SIMDE_POLY16_C(23345),
      }
    },
    { { SIMDE_POLY16_C(41119), SIMDE_POLY16_C(37968), SIMDE_POLY16_C(13969), SIMDE_POLY16_C(22193) },
      { SIMDE_POLY16_C(24251), SIMDE_POLY16_C( 6022), SIMDE_POLY16_C(46720), SIMDE_POLY16_C(45392) },
      { SIMDE_POLY16_C(25448), SIMDE_POLY16_C(49609), SIMDE_POLY16_C(23960), SIMDE_POLY16_C(58861) },
      { SIMDE_POLY16_C(48471), SIMDE_POLY16_C(34096), SIMDE_POLY16_C(25023), SIMDE_POLY16_C(24289) },
      {
      SIMDE_POLY16_C(41119),
      SIMDE_POLY16_C(24251),
      SIMDE_POLY16_C(25448),
      SIMDE_POLY16_C(48471),
      SIMDE_POLY16_C(37968),
      SIMDE_POLY16_C( 6022),
      SIMDE_POLY16_C(49609),
      SIMDE_POLY16_C(34096),
      SIMDE_POLY16_C(13969),
      SIMDE_POLY16_C(46720),
      SIMDE_POLY16_C(23960),
      SIMDE_POLY16_C(25023),
      SIMDE_POLY16_C(22193),
      SIMDE_POLY16_C(45392),
      SIMDE_POLY16_C(58861),
      SIMDE_POLY16_C(24289),
      }
    },
    { { SIMDE_POLY16_C(12546), SIMDE_POLY16_C(37874), SIMDE_POLY16_C(41831), SIMDE_POLY16_C( 8937) },
      { SIMDE_POLY16_C(28674), SIMDE_POLY16_C(33338), SIMDE_POLY16_C(35366), SIMDE_POLY16_C(36403) },
      { SIMDE_POLY16_C(65006), SIMDE_POLY16_C(34383), SIMDE_POLY16_C(15450), SIMDE_POLY16_C(45419) },
      { SIMDE_POLY16_C(39929), SIMDE_POLY16_C(47414), SIMDE_POLY16_C( 6141), SIMDE_POLY16_C(65303) },
      {
      SIMDE_POLY16_C(12546),
      SIMDE_POLY16_C(28674),
      SIMDE_POLY16_C(65006),
      SIMDE_POLY16_C(39929),
      SIMDE_POLY16_C(37874),
      SIMDE_POLY16_C(33338),
      SIMDE_POLY16_C(34383),
      SIMDE_POLY16_C(47414),
      SIMDE_POLY16_C(41831),
      SIMDE_POLY16_C(35366),
      SIMDE_POLY16_C(15450),
      SIMDE_POLY16_C( 6141),
      SIMDE_POLY16_C( 8937),
      SIMDE_POLY16_C(36403),
      SIMDE_POLY16_C(45419),
      SIMDE_POLY16_C(65303),
      }
    },
    { { SIMDE_POLY16_C( 2632), SIMDE_POLY16_C(45202), SIMDE_POLY16_C(31917), SIMDE_POLY16_C(45010) },
      { SIMDE_POLY16_C( 3308), SIMDE_POLY16_C( 4657), SIMDE_POLY16_C(26007), SIMDE_POLY16_C(34208) },
      { SIMDE_POLY16_C(61538), SIMDE_POLY16_C(48139), SIMDE_POLY16_C(30252), SIMDE_POLY16_C( 9837) },
      { SIMDE_POLY16_C(41745), SIMDE_POLY16_C( 3807), SIMDE_POLY16_C(63163), SIMDE_POLY16_C(  781) },
      {
      SIMDE_POLY16_C( 2632),
      SIMDE_POLY16_C( 3308),
      SIMDE_POLY16_C(61538),
      SIMDE_POLY16_C(41745),
      SIMDE_POLY16_C(45202),
      SIMDE_POLY16_C( 4657),
      SIMDE_POLY16_C(48139),
      SIMDE_POLY16_C( 3807),
      SIMDE_POLY16_C(31917),
      SIMDE_POLY16_C(26007),
      SIMDE_POLY16_C(30252),
      SIMDE_POLY16_C(63163),
      SIMDE_POLY16_C(45010),
      SIMDE_POLY16_C(34208),
      SIMDE_POLY16_C( 9837),
      SIMDE_POLY16_C(  781),
      }
    },
    { { SIMDE_POLY16_C(40960), SIMDE_POLY16_C(44723), SIMDE_POLY16_C(34332), SIMDE_POLY16_C( 2141) },
      { SIMDE_POLY16_C(36754), SIMDE_POLY16_C(10522), SIMDE_POLY16_C(47860), SIMDE_POLY16_C(22190) },
      { SIMDE_POLY16_C(47530), SIMDE_POLY16_C(55058), SIMDE_POLY16_C(32559), SIMDE_POLY16_C(16893) },
      { SIMDE_POLY16_C(56354), SIMDE_POLY16_C(56655), SIMDE_POLY16_C(24018), SIMDE_POLY16_C(54241) },
      {
      SIMDE_POLY16_C(40960),
      SIMDE_POLY16_C(36754),
      SIMDE_POLY16_C(47530),
      SIMDE_POLY16_C(56354),
      SIMDE_POLY16_C(44723),
      SIMDE_POLY16_C(10522),
      SIMDE_POLY16_C(55058),
      SIMDE_POLY16_C(56655),
      SIMDE_POLY16_C(34332),
      SIMDE_POLY16_C(47860),
      SIMDE_POLY16_C(32559),
      SIMDE_POLY16_C(24018),
      SIMDE_POLY16_C( 2141),
      SIMDE_POLY16_C(22190),
      SIMDE_POLY16_C(16893),
      SIMDE_POLY16_C(54241),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly16x4x4_t r_ = { { simde_vld1_p16(test_vec[i].r0),
                                simde_vld1_p16(test_vec[i].r1),
                                simde_vld1_p16(test_vec[i].r2),
                                simde_vld1_p16(test_vec[i].r3), } };

    simde_poly16_t a_[16];
    simde_vst4_p16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_p16(a_);
    simde_test_arm_neon_assert_equal_p16x4(r_.val[0], simde_vld1_p16(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_p16x4(r_.val[1], simde_vld1_p16(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_p16x4(r_.val[2], simde_vld1_p16(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_poly16x4_t a0 = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t a1 = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t a2 = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t a3 = simde_test_arm_neon_random_p16x4();
    simde_poly16x4x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_p16x4(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x4(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_poly16_t buf[16];
    simde_vst4_p16(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_p16(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly64_t r0[1];
    simde_poly64_t r1[1];
    simde_poly64_t r2[1];
    simde_poly64_t r3[1];
    simde_poly64_t a[4];
  } test_vec[] = {
    { { SIMDE_POLY64_C( 5721188545113066611) },
      { SIMDE_POLY64_C(14561941195432479727) },
      { SIMDE_POLY64_C(18383632674776778752) },
      { SIMDE_POLY64_C(15980372823853894486) },
      {
      SIMDE_POLY64_C( 5721188545113066611),
      SIMDE_POLY64_C(14561941195432479727),
      SIMDE_POLY64_C(18383632674776778752),
      SIMDE_POLY64_C(15980372823853894486),
      }
    },
    { { SIMDE_POLY64_C(17453329832926135356) },
      { SIMDE_POLY64_C( 9305115780059437306) },
      { SIMDE_POLY64_C(10769792532928690161) },
      { SIMDE_POLY64_C( 9174047135429923592) },
      {
      SIMDE_POLY64_C(17453329832926135356),
      SIMDE_POLY64_C( 9305115780059437306),
      SIMDE_POLY64_C(10769792532928690161),
      SIMDE_POLY64_C( 9174047135429923592),
      }
    },
    { { SIMDE_POLY64_C( 4971021025742920199) },
      { SIMDE_POLY64_C(12229453011547344821) },
      { SIMDE_POLY64_C(11171622612186862901) },
      { SIMDE_POLY64_C(15125726142156113446) },
      {
      SIMDE_POLY64_C( 4971021025742920199),
      SIMDE_POLY64_C(12229453011547344821),
      SIMDE_POLY64_C(11171622612186862901),
      SIMDE_POLY64_C(15125726142156113446),
      }
    },
    { { SIMDE_POLY64_C(11783624364083859705) },
      { SIMDE_POLY64_C( 1623425490471166758) },
      { SIMDE_POLY64_C( 6869277207765361957) },
      { SIMDE_POLY64_C(13489603327554052761) },
      {
      SIMDE_POLY64_C(11783624364083859705),
      SIMDE_POLY64_C( 1623425490471166758),
      SIMDE_POLY64_C( 6869277207765361957),
      SIMDE_POLY64_C(13489603327554052761),
      }
    },
    { { SIMDE_POLY64_C(  905933701970267906) },
      { SIMDE_POLY64_C( 2422780449713187752) },
      { SIMDE_POLY64_C( 6174203900964972822) },
      { SIMDE_POLY64_C( 3174171503893182608) },
      {
      SIMDE_POLY64_C(  905933701970267906),
      SIMDE_POLY64_C( 2422780449713187752),
      SIMDE_POLY64_C( 6174203900964972822),
      SIMDE_POLY64_C( 3174171503893182608),
      }
    },
    { { SIMDE_POLY64_C( 4030069174546664187) },
      { SIMDE_POLY64_C( 6860775845552772889) },
      { SIMDE_POLY64_C(14815256441915314056) },
      { SIMDE_POLY64_C( 4191491432061489877) },
      {
      SIMDE_POLY64_C( 4030069174546664187),
      SIMDE_POLY64_C( 6860775845552772889),
      SIMDE_POLY64_C(14815256441915314056),
      SIMDE_POLY64_C( 4191491432061489877),
      }
    },
    { { SIMDE_POLY64_C( 1079748961840678709) },
      { SIMDE_POLY64_C(11927881590574923233) },
      { SIMDE_POLY64_C( 7670619264820787049) },
      { SIMDE_POLY64_C(17460338915384332758) },
      {
      SIMDE_POLY64_C( 1079748961840678709),
      SIMDE_POLY64_C(11927881590574923233),
      SIMDE_POLY64_C( 7670619264820787049),
      SIMDE_POLY64_C(17460338915384332758),
      }
    },
    { { SIMDE_POLY64_C( 6259919325679283164) },
      { SIMDE_POLY64_C(14209428967911261040) },
      { SIMDE_POLY64_C( 8448153254045096767) },
      { SIMDE_POLY64_C( 1738065358680139632) },
      {
      SIMDE_POLY64_C( 6259919325679283164),
      SIMDE_POLY64_C(14209428967911261040),
      SIMDE_POLY64_C( 8448153254045096767),
      SIMDE_POLY64_C( 1738065358680139632),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly64x1x4_t r_ = { { simde_vld1_p64(test_vec[i].r0),
                                simde_vld1_p64(test_vec[i].r1),
                                simde_vld1_p64(test_vec[i].r2),
                                simde_vld1_p64(test_vec[i].r3), } };

    simde_poly64_t a_[4];
    simde_vst4_p64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_p64(a_);
    simde_test_arm_neon_assert_equal_p64x1(r_.val[0], simde_vld1_p64(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_p64x1(r_.val[1], simde_vld1_p64(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_p64x1(r_.val[2], simde_vld1_p64(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_poly64x1_t a0 = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t a1 = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t a2 = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t a3 = simde_test_arm_neon_random_p64x1();
    simde_poly64x1x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_p64x1(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x1(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_poly64_t buf[4];
    simde_vst4_p64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_p64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_p8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly8_t r0[16];
    simde_poly8_t r1[16];
    simde_poly8_t r2[16];
    simde_poly8_t r3[16];
    simde_poly8_t a[64];
  } test_vec[] = {
    { { SIMDE_POLY8_C( 22), SIMDE_POLY8_C(175), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(237), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(110),
        SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(209), SIMDE_POLY8_C(178), SIMDE_POLY8_C(179), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 83) },
      { SIMDE_POLY8_C( 45), SIMDE_POLY8_C(101), SIMDE_POLY8_C(113), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(222), SIMDE_POLY8_C(163), SIMDE_POLY8_C(217),
        SIMDE_POLY8_C(132), SIMDE_POLY8_C(175), SIMDE_POLY8_C(183), SIMDE_POLY8_C(169), SIMDE_POLY8_C(170), SIMDE_POLY8_C(171), SIMDE_POLY8_C(187), SIMDE_POLY8_C(192) },
      { SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(246), SIMDE_POLY8_C(114), SIMDE_POLY8_C(182), SIMDE_POLY8_C(  5),
        SIMDE_POLY8_C(176), SIMDE_POLY8_C(135), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 94) },
      { SIMDE_POLY8_C(124), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(200), SIMDE_POLY8_C(  6), SIMDE_POLY8_C(246), SIMDE_POLY8_C(162), SIMDE_POLY8_C(139),
        SIMDE_POLY8_C(165), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(  4), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 95) },
      {
      SIMDE_POLY8_C( 22),
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C( 90),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C( 66),
      SIMDE_POLY8_C( 40),
      SIMDE_POLY8_C(135),
      SIMDE_POLY8_C(113),
      SIMDE_POLY8_C( 16),
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C(245),
      SIMDE_POLY8_C( 71),
      SIMDE_POLY8_C(200),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C( 76),
      SIMDE_POLY8_C(246),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C(222),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C(246),
      SIMDE_POLY8_C( 98),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C(182),
      SIMDE_POLY8_C(162),
      SIMDE_POLY8_C(110),
      SIMDE_POLY8_C(217),
      SIMDE_POLY8_C(  5),
      SIMDE_POLY8_C(139),
      SIMDE_POLY8_C( 15),
      SIMDE_POLY8_C(132),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C(135),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C(178),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C( 80),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C(170),
      SIMDE_POLY8_C( 48),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C( 22),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C(187),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C( 16),
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C(192),
      SIMDE_POLY8_C( 94),
      SIMDE_POLY8_C( 95),
      }
    },
    { { SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(147), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 67),
        SIMDE_POLY8_C(227), SIMDE_POLY8_C(229), SIMDE_POLY8_C(167), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(114), SIMDE_POLY8_C(119) },
      { SIMDE_POLY8_C(134), SIMDE_POLY8_C(197), SIMDE_POLY8_C( 64), SIMDE_POLY8_C(141), SIMDE_POLY8_C(188), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 97),
        SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(177), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(194), SIMDE_POLY8_C(159), SIMDE_POLY8_C(111) },
      { SIMDE_POLY8_C(226), SIMDE_POLY8_C( 69), SIMDE_POLY8_C(151), SIMDE_POLY8_C(117), SIMDE_POLY8_C(162), SIMDE_POLY8_C(197), SIMDE_POLY8_C(185), SIMDE_POLY8_C(133),
        SIMDE_POLY8_C(170), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(153), SIMDE_POLY8_C(165), SIMDE_POLY8_C(190), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 29), SIMDE_POLY8_C( 68) },
      { SIMDE_POLY8_C(209), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(209), SIMDE_POLY8_C(141), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(233), SIMDE_POLY8_C(238), SIMDE_POLY8_C(122),
        SIMDE_POLY8_C( 54), SIMDE_POLY8_C(160), SIMDE_POLY8_C(186), SIMDE_POLY8_C(114), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 68) },
      {
      SIMDE_POLY8_C( 50),
      SIMDE_POLY8_C(134),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C( 69),
      SIMDE_POLY8_C( 93),
      SIMDE_POLY8_C(166),
      SIMDE_POLY8_C( 64),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C( 40),
      SIMDE_POLY8_C(141),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(141),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C(188),
      SIMDE_POLY8_C(162),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C( 92),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C( 24),
      SIMDE_POLY8_C(185),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C(122),
      SIMDE_POLY8_C(227),
      SIMDE_POLY8_C( 59),
      SIMDE_POLY8_C(170),
      SIMDE_POLY8_C( 54),
      SIMDE_POLY8_C(229),
      SIMDE_POLY8_C( 76),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C(160),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C(177),
      SIMDE_POLY8_C(153),
      SIMDE_POLY8_C(186),
      SIMDE_POLY8_C( 20),
      SIMDE_POLY8_C( 64),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C(251),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C(190),
      SIMDE_POLY8_C( 98),
      SIMDE_POLY8_C( 94),
      SIMDE_POLY8_C(194),
      SIMDE_POLY8_C( 11),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C(159),
      SIMDE_POLY8_C( 29),
      SIMDE_POLY8_C(225),
      SIMDE_POLY8_C(119),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C( 68),
      SIMDE_POLY8_C( 68),
      }
    },
    { { SIMDE_POLY8_C(159), SIMDE_POLY8_C(121), SIMDE_POLY8_C(186), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(115), SIMDE_POLY8_C(198), SIMDE_POLY8_C(232),
        SIMDE_POLY8_C(211), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(141), SIMDE_POLY8_C(145), SIMDE_POLY8_C(107), SIMDE_POLY8_C(170), SIMDE_POLY8_C(213), SIMDE_POLY8_C( 60) },
      { SIMDE_POLY8_C(  7), SIMDE_POLY8_C(167), SIMDE_POLY8_C(201), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(144), SIMDE_POLY8_C(184), SIMDE_POLY8_C(193), SIMDE_POLY8_C(198),
        SIMDE_POLY8_C( 88), SIMDE_POLY8_C(123), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(186), SIMDE_POLY8_C(213), SIMDE_POLY8_C( 26), SIMDE_POLY8_C(254), SIMDE_POLY8_C(116) },
      { SIMDE_POLY8_C(147), SIMDE_POLY8_C(184), SIMDE_POLY8_C(181), SIMDE_POLY8_C(209), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(123), SIMDE_POLY8_C(185), SIMDE_POLY8_C(254),
        SIMDE_POLY8_C(219), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(241), SIMDE_POLY8_C(101), SIMDE_POLY8_C(131), SIMDE_POLY8_C(249) },
      { SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(156), SIMDE_POLY8_C(  5), SIMDE_POLY8_C(  0), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 93),
        SIMDE_POLY8_C(124), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(182), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(197), SIMDE_POLY8_C( 74) },
      {
      SIMDE_POLY8_C(159),
      SIMDE_POLY8_C(  7),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(121),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C( 77),
      SIMDE_POLY8_C(186),
      SIMDE_POLY8_C(201),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C( 70),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C(156),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(144),
      SIMDE_POLY8_C( 43),
      SIMDE_POLY8_C(  5),
      SIMDE_POLY8_C(115),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C(123),
      SIMDE_POLY8_C(  0),
      SIMDE_POLY8_C(198),
      SIMDE_POLY8_C(193),
      SIMDE_POLY8_C(185),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C(198),
      SIMDE_POLY8_C(254),
      SIMDE_POLY8_C( 93),
      SIMDE_POLY8_C(211),
      SIMDE_POLY8_C( 88),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C(123),
      SIMDE_POLY8_C( 71),
      SIMDE_POLY8_C(156),
      SIMDE_POLY8_C(141),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(143),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C(145),
      SIMDE_POLY8_C(186),
      SIMDE_POLY8_C( 71),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C(107),
      SIMDE_POLY8_C(213),
      SIMDE_POLY8_C(241),
      SIMDE_POLY8_C(182),
      SIMDE_POLY8_C(170),
      SIMDE_POLY8_C( 26),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C( 21),
      SIMDE_POLY8_C(213),
      SIMDE_POLY8_C(254),
      SIMDE_POLY8_C(131),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C(116),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C( 74),
      }
    },
    { { SIMDE_POLY8_C(206), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(249), SIMDE_POLY8_C(245), SIMDE_POLY8_C(213), SIMDE_POLY8_C(248), SIMDE_POLY8_C(209),
        SIMDE_POLY8_C( 28), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(236), SIMDE_POLY8_C(155), SIMDE_POLY8_C(  6), SIMDE_POLY8_C(248) },
      { SIMDE_POLY8_C(232), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(149), SIMDE_POLY8_C(237), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(194),
        SIMDE_POLY8_C(148), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(119), SIMDE_POLY8_C(216), SIMDE_POLY8_C(148), SIMDE_POLY8_C( 69) },
      { SIMDE_POLY8_C( 82), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(161),
        SIMDE_POLY8_C(190), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(174), SIMDE_POLY8_C(170), SIMDE_POLY8_C(204), SIMDE_POLY8_C(181), SIMDE_POLY8_C(163), SIMDE_POLY8_C(181) },
      { SIMDE_POLY8_C(251), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(162), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(237), SIMDE_POLY8_C(  4), SIMDE_POLY8_C(196),
        SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(197), SIMDE_POLY8_C(240), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 66) },
      {
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C( 82),
      SIMDE_POLY8_C(251),
      SIMDE_POLY8_C(122),
      SIMDE_POLY8_C( 70),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 56),
      SIMDE_POLY8_C( 27),
      SIMDE_POLY8_C(149),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(162),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C( 72),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C(245),
      SIMDE_POLY8_C( 70),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C( 48),
      SIMDE_POLY8_C(213),
      SIMDE_POLY8_C(248),
      SIMDE_POLY8_C( 54),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(248),
      SIMDE_POLY8_C( 74),
      SIMDE_POLY8_C( 25),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C(194),
      SIMDE_POLY8_C(161),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C( 28),
      SIMDE_POLY8_C(148),
      SIMDE_POLY8_C(190),
      SIMDE_POLY8_C( 78),
      SIMDE_POLY8_C(135),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C( 24),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C(174),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C( 13),
      SIMDE_POLY8_C( 74),
      SIMDE_POLY8_C(170),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C(236),
      SIMDE_POLY8_C(119),
      SIMDE_POLY8_C(204),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C(155),
      SIMDE_POLY8_C(216),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(148),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C( 10),
      SIMDE_POLY8_C(248),
      SIMDE_POLY8_C( 69),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C( 66),
      }
    },
    { { SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(138), SIMDE_POLY8_C(216), SIMDE_POLY8_C(127), SIMDE_POLY8_C(163), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 61),
        SIMDE_POLY8_C(212), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(232), SIMDE_POLY8_C(161), SIMDE_POLY8_C(220), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(215) },
      { SIMDE_POLY8_C(195), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(243), SIMDE_POLY8_C(229), SIMDE_POLY8_C( 29), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 52),
        SIMDE_POLY8_C( 52), SIMDE_POLY8_C(197), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(104), SIMDE_POLY8_C(  4), SIMDE_POLY8_C(103), SIMDE_POLY8_C(187) },
      { SIMDE_POLY8_C( 77), SIMDE_POLY8_C(241), SIMDE_POLY8_C(147), SIMDE_POLY8_C(204), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(105),
        SIMDE_POLY8_C( 52), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 16), SIMDE_POLY8_C(125), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(232), SIMDE_POLY8_C( 64) },
      { SIMDE_POLY8_C( 89), SIMDE_POLY8_C(  1), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 30), SIMDE_POLY8_C(234), SIMDE_POLY8_C(114), SIMDE_POLY8_C( 82),
        SIMDE_POLY8_C(175), SIMDE_POLY8_C(108), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(112), SIMDE_POLY8_C(222), SIMDE_POLY8_C(211), SIMDE_POLY8_C(189) },
      {
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C( 77),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C( 73),
      SIMDE_POLY8_C(248),
      SIMDE_POLY8_C(241),
      SIMDE_POLY8_C(  1),
      SIMDE_POLY8_C(138),
      SIMDE_POLY8_C( 25),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C( 51),
      SIMDE_POLY8_C(216),
      SIMDE_POLY8_C(243),
      SIMDE_POLY8_C(204),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(127),
      SIMDE_POLY8_C(229),
      SIMDE_POLY8_C(149),
      SIMDE_POLY8_C( 30),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C( 29),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(234),
      SIMDE_POLY8_C(121),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C( 10),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C( 61),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C(105),
      SIMDE_POLY8_C( 82),
      SIMDE_POLY8_C(212),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C( 39),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C(242),
      SIMDE_POLY8_C(108),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C( 10),
      SIMDE_POLY8_C(119),
      SIMDE_POLY8_C(161),
      SIMDE_POLY8_C( 36),
      SIMDE_POLY8_C( 16),
      SIMDE_POLY8_C( 24),
      SIMDE_POLY8_C(220),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C(125),
      SIMDE_POLY8_C(112),
      SIMDE_POLY8_C(139),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C(222),
      SIMDE_POLY8_C( 86),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C(211),
      SIMDE_POLY8_C(215),
      SIMDE_POLY8_C(187),
      SIMDE_POLY8_C( 64),
      SIMDE_POLY8_C(189),
      }
    },
    { { SIMDE_POLY8_C(207), SIMDE_POLY8_C(103), SIMDE_POLY8_C(137), SIMDE_POLY8_C(100), SIMDE_POLY8_C(115), SIMDE_POLY8_C(147), SIMDE_POLY8_C(206), SIMDE_POLY8_C(167),
        SIMDE_POLY8_C(133), SIMDE_POLY8_C(216), SIMDE_POLY8_C(184), SIMDE_POLY8_C(  2), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(160), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(146) },
      { SIMDE_POLY8_C(161), SIMDE_POLY8_C(117), SIMDE_POLY8_C(208), SIMDE_POLY8_C(191), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 15),
        SIMDE_POLY8_C(175), SIMDE_POLY8_C(136), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(102), SIMDE_POLY8_C(250), SIMDE_POLY8_C(220), SIMDE_POLY8_C( 54) },
      { SIMDE_POLY8_C( 97), SIMDE_POLY8_C(101), SIMDE_POLY8_C(154), SIMDE_POLY8_C(213), SIMDE_POLY8_C(249), SIMDE_POLY8_C(104), SIMDE_POLY8_C(124), SIMDE_POLY8_C(126),
        SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(129), SIMDE_POLY8_C(122), SIMDE_POLY8_C(212), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(117) },
      { SIMDE_POLY8_C( 57), SIMDE_POLY8_C(220), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(152), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(167), SIMDE_POLY8_C(206),
        SIMDE_POLY8_C(206), SIMDE_POLY8_C(206), SIMDE_POLY8_C(237), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(201), SIMDE_POLY8_C(201), SIMDE_POLY8_C(107), SIMDE_POLY8_C( 42) },
      {
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C(161),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C(220),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C(208),
      SIMDE_POLY8_C(154),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C(191),
      SIMDE_POLY8_C(213),
      SIMDE_POLY8_C(152),
      SIMDE_POLY8_C(115),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C( 31),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C( 70),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C( 17),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C( 15),
      SIMDE_POLY8_C(126),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(216),
      SIMDE_POLY8_C(136),
      SIMDE_POLY8_C( 52),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C( 39),
      SIMDE_POLY8_C(129),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(  2),
      SIMDE_POLY8_C( 31),
      SIMDE_POLY8_C(122),
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(102),
      SIMDE_POLY8_C(212),
      SIMDE_POLY8_C(201),
      SIMDE_POLY8_C(160),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C(201),
      SIMDE_POLY8_C( 66),
      SIMDE_POLY8_C(220),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(107),
      SIMDE_POLY8_C(146),
      SIMDE_POLY8_C( 54),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C( 42),
      }
    },
    { { SIMDE_POLY8_C( 47), SIMDE_POLY8_C(  5),    SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(110), SIMDE_POLY8_C(124), SIMDE_POLY8_C(166), SIMDE_POLY8_C(175),
        SIMDE_POLY8_C(176), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(133), SIMDE_POLY8_C(235), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(250), SIMDE_POLY8_C( 36) },
      { SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(188), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(117), SIMDE_POLY8_C(100),    SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 67),
        SIMDE_POLY8_C( 50), SIMDE_POLY8_C(237), SIMDE_POLY8_C(120), SIMDE_POLY8_C(251), SIMDE_POLY8_C(182), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(229) },
      { SIMDE_POLY8_C(233), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(161), SIMDE_POLY8_C(180), SIMDE_POLY8_C(  6), SIMDE_POLY8_C( 82),
        SIMDE_POLY8_C(219), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(215), SIMDE_POLY8_C(198), SIMDE_POLY8_C(100), SIMDE_POLY8_C(209), SIMDE_POLY8_C(234), SIMDE_POLY8_C(117) },
      { SIMDE_POLY8_C(  0), SIMDE_POLY8_C(167), SIMDE_POLY8_C(166), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(166), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 61),
        SIMDE_POLY8_C(147), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(254) },
      {
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C( 17),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C(  0),
      SIMDE_POLY8_C(  5),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C( 37),
      SIMDE_POLY8_C(167),
         SIMDE_POLY8_C(UINT8_MAX),
      SIMDE_POLY8_C(188),
      SIMDE_POLY8_C( 13),
      SIMDE_POLY8_C(166),
      SIMDE_POLY8_C( 40),
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C( 87),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(110),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(161),
      SIMDE_POLY8_C( 11),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C(180),
      SIMDE_POLY8_C(166),
      SIMDE_POLY8_C(166),
         SIMDE_POLY8_C(UINT8_MAX),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(185),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C( 82),
      SIMDE_POLY8_C( 61),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 50),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C( 39),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C( 41),
      SIMDE_POLY8_C(120),
      SIMDE_POLY8_C(215),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C(251),
      SIMDE_POLY8_C(198),
      SIMDE_POLY8_C( 73),
      SIMDE_POLY8_C(235),
      SIMDE_POLY8_C(182),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C( 21),
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C(227),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C( 38),
      SIMDE_POLY8_C(234),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C( 36),
      SIMDE_POLY8_C(229),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(254),
      }
    },
    { { SIMDE_POLY8_C(132), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(120), SIMDE_POLY8_C(204),
        SIMDE_POLY8_C(138), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(146), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(125), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 33) },
      { SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(150), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 67),
        SIMDE_POLY8_C(129), SIMDE_POLY8_C(165), SIMDE_POLY8_C(140), SIMDE_POLY8_C(150), SIMDE_POLY8_C(  4), SIMDE_POLY8_C(187), SIMDE_POLY8_C(148), SIMDE_POLY8_C(137) },
      { SIMDE_POLY8_C(248), SIMDE_POLY8_C(233), SIMDE_POLY8_C(175), SIMDE_POLY8_C(232), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(180), SIMDE_POLY8_C(206),
        SIMDE_POLY8_C(118), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(188), SIMDE_POLY8_C(150), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(183), SIMDE_POLY8_C(232) },
      { SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(217), SIMDE_POLY8_C(157), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 30),
        SIMDE_POLY8_C( 41), SIMDE_POLY8_C(169), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(182), SIMDE_POLY8_C( 92) },
      {
      SIMDE_POLY8_C(132),
      SIMDE_POLY8_C( 36),
      SIMDE_POLY8_C(248),
      SIMDE_POLY8_C( 41),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C( 10),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C( 78),
      SIMDE_POLY8_C( 85),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C( 38),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C(217),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 68),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C( 91),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C( 39),
      SIMDE_POLY8_C(131),
      SIMDE_POLY8_C(120),
      SIMDE_POLY8_C(108),
      SIMDE_POLY8_C(180),
      SIMDE_POLY8_C( 28),
      SIMDE_POLY8_C(204),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C( 30),
      SIMDE_POLY8_C(138),
      SIMDE_POLY8_C(129),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C( 41),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C( 71),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C(146),
      SIMDE_POLY8_C(140),
      SIMDE_POLY8_C(188),
      SIMDE_POLY8_C(180),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C(125),
      SIMDE_POLY8_C(187),
      SIMDE_POLY8_C( 31),
      SIMDE_POLY8_C( 72),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C(148),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(182),
      SIMDE_POLY8_C( 33),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C( 92),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly8x16x4_t r_ = { { simde_vld1q_p8(test_vec[i].r0),
                                simde_vld1q_p8(test_vec[i].r1),
                                simde_vld1q_p8(test_vec[i].r2),
                                simde_vld1q_p8(test_vec[i].r3), } };

    simde_poly8_t a_[64];
    simde_vst4q_p8(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_p8(a_);
    simde_test_arm_neon_assert_equal_p8x16(r_.val[0], simde_vld1q_p8(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_p8x16(r_.val[1], simde_vld1q_p8(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_p8x16(r_.val[2], simde_vld1q_p8(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_poly8x16_t a0 = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t a1 = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t a2 = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t a3 = simde_test_arm_neon_random_p8x16();
    simde_poly8x16x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_p8x16(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x16(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_poly8_t buf[64];
    simde_vst4q_p8(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_p8(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_p16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly16_t r0[8];
    simde_poly16_t r1[8];
    simde_poly16_t r2[8];
    simde_poly16_t r3[8];
    simde_poly16_t a[32];
  } test_vec[] = {
    { { SIMDE_POLY16_C(15069), SIMDE_POLY16_C(48098), SIMDE_POLY16_C(50460), SIMDE_POLY16_C(57042), SIMDE_POLY16_C(60925), SIMDE_POLY16_C(31976), SIMDE_POLY16_C(20855), SIMDE_POLY16_C(12914) },
      { SIMDE_POLY16_C(15353), SIMDE_POLY16_C(16232), SIMDE_POLY16_C(47274), SIMDE_POLY16_C(46855), SIMDE_POLY16_C(31075), SIMDE_POLY16_C(46180), SIMDE_POLY16_C(53651), SIMDE_POLY16_C(28697) },
      { SIMDE_POLY16_C(64523), SIMDE_POLY16_C(10027), SIMDE_POLY16_C(64961), SIMDE_POLY16_C(48645), SIMDE_POLY16_C(60906), SIMDE_POLY16_C(24890), SIMDE_POLY16_C(44095), SIMDE_POLY16_C(14483) },
      { SIMDE_POLY16_C(64487), SIMDE_POLY16_C(37239), SIMDE_POLY16_C(32435), SIMDE_POLY16_C( 5705), SIMDE_POLY16_C(44535), SIMDE_POLY16_C(35531), SIMDE_POLY16_C(58494), SIMDE_POLY16_C(35322) },
      {
      SIMDE_POLY16_C(15069),
      SIMDE_POLY16_C(15353),
      SIMDE_POLY16_C(64523),
      SIMDE_POLY16_C(64487),
      SIMDE_POLY16_C(48098),
      SIMDE_POLY16_C(16232),
      SIMDE_POLY16_C(10027),
      SIMDE_POLY16_C(37239),
      SIMDE_POLY16_C(50460),
      SIMDE_POLY16_C(47274),
      SIMDE_POLY16_C(64961),
      SIMDE_POLY16_C(32435),
      SIMDE_POLY16_C(57042),
      SIMDE_POLY16_C(46855),
      SIMDE_POLY16_C(48645),
      SIMDE_POLY16_C( 5705),
      SIMDE_POLY16_C(60925),
      SIMDE_POLY16_C(31075),
      SIMDE_POLY16_C(60906),
      SIMDE_POLY16_C(44535),
      SIMDE_POLY16_C(31976),
      SIMDE_POLY16_C(46180),
      SIMDE_POLY16_C(24890),
      SIMDE_POLY16_C(35531),
      SIMDE_POLY16_C(20855),
      SIMDE_POLY16_C(53651),
      SIMDE_POLY16_C(44095),
      SIMDE_POLY16_C(58494),
      SIMDE_POLY16_C(12914),
      SIMDE_POLY16_C(28697),
      SIMDE_POLY16_C(14483),
      SIMDE_POLY16_C(35322),
      }
    },
    { { SIMDE_POLY16_C( 9696), SIMDE_POLY16_C(41393), SIMDE_POLY16_C(46626), SIMDE_POLY16_C( 3424), SIMDE_POLY16_C(39588), SIMDE_POLY16_C(58222), SIMDE_POLY16_C(  583), SIMDE_POLY16_C(11803) },
      { SIMDE_POLY16_C(37629), SIMDE_POLY16_C(45504), SIMDE_POLY16_C( 2321), SIMDE_POLY16_C( 2247), SIMDE_POLY16_C(37558), SIMDE_POLY16_C(13459), SIMDE_POLY16_C(36215), SIMDE_POLY16_C(22461) },
      { SIMDE_POLY16_C(28339), SIMDE_POLY16_C(54777), SIMDE_POLY16_C(22821), SIMDE_POLY16_C(51682), SIMDE_POLY16_C(20979), SIMDE_POLY16_C(15020), SIMDE_POLY16_C(51027), SIMDE_POLY16_C(20585) },
      { SIMDE_POLY16_C(10585), SIMDE_POLY16_C(27137), SIMDE_POLY16_C(51506), SIMDE_POLY16_C(59507), SIMDE_POLY16_C( 1627), SIMDE_POLY16_C(53788), SIMDE_POLY16_C(55699), SIMDE_POLY16_C(17962) },
      {
      SIMDE_POLY16_C( 9696),
      SIMDE_POLY16_C(37629),
      SIMDE_POLY16_C(28339),
      SIMDE_POLY16_C(10585),
      SIMDE_POLY16_C(41393),
      SIMDE_POLY16_C(45504),
      SIMDE_POLY16_C(54777),
      SIMDE_POLY16_C(27137),
      SIMDE_POLY16_C(46626),
      SIMDE_POLY16_C( 2321),
      SIMDE_POLY16_C(22821),
      SIMDE_POLY16_C(51506),
      SIMDE_POLY16_C( 3424),
      SIMDE_POLY16_C( 2247),
      SIMDE_POLY16_C(51682),
      SIMDE_POLY16_C(59507),
      SIMDE_POLY16_C(39588),
      SIMDE_POLY16_C(37558),
      SIMDE_POLY16_C(20979),
      SIMDE_POLY16_C( 1627),
      SIMDE_POLY16_C(58222),
      SIMDE_POLY16_C(13459),
      SIMDE_POLY16_C(15020),
      SIMDE_POLY16_C(53788),
      SIMDE_POLY16_C(  583),
      SIMDE_POLY16_C(36215),
      SIMDE_POLY16_C(51027),
      SIMDE_POLY16_C(55699),
      SIMDE_POLY16_C(11803),
      SIMDE_POLY16_C(22461),
      SIMDE_POLY16_C(20585),
      SIMDE_POLY16_C(17962),
      }
    },
    { { SIMDE_POLY16_C( 9032), SIMDE_POLY16_C(27932), SIMDE_POLY16_C(65148), SIMDE_POLY16_C(28470), SIMDE_POLY16_C(57935), SIMDE_POLY16_C(41642), SIMDE_POLY16_C( 5033), SIMDE_POLY16_C(  755) },
      { SIMDE_POLY16_C(62524), SIMDE_POLY16_C(28269), SIMDE_POLY16_C(57533), SIMDE_POLY16_C( 6486), SIMDE_POLY16_C(29414), SIMDE_POLY16_C(31211), SIMDE_POLY16_C( 5451), SIMDE_POLY16_C(37824) },
      { SIMDE_POLY16_C(56376), SIMDE_POLY16_C(46080), SIMDE_POLY16_C(14042), SIMDE_POLY16_C(10788), SIMDE_POLY16_C(52760), SIMDE_POLY16_C(49612), SIMDE_POLY16_C(49121), SIMDE_POLY16_C( 7620) },
      { SIMDE_POLY16_C(12724), SIMDE_POLY16_C(29067), SIMDE_POLY16_C(57617), SIMDE_POLY16_C(63370), SIMDE_POLY16_C(30291), SIMDE_POLY16_C(40560), SIMDE_POLY16_C(12427), SIMDE_POLY16_C(50226) },
      {
      SIMDE_POLY16_C( 9032),
      SIMDE_POLY16_C(62524),
      SIMDE_POLY16_C(56376),
      SIMDE_POLY16_C(12724),
      SIMDE_POLY16_C(27932),
      SIMDE_POLY16_C(28269),
      SIMDE_POLY16_C(46080),
      SIMDE_POLY16_C(29067),
      SIMDE_POLY16_C(65148),
      SIMDE_POLY16_C(57533),
      SIMDE_POLY16_C(14042),
      SIMDE_POLY16_C(57617),
      SIMDE_POLY16_C(28470),
      SIMDE_POLY16_C( 6486),
      SIMDE_POLY16_C(10788),
      SIMDE_POLY16_C(63370),
      SIMDE_POLY16_C(57935),
      SIMDE_POLY16_C(29414),
      SIMDE_POLY16_C(52760),
      SIMDE_POLY16_C(30291),
      SIMDE_POLY16_C(41642),
      SIMDE_POLY16_C(31211),
      SIMDE_POLY16_C(49612),
      SIMDE_POLY16_C(40560),
      SIMDE_POLY16_C( 5033),
      SIMDE_POLY16_C( 5451),
      SIMDE_POLY16_C(49121),
      SIMDE_POLY16_C(12427),
      SIMDE_POLY16_C(  755),
      SIMDE_POLY16_C(37824),
      SIMDE_POLY16_C( 7620),
      SIMDE_POLY16_C(50226),
      }
    },
    { { SIMDE_POLY16_C(12812), SIMDE_POLY16_C(59256), SIMDE_POLY16_C(40041), SIMDE_POLY16_C(33041), SIMDE_POLY16_C(56682), SIMDE_POLY16_C(19267), SIMDE_POLY16_C( 1949), SIMDE_POLY16_C(20840) },
      { SIMDE_POLY16_C(62264), SIMDE_POLY16_C(18882), SIMDE_POLY16_C(19924), SIMDE_POLY16_C(10048), SIMDE_POLY16_C(45251), SIMDE_POLY16_C(20166), SIMDE_POLY16_C(63713), SIMDE_POLY16_C(60690) },
      { SIMDE_POLY16_C(35626), SIMDE_POLY16_C(37844), SIMDE_POLY16_C(58663), SIMDE_POLY16_C(37397), SIMDE_POLY16_C(22723), SIMDE_POLY16_C(24797), SIMDE_POLY16_C(18015), SIMDE_POLY16_C(38833) },
      { SIMDE_POLY16_C(29497), SIMDE_POLY16_C( 3808), SIMDE_POLY16_C( 8384), SIMDE_POLY16_C(33589), SIMDE_POLY16_C(64464), SIMDE_POLY16_C(45522), SIMDE_POLY16_C(58611), SIMDE_POLY16_C( 7839) },
      {
      SIMDE_POLY16_C(12812),
      SIMDE_POLY16_C(62264),
      SIMDE_POLY16_C(35626),
      SIMDE_POLY16_C(29497),
      SIMDE_POLY16_C(59256),
      SIMDE_POLY16_C(18882),
      SIMDE_POLY16_C(37844),
      SIMDE_POLY16_C( 3808),
      SIMDE_POLY16_C(40041),
      SIMDE_POLY16_C(19924),
      SIMDE_POLY16_C(58663),
      SIMDE_POLY16_C( 8384),
      SIMDE_POLY16_C(33041),
      SIMDE_POLY16_C(10048),
      SIMDE_POLY16_C(37397),
      SIMDE_POLY16_C(33589),
      SIMDE_POLY16_C(56682),
      SIMDE_POLY16_C(45251),
      SIMDE_POLY16_C(22723),
      SIMDE_POLY16_C(64464),
      SIMDE_POLY16_C(19267),
      SIMDE_POLY16_C(20166),
      SIMDE_POLY16_C(24797),
      SIMDE_POLY16_C(45522),
      SIMDE_POLY16_C( 1949),
      SIMDE_POLY16_C(63713),
      SIMDE_POLY16_C(18015),
      SIMDE_POLY16_C(58611),
      SIMDE_POLY16_C(20840),
      SIMDE_POLY16_C(60690),
      SIMDE_POLY16_C(38833),
      SIMDE_POLY16_C( 7839),
      }
    },
    { { SIMDE_POLY16_C(29551), SIMDE_POLY16_C(38833), SIMDE_POLY16_C(50777), SIMDE_POLY16_C( 7209), SIMDE_POLY16_C( 1566), SIMDE_POLY16_C(32124), SIMDE_POLY16_C(11596), SIMDE_POLY16_C(34324) },
      { SIMDE_POLY16_C(62624), SIMDE_POLY16_C(24980), SIMDE_POLY16_C(51476), SIMDE_POLY16_C(58852), SIMDE_POLY16_C(46789), SIMDE_POLY16_C(47254), SIMDE_POLY16_C(13723), SIMDE_POLY16_C( 2774) },
      { SIMDE_POLY16_C(34985), SIMDE_POLY16_C(  673), SIMDE_POLY16_C(51790), SIMDE_POLY16_C(27934), SIMDE_POLY16_C(39633), SIMDE_POLY16_C( 7658), SIMDE_POLY16_C(65479), SIMDE_POLY16_C(26531) },
      { SIMDE_POLY16_C(14323), SIMDE_POLY16_C( 2248), SIMDE_POLY16_C(44289), SIMDE_POLY16_C(50925), SIMDE_POLY16_C(33635), SIMDE_POLY16_C(65150), SIMDE_POLY16_C(21945), SIMDE_POLY16_C(25097) },
      {
      SIMDE_POLY16_C(29551),
      SIMDE_POLY16_C(62624),
      SIMDE_POLY16_C(34985),
      SIMDE_POLY16_C(14323),
      SIMDE_POLY16_C(38833),
      SIMDE_POLY16_C(24980),
      SIMDE_POLY16_C(  673),
      SIMDE_POLY16_C( 2248),
      SIMDE_POLY16_C(50777),
      SIMDE_POLY16_C(51476),
      SIMDE_POLY16_C(51790),
      SIMDE_POLY16_C(44289),
      SIMDE_POLY16_C( 7209),
      SIMDE_POLY16_C(58852),
      SIMDE_POLY16_C(27934),
      SIMDE_POLY16_C(50925),
      SIMDE_POLY16_C( 1566),
      SIMDE_POLY16_C(46789),
      SIMDE_POLY16_C(39633),
      SIMDE_POLY16_C(33635),
      SIMDE_POLY16_C(32124),
      SIMDE_POLY16_C(47254),
      SIMDE_POLY16_C( 7658),
      SIMDE_POLY16_C(65150),
      SIMDE_POLY16_C(11596),
      SIMDE_POLY16_C(13723),
      SIMDE_POLY16_C(65479),
      SIMDE_POLY16_C(21945),
      SIMDE_POLY16_C(34324),
      SIMDE_POLY16_C( 2774),
      SIMDE_POLY16_C(26531),
      SIMDE_POLY16_C(25097),
      }
    },
    { { SIMDE_POLY16_C(43741), SIMDE_POLY16_C(11108), SIMDE_POLY16_C(33397), SIMDE_POLY16_C(18072), SIMDE_POLY16_C(33564), SIMDE_POLY16_C(58211), SIMDE_POLY16_C( 1922), SIMDE_POLY16_C(30026) },
      { SIMDE_POLY16_C( 4926), SIMDE_POLY16_C(16253), SIMDE_POLY16_C(27328), SIMDE_POLY16_C( 8965), SIMDE_POLY16_C(34030), SIMDE_POLY16_C(42786), SIMDE_POLY16_C(11225), SIMDE_POLY16_C(46601) },
      { SIMDE_POLY16_C(28117), SIMDE_POLY16_C(19169), SIMDE_POLY16_C(31471), SIMDE_POLY16_C( 2960), SIMDE_POLY16_C(62717), SIMDE_POLY16_C(32750), SIMDE_POLY16_C(14587), SIMDE_POLY16_C(14836) },
      { SIMDE_POLY16_C(29259), SIMDE_POLY16_C( 2937), SIMDE_POLY16_C(32476), SIMDE_POLY16_C(51759), SIMDE_POLY16_C(20738), SIMDE_POLY16_C(56177), SIMDE_POLY16_C(31356), SIMDE_POLY16_C(20881) },
      {
      SIMDE_POLY16_C(43741),
      SIMDE_POLY16_C( 4926),
      SIMDE_POLY16_C(28117),
      SIMDE_POLY16_C(29259),
      SIMDE_POLY16_C(11108),
      SIMDE_POLY16_C(16253),
      SIMDE_POLY16_C(19169),
      SIMDE_POLY16_C( 2937),
      SIMDE_POLY16_C(33397),
      SIMDE_POLY16_C(27328),
      SIMDE_POLY16_C(31471),
      SIMDE_POLY16_C(32476),
      SIMDE_POLY16_C(18072),
      SIMDE_POLY16_C( 8965),
      SIMDE_POLY16_C( 2960),
      SIMDE_POLY16_C(51759),
      SIMDE_POLY16_C(33564),
      SIMDE_POLY16_C(34030),
      SIMDE_POLY16_C(62717),
      SIMDE_POLY16_C(20738),
      SIMDE_POLY16_C(58211),
      SIMDE_POLY16_C(42786),
      SIMDE_POLY16_C(32750),
      SIMDE_POLY16_C(56177),
      SIMDE_POLY16_C( 1922),
      SIMDE_POLY16_C(11225),
      SIMDE_POLY16_C(14587),
      SIMDE_POLY16_C(31356),
      SIMDE_POLY16_C(30026),
      SIMDE_POLY16_C(46601),
      SIMDE_POLY16_C(14836),
      SIMDE_POLY16_C(20881),
      }
    },
    { { SIMDE_POLY16_C(29671), SIMDE_POLY16_C(54940), SIMDE_POLY16_C(11501), SIMDE_POLY16_C(60129), SIMDE_POLY16_C(53024), SIMDE_POLY16_C( 7017), SIMDE_POLY16_C(23816), SIMDE_POLY16_C(21333) },
      { SIMDE_POLY16_C(52943), SIMDE_POLY16_C(44127), SIMDE_POLY16_C(36428), SIMDE_POLY16_C(20342), SIMDE_POLY16_C(59615), SIMDE_POLY16_C(23338), SIMDE_POLY16_C(48226), SIMDE_POLY16_C(19116) },
      { SIMDE_POLY16_C(18479), SIMDE_POLY16_C( 7200), SIMDE_POLY16_C(  629), SIMDE_POLY16_C(38150), SIMDE_POLY16_C(28625), SIMDE_POLY16_C(55729), SIMDE_POLY16_C( 1740), SIMDE_POLY16_C(39981) },
      { SIMDE_POLY16_C(36052), SIMDE_POLY16_C( 8264), SIMDE_POLY16_C(48666), SIMDE_POLY16_C(63855), SIMDE_POLY16_C(39590), SIMDE_POLY16_C( 2388), SIMDE_POLY16_C(   86), SIMDE_POLY16_C(34131) },
      {
      SIMDE_POLY16_C(29671),
      SIMDE_POLY16_C(52943),
      SIMDE_POLY16_C(18479),
      SIMDE_POLY16_C(36052),
      SIMDE_POLY16_C(54940),
      SIMDE_POLY16_C(44127),
      SIMDE_POLY16_C( 7200),
      SIMDE_POLY16_C( 8264),
      SIMDE_POLY16_C(11501),
      SIMDE_POLY16_C(36428),
      SIMDE_POLY16_C(  629),
      SIMDE_POLY16_C(48666),
      SIMDE_POLY16_C(60129),
      SIMDE_POLY16_C(20342),
      SIMDE_POLY16_C(38150),
      SIMDE_POLY16_C(63855),
      SIMDE_POLY16_C(53024),
      SIMDE_POLY16_C(59615),
      SIMDE_POLY16_C(28625),
      SIMDE_POLY16_C(39590),
      SIMDE_POLY16_C( 7017),
      SIMDE_POLY16_C(23338),
      SIMDE_POLY16_C(55729),
      SIMDE_POLY16_C( 2388),
      SIMDE_POLY16_C(23816),
      SIMDE_POLY16_C(48226),
      SIMDE_POLY16_C( 1740),
      SIMDE_POLY16_C(   86),
      SIMDE_POLY16_C(21333),
      SIMDE_POLY16_C(19116),
      SIMDE_POLY16_C(39981),
      SIMDE_POLY16_C(34131),
      }
    },
    { { SIMDE_POLY16_C(29513), SIMDE_POLY16_C(48801), SIMDE_POLY16_C(42869), SIMDE_POLY16_C(18259), SIMDE_POLY16_C( 1046), SIMDE_POLY16_C(57888), SIMDE_POLY16_C(19722), SIMDE_POLY16_C(56958) },
      { SIMDE_POLY16_C(50905), SIMDE_POLY16_C(62463), SIMDE_POLY16_C(28293), SIMDE_POLY16_C(11244), SIMDE_POLY16_C(16392), SIMDE_POLY16_C(24116), SIMDE_POLY16_C(34625), SIMDE_POLY16_C(35555) },
      { SIMDE_POLY16_C(34043), SIMDE_POLY16_C(28744), SIMDE_POLY16_C(39723), SIMDE_POLY16_C(16823), SIMDE_POLY16_C(55456), SIMDE_POLY16_C(43556), SIMDE_POLY16_C(41509), SIMDE_POLY16_C(65417) },
      { SIMDE_POLY16_C(34921), SIMDE_POLY16_C(61170), SIMDE_POLY16_C(57334), SIMDE_POLY16_C(65305), SIMDE_POLY16_C(19999), SIMDE_POLY16_C(24669), SIMDE_POLY16_C(16853), SIMDE_POLY16_C(53482) },
      {
      SIMDE_POLY16_C(29513),
      SIMDE_POLY16_C(50905),
      SIMDE_POLY16_C(34043),
      SIMDE_POLY16_C(34921),
      SIMDE_POLY16_C(48801),
      SIMDE_POLY16_C(62463),
      SIMDE_POLY16_C(28744),
      SIMDE_POLY16_C(61170),
      SIMDE_POLY16_C(42869),
      SIMDE_POLY16_C(28293),
      SIMDE_POLY16_C(39723),
      SIMDE_POLY16_C(57334),
      SIMDE_POLY16_C(18259),
      SIMDE_POLY16_C(11244),
      SIMDE_POLY16_C(16823),
      SIMDE_POLY16_C(65305),
      SIMDE_POLY16_C( 1046),
      SIMDE_POLY16_C(16392),
      SIMDE_POLY16_C(55456),
      SIMDE_POLY16_C(19999),
      SIMDE_POLY16_C(57888),
      SIMDE_POLY16_C(24116),
      SIMDE_POLY16_C(43556),
      SIMDE_POLY16_C(24669),
      SIMDE_POLY16_C(19722),
      SIMDE_POLY16_C(34625),
      SIMDE_POLY16_C(41509),
      SIMDE_POLY16_C(16853),
      SIMDE_POLY16_C(56958),
      SIMDE_POLY16_C(35555),
      SIMDE_POLY16_C(65417),
      SIMDE_POLY16_C(53482),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly16x8x4_t r_ = { { simde_vld1q_p16(test_vec[i].r0),
                                simde_vld1q_p16(test_vec[i].r1),
                                simde_vld1q_p16(test_vec[i].r2),
                                simde_vld1q_p16(test_vec[i].r3), } };

    simde_poly16_t a_[32];
    simde_vst4q_p16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_p16(a_);
    simde_test_arm_neon_assert_equal_p16x8(r_.val[0], simde_vld1q_p16(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_p16x8(r_.val[1], simde_vld1q_p16(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_p16x8(r_.val[2], simde_vld1q_p16(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_poly16x8_t a0 = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t a1 = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t a2 = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t a3 = simde_test_arm_neon_random_p16x8();
    simde_poly16x8x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_p16x8(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x8(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_poly16_t buf[32];
    simde_vst4q_p16(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])) ; j++) {
      simde_test_codegen_write_p16(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4q_p64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_poly64_t r0[2];
    simde_poly64_t r1[2];
    simde_poly64_t r2[2];
    simde_poly64_t r3[2];
    simde_poly64_t a[8];
  } test_vec[] = {
    { { SIMDE_POLY64_C(10037403692393182480), SIMDE_POLY64_C( 8361711425298189690) },
      { SIMDE_POLY64_C(12218369200614863841), SIMDE_POLY64_C( 2381342151739302120) },
      { SIMDE_POLY64_C(15453747378136373104), SIMDE_POLY64_C( 6105776580658310922) },
      { SIMDE_POLY64_C( 4376731735500977414), SIMDE_POLY64_C( 8959977481816756774) },
      {
      SIMDE_POLY64_C(10037403692393182480),
      SIMDE_POLY64_C(12218369200614863841),
      SIMDE_POLY64_C(15453747378136373104),
      SIMDE_POLY64_C( 4376731735500977414),
      SIMDE_POLY64_C( 8361711425298189690),
      SIMDE_POLY64_C( 2381342151739302120),
      SIMDE_POLY64_C( 6105776580658310922),
      SIMDE_POLY64_C( 8959977481816756774),
      }
    },
    { { SIMDE_POLY64_C(10431987683485534611), SIMDE_POLY64_C(16741170512735555212) },
      { SIMDE_POLY64_C( 8510035628354374282), SIMDE_POLY64_C( 1734736352801278346) },
      { SIMDE_POLY64_C(16421474816743668430), SIMDE_POLY64_C(15880597538443869594) },
      { SIMDE_POLY64_C(11675532657163853633), SIMDE_POLY64_C( 9779932425969316892) },
      {
      SIMDE_POLY64_C(10431987683485534611),
      SIMDE_POLY64_C( 8510035628354374282),
      SIMDE_POLY64_C(16421474816743668430),
      SIMDE_POLY64_C(11675532657163853633),
      SIMDE_POLY64_C(16741170512735555212),
      SIMDE_POLY64_C( 1734736352801278346),
      SIMDE_POLY64_C(15880597538443869594),
      SIMDE_POLY64_C( 9779932425969316892),
      }
    },
    { { SIMDE_POLY64_C( 2738962131928727751), SIMDE_POLY64_C( 6749212612852049276) },
      { SIMDE_POLY64_C( 5989212698123854948), SIMDE_POLY64_C( 7703879554845398697) },
      { SIMDE_POLY64_C(    8878023709869165), SIMDE_POLY64_C( 3019797439513018479) },
      { SIMDE_POLY64_C( 8387887008481400541), SIMDE_POLY64_C( 8441644595801381657) },
      {
      SIMDE_POLY64_C( 2738962131928727751),
      SIMDE_POLY64_C( 5989212698123854948),
      SIMDE_POLY64_C(    8878023709869165),
      SIMDE_POLY64_C( 8387887008481400541),
      SIMDE_POLY64_C( 6749212612852049276),
      SIMDE_POLY64_C( 7703879554845398697),
      SIMDE_POLY64_C( 3019797439513018479),
      SIMDE_POLY64_C( 8441644595801381657),
      }
    },
    { { SIMDE_POLY64_C(12107801399286214275), SIMDE_POLY64_C( 3115396163888797005) },
      { SIMDE_POLY64_C(13633423723477328371), SIMDE_POLY64_C( 5512018679744235777) },
      { SIMDE_POLY64_C(14352790015444249677), SIMDE_POLY64_C( 8262441203209495344) },
      { SIMDE_POLY64_C(10473512980685384184), SIMDE_POLY64_C(13727844063193584237) },
      {
      SIMDE_POLY64_C(12107801399286214275),
      SIMDE_POLY64_C(13633423723477328371),
      SIMDE_POLY64_C(14352790015444249677),
      SIMDE_POLY64_C(10473512980685384184),
      SIMDE_POLY64_C( 3115396163888797005),
      SIMDE_POLY64_C( 5512018679744235777),
      SIMDE_POLY64_C( 8262441203209495344),
      SIMDE_POLY64_C(13727844063193584237),
      }
    },
    { { SIMDE_POLY64_C( 7009417625986258438), SIMDE_POLY64_C( 3443434260875124951) },
      { SIMDE_POLY64_C(14669389872461773427), SIMDE_POLY64_C( 5703111053441904630) },
      { SIMDE_POLY64_C(13109158135934642779), SIMDE_POLY64_C(14527439590170348853) },
      { SIMDE_POLY64_C( 9293285077180769999), SIMDE_POLY64_C(15791886936142510736) },
      {
      SIMDE_POLY64_C( 7009417625986258438),
      SIMDE_POLY64_C(14669389872461773427),
      SIMDE_POLY64_C(13109158135934642779),
      SIMDE_POLY64_C( 9293285077180769999),
      SIMDE_POLY64_C( 3443434260875124951),
      SIMDE_POLY64_C( 5703111053441904630),
      SIMDE_POLY64_C(14527439590170348853),
      SIMDE_POLY64_C(15791886936142510736),
      }
    },
    { { SIMDE_POLY64_C( 4686933348686755703), SIMDE_POLY64_C(13493428713541211938) },
      { SIMDE_POLY64_C(   52883688490798768), SIMDE_POLY64_C( 2825448768405086939) },
      { SIMDE_POLY64_C( 1461005702183886329), SIMDE_POLY64_C(17170201446903051424) },
      { SIMDE_POLY64_C(17099573023644070109), SIMDE_POLY64_C( 2403935012266714758) },
      {
      SIMDE_POLY64_C( 4686933348686755703),
      SIMDE_POLY64_C(   52883688490798768),
      SIMDE_POLY64_C( 1461005702183886329),
      SIMDE_POLY64_C(17099573023644070109),
      SIMDE_POLY64_C(13493428713541211938),
      SIMDE_POLY64_C( 2825448768405086939),
      SIMDE_POLY64_C(17170201446903051424),
      SIMDE_POLY64_C( 2403935012266714758),
      }
    },
    { { SIMDE_POLY64_C(  153805605195667739), SIMDE_POLY64_C( 6669222462536724321) },
      { SIMDE_POLY64_C( 2235463927463523847), SIMDE_POLY64_C(16674210156985535772) },
      { SIMDE_POLY64_C( 6624539943386844555), SIMDE_POLY64_C( 6602708424234597831) },
      { SIMDE_POLY64_C( 6771013884191132222), SIMDE_POLY64_C( 9905958744852942022) },
      {
      SIMDE_POLY64_C(  153805605195667739),
      SIMDE_POLY64_C( 2235463927463523847),
      SIMDE_POLY64_C( 6624539943386844555),
      SIMDE_POLY64_C( 6771013884191132222),
      SIMDE_POLY64_C( 6669222462536724321),
      SIMDE_POLY64_C(16674210156985535772),
      SIMDE_POLY64_C( 6602708424234597831),
      SIMDE_POLY64_C( 9905958744852942022),
      }
    },
    { { SIMDE_POLY64_C( 5542635390721486485), SIMDE_POLY64_C(12506834188639594210) },
      { SIMDE_POLY64_C( 4907653102754399614), SIMDE_POLY64_C( 6579846770763152841) },
      { SIMDE_POLY64_C(  977235125474150077), SIMDE_POLY64_C(15264904023753630140) },
      { SIMDE_POLY64_C(11717712954493328602), SIMDE_POLY64_C( 9262982781576246122) },
      {
      SIMDE_POLY64_C( 5542635390721486485),
      SIMDE_POLY64_C( 4907653102754399614),
      SIMDE_POLY64_C(  977235125474150077),
      SIMDE_POLY64_C(11717712954493328602),
      SIMDE_POLY64_C(12506834188639594210),
      SIMDE_POLY64_C( 6579846770763152841),
      SIMDE_POLY64_C(15264904023753630140),
      SIMDE_POLY64_C( 9262982781576246122),
      }
    },

  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_poly64x2x4_t r_ = { { simde_vld1q_p64(test_vec[i].r0),
                                simde_vld1q_p64(test_vec[i].r1),
                                simde_vld1q_p64(test_vec[i].r2),
                                simde_vld1q_p64(test_vec[i].r3), } };

    simde_poly64_t a_[8];
    simde_vst4q_p64(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_p64(a_);
    simde_test_arm_neon_assert_equal_p64x2(r_.val[0], simde_vld1q_p64(test_vec[i].r0));
    simde_test_arm_neon_assert_equal_p64x2(r_.val[1], simde_vld1q_p64(test_vec[i].r1));
    simde_test_arm_neon_assert_equal_p64x2(r_.val[2], simde_vld1q_p64(test_vec[i].r2));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (size_t i = 0 ; i < 8 ; i++) {
    simde_poly64x2_t a0 = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t a1 = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t a2 = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t a3 = simde_test_arm_neon_random_p64x2();
    simde_poly64x2x4_t a = { { a0, a1, a2, a3 } };
    simde_test_arm_neon_write_p64x2(2, a0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x2(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_poly64_t buf[8];
    simde_vst4q_p64(buf, a);

    printf("      {\n");
    for (size_t j = 0; j < (sizeof(buf) / sizeof(buf[0])); j++) {
      simde_test_codegen_write_p64(2, buf[j], SIMDE_TEST_VEC_POS_MIDDLE);
    }
    printf("      }\n    },\n");
  }
  return 1;
#endif
}

static int
test_simde_vst4_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16 r0[4];
    simde_bfloat16 r1[4];
    simde_bfloat16 r2[4];
    simde_bfloat16 r3[4];
    simde_bfloat16 a[16];
  } test_vec[] = {
    { { SIMDE_BFLOAT16_VALUE( - 47.024),  SIMDE_BFLOAT16_VALUE(  6.719),  SIMDE_BFLOAT16_VALUE( 41.219),  SIMDE_BFLOAT16_VALUE( 13.593) },
      { SIMDE_BFLOAT16_VALUE( - 94.191),  SIMDE_BFLOAT16_VALUE( 54.699),  SIMDE_BFLOAT16_VALUE( 93.339), SIMDE_BFLOAT16_VALUE( - 70.910) },
      { SIMDE_BFLOAT16_VALUE( - 57.135), SIMDE_BFLOAT16_VALUE( - 74.250),  SIMDE_BFLOAT16_VALUE( 44.190), SIMDE_BFLOAT16_VALUE( - 50.049) },
      {  SIMDE_BFLOAT16_VALUE(  4.436),  SIMDE_BFLOAT16_VALUE( 57.399),  SIMDE_BFLOAT16_VALUE( 71.170), SIMDE_BFLOAT16_VALUE( - 90.745) },
      { SIMDE_BFLOAT16_VALUE( - 47.024), SIMDE_BFLOAT16_VALUE( - 94.191), SIMDE_BFLOAT16_VALUE( - 57.135),  SIMDE_BFLOAT16_VALUE(  4.436),
         SIMDE_BFLOAT16_VALUE(  6.719),  SIMDE_BFLOAT16_VALUE( 54.699), SIMDE_BFLOAT16_VALUE( - 74.250),  SIMDE_BFLOAT16_VALUE( 57.399),
         SIMDE_BFLOAT16_VALUE( 41.219),  SIMDE_BFLOAT16_VALUE( 93.339),  SIMDE_BFLOAT16_VALUE( 44.190),  SIMDE_BFLOAT16_VALUE( 71.170),
         SIMDE_BFLOAT16_VALUE( 13.593), SIMDE_BFLOAT16_VALUE( - 70.910), SIMDE_BFLOAT16_VALUE( - 50.049), SIMDE_BFLOAT16_VALUE( - 90.745) } },
    { { SIMDE_BFLOAT16_VALUE( - 57.272), SIMDE_BFLOAT16_VALUE( - 89.707),  SIMDE_BFLOAT16_VALUE( 23.428), SIMDE_BFLOAT16_VALUE( -  9.662) },
      { SIMDE_BFLOAT16_VALUE( - 66.994), SIMDE_BFLOAT16_VALUE( - 28.587), SIMDE_BFLOAT16_VALUE( - 24.075),  SIMDE_BFLOAT16_VALUE( 72.816) },
      {  SIMDE_BFLOAT16_VALUE( 87.704),  SIMDE_BFLOAT16_VALUE( 11.476), SIMDE_BFLOAT16_VALUE( -  9.653),  SIMDE_BFLOAT16_VALUE( 93.611) },
      {  SIMDE_BFLOAT16_VALUE( 96.922),  SIMDE_BFLOAT16_VALUE( 35.294),  SIMDE_BFLOAT16_VALUE(  9.081),  SIMDE_BFLOAT16_VALUE( 56.455) },
      { SIMDE_BFLOAT16_VALUE( - 57.272), SIMDE_BFLOAT16_VALUE( - 66.994),  SIMDE_BFLOAT16_VALUE( 87.704),  SIMDE_BFLOAT16_VALUE( 96.922),
        SIMDE_BFLOAT16_VALUE( - 89.707), SIMDE_BFLOAT16_VALUE( - 28.587),  SIMDE_BFLOAT16_VALUE( 11.476),  SIMDE_BFLOAT16_VALUE( 35.294),
         SIMDE_BFLOAT16_VALUE( 23.428), SIMDE_BFLOAT16_VALUE( - 24.075), SIMDE_BFLOAT16_VALUE( -  9.653),  SIMDE_BFLOAT16_VALUE(  9.081),
        SIMDE_BFLOAT16_VALUE( -  9.662),  SIMDE_BFLOAT16_VALUE( 72.816),  SIMDE_BFLOAT16_VALUE( 93.611),  SIMDE_BFLOAT16_VALUE( 56.455) } },
    { { SIMDE_BFLOAT16_VALUE( - 93.105), SIMDE_BFLOAT16_VALUE( -  3.401),  SIMDE_BFLOAT16_VALUE( 38.259), SIMDE_BFLOAT16_VALUE( - 77.939) },
      { SIMDE_BFLOAT16_VALUE( - 61.605), SIMDE_BFLOAT16_VALUE( - 53.766), SIMDE_BFLOAT16_VALUE( - 79.385),  SIMDE_BFLOAT16_VALUE( 51.701) },
      { SIMDE_BFLOAT16_VALUE( - 13.690),  SIMDE_BFLOAT16_VALUE( 61.359), SIMDE_BFLOAT16_VALUE( - 48.410),  SIMDE_BFLOAT16_VALUE( 83.577) },
      { SIMDE_BFLOAT16_VALUE( - 31.493),  SIMDE_BFLOAT16_VALUE( 67.547), SIMDE_BFLOAT16_VALUE( - 49.486), SIMDE_BFLOAT16_VALUE( - 70.863) },
      { SIMDE_BFLOAT16_VALUE( - 93.105), SIMDE_BFLOAT16_VALUE( - 61.605), SIMDE_BFLOAT16_VALUE( - 13.690), SIMDE_BFLOAT16_VALUE( - 31.493),
        SIMDE_BFLOAT16_VALUE( -  3.401), SIMDE_BFLOAT16_VALUE( - 53.766),  SIMDE_BFLOAT16_VALUE( 61.359),  SIMDE_BFLOAT16_VALUE( 67.547),
         SIMDE_BFLOAT16_VALUE( 38.259), SIMDE_BFLOAT16_VALUE( - 79.385), SIMDE_BFLOAT16_VALUE( - 48.410), SIMDE_BFLOAT16_VALUE( - 49.486),
        SIMDE_BFLOAT16_VALUE( - 77.939),  SIMDE_BFLOAT16_VALUE( 51.701),  SIMDE_BFLOAT16_VALUE( 83.577), SIMDE_BFLOAT16_VALUE( - 70.863) } },
    { { SIMDE_BFLOAT16_VALUE( - 59.131), SIMDE_BFLOAT16_VALUE( - 86.919),  SIMDE_BFLOAT16_VALUE( 79.472), SIMDE_BFLOAT16_VALUE( -  8.816) },
      {  SIMDE_BFLOAT16_VALUE(  1.504), SIMDE_BFLOAT16_VALUE( - 19.699), SIMDE_BFLOAT16_VALUE( - 54.045),  SIMDE_BFLOAT16_VALUE( 80.818) },
      {  SIMDE_BFLOAT16_VALUE( 96.502),  SIMDE_BFLOAT16_VALUE( 74.467), SIMDE_BFLOAT16_VALUE( - 62.320), SIMDE_BFLOAT16_VALUE( - 13.596) },
      {  SIMDE_BFLOAT16_VALUE( 93.177), SIMDE_BFLOAT16_VALUE( - 66.739), SIMDE_BFLOAT16_VALUE( - 38.338),  SIMDE_BFLOAT16_VALUE( 99.656) },
      { SIMDE_BFLOAT16_VALUE( - 59.131),  SIMDE_BFLOAT16_VALUE(  1.504),  SIMDE_BFLOAT16_VALUE( 96.502),  SIMDE_BFLOAT16_VALUE( 93.177),
        SIMDE_BFLOAT16_VALUE( - 86.919), SIMDE_BFLOAT16_VALUE( - 19.699),  SIMDE_BFLOAT16_VALUE( 74.467), SIMDE_BFLOAT16_VALUE( - 66.739),
         SIMDE_BFLOAT16_VALUE( 79.472), SIMDE_BFLOAT16_VALUE( - 54.045), SIMDE_BFLOAT16_VALUE( - 62.320), SIMDE_BFLOAT16_VALUE( - 38.338),
        SIMDE_BFLOAT16_VALUE( -  8.816),  SIMDE_BFLOAT16_VALUE( 80.818), SIMDE_BFLOAT16_VALUE( - 13.596),  SIMDE_BFLOAT16_VALUE( 99.656) } },
    { { SIMDE_BFLOAT16_VALUE( - 37.162),  SIMDE_BFLOAT16_VALUE( 16.071),  SIMDE_BFLOAT16_VALUE( 53.822),  SIMDE_BFLOAT16_VALUE( 26.764) },
      {  SIMDE_BFLOAT16_VALUE( 12.408),  SIMDE_BFLOAT16_VALUE( 83.245), SIMDE_BFLOAT16_VALUE( - 72.788),  SIMDE_BFLOAT16_VALUE( 33.763) },
      {  SIMDE_BFLOAT16_VALUE( 62.702),  SIMDE_BFLOAT16_VALUE( 47.064), SIMDE_BFLOAT16_VALUE( - 22.343), SIMDE_BFLOAT16_VALUE( - 73.798) },
      {  SIMDE_BFLOAT16_VALUE( 47.563), SIMDE_BFLOAT16_VALUE( - 15.230), SIMDE_BFLOAT16_VALUE( - 20.486),  SIMDE_BFLOAT16_VALUE(  9.512) },
      { SIMDE_BFLOAT16_VALUE( - 37.162),  SIMDE_BFLOAT16_VALUE( 12.408),  SIMDE_BFLOAT16_VALUE( 62.702),  SIMDE_BFLOAT16_VALUE( 47.563),
         SIMDE_BFLOAT16_VALUE( 16.071),  SIMDE_BFLOAT16_VALUE( 83.245),  SIMDE_BFLOAT16_VALUE( 47.064), SIMDE_BFLOAT16_VALUE( - 15.230),
         SIMDE_BFLOAT16_VALUE( 53.822), SIMDE_BFLOAT16_VALUE( - 72.788), SIMDE_BFLOAT16_VALUE( - 22.343), SIMDE_BFLOAT16_VALUE( - 20.486),
         SIMDE_BFLOAT16_VALUE( 26.764),  SIMDE_BFLOAT16_VALUE( 33.763), SIMDE_BFLOAT16_VALUE( - 73.798),  SIMDE_BFLOAT16_VALUE(  9.512) } },
    { {  SIMDE_BFLOAT16_VALUE( 81.267), SIMDE_BFLOAT16_VALUE( - 14.419), SIMDE_BFLOAT16_VALUE( - 86.910),  SIMDE_BFLOAT16_VALUE( 96.117) },
      {  SIMDE_BFLOAT16_VALUE( 63.922), SIMDE_BFLOAT16_VALUE( - 13.784),  SIMDE_BFLOAT16_VALUE( 60.900), SIMDE_BFLOAT16_VALUE( - 46.465) },
      { SIMDE_BFLOAT16_VALUE( -  8.848), SIMDE_BFLOAT16_VALUE( - 38.930), SIMDE_BFLOAT16_VALUE( - 83.013), SIMDE_BFLOAT16_VALUE( - 82.394) },
      { SIMDE_BFLOAT16_VALUE( - 76.512),  SIMDE_BFLOAT16_VALUE( 98.430), SIMDE_BFLOAT16_VALUE( - 36.632),  SIMDE_BFLOAT16_VALUE( 72.951) },
      {  SIMDE_BFLOAT16_VALUE( 81.267),  SIMDE_BFLOAT16_VALUE( 63.922), SIMDE_BFLOAT16_VALUE( -  8.848), SIMDE_BFLOAT16_VALUE( - 76.512),
        SIMDE_BFLOAT16_VALUE( - 14.419), SIMDE_BFLOAT16_VALUE( - 13.784), SIMDE_BFLOAT16_VALUE( - 38.930),  SIMDE_BFLOAT16_VALUE( 98.430),
        SIMDE_BFLOAT16_VALUE( - 86.910),  SIMDE_BFLOAT16_VALUE( 60.900), SIMDE_BFLOAT16_VALUE( - 83.013), SIMDE_BFLOAT16_VALUE( - 36.632),
         SIMDE_BFLOAT16_VALUE( 96.117), SIMDE_BFLOAT16_VALUE( - 46.465), SIMDE_BFLOAT16_VALUE( - 82.394),  SIMDE_BFLOAT16_VALUE( 72.951) } },
    { { SIMDE_BFLOAT16_VALUE( - 59.414), SIMDE_BFLOAT16_VALUE( -  0.156),  SIMDE_BFLOAT16_VALUE( 25.048),  SIMDE_BFLOAT16_VALUE( 72.088) },
      { SIMDE_BFLOAT16_VALUE( -  6.793),  SIMDE_BFLOAT16_VALUE(  3.483), SIMDE_BFLOAT16_VALUE( - 70.169), SIMDE_BFLOAT16_VALUE( - 17.526) },
      { SIMDE_BFLOAT16_VALUE( - 45.584),  SIMDE_BFLOAT16_VALUE( 48.819),  SIMDE_BFLOAT16_VALUE( 99.172), SIMDE_BFLOAT16_VALUE( - 28.748) },
      {  SIMDE_BFLOAT16_VALUE( 87.589),  SIMDE_BFLOAT16_VALUE( 24.842),  SIMDE_BFLOAT16_VALUE( 68.343),  SIMDE_BFLOAT16_VALUE( 86.487) },
      { SIMDE_BFLOAT16_VALUE( - 59.414), SIMDE_BFLOAT16_VALUE( -  6.793), SIMDE_BFLOAT16_VALUE( - 45.584),  SIMDE_BFLOAT16_VALUE( 87.589),
        SIMDE_BFLOAT16_VALUE( -  0.156),  SIMDE_BFLOAT16_VALUE(  3.483),  SIMDE_BFLOAT16_VALUE( 48.819),  SIMDE_BFLOAT16_VALUE( 24.842),
         SIMDE_BFLOAT16_VALUE( 25.048), SIMDE_BFLOAT16_VALUE( - 70.169),  SIMDE_BFLOAT16_VALUE( 99.172),  SIMDE_BFLOAT16_VALUE( 68.343),
         SIMDE_BFLOAT16_VALUE( 72.088), SIMDE_BFLOAT16_VALUE( - 17.526), SIMDE_BFLOAT16_VALUE( - 28.748),  SIMDE_BFLOAT16_VALUE( 86.487) } },
    { { SIMDE_BFLOAT16_VALUE( - 20.140), SIMDE_BFLOAT16_VALUE( - 42.975),  SIMDE_BFLOAT16_VALUE( 95.423),  SIMDE_BFLOAT16_VALUE( 44.578) },
      { SIMDE_BFLOAT16_VALUE( - 89.956),  SIMDE_BFLOAT16_VALUE( 30.266), SIMDE_BFLOAT16_VALUE( - 96.275), SIMDE_BFLOAT16_VALUE( - 86.081) },
      { SIMDE_BFLOAT16_VALUE( - 51.282),  SIMDE_BFLOAT16_VALUE( 69.208),  SIMDE_BFLOAT16_VALUE( 62.760),  SIMDE_BFLOAT16_VALUE( 60.084) },
      {  SIMDE_BFLOAT16_VALUE( 50.762),  SIMDE_BFLOAT16_VALUE( 51.328), SIMDE_BFLOAT16_VALUE( -  5.349),  SIMDE_BFLOAT16_VALUE(  8.335) },
      { SIMDE_BFLOAT16_VALUE( - 20.140), SIMDE_BFLOAT16_VALUE( - 89.956), SIMDE_BFLOAT16_VALUE( - 51.282),  SIMDE_BFLOAT16_VALUE( 50.762),
        SIMDE_BFLOAT16_VALUE( - 42.975),  SIMDE_BFLOAT16_VALUE( 30.266),  SIMDE_BFLOAT16_VALUE( 69.208),  SIMDE_BFLOAT16_VALUE( 51.328),
         SIMDE_BFLOAT16_VALUE( 95.423), SIMDE_BFLOAT16_VALUE( - 96.275),  SIMDE_BFLOAT16_VALUE( 62.760), SIMDE_BFLOAT16_VALUE( -  5.349),
         SIMDE_BFLOAT16_VALUE( 44.578), SIMDE_BFLOAT16_VALUE( - 86.081),  SIMDE_BFLOAT16_VALUE( 60.084),  SIMDE_BFLOAT16_VALUE(  8.335) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_bfloat16x4x4_t r_ = { { simde_vld1_bf16(test_vec[i].r0),
                                 simde_vld1_bf16(test_vec[i].r1),
                                 simde_vld1_bf16(test_vec[i].r2),
                                 simde_vld1_bf16(test_vec[i].r3), } };

    simde_bfloat16 a_[16];
    simde_vst4_bf16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4_bf16(a_);
    simde_test_arm_neon_assert_equal_bf16x4(r_.val[0], simde_vld1_bf16(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r_.val[1], simde_vld1_bf16(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r_.val[2], simde_vld1_bf16(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_bf16x4(r_.val[3], simde_vld1_bf16(test_vec[i].r3), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_bfloat16x4_t r0 = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
    simde_bfloat16x4_t r1 = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
    simde_bfloat16x4_t r2 = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
    simde_bfloat16x4_t r3 = simde_test_arm_neon_random_bf16x4(-100.0f, 100.0f);
    simde_bfloat16x16_t a = simde_vst4_bf16(r0, r1, r2, r3);

    simde_test_arm_neon_write_bf16x4(2, r0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_bf16x4(2, r1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x4(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x16(2, a, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst4q_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16 r0[8];
    simde_bfloat16 r1[8];
    simde_bfloat16 r2[8];
    simde_bfloat16 r3[8];
    simde_bfloat16 a[32];
  } test_vec[] = {
    { { SIMDE_BFLOAT16_VALUE( - 14.743),  SIMDE_BFLOAT16_VALUE( 96.869),  SIMDE_BFLOAT16_VALUE( 35.732), SIMDE_BFLOAT16_VALUE( - 11.204),
        SIMDE_BFLOAT16_VALUE( - 36.507), SIMDE_BFLOAT16_VALUE( - 87.762), SIMDE_BFLOAT16_VALUE( - 30.140),  SIMDE_BFLOAT16_VALUE( 40.553) },
      {  SIMDE_BFLOAT16_VALUE( 90.636), SIMDE_BFLOAT16_VALUE( - 74.102), SIMDE_BFLOAT16_VALUE( - 11.935),  SIMDE_BFLOAT16_VALUE( 76.173),
        SIMDE_BFLOAT16_VALUE( - 60.016), SIMDE_BFLOAT16_VALUE( - 12.468), SIMDE_BFLOAT16_VALUE( - 42.341), SIMDE_BFLOAT16_VALUE( - 48.188) },
      { SIMDE_BFLOAT16_VALUE( - 65.064), SIMDE_BFLOAT16_VALUE( - 77.067), SIMDE_BFLOAT16_VALUE( -  3.798),  SIMDE_BFLOAT16_VALUE( 78.248),
        SIMDE_BFLOAT16_VALUE( - 75.705), SIMDE_BFLOAT16_VALUE( - 81.300),  SIMDE_BFLOAT16_VALUE( 41.755),  SIMDE_BFLOAT16_VALUE(  0.822) },
      {  SIMDE_BFLOAT16_VALUE( 45.696), SIMDE_BFLOAT16_VALUE( - 91.718),  SIMDE_BFLOAT16_VALUE( 81.433),  SIMDE_BFLOAT16_VALUE( 42.239),
         SIMDE_BFLOAT16_VALUE( 70.791),  SIMDE_BFLOAT16_VALUE( 21.361),  SIMDE_BFLOAT16_VALUE( 51.896), SIMDE_BFLOAT16_VALUE( - 38.175) },
      { SIMDE_BFLOAT16_VALUE( - 14.743),  SIMDE_BFLOAT16_VALUE( 90.636), SIMDE_BFLOAT16_VALUE( - 65.064),  SIMDE_BFLOAT16_VALUE( 45.696),
         SIMDE_BFLOAT16_VALUE( 96.869), SIMDE_BFLOAT16_VALUE( - 74.102), SIMDE_BFLOAT16_VALUE( - 77.067), SIMDE_BFLOAT16_VALUE( - 91.718),
         SIMDE_BFLOAT16_VALUE( 35.732), SIMDE_BFLOAT16_VALUE( - 11.935), SIMDE_BFLOAT16_VALUE( -  3.798),  SIMDE_BFLOAT16_VALUE( 81.433),
        SIMDE_BFLOAT16_VALUE( - 11.204),  SIMDE_BFLOAT16_VALUE( 76.173),  SIMDE_BFLOAT16_VALUE( 78.248),  SIMDE_BFLOAT16_VALUE( 42.239),
        SIMDE_BFLOAT16_VALUE( - 36.507), SIMDE_BFLOAT16_VALUE( - 60.016), SIMDE_BFLOAT16_VALUE( - 75.705),  SIMDE_BFLOAT16_VALUE( 70.791),
        SIMDE_BFLOAT16_VALUE( - 87.762), SIMDE_BFLOAT16_VALUE( - 12.468), SIMDE_BFLOAT16_VALUE( - 81.300),  SIMDE_BFLOAT16_VALUE( 21.361),
        SIMDE_BFLOAT16_VALUE( - 30.140), SIMDE_BFLOAT16_VALUE( - 42.341),  SIMDE_BFLOAT16_VALUE( 41.755),  SIMDE_BFLOAT16_VALUE( 51.896),
         SIMDE_BFLOAT16_VALUE( 40.553), SIMDE_BFLOAT16_VALUE( - 48.188),  SIMDE_BFLOAT16_VALUE(  0.822), SIMDE_BFLOAT16_VALUE( - 38.175) } },
    { {  SIMDE_BFLOAT16_VALUE( 20.836), SIMDE_BFLOAT16_VALUE( -  6.255),  SIMDE_BFLOAT16_VALUE( 79.168),  SIMDE_BFLOAT16_VALUE( 29.039),
         SIMDE_BFLOAT16_VALUE( 96.927),  SIMDE_BFLOAT16_VALUE( 41.696), SIMDE_BFLOAT16_VALUE( - 42.924), SIMDE_BFLOAT16_VALUE( -  7.066) },
      {  SIMDE_BFLOAT16_VALUE( 14.370),  SIMDE_BFLOAT16_VALUE(  7.192), SIMDE_BFLOAT16_VALUE( - 88.540),  SIMDE_BFLOAT16_VALUE( 13.116),
         SIMDE_BFLOAT16_VALUE( 64.603), SIMDE_BFLOAT16_VALUE( - 63.088), SIMDE_BFLOAT16_VALUE( - 11.758),  SIMDE_BFLOAT16_VALUE( 14.850) },
      {  SIMDE_BFLOAT16_VALUE( 27.807),  SIMDE_BFLOAT16_VALUE( 11.530), SIMDE_BFLOAT16_VALUE( - 32.331), SIMDE_BFLOAT16_VALUE( - 44.759),
         SIMDE_BFLOAT16_VALUE( 24.258), SIMDE_BFLOAT16_VALUE( - 86.786), SIMDE_BFLOAT16_VALUE( - 94.826),  SIMDE_BFLOAT16_VALUE( 48.908) },
      {  SIMDE_BFLOAT16_VALUE( 20.925),  SIMDE_BFLOAT16_VALUE( 99.983), SIMDE_BFLOAT16_VALUE( - 59.823),  SIMDE_BFLOAT16_VALUE( 71.958),
         SIMDE_BFLOAT16_VALUE( 63.444),  SIMDE_BFLOAT16_VALUE( 71.547),  SIMDE_BFLOAT16_VALUE( 68.404),  SIMDE_BFLOAT16_VALUE( 32.576) },
      {  SIMDE_BFLOAT16_VALUE( 20.836),  SIMDE_BFLOAT16_VALUE( 14.370),  SIMDE_BFLOAT16_VALUE( 27.807),  SIMDE_BFLOAT16_VALUE( 20.925),
        SIMDE_BFLOAT16_VALUE( -  6.255),  SIMDE_BFLOAT16_VALUE(  7.192),  SIMDE_BFLOAT16_VALUE( 11.530),  SIMDE_BFLOAT16_VALUE( 99.983),
         SIMDE_BFLOAT16_VALUE( 79.168), SIMDE_BFLOAT16_VALUE( - 88.540), SIMDE_BFLOAT16_VALUE( - 32.331), SIMDE_BFLOAT16_VALUE( - 59.823),
         SIMDE_BFLOAT16_VALUE( 29.039),  SIMDE_BFLOAT16_VALUE( 13.116), SIMDE_BFLOAT16_VALUE( - 44.759),  SIMDE_BFLOAT16_VALUE( 71.958),
         SIMDE_BFLOAT16_VALUE( 96.927),  SIMDE_BFLOAT16_VALUE( 64.603),  SIMDE_BFLOAT16_VALUE( 24.258),  SIMDE_BFLOAT16_VALUE( 63.444),
         SIMDE_BFLOAT16_VALUE( 41.696), SIMDE_BFLOAT16_VALUE( - 63.088), SIMDE_BFLOAT16_VALUE( - 86.786),  SIMDE_BFLOAT16_VALUE( 71.547),
        SIMDE_BFLOAT16_VALUE( - 42.924), SIMDE_BFLOAT16_VALUE( - 11.758), SIMDE_BFLOAT16_VALUE( - 94.826),  SIMDE_BFLOAT16_VALUE( 68.404),
        SIMDE_BFLOAT16_VALUE( -  7.066),  SIMDE_BFLOAT16_VALUE( 14.850),  SIMDE_BFLOAT16_VALUE( 48.908),  SIMDE_BFLOAT16_VALUE( 32.576) } },
    { { SIMDE_BFLOAT16_VALUE( - 98.651),  SIMDE_BFLOAT16_VALUE(  8.370),  SIMDE_BFLOAT16_VALUE(  5.212), SIMDE_BFLOAT16_VALUE( - 39.002),
        SIMDE_BFLOAT16_VALUE( - 50.855),  SIMDE_BFLOAT16_VALUE(  9.832),  SIMDE_BFLOAT16_VALUE( 64.681),  SIMDE_BFLOAT16_VALUE( 53.110) },
      {  SIMDE_BFLOAT16_VALUE( 56.471),  SIMDE_BFLOAT16_VALUE( 66.543), SIMDE_BFLOAT16_VALUE( - 19.108),  SIMDE_BFLOAT16_VALUE( 57.884),
         SIMDE_BFLOAT16_VALUE(  8.069), SIMDE_BFLOAT16_VALUE( - 92.092),  SIMDE_BFLOAT16_VALUE( 21.120), SIMDE_BFLOAT16_VALUE( - 28.746) },
      { SIMDE_BFLOAT16_VALUE( - 33.477),  SIMDE_BFLOAT16_VALUE( 94.776),  SIMDE_BFLOAT16_VALUE( 39.423), SIMDE_BFLOAT16_VALUE( - 14.126),
        SIMDE_BFLOAT16_VALUE( - 86.375), SIMDE_BFLOAT16_VALUE( - 35.066),  SIMDE_BFLOAT16_VALUE( 93.908), SIMDE_BFLOAT16_VALUE( - 70.598) },
      { SIMDE_BFLOAT16_VALUE( - 47.494), SIMDE_BFLOAT16_VALUE( - 73.328), SIMDE_BFLOAT16_VALUE( -  6.515),  SIMDE_BFLOAT16_VALUE( 64.596),
        SIMDE_BFLOAT16_VALUE( - 85.478), SIMDE_BFLOAT16_VALUE( - 93.767), SIMDE_BFLOAT16_VALUE( - 96.092), SIMDE_BFLOAT16_VALUE( - 43.609) },
      { SIMDE_BFLOAT16_VALUE( - 98.651),  SIMDE_BFLOAT16_VALUE( 56.471), SIMDE_BFLOAT16_VALUE( - 33.477), SIMDE_BFLOAT16_VALUE( - 47.494),
         SIMDE_BFLOAT16_VALUE(  8.370),  SIMDE_BFLOAT16_VALUE( 66.543),  SIMDE_BFLOAT16_VALUE( 94.776), SIMDE_BFLOAT16_VALUE( - 73.328),
         SIMDE_BFLOAT16_VALUE(  5.212), SIMDE_BFLOAT16_VALUE( - 19.108),  SIMDE_BFLOAT16_VALUE( 39.423), SIMDE_BFLOAT16_VALUE( -  6.515),
        SIMDE_BFLOAT16_VALUE( - 39.002),  SIMDE_BFLOAT16_VALUE( 57.884), SIMDE_BFLOAT16_VALUE( - 14.126),  SIMDE_BFLOAT16_VALUE( 64.596),
        SIMDE_BFLOAT16_VALUE( - 50.855),  SIMDE_BFLOAT16_VALUE(  8.069), SIMDE_BFLOAT16_VALUE( - 86.375), SIMDE_BFLOAT16_VALUE( - 85.478),
         SIMDE_BFLOAT16_VALUE(  9.832), SIMDE_BFLOAT16_VALUE( - 92.092), SIMDE_BFLOAT16_VALUE( - 35.066), SIMDE_BFLOAT16_VALUE( - 93.767),
         SIMDE_BFLOAT16_VALUE( 64.681),  SIMDE_BFLOAT16_VALUE( 21.120),  SIMDE_BFLOAT16_VALUE( 93.908), SIMDE_BFLOAT16_VALUE( - 96.092),
         SIMDE_BFLOAT16_VALUE( 53.110), SIMDE_BFLOAT16_VALUE( - 28.746), SIMDE_BFLOAT16_VALUE( - 70.598), SIMDE_BFLOAT16_VALUE( - 43.609) } },
    { {  SIMDE_BFLOAT16_VALUE( 32.009), SIMDE_BFLOAT16_VALUE( - 70.333),  SIMDE_BFLOAT16_VALUE(  5.538),  SIMDE_BFLOAT16_VALUE( 82.520),
        SIMDE_BFLOAT16_VALUE( - 40.966), SIMDE_BFLOAT16_VALUE( - 11.607), SIMDE_BFLOAT16_VALUE( - 54.581),  SIMDE_BFLOAT16_VALUE( 51.136) },
      { SIMDE_BFLOAT16_VALUE( - 80.277),  SIMDE_BFLOAT16_VALUE( 70.486), SIMDE_BFLOAT16_VALUE( - 49.720),  SIMDE_BFLOAT16_VALUE( 84.405),
        SIMDE_BFLOAT16_VALUE( - 38.234),  SIMDE_BFLOAT16_VALUE( 47.061), SIMDE_BFLOAT16_VALUE( - 27.953), SIMDE_BFLOAT16_VALUE( - 35.272) },
      {  SIMDE_BFLOAT16_VALUE( 37.433),  SIMDE_BFLOAT16_VALUE( 84.527),  SIMDE_BFLOAT16_VALUE( 41.358), SIMDE_BFLOAT16_VALUE( - 69.610),
         SIMDE_BFLOAT16_VALUE( 51.678), SIMDE_BFLOAT16_VALUE( - 94.404), SIMDE_BFLOAT16_VALUE( - 16.678),  SIMDE_BFLOAT16_VALUE( 76.803) },
      { SIMDE_BFLOAT16_VALUE( - 82.082), SIMDE_BFLOAT16_VALUE( - 90.814), SIMDE_BFLOAT16_VALUE( - 62.857), SIMDE_BFLOAT16_VALUE( - 73.589),
         SIMDE_BFLOAT16_VALUE( 77.514), SIMDE_BFLOAT16_VALUE( - 67.143), SIMDE_BFLOAT16_VALUE( - 66.907),  SIMDE_BFLOAT16_VALUE( 66.753) },
      {  SIMDE_BFLOAT16_VALUE( 32.009), SIMDE_BFLOAT16_VALUE( - 80.277),  SIMDE_BFLOAT16_VALUE( 37.433), SIMDE_BFLOAT16_VALUE( - 82.082),
        SIMDE_BFLOAT16_VALUE( - 70.333),  SIMDE_BFLOAT16_VALUE( 70.486),  SIMDE_BFLOAT16_VALUE( 84.527), SIMDE_BFLOAT16_VALUE( - 90.814),
         SIMDE_BFLOAT16_VALUE(  5.538), SIMDE_BFLOAT16_VALUE( - 49.720),  SIMDE_BFLOAT16_VALUE( 41.358), SIMDE_BFLOAT16_VALUE( - 62.857),
         SIMDE_BFLOAT16_VALUE( 82.520),  SIMDE_BFLOAT16_VALUE( 84.405), SIMDE_BFLOAT16_VALUE( - 69.610), SIMDE_BFLOAT16_VALUE( - 73.589),
        SIMDE_BFLOAT16_VALUE( - 40.966), SIMDE_BFLOAT16_VALUE( - 38.234),  SIMDE_BFLOAT16_VALUE( 51.678),  SIMDE_BFLOAT16_VALUE( 77.514),
        SIMDE_BFLOAT16_VALUE( - 11.607),  SIMDE_BFLOAT16_VALUE( 47.061), SIMDE_BFLOAT16_VALUE( - 94.404), SIMDE_BFLOAT16_VALUE( - 67.143),
        SIMDE_BFLOAT16_VALUE( - 54.581), SIMDE_BFLOAT16_VALUE( - 27.953), SIMDE_BFLOAT16_VALUE( - 16.678), SIMDE_BFLOAT16_VALUE( - 66.907),
         SIMDE_BFLOAT16_VALUE( 51.136), SIMDE_BFLOAT16_VALUE( - 35.272),  SIMDE_BFLOAT16_VALUE( 76.803),  SIMDE_BFLOAT16_VALUE( 66.753) } },
    { {  SIMDE_BFLOAT16_VALUE( 13.527),  SIMDE_BFLOAT16_VALUE( 15.879), SIMDE_BFLOAT16_VALUE( - 25.658),  SIMDE_BFLOAT16_VALUE( 64.222),
         SIMDE_BFLOAT16_VALUE( 72.758),  SIMDE_BFLOAT16_VALUE( 17.152),  SIMDE_BFLOAT16_VALUE( 61.595), SIMDE_BFLOAT16_VALUE( - 25.744) },
      {  SIMDE_BFLOAT16_VALUE( 73.965),  SIMDE_BFLOAT16_VALUE( 66.305), SIMDE_BFLOAT16_VALUE( - 82.679), SIMDE_BFLOAT16_VALUE( - 48.114),
         SIMDE_BFLOAT16_VALUE( 35.804),  SIMDE_BFLOAT16_VALUE( 11.885), SIMDE_BFLOAT16_VALUE( - 98.287),  SIMDE_BFLOAT16_VALUE( 61.933) },
      { SIMDE_BFLOAT16_VALUE( - 79.049),  SIMDE_BFLOAT16_VALUE( 99.270), SIMDE_BFLOAT16_VALUE( - 46.729),  SIMDE_BFLOAT16_VALUE( 30.358),
         SIMDE_BFLOAT16_VALUE( 46.057), SIMDE_BFLOAT16_VALUE( - 87.368),  SIMDE_BFLOAT16_VALUE( 82.236), SIMDE_BFLOAT16_VALUE( - 81.438) },
      {  SIMDE_BFLOAT16_VALUE( 31.502),  SIMDE_BFLOAT16_VALUE( 72.068), SIMDE_BFLOAT16_VALUE( -  3.689),  SIMDE_BFLOAT16_VALUE( 42.230),
         SIMDE_BFLOAT16_VALUE(  9.827),  SIMDE_BFLOAT16_VALUE( 27.830), SIMDE_BFLOAT16_VALUE( - 62.111), SIMDE_BFLOAT16_VALUE( - 46.971) },
      {  SIMDE_BFLOAT16_VALUE( 13.527),  SIMDE_BFLOAT16_VALUE( 73.965), SIMDE_BFLOAT16_VALUE( - 79.049),  SIMDE_BFLOAT16_VALUE( 31.502),
         SIMDE_BFLOAT16_VALUE( 15.879),  SIMDE_BFLOAT16_VALUE( 66.305),  SIMDE_BFLOAT16_VALUE( 99.270),  SIMDE_BFLOAT16_VALUE( 72.068),
        SIMDE_BFLOAT16_VALUE( - 25.658), SIMDE_BFLOAT16_VALUE( - 82.679), SIMDE_BFLOAT16_VALUE( - 46.729), SIMDE_BFLOAT16_VALUE( -  3.689),
         SIMDE_BFLOAT16_VALUE( 64.222), SIMDE_BFLOAT16_VALUE( - 48.114),  SIMDE_BFLOAT16_VALUE( 30.358),  SIMDE_BFLOAT16_VALUE( 42.230),
         SIMDE_BFLOAT16_VALUE( 72.758),  SIMDE_BFLOAT16_VALUE( 35.804),  SIMDE_BFLOAT16_VALUE( 46.057),  SIMDE_BFLOAT16_VALUE(  9.827),
         SIMDE_BFLOAT16_VALUE( 17.152),  SIMDE_BFLOAT16_VALUE( 11.885), SIMDE_BFLOAT16_VALUE( - 87.368),  SIMDE_BFLOAT16_VALUE( 27.830),
         SIMDE_BFLOAT16_VALUE( 61.595), SIMDE_BFLOAT16_VALUE( - 98.287),  SIMDE_BFLOAT16_VALUE( 82.236), SIMDE_BFLOAT16_VALUE( - 62.111),
        SIMDE_BFLOAT16_VALUE( - 25.744),  SIMDE_BFLOAT16_VALUE( 61.933), SIMDE_BFLOAT16_VALUE( - 81.438), SIMDE_BFLOAT16_VALUE( - 46.971) } },
    { { SIMDE_BFLOAT16_VALUE( - 98.937), SIMDE_BFLOAT16_VALUE( - 75.185),  SIMDE_BFLOAT16_VALUE( 51.461),  SIMDE_BFLOAT16_VALUE( 34.040),
        SIMDE_BFLOAT16_VALUE( - 18.490),  SIMDE_BFLOAT16_VALUE(  2.435), SIMDE_BFLOAT16_VALUE( - 31.936), SIMDE_BFLOAT16_VALUE( - 44.440) },
      {  SIMDE_BFLOAT16_VALUE( 51.617),  SIMDE_BFLOAT16_VALUE( 92.309), SIMDE_BFLOAT16_VALUE( - 32.479),  SIMDE_BFLOAT16_VALUE( 64.487),
         SIMDE_BFLOAT16_VALUE( 33.205),  SIMDE_BFLOAT16_VALUE( 26.250), SIMDE_BFLOAT16_VALUE( -  8.956),  SIMDE_BFLOAT16_VALUE( 43.765) },
      { SIMDE_BFLOAT16_VALUE( - 80.764), SIMDE_BFLOAT16_VALUE( - 42.445), SIMDE_BFLOAT16_VALUE( - 77.677),  SIMDE_BFLOAT16_VALUE( 54.417),
        SIMDE_BFLOAT16_VALUE( - 58.892),  SIMDE_BFLOAT16_VALUE( 67.912), SIMDE_BFLOAT16_VALUE( - 19.769), SIMDE_BFLOAT16_VALUE( - 94.018) },
      {  SIMDE_BFLOAT16_VALUE( 32.228), SIMDE_BFLOAT16_VALUE( - 45.404), SIMDE_BFLOAT16_VALUE( - 11.380),  SIMDE_BFLOAT16_VALUE( 85.317),
         SIMDE_BFLOAT16_VALUE( 32.872), SIMDE_BFLOAT16_VALUE( - 10.946),  SIMDE_BFLOAT16_VALUE( 93.337),  SIMDE_BFLOAT16_VALUE( 94.934) },
      { SIMDE_BFLOAT16_VALUE( - 98.937),  SIMDE_BFLOAT16_VALUE( 51.617), SIMDE_BFLOAT16_VALUE( - 80.764),  SIMDE_BFLOAT16_VALUE( 32.228),
        SIMDE_BFLOAT16_VALUE( - 75.185),  SIMDE_BFLOAT16_VALUE( 92.309), SIMDE_BFLOAT16_VALUE( - 42.445), SIMDE_BFLOAT16_VALUE( - 45.404),
         SIMDE_BFLOAT16_VALUE( 51.461), SIMDE_BFLOAT16_VALUE( - 32.479), SIMDE_BFLOAT16_VALUE( - 77.677), SIMDE_BFLOAT16_VALUE( - 11.380),
         SIMDE_BFLOAT16_VALUE( 34.040),  SIMDE_BFLOAT16_VALUE( 64.487),  SIMDE_BFLOAT16_VALUE( 54.417),  SIMDE_BFLOAT16_VALUE( 85.317),
        SIMDE_BFLOAT16_VALUE( - 18.490),  SIMDE_BFLOAT16_VALUE( 33.205), SIMDE_BFLOAT16_VALUE( - 58.892),  SIMDE_BFLOAT16_VALUE( 32.872),
         SIMDE_BFLOAT16_VALUE(  2.435),  SIMDE_BFLOAT16_VALUE( 26.250),  SIMDE_BFLOAT16_VALUE( 67.912), SIMDE_BFLOAT16_VALUE( - 10.946),
        SIMDE_BFLOAT16_VALUE( - 31.936), SIMDE_BFLOAT16_VALUE( -  8.956), SIMDE_BFLOAT16_VALUE( - 19.769),  SIMDE_BFLOAT16_VALUE( 93.337),
        SIMDE_BFLOAT16_VALUE( - 44.440),  SIMDE_BFLOAT16_VALUE( 43.765), SIMDE_BFLOAT16_VALUE( - 94.018),  SIMDE_BFLOAT16_VALUE( 94.934) } },
    { { SIMDE_BFLOAT16_VALUE( - 82.721), SIMDE_BFLOAT16_VALUE( -  5.083),  SIMDE_BFLOAT16_VALUE( 28.116), SIMDE_BFLOAT16_VALUE( -  2.078),
        SIMDE_BFLOAT16_VALUE( -  8.045),  SIMDE_BFLOAT16_VALUE( 98.088),  SIMDE_BFLOAT16_VALUE( 77.205), SIMDE_BFLOAT16_VALUE( - 86.702) },
      { SIMDE_BFLOAT16_VALUE( - 75.686), SIMDE_BFLOAT16_VALUE( - 67.078),  SIMDE_BFLOAT16_VALUE( 38.647), SIMDE_BFLOAT16_VALUE( -  7.111),
        SIMDE_BFLOAT16_VALUE( - 74.933), SIMDE_BFLOAT16_VALUE( - 54.055), SIMDE_BFLOAT16_VALUE( - 51.905),  SIMDE_BFLOAT16_VALUE( 53.734) },
      { SIMDE_BFLOAT16_VALUE( - 39.474),  SIMDE_BFLOAT16_VALUE( 89.193), SIMDE_BFLOAT16_VALUE( - 72.210), SIMDE_BFLOAT16_VALUE( - 42.032),
         SIMDE_BFLOAT16_VALUE( 61.321), SIMDE_BFLOAT16_VALUE( - 12.021), SIMDE_BFLOAT16_VALUE( - 35.830), SIMDE_BFLOAT16_VALUE( - 85.851) },
      {  SIMDE_BFLOAT16_VALUE( 64.970),  SIMDE_BFLOAT16_VALUE( 85.757),  SIMDE_BFLOAT16_VALUE( 28.273),  SIMDE_BFLOAT16_VALUE( 77.789),
         SIMDE_BFLOAT16_VALUE( 50.825),  SIMDE_BFLOAT16_VALUE( 95.876),  SIMDE_BFLOAT16_VALUE( 44.735), SIMDE_BFLOAT16_VALUE( - 28.570) },
      { SIMDE_BFLOAT16_VALUE( - 82.721), SIMDE_BFLOAT16_VALUE( - 75.686), SIMDE_BFLOAT16_VALUE( - 39.474),  SIMDE_BFLOAT16_VALUE( 64.970),
        SIMDE_BFLOAT16_VALUE( -  5.083), SIMDE_BFLOAT16_VALUE( - 67.078),  SIMDE_BFLOAT16_VALUE( 89.193),  SIMDE_BFLOAT16_VALUE( 85.757),
         SIMDE_BFLOAT16_VALUE( 28.116),  SIMDE_BFLOAT16_VALUE( 38.647), SIMDE_BFLOAT16_VALUE( - 72.210),  SIMDE_BFLOAT16_VALUE( 28.273),
        SIMDE_BFLOAT16_VALUE( -  2.078), SIMDE_BFLOAT16_VALUE( -  7.111), SIMDE_BFLOAT16_VALUE( - 42.032),  SIMDE_BFLOAT16_VALUE( 77.789),
        SIMDE_BFLOAT16_VALUE( -  8.045), SIMDE_BFLOAT16_VALUE( - 74.933),  SIMDE_BFLOAT16_VALUE( 61.321),  SIMDE_BFLOAT16_VALUE( 50.825),
         SIMDE_BFLOAT16_VALUE( 98.088), SIMDE_BFLOAT16_VALUE( - 54.055), SIMDE_BFLOAT16_VALUE( - 12.021),  SIMDE_BFLOAT16_VALUE( 95.876),
         SIMDE_BFLOAT16_VALUE( 77.205), SIMDE_BFLOAT16_VALUE( - 51.905), SIMDE_BFLOAT16_VALUE( - 35.830),  SIMDE_BFLOAT16_VALUE( 44.735),
        SIMDE_BFLOAT16_VALUE( - 86.702),  SIMDE_BFLOAT16_VALUE( 53.734), SIMDE_BFLOAT16_VALUE( - 85.851), SIMDE_BFLOAT16_VALUE( - 28.570) } },
    { {  SIMDE_BFLOAT16_VALUE( 56.021), SIMDE_BFLOAT16_VALUE( - 47.189),  SIMDE_BFLOAT16_VALUE( 34.633), SIMDE_BFLOAT16_VALUE( - 48.482),
        SIMDE_BFLOAT16_VALUE( - 13.024), SIMDE_BFLOAT16_VALUE( - 68.164), SIMDE_BFLOAT16_VALUE( - 38.493), SIMDE_BFLOAT16_VALUE( - 96.972) },
      {  SIMDE_BFLOAT16_VALUE( 14.297),  SIMDE_BFLOAT16_VALUE( 60.328), SIMDE_BFLOAT16_VALUE( - 55.132),  SIMDE_BFLOAT16_VALUE( 61.549),
         SIMDE_BFLOAT16_VALUE( 25.753),  SIMDE_BFLOAT16_VALUE( 72.855),  SIMDE_BFLOAT16_VALUE( 28.394),  SIMDE_BFLOAT16_VALUE( 58.315) },
      { SIMDE_BFLOAT16_VALUE( - 52.297), SIMDE_BFLOAT16_VALUE( - 59.309),  SIMDE_BFLOAT16_VALUE( 39.064),  SIMDE_BFLOAT16_VALUE( 92.546),
         SIMDE_BFLOAT16_VALUE( 29.222),  SIMDE_BFLOAT16_VALUE( 18.830),  SIMDE_BFLOAT16_VALUE( 78.006), SIMDE_BFLOAT16_VALUE( - 34.477) },
      {  SIMDE_BFLOAT16_VALUE( 48.515),  SIMDE_BFLOAT16_VALUE(  6.778),  SIMDE_BFLOAT16_VALUE( 83.115), SIMDE_BFLOAT16_VALUE( - 15.075),
        SIMDE_BFLOAT16_VALUE( - 64.544), SIMDE_BFLOAT16_VALUE( -  5.615), SIMDE_BFLOAT16_VALUE( - 79.529), SIMDE_BFLOAT16_VALUE( - 20.122) },
      {  SIMDE_BFLOAT16_VALUE( 56.021),  SIMDE_BFLOAT16_VALUE( 14.297), SIMDE_BFLOAT16_VALUE( - 52.297),  SIMDE_BFLOAT16_VALUE( 48.515),
        SIMDE_BFLOAT16_VALUE( - 47.189),  SIMDE_BFLOAT16_VALUE( 60.328), SIMDE_BFLOAT16_VALUE( - 59.309),  SIMDE_BFLOAT16_VALUE(  6.778),
         SIMDE_BFLOAT16_VALUE( 34.633), SIMDE_BFLOAT16_VALUE( - 55.132),  SIMDE_BFLOAT16_VALUE( 39.064),  SIMDE_BFLOAT16_VALUE( 83.115),
        SIMDE_BFLOAT16_VALUE( - 48.482),  SIMDE_BFLOAT16_VALUE( 61.549),  SIMDE_BFLOAT16_VALUE( 92.546), SIMDE_BFLOAT16_VALUE( - 15.075),
        SIMDE_BFLOAT16_VALUE( - 13.024),  SIMDE_BFLOAT16_VALUE( 25.753),  SIMDE_BFLOAT16_VALUE( 29.222), SIMDE_BFLOAT16_VALUE( - 64.544),
        SIMDE_BFLOAT16_VALUE( - 68.164),  SIMDE_BFLOAT16_VALUE( 72.855),  SIMDE_BFLOAT16_VALUE( 18.830), SIMDE_BFLOAT16_VALUE( -  5.615),
        SIMDE_BFLOAT16_VALUE( - 38.493),  SIMDE_BFLOAT16_VALUE( 28.394),  SIMDE_BFLOAT16_VALUE( 78.006), SIMDE_BFLOAT16_VALUE( - 79.529),
        SIMDE_BFLOAT16_VALUE( - 96.972),  SIMDE_BFLOAT16_VALUE( 58.315), SIMDE_BFLOAT16_VALUE( - 34.477), SIMDE_BFLOAT16_VALUE( - 20.122) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde_bfloat16x8x4_t r_ = { { simde_vld1q_bf16(test_vec[i].r0),
                                 simde_vld1q_bf16(test_vec[i].r1),
                                 simde_vld1q_bf16(test_vec[i].r2),
                                 simde_vld1q_bf16(test_vec[i].r3), } };

    simde_bfloat16 a_[32];
    simde_vst4q_bf16(a_, r_);
    simde_assert_equal_i(0, simde_memcmp(a_, test_vec[i].a, sizeof(test_vec[i].a)));

    r_ = simde_vld4q_bf16(a_);
    simde_test_arm_neon_assert_equal_bf16x8(r_.val[0], simde_vld1q_bf16(test_vec[i].r0), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r_.val[1], simde_vld1q_bf16(test_vec[i].r1), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r_.val[2], simde_vld1q_bf16(test_vec[i].r2), 1);
    simde_test_arm_neon_assert_equal_bf16x8(r_.val[3], simde_vld1q_bf16(test_vec[i].r3), 1);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_bfloat16x8_t r0 = simde_test_arm_neon_random_bf16x8(-100.0f, 100.0f);
    simde_bfloat16x8_t r1 = simde_test_arm_neon_random_bf16x8(-100.0f, 100.0f);
    simde_bfloat16x8_t r2 = simde_test_arm_neon_random_bf16x8(-100.0f, 100.0f);
    simde_bfloat16x8_t r3 = simde_test_arm_neon_random_bf16x8(-100.0f, 100.0f);
    simde_bfloat16x32_t a = simde_vst4q_bf16(r0, r1, r2, r3);

    simde_test_arm_neon_write_bf16x8(2, r0, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_bf16x8(2, r1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x8(2, r3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_bf16x32(2, a, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

#endif /* !defined(SIMDE_BUG_INTEL_857088) */

SIMDE_TEST_FUNC_LIST_BEGIN
#if !defined(SIMDE_BUG_INTEL_857088)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_u64)

SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_u64)

SIMDE_TEST_FUNC_LIST_ENTRY(vst4_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_p64)

SIMDE_TEST_FUNC_LIST_ENTRY(vst4_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst4q_bf16)
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_END

#include "test-neon-footer.h"