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

#include "test-neon.h"
#include "../../../simde/arm/neon/st3.h"
#include "../../../simde/arm/neon/ld3.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[3][x]
 * array of vectors, as well as a flat buffer of results. The flat
 * buffer contains the expected result of a st3, done on arm hardware,
 * which will be compared against a st3 done at test time.
 *
 * To test the ld3, the stored st3 will be ld3'd, and then
 * individually compared against the r[3][x] vector.
 */

#if !defined(SIMDE_BUG_INTEL_857088)

static int
test_simde_vst3_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 a[12];
  } test_vec[] = {
    { {  SIMDE_FLOAT16_VALUE( 96.588), SIMDE_FLOAT16_VALUE( -  1.777),  SIMDE_FLOAT16_VALUE( 46.463),  SIMDE_FLOAT16_VALUE( 56.300) },
      {  SIMDE_FLOAT16_VALUE( 56.067),  SIMDE_FLOAT16_VALUE( 76.113), SIMDE_FLOAT16_VALUE( - 80.190), SIMDE_FLOAT16_VALUE( - 59.487) },
      { SIMDE_FLOAT16_VALUE( - 85.440),  SIMDE_FLOAT16_VALUE( 11.955),  SIMDE_FLOAT16_VALUE( 31.790), SIMDE_FLOAT16_VALUE( - 31.309) },
      {  SIMDE_FLOAT16_VALUE( 96.588),  SIMDE_FLOAT16_VALUE( 56.067), SIMDE_FLOAT16_VALUE( - 85.440), SIMDE_FLOAT16_VALUE( -  1.777),
         SIMDE_FLOAT16_VALUE( 76.113),  SIMDE_FLOAT16_VALUE( 11.955),  SIMDE_FLOAT16_VALUE( 46.463), SIMDE_FLOAT16_VALUE( - 80.190),
         SIMDE_FLOAT16_VALUE( 31.790),  SIMDE_FLOAT16_VALUE( 56.300), SIMDE_FLOAT16_VALUE( - 59.487), SIMDE_FLOAT16_VALUE( - 31.309) } },
    { { SIMDE_FLOAT16_VALUE( - 63.610),  SIMDE_FLOAT16_VALUE(  8.056), SIMDE_FLOAT16_VALUE( - 12.504),  SIMDE_FLOAT16_VALUE( 76.738) },
      { SIMDE_FLOAT16_VALUE( - 48.058), SIMDE_FLOAT16_VALUE( -  5.714), SIMDE_FLOAT16_VALUE( -  3.043),  SIMDE_FLOAT16_VALUE( 60.984) },
      { SIMDE_FLOAT16_VALUE( - 90.940),  SIMDE_FLOAT16_VALUE( 77.403), SIMDE_FLOAT16_VALUE( - 57.046),  SIMDE_FLOAT16_VALUE( 37.511) },
      { SIMDE_FLOAT16_VALUE( - 63.610), SIMDE_FLOAT16_VALUE( - 48.058), SIMDE_FLOAT16_VALUE( - 90.940),  SIMDE_FLOAT16_VALUE(  8.056),
        SIMDE_FLOAT16_VALUE( -  5.714),  SIMDE_FLOAT16_VALUE( 77.403), SIMDE_FLOAT16_VALUE( - 12.504), SIMDE_FLOAT16_VALUE( -  3.043),
        SIMDE_FLOAT16_VALUE( - 57.046),  SIMDE_FLOAT16_VALUE( 76.738),  SIMDE_FLOAT16_VALUE( 60.984),  SIMDE_FLOAT16_VALUE( 37.511) } },
    { {  SIMDE_FLOAT16_VALUE( 93.849),  SIMDE_FLOAT16_VALUE( 43.255),  SIMDE_FLOAT16_VALUE( 95.638), SIMDE_FLOAT16_VALUE( - 54.607) },
      {  SIMDE_FLOAT16_VALUE( 99.776),  SIMDE_FLOAT16_VALUE( 59.886),  SIMDE_FLOAT16_VALUE( 53.777), SIMDE_FLOAT16_VALUE( - 64.378) },
      { SIMDE_FLOAT16_VALUE( - 44.354),  SIMDE_FLOAT16_VALUE( 90.343), SIMDE_FLOAT16_VALUE( - 22.346), SIMDE_FLOAT16_VALUE( - 70.759) },
      {  SIMDE_FLOAT16_VALUE( 93.849),  SIMDE_FLOAT16_VALUE( 99.776), SIMDE_FLOAT16_VALUE( - 44.354),  SIMDE_FLOAT16_VALUE( 43.255),
         SIMDE_FLOAT16_VALUE( 59.886),  SIMDE_FLOAT16_VALUE( 90.343),  SIMDE_FLOAT16_VALUE( 95.638),  SIMDE_FLOAT16_VALUE( 53.777),
        SIMDE_FLOAT16_VALUE( - 22.346), SIMDE_FLOAT16_VALUE( - 54.607), SIMDE_FLOAT16_VALUE( - 64.378), SIMDE_FLOAT16_VALUE( - 70.759) } },
    { {  SIMDE_FLOAT16_VALUE( 82.593), SIMDE_FLOAT16_VALUE( - 78.757), SIMDE_FLOAT16_VALUE( - 89.472), SIMDE_FLOAT16_VALUE( - 65.210) },
      {  SIMDE_FLOAT16_VALUE( 71.127),  SIMDE_FLOAT16_VALUE( 81.667), SIMDE_FLOAT16_VALUE( - 51.422),  SIMDE_FLOAT16_VALUE( 71.658) },
      { SIMDE_FLOAT16_VALUE( - 37.830), SIMDE_FLOAT16_VALUE( - 63.633),  SIMDE_FLOAT16_VALUE( 47.933),  SIMDE_FLOAT16_VALUE(  6.764) },
      {  SIMDE_FLOAT16_VALUE( 82.593),  SIMDE_FLOAT16_VALUE( 71.127), SIMDE_FLOAT16_VALUE( - 37.830), SIMDE_FLOAT16_VALUE( - 78.757),
         SIMDE_FLOAT16_VALUE( 81.667), SIMDE_FLOAT16_VALUE( - 63.633), SIMDE_FLOAT16_VALUE( - 89.472), SIMDE_FLOAT16_VALUE( - 51.422),
         SIMDE_FLOAT16_VALUE( 47.933), SIMDE_FLOAT16_VALUE( - 65.210),  SIMDE_FLOAT16_VALUE( 71.658),  SIMDE_FLOAT16_VALUE(  6.764) } },
    { { SIMDE_FLOAT16_VALUE( - 18.391),  SIMDE_FLOAT16_VALUE( 36.835),  SIMDE_FLOAT16_VALUE( 22.395),  SIMDE_FLOAT16_VALUE(  6.510) },
      {  SIMDE_FLOAT16_VALUE( 44.811), SIMDE_FLOAT16_VALUE( - 12.385), SIMDE_FLOAT16_VALUE( -  7.166), SIMDE_FLOAT16_VALUE( - 93.173) },
      {  SIMDE_FLOAT16_VALUE( 14.253),  SIMDE_FLOAT16_VALUE( 90.608), SIMDE_FLOAT16_VALUE( - 83.326), SIMDE_FLOAT16_VALUE( - 35.862) },
      { SIMDE_FLOAT16_VALUE( - 18.391),  SIMDE_FLOAT16_VALUE( 44.811),  SIMDE_FLOAT16_VALUE( 14.253),  SIMDE_FLOAT16_VALUE( 36.835),
        SIMDE_FLOAT16_VALUE( - 12.385),  SIMDE_FLOAT16_VALUE( 90.608),  SIMDE_FLOAT16_VALUE( 22.395), SIMDE_FLOAT16_VALUE( -  7.166),
        SIMDE_FLOAT16_VALUE( - 83.326),  SIMDE_FLOAT16_VALUE(  6.510), SIMDE_FLOAT16_VALUE( - 93.173), SIMDE_FLOAT16_VALUE( - 35.862) } },
    { {  SIMDE_FLOAT16_VALUE( 29.457),  SIMDE_FLOAT16_VALUE( 71.643), SIMDE_FLOAT16_VALUE( - 73.821), SIMDE_FLOAT16_VALUE( - 57.149) },
      {  SIMDE_FLOAT16_VALUE( 53.561),  SIMDE_FLOAT16_VALUE( 52.606), SIMDE_FLOAT16_VALUE( - 93.208),  SIMDE_FLOAT16_VALUE( 61.772) },
      {  SIMDE_FLOAT16_VALUE( 29.595), SIMDE_FLOAT16_VALUE( -  0.911), SIMDE_FLOAT16_VALUE( - 25.184), SIMDE_FLOAT16_VALUE( - 63.522) },
      {  SIMDE_FLOAT16_VALUE( 29.457),  SIMDE_FLOAT16_VALUE( 53.561),  SIMDE_FLOAT16_VALUE( 29.595),  SIMDE_FLOAT16_VALUE( 71.643),
         SIMDE_FLOAT16_VALUE( 52.606), SIMDE_FLOAT16_VALUE( -  0.911), SIMDE_FLOAT16_VALUE( - 73.821), SIMDE_FLOAT16_VALUE( - 93.208),
        SIMDE_FLOAT16_VALUE( - 25.184), SIMDE_FLOAT16_VALUE( - 57.149),  SIMDE_FLOAT16_VALUE( 61.772), SIMDE_FLOAT16_VALUE( - 63.522) } },
    { { SIMDE_FLOAT16_VALUE( - 25.263), SIMDE_FLOAT16_VALUE( - 21.565),  SIMDE_FLOAT16_VALUE( 30.769),  SIMDE_FLOAT16_VALUE( 63.051) },
      {  SIMDE_FLOAT16_VALUE(  9.949),  SIMDE_FLOAT16_VALUE(  3.818),  SIMDE_FLOAT16_VALUE( 91.706), SIMDE_FLOAT16_VALUE( - 56.254) },
      { SIMDE_FLOAT16_VALUE( - 62.534),  SIMDE_FLOAT16_VALUE( 15.090),  SIMDE_FLOAT16_VALUE( 33.667), SIMDE_FLOAT16_VALUE( - 11.503) },
      { SIMDE_FLOAT16_VALUE( - 25.263),  SIMDE_FLOAT16_VALUE(  9.949), SIMDE_FLOAT16_VALUE( - 62.534), SIMDE_FLOAT16_VALUE( - 21.565),
         SIMDE_FLOAT16_VALUE(  3.818),  SIMDE_FLOAT16_VALUE( 15.090),  SIMDE_FLOAT16_VALUE( 30.769),  SIMDE_FLOAT16_VALUE( 91.706),
         SIMDE_FLOAT16_VALUE( 33.667),  SIMDE_FLOAT16_VALUE( 63.051), SIMDE_FLOAT16_VALUE( - 56.254), SIMDE_FLOAT16_VALUE( - 11.503) } },
    { {  SIMDE_FLOAT16_VALUE(  8.202), SIMDE_FLOAT16_VALUE( - 16.555),  SIMDE_FLOAT16_VALUE( 92.084),  SIMDE_FLOAT16_VALUE( 72.240) },
      { SIMDE_FLOAT16_VALUE( - 95.149), SIMDE_FLOAT16_VALUE( - 39.732), SIMDE_FLOAT16_VALUE( - 56.675), SIMDE_FLOAT16_VALUE( -  0.718) },
      {  SIMDE_FLOAT16_VALUE( 73.858), SIMDE_FLOAT16_VALUE( - 78.753), SIMDE_FLOAT16_VALUE( - 19.882),  SIMDE_FLOAT16_VALUE( 17.845) },
      {  SIMDE_FLOAT16_VALUE(  8.202), SIMDE_FLOAT16_VALUE( - 95.149),  SIMDE_FLOAT16_VALUE( 73.858), SIMDE_FLOAT16_VALUE( - 16.555),
        SIMDE_FLOAT16_VALUE( - 39.732), SIMDE_FLOAT16_VALUE( - 78.753),  SIMDE_FLOAT16_VALUE( 92.084), SIMDE_FLOAT16_VALUE( - 56.675),
        SIMDE_FLOAT16_VALUE( - 19.882),  SIMDE_FLOAT16_VALUE( 72.240), SIMDE_FLOAT16_VALUE( -  0.718),  SIMDE_FLOAT16_VALUE( 17.845) } },
  };

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

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

    r_ = simde_vld3_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);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float16x4_t a = simde_test_arm_neon_random_f16x4();
    simde_float16x4_t b = simde_test_arm_neon_random_f16x4();
    simde_float16x4_t c = simde_test_arm_neon_random_f16x4();
    simde_float16x4x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_f16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_float16_t buf[12];
    simde_vst3_f16(buf, d);

    simde_test_codegen_write_vf16(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32 r0[2];
    simde_float32 r1[2];
    simde_float32 r2[2];
    simde_float32 a[6];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(   966.95), SIMDE_FLOAT32_C(  -826.32) },
      { SIMDE_FLOAT32_C(  -900.75), SIMDE_FLOAT32_C(   795.70) },
      { SIMDE_FLOAT32_C(  -772.41), SIMDE_FLOAT32_C(   343.84) },
      {
      SIMDE_FLOAT32_C(   966.95),
      SIMDE_FLOAT32_C(  -900.75),
      SIMDE_FLOAT32_C(  -772.41),
      SIMDE_FLOAT32_C(  -826.32),
      SIMDE_FLOAT32_C(   795.70),
      SIMDE_FLOAT32_C(   343.84),
      }
    },
    { { SIMDE_FLOAT32_C(  -783.51), SIMDE_FLOAT32_C(   493.54) },
      { SIMDE_FLOAT32_C(  -971.39), SIMDE_FLOAT32_C(   895.53) },
      { SIMDE_FLOAT32_C(   208.75), SIMDE_FLOAT32_C(   253.35) },
      {
      SIMDE_FLOAT32_C(  -783.51),
      SIMDE_FLOAT32_C(  -971.39),
      SIMDE_FLOAT32_C(   208.75),
      SIMDE_FLOAT32_C(   493.54),
      SIMDE_FLOAT32_C(   895.53),
      SIMDE_FLOAT32_C(   253.35),
      }
    },
    { { SIMDE_FLOAT32_C(   867.44), SIMDE_FLOAT32_C(   363.06) },
      { SIMDE_FLOAT32_C(   749.57), SIMDE_FLOAT32_C(  -109.51) },
      { SIMDE_FLOAT32_C(   -81.12), SIMDE_FLOAT32_C(  -786.46) },
      {
      SIMDE_FLOAT32_C(   867.44),
      SIMDE_FLOAT32_C(   749.57),
      SIMDE_FLOAT32_C(   -81.12),
      SIMDE_FLOAT32_C(   363.06),
      SIMDE_FLOAT32_C(  -109.51),
      SIMDE_FLOAT32_C(  -786.46),
      }
    },
    { { SIMDE_FLOAT32_C(   687.74), SIMDE_FLOAT32_C(  -617.77) },
      { SIMDE_FLOAT32_C(   482.69), SIMDE_FLOAT32_C(   219.53) },
      { SIMDE_FLOAT32_C(   980.32), SIMDE_FLOAT32_C(  -243.91) },
      {
      SIMDE_FLOAT32_C(   687.74),
      SIMDE_FLOAT32_C(   482.69),
      SIMDE_FLOAT32_C(   980.32),
      SIMDE_FLOAT32_C(  -617.77),
      SIMDE_FLOAT32_C(   219.53),
      SIMDE_FLOAT32_C(  -243.91),
      }
    },
    { { SIMDE_FLOAT32_C(  -516.59), SIMDE_FLOAT32_C(  -483.00) },
      { SIMDE_FLOAT32_C(   444.86), SIMDE_FLOAT32_C(   663.90) },
      { SIMDE_FLOAT32_C(   259.84), SIMDE_FLOAT32_C(  -602.70) },
      {
      SIMDE_FLOAT32_C(  -516.59),
      SIMDE_FLOAT32_C(   444.86),
      SIMDE_FLOAT32_C(   259.84),
      SIMDE_FLOAT32_C(  -483.00),
      SIMDE_FLOAT32_C(   663.90),
      SIMDE_FLOAT32_C(  -602.70),
      }
    },
    { { SIMDE_FLOAT32_C(   -83.32), SIMDE_FLOAT32_C(   226.79) },
      { SIMDE_FLOAT32_C(  -429.02), SIMDE_FLOAT32_C(    15.93) },
      { SIMDE_FLOAT32_C(    22.49), SIMDE_FLOAT32_C(  -201.43) },
      {
      SIMDE_FLOAT32_C(   -83.32),
      SIMDE_FLOAT32_C(  -429.02),
      SIMDE_FLOAT32_C(    22.49),
      SIMDE_FLOAT32_C(   226.79),
      SIMDE_FLOAT32_C(    15.93),
      SIMDE_FLOAT32_C(  -201.43),
      }
    },
    { { SIMDE_FLOAT32_C(  -640.23), SIMDE_FLOAT32_C(   238.98) },
      { SIMDE_FLOAT32_C(  -707.89), SIMDE_FLOAT32_C(  -611.62) },
      { SIMDE_FLOAT32_C(   134.51), SIMDE_FLOAT32_C(   500.86) },
      {
      SIMDE_FLOAT32_C(  -640.23),
      SIMDE_FLOAT32_C(  -707.89),
      SIMDE_FLOAT32_C(   134.51),
      SIMDE_FLOAT32_C(   238.98),
      SIMDE_FLOAT32_C(  -611.62),
      SIMDE_FLOAT32_C(   500.86),
      }
    },
    { { SIMDE_FLOAT32_C(   641.73), SIMDE_FLOAT32_C(     1.95) },
      { SIMDE_FLOAT32_C(  -136.08), SIMDE_FLOAT32_C(   391.30) },
      { SIMDE_FLOAT32_C(   892.44), SIMDE_FLOAT32_C(   782.80) },
      {
      SIMDE_FLOAT32_C(   641.73),
      SIMDE_FLOAT32_C(  -136.08),
      SIMDE_FLOAT32_C(   892.44),
      SIMDE_FLOAT32_C(     1.95),
      SIMDE_FLOAT32_C(   391.30),
      SIMDE_FLOAT32_C(   782.80),
      }
    },

  };

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

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

    r_ = simde_vld3_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);
  }

  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_float32x2x3_t a = { { a0, a1, a2 } };
    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_float32_t buf[6];
    simde_vst3_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_vst3_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64 r0[1];
    simde_float64 r1[1];
    simde_float64 r2[1];
    simde_float64 a[3];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(  -319.19) },
      { SIMDE_FLOAT64_C(   569.35) },
      { SIMDE_FLOAT64_C(  -226.94) },
      {
      SIMDE_FLOAT64_C(  -319.19),
      SIMDE_FLOAT64_C(   569.35),
      SIMDE_FLOAT64_C(  -226.94),
      }
    },
    { { SIMDE_FLOAT64_C(   -79.23) },
      { SIMDE_FLOAT64_C(  -856.19) },
      { SIMDE_FLOAT64_C(   982.37) },
      {
      SIMDE_FLOAT64_C(   -79.23),
      SIMDE_FLOAT64_C(  -856.19),
      SIMDE_FLOAT64_C(   982.37),
      }
    },
    { { SIMDE_FLOAT64_C(  -330.57) },
      { SIMDE_FLOAT64_C(   730.79) },
      { SIMDE_FLOAT64_C(  -392.36) },
      {
      SIMDE_FLOAT64_C(  -330.57),
      SIMDE_FLOAT64_C(   730.79),
      SIMDE_FLOAT64_C(  -392.36),
      }
    },
    { { SIMDE_FLOAT64_C(  -114.08) },
      { SIMDE_FLOAT64_C(  -298.63) },
      { SIMDE_FLOAT64_C(   209.96) },
      {
      SIMDE_FLOAT64_C(  -114.08),
      SIMDE_FLOAT64_C(  -298.63),
      SIMDE_FLOAT64_C(   209.96),
      }
    },
    { { SIMDE_FLOAT64_C(  -867.54) },
      { SIMDE_FLOAT64_C(  -281.79) },
      { SIMDE_FLOAT64_C(   780.67) },
      {
      SIMDE_FLOAT64_C(  -867.54),
      SIMDE_FLOAT64_C(  -281.79),
      SIMDE_FLOAT64_C(   780.67),
      }
    },
    { { SIMDE_FLOAT64_C(   665.37) },
      { SIMDE_FLOAT64_C(   109.67) },
      { SIMDE_FLOAT64_C(   882.86) },
      {
      SIMDE_FLOAT64_C(   665.37),
      SIMDE_FLOAT64_C(   109.67),
      SIMDE_FLOAT64_C(   882.86),
      }
    },
    { { SIMDE_FLOAT64_C(    -7.69) },
      { SIMDE_FLOAT64_C(  -441.62) },
      { SIMDE_FLOAT64_C(   205.44) },
      {
      SIMDE_FLOAT64_C(    -7.69),
      SIMDE_FLOAT64_C(  -441.62),
      SIMDE_FLOAT64_C(   205.44),
      }
    },
    { { SIMDE_FLOAT64_C(   761.86) },
      { SIMDE_FLOAT64_C(   259.74) },
      { SIMDE_FLOAT64_C(   953.99) },
      {
      SIMDE_FLOAT64_C(   761.86),
      SIMDE_FLOAT64_C(   259.74),
      SIMDE_FLOAT64_C(   953.99),
      }
    },

  };

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

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

    r_ = simde_vld3_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);
  }

  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_float64x1x3_t a = { { a0, a1, a2 } };
    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_float64_t buf[3];
    simde_vst3_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_vst3_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int8_t r0[8];
    int8_t r1[8];
    int8_t r2[8];
    int8_t a[24];
  } test_vec[] = {
    { { -INT8_C( 125), -INT8_C(  82), -INT8_C(  51), -INT8_C( 114),  INT8_C( 105),  INT8_C(   0), -INT8_C(  73),  INT8_C( 100) },
      {  INT8_C(  63), -INT8_C(  12),  INT8_C(  81),  INT8_C(  72), -INT8_C(  10),  INT8_C(  76),  INT8_C(  20), -INT8_C(  89) },
      { -INT8_C(  63), -INT8_C( 118),  INT8_C(  94),  INT8_C(  42), -INT8_C(  88), -INT8_C(  57), -INT8_C(   6),  INT8_C(  16) },
      {
      -INT8_C( 125),
       INT8_C(  63),
      -INT8_C(  63),
      -INT8_C(  82),
      -INT8_C(  12),
      -INT8_C( 118),
      -INT8_C(  51),
       INT8_C(  81),
       INT8_C(  94),
      -INT8_C( 114),
       INT8_C(  72),
       INT8_C(  42),
       INT8_C( 105),
      -INT8_C(  10),
      -INT8_C(  88),
       INT8_C(   0),
       INT8_C(  76),
      -INT8_C(  57),
      -INT8_C(  73),
       INT8_C(  20),
      -INT8_C(   6),
       INT8_C( 100),
      -INT8_C(  89),
       INT8_C(  16),
      }
    },
    { {  INT8_C(  37),  INT8_C(  25), -INT8_C(  10),  INT8_C(  35),  INT8_C(  77),  INT8_C(  32), -INT8_C(  94), -INT8_C(  48) },
      { -INT8_C(  49),  INT8_C( 111),  INT8_C(  94),  INT8_C(  56),  INT8_C( 112),  INT8_C(  21), -INT8_C( 100), -INT8_C(  81) },
      {  INT8_C(   9), -INT8_C(  18), -INT8_C(   9), -INT8_C(   1),  INT8_C(  58),  INT8_C(  12), -INT8_C(  90), -INT8_C(   4) },
      {
       INT8_C(  37),
      -INT8_C(  49),
       INT8_C(   9),
       INT8_C(  25),
       INT8_C( 111),
      -INT8_C(  18),
      -INT8_C(  10),
       INT8_C(  94),
      -INT8_C(   9),
       INT8_C(  35),
       INT8_C(  56),
      -INT8_C(   1),
       INT8_C(  77),
       INT8_C( 112),
       INT8_C(  58),
       INT8_C(  32),
       INT8_C(  21),
       INT8_C(  12),
      -INT8_C(  94),
      -INT8_C( 100),
      -INT8_C(  90),
      -INT8_C(  48),
      -INT8_C(  81),
      -INT8_C(   4),
      }
    },
    { { -INT8_C( 106),  INT8_C(   5),  INT8_C(  38),  INT8_C(  63), -INT8_C(  52),  INT8_C(  32),  INT8_C(  79), -INT8_C(  14) },
      {  INT8_C(  57),  INT8_C(  69),  INT8_C(  21), -INT8_C( 122),  INT8_C( 102), -INT8_C(  73),  INT8_C(  86),  INT8_C(  53) },
      {  INT8_C(  39), -INT8_C(  76),  INT8_C( 109), -INT8_C( 105), -INT8_C(  54),  INT8_C(  10),  INT8_C(  70), -INT8_C(  45) },
      {
      -INT8_C( 106),
       INT8_C(  57),
       INT8_C(  39),
       INT8_C(   5),
       INT8_C(  69),
      -INT8_C(  76),
       INT8_C(  38),
       INT8_C(  21),
       INT8_C( 109),
       INT8_C(  63),
      -INT8_C( 122),
      -INT8_C( 105),
      -INT8_C(  52),
       INT8_C( 102),
      -INT8_C(  54),
       INT8_C(  32),
      -INT8_C(  73),
       INT8_C(  10),
       INT8_C(  79),
       INT8_C(  86),
       INT8_C(  70),
      -INT8_C(  14),
       INT8_C(  53),
      -INT8_C(  45),
      }
    },
    { { -INT8_C(   8),  INT8_C(  62), -INT8_C(  45),  INT8_C(  50),  INT8_C(  74),  INT8_C( 121),  INT8_C(  46), -INT8_C(  32) },
      {  INT8_C( 126),  INT8_C(  84),  INT8_C(  31),  INT8_C(  75),  INT8_C( 116),  INT8_C( 111),  INT8_C(  61), -INT8_C(  83) },
      { -INT8_C(  76),  INT8_C(  82),  INT8_C(  51),  INT8_C(  26),  INT8_C(  10), -INT8_C( 119),  INT8_C(  79),  INT8_C(  49) },
      {
      -INT8_C(   8),
       INT8_C( 126),
      -INT8_C(  76),
       INT8_C(  62),
       INT8_C(  84),
       INT8_C(  82),
      -INT8_C(  45),
       INT8_C(  31),
       INT8_C(  51),
       INT8_C(  50),
       INT8_C(  75),
       INT8_C(  26),
       INT8_C(  74),
       INT8_C( 116),
       INT8_C(  10),
       INT8_C( 121),
       INT8_C( 111),
      -INT8_C( 119),
       INT8_C(  46),
       INT8_C(  61),
       INT8_C(  79),
      -INT8_C(  32),
      -INT8_C(  83),
       INT8_C(  49),
      }
    },
    { {  INT8_C(  62), -INT8_C(  67), -INT8_C(  56),  INT8_C(   8), -INT8_C(  57),  INT8_C(  14), -INT8_C(  37), -INT8_C(  65) },
      {  INT8_C(  76), -INT8_C(  82), -INT8_C(  15), -INT8_C( 106),  INT8_C(  40),  INT8_C(  32),  INT8_C( 119), -INT8_C(  90) },
      {  INT8_C( 116), -INT8_C( 106), -INT8_C(  15), -INT8_C(  23),  INT8_C(   5),  INT8_C(  46), -INT8_C( 106), -INT8_C(  70) },
      {
       INT8_C(  62),
       INT8_C(  76),
       INT8_C( 116),
      -INT8_C(  67),
      -INT8_C(  82),
      -INT8_C( 106),
      -INT8_C(  56),
      -INT8_C(  15),
      -INT8_C(  15),
       INT8_C(   8),
      -INT8_C( 106),
      -INT8_C(  23),
      -INT8_C(  57),
       INT8_C(  40),
       INT8_C(   5),
       INT8_C(  14),
       INT8_C(  32),
       INT8_C(  46),
      -INT8_C(  37),
       INT8_C( 119),
      -INT8_C( 106),
      -INT8_C(  65),
      -INT8_C(  90),
      -INT8_C(  70),
      }
    },
    { { -INT8_C( 127), -INT8_C(  54), -INT8_C(  44), -INT8_C( 117),  INT8_C(  83),  INT8_C(  36), -INT8_C(  68), -INT8_C( 111) },
      { -INT8_C(  31), -INT8_C( 124), -INT8_C( 103), -INT8_C(  88), -INT8_C( 110),  INT8_C( 117),  INT8_C( 103), -INT8_C(  33) },
      {  INT8_C(  35),  INT8_C(  88),  INT8_C( 117),  INT8_C(  75),  INT8_C( 120), -INT8_C(  20), -INT8_C(  14), -INT8_C(  19) },
      {
      -INT8_C( 127),
      -INT8_C(  31),
       INT8_C(  35),
      -INT8_C(  54),
      -INT8_C( 124),
       INT8_C(  88),
      -INT8_C(  44),
      -INT8_C( 103),
       INT8_C( 117),
      -INT8_C( 117),
      -INT8_C(  88),
       INT8_C(  75),
       INT8_C(  83),
      -INT8_C( 110),
       INT8_C( 120),
       INT8_C(  36),
       INT8_C( 117),
      -INT8_C(  20),
      -INT8_C(  68),
       INT8_C( 103),
      -INT8_C(  14),
      -INT8_C( 111),
      -INT8_C(  33),
      -INT8_C(  19),
      }
    },
    { { -INT8_C( 125), -INT8_C(  29), -INT8_C(  42), -INT8_C( 120),  INT8_C(  18),  INT8_C( 108),  INT8_C(  66), -INT8_C( 109) },
      {  INT8_C(  54),  INT8_C(  23),  INT8_C(  30), -INT8_C( 118),  INT8_C(  59), -INT8_C(  38),  INT8_C(  27),  INT8_C(  28) },
      {  INT8_C(  94), -INT8_C(  75), -INT8_C(  60), -INT8_C(  16),  INT8_C(  42),  INT8_C(  43), -INT8_C(  49),  INT8_C(  77) },
      {
      -INT8_C( 125),
       INT8_C(  54),
       INT8_C(  94),
      -INT8_C(  29),
       INT8_C(  23),
      -INT8_C(  75),
      -INT8_C(  42),
       INT8_C(  30),
      -INT8_C(  60),
      -INT8_C( 120),
      -INT8_C( 118),
      -INT8_C(  16),
       INT8_C(  18),
       INT8_C(  59),
       INT8_C(  42),
       INT8_C( 108),
      -INT8_C(  38),
       INT8_C(  43),
       INT8_C(  66),
       INT8_C(  27),
      -INT8_C(  49),
      -INT8_C( 109),
       INT8_C(  28),
       INT8_C(  77),
      }
    },
    { { -INT8_C( 125),  INT8_C(  69), -INT8_C( 103), -INT8_C(   4),  INT8_C(  49), -INT8_C( 117), -INT8_C(  23), -INT8_C(  76) },
      {  INT8_C( 110), -INT8_C(  65),  INT8_C(  61),      INT8_MIN,  INT8_C(  43),      INT8_MAX,  INT8_C(  19),  INT8_C(  98) },
      { -INT8_C( 106),  INT8_C(  49), -INT8_C(  20), -INT8_C(  47),  INT8_C(  11),  INT8_C(   7), -INT8_C(  19),  INT8_C( 105) },
      {
      -INT8_C( 125),
       INT8_C( 110),
      -INT8_C( 106),
       INT8_C(  69),
      -INT8_C(  65),
       INT8_C(  49),
      -INT8_C( 103),
       INT8_C(  61),
      -INT8_C(  20),
      -INT8_C(   4),
           INT8_MIN,
      -INT8_C(  47),
       INT8_C(  49),
       INT8_C(  43),
       INT8_C(  11),
      -INT8_C( 117),
           INT8_MAX,
       INT8_C(   7),
      -INT8_C(  23),
       INT8_C(  19),
      -INT8_C(  19),
      -INT8_C(  76),
       INT8_C(  98),
       INT8_C( 105),
      }
    },

  };

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

    r_ = simde_vld3_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_int8x8x3_t a = { { a0, a1, a2 } };
    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);
    int8_t buf[24];
    simde_vst3_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_vst3_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t r0[4];
    int16_t r1[4];
    int16_t r2[4];
    int16_t a[12];
  } test_vec[] = {
    { { -INT16_C( 12961), -INT16_C(  6596),  INT16_C( 18449),  INT16_C(  9642) },
      { -INT16_C( 26186),  INT16_C(  4954), -INT16_C( 25970),  INT16_C( 13983) },
      {  INT16_C( 14092), -INT16_C( 14144),  INT16_C(   792),  INT16_C(  6146) },
      {
      -INT16_C( 12961),
      -INT16_C( 26186),
       INT16_C( 14092),
      -INT16_C(  6596),
       INT16_C(  4954),
      -INT16_C( 14144),
       INT16_C( 18449),
      -INT16_C( 25970),
       INT16_C(   792),
       INT16_C(  9642),
       INT16_C( 13983),
       INT16_C(  6146),
      }
    },
    { { -INT16_C( 19593), -INT16_C(  4112), -INT16_C(  6692),  INT16_C( 15284) },
      { -INT16_C(  3918), -INT16_C( 15327), -INT16_C( 13512), -INT16_C(  4375) },
      {  INT16_C( 17252), -INT16_C(  3583), -INT16_C( 24355), -INT16_C(  5592) },
      {
      -INT16_C( 19593),
      -INT16_C(  3918),
       INT16_C( 17252),
      -INT16_C(  4112),
      -INT16_C( 15327),
      -INT16_C(  3583),
      -INT16_C(  6692),
      -INT16_C( 13512),
      -INT16_C( 24355),
       INT16_C( 15284),
      -INT16_C(  4375),
      -INT16_C(  5592),
      }
    },
    { { -INT16_C(  5673), -INT16_C(  3918), -INT16_C( 19220),  INT16_C( 25352) },
      { -INT16_C(  1945),  INT16_C( 17234),  INT16_C(  1757), -INT16_C( 28545) },
      { -INT16_C( 24330),  INT16_C( 11860),  INT16_C( 15724), -INT16_C( 12260) },
      {
      -INT16_C(  5673),
      -INT16_C(  1945),
      -INT16_C( 24330),
      -INT16_C(  3918),
       INT16_C( 17234),
       INT16_C( 11860),
      -INT16_C( 19220),
       INT16_C(  1757),
       INT16_C( 15724),
       INT16_C( 25352),
      -INT16_C( 28545),
      -INT16_C( 12260),
      }
    },
    { {  INT16_C(  7552),  INT16_C( 24003), -INT16_C(  5186), -INT16_C( 27321) },
      { -INT16_C(  1580), -INT16_C( 15995), -INT16_C( 29267),  INT16_C(  5156) },
      {  INT16_C( 30598),  INT16_C( 25432), -INT16_C( 10371),  INT16_C( 29939) },
      {
       INT16_C(  7552),
      -INT16_C(  1580),
       INT16_C( 30598),
       INT16_C( 24003),
      -INT16_C( 15995),
       INT16_C( 25432),
      -INT16_C(  5186),
      -INT16_C( 29267),
      -INT16_C( 10371),
      -INT16_C( 27321),
       INT16_C(  5156),
       INT16_C( 29939),
      }
    },
    { {  INT16_C( 18295), -INT16_C(  7262), -INT16_C( 16508),  INT16_C(  1204) },
      {  INT16_C( 30684), -INT16_C( 26014), -INT16_C( 22174),  INT16_C( 14128) },
      { -INT16_C( 19037),  INT16_C( 20728),  INT16_C(  7235), -INT16_C( 13979) },
      {
       INT16_C( 18295),
       INT16_C( 30684),
      -INT16_C( 19037),
      -INT16_C(  7262),
      -INT16_C( 26014),
       INT16_C( 20728),
      -INT16_C( 16508),
      -INT16_C( 22174),
       INT16_C(  7235),
       INT16_C(  1204),
       INT16_C( 14128),
      -INT16_C( 13979),
      }
    },
    { { -INT16_C( 17005),  INT16_C(  4396),  INT16_C(  8340),  INT16_C(  2949) },
      {  INT16_C( 10087), -INT16_C(  4881), -INT16_C( 23578), -INT16_C( 15376) },
      {  INT16_C( 21018),  INT16_C( 31837), -INT16_C( 29188), -INT16_C( 24653) },
      {
      -INT16_C( 17005),
       INT16_C( 10087),
       INT16_C( 21018),
       INT16_C(  4396),
      -INT16_C(  4881),
       INT16_C( 31837),
       INT16_C(  8340),
      -INT16_C( 23578),
      -INT16_C( 29188),
       INT16_C(  2949),
      -INT16_C( 15376),
      -INT16_C( 24653),
      }
    },
    { { -INT16_C( 21693), -INT16_C( 30993),  INT16_C( 21704),  INT16_C( 23375) },
      {  INT16_C( 31505), -INT16_C( 23188), -INT16_C(  3685),  INT16_C(   945) },
      { -INT16_C( 24551), -INT16_C(    17), -INT16_C(  8381),  INT16_C( 24002) },
      {
      -INT16_C( 21693),
       INT16_C( 31505),
      -INT16_C( 24551),
      -INT16_C( 30993),
      -INT16_C( 23188),
      -INT16_C(    17),
       INT16_C( 21704),
      -INT16_C(  3685),
      -INT16_C(  8381),
       INT16_C( 23375),
       INT16_C(   945),
       INT16_C( 24002),
      }
    },
    { {  INT16_C(  8242),  INT16_C( 11993), -INT16_C( 29267), -INT16_C(  3891) },
      { -INT16_C( 17352),  INT16_C(   118), -INT16_C( 15087),  INT16_C(  8796) },
      { -INT16_C( 14271), -INT16_C(  9016),  INT16_C( 31162), -INT16_C( 11297) },
      {
       INT16_C(  8242),
      -INT16_C( 17352),
      -INT16_C( 14271),
       INT16_C( 11993),
       INT16_C(   118),
      -INT16_C(  9016),
      -INT16_C( 29267),
      -INT16_C( 15087),
       INT16_C( 31162),
      -INT16_C(  3891),
       INT16_C(  8796),
      -INT16_C( 11297),
      }
    },

  };

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

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

    r_ = simde_vld3_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_int16x4x3_t a = { { a0, a1, a2 } };
    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);
    int16_t buf[12];
    simde_vst3_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_vst3_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t r0[2];
    int32_t r1[2];
    int32_t r2[2];
    int32_t a[6];
  } test_vec[] = {
    { {  INT32_C(  1914427947),  INT32_C(  1925674776) },
      {  INT32_C(  1209568771),  INT32_C(  1487047557) },
      {  INT32_C(  1914078099), -INT32_C(   432278526) },
      {
       INT32_C(  1914427947),
       INT32_C(  1209568771),
       INT32_C(  1914078099),
       INT32_C(  1925674776),
       INT32_C(  1487047557),
      -INT32_C(   432278526),
      }
    },
    { {  INT32_C(  1941302689), -INT32_C(  1422572160) },
      {  INT32_C(   924733471), -INT32_C(   894769721) },
      { -INT32_C(   116145548), -INT32_C(   531516083) },
      {
       INT32_C(  1941302689),
       INT32_C(   924733471),
      -INT32_C(   116145548),
      -INT32_C(  1422572160),
      -INT32_C(   894769721),
      -INT32_C(   531516083),
      }
    },
    { {  INT32_C(   995256376), -INT32_C(    48132772) },
      { -INT32_C(    76491141),  INT32_C(   983999771) },
      { -INT32_C(  1116551947),  INT32_C(   512171178) },
      {
       INT32_C(   995256376),
      -INT32_C(    76491141),
      -INT32_C(  1116551947),
      -INT32_C(    48132772),
       INT32_C(   983999771),
       INT32_C(   512171178),
      }
    },
    { {  INT32_C(   722967262), -INT32_C(  2012452784) },
      {  INT32_C(   751001296),  INT32_C(  1730799084) },
      { -INT32_C(   681403717),  INT32_C(   890308671) },
      {
       INT32_C(   722967262),
       INT32_C(   751001296),
      -INT32_C(   681403717),
      -INT32_C(  2012452784),
       INT32_C(  1730799084),
       INT32_C(   890308671),
      }
    },
    { {  INT32_C(  2012382157),  INT32_C(  2106947999) },
      {  INT32_C(  1688841236), -INT32_C(   437471980) },
      { -INT32_C(    15618029),  INT32_C(  1348877205) },
      {
       INT32_C(  2012382157),
       INT32_C(  1688841236),
      -INT32_C(    15618029),
       INT32_C(  2106947999),
      -INT32_C(   437471980),
       INT32_C(  1348877205),
      }
    },
    { {  INT32_C(   338151637), -INT32_C(  1639368239) },
      {  INT32_C(  1544895420), -INT32_C(   908481867) },
      {  INT32_C(  1781367382),  INT32_C(  1263474999) },
      {
       INT32_C(   338151637),
       INT32_C(  1544895420),
       INT32_C(  1781367382),
      -INT32_C(  1639368239),
      -INT32_C(   908481867),
       INT32_C(  1263474999),
      }
    },
    { {  INT32_C(  1581933001),  INT32_C(  1907339676) },
      {  INT32_C(  1250285177), -INT32_C(   857157873) },
      { -INT32_C(  1087832822), -INT32_C(    41418329) },
      {
       INT32_C(  1581933001),
       INT32_C(  1250285177),
      -INT32_C(  1087832822),
       INT32_C(  1907339676),
      -INT32_C(   857157873),
      -INT32_C(    41418329),
      }
    },
    { { -INT32_C(  1150765692), -INT32_C(  1744390193) },
      { -INT32_C(  1258860264),  INT32_C(  2066064898) },
      { -INT32_C(  1933137028), -INT32_C(  2074562950) },
      {
      -INT32_C(  1150765692),
      -INT32_C(  1258860264),
      -INT32_C(  1933137028),
      -INT32_C(  1744390193),
       INT32_C(  2066064898),
      -INT32_C(  2074562950),
      }
    },

  };

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

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

    r_ = simde_vld3_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_int32x2x3_t a = { { a0, a1, a2 } };
    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);
    int32_t buf[6];
    simde_vst3_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_vst3_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t r0[1];
    int64_t r1[1];
    int64_t r2[1];
    int64_t a[3];
  } test_vec[] = {
    { {  INT64_C( 3572290692995033026) },
      {  INT64_C( 3052598082801596878) },
      {  INT64_C( 2809764841870853617) },
      {
       INT64_C( 3572290692995033026),
       INT64_C( 3052598082801596878),
       INT64_C( 2809764841870853617),
      }
    },
    { { -INT64_C( 8572706592134440696) },
      { -INT64_C( 7967295716091007032) },
      { -INT64_C( 3537755775352906508) },
      {
      -INT64_C( 8572706592134440696),
      -INT64_C( 7967295716091007032),
      -INT64_C( 3537755775352906508),
      }
    },
    { {  INT64_C( 5892241348017586019) },
      {  INT64_C( 6492965336728335051) },
      {  INT64_C( 8099449588095058452) },
      {
       INT64_C( 5892241348017586019),
       INT64_C( 6492965336728335051),
       INT64_C( 8099449588095058452),
      }
    },
    { {  INT64_C( 2922014572781856738) },
      {  INT64_C( 4516420428428149011) },
      {  INT64_C(  246550016633621118) },
      {
       INT64_C( 2922014572781856738),
       INT64_C( 4516420428428149011),
       INT64_C(  246550016633621118),
      }
    },
    { { -INT64_C( 1523834019503275283) },
      {  INT64_C( 3356930063699871657) },
      {  INT64_C( 7487577332208262455) },
      {
      -INT64_C( 1523834019503275283),
       INT64_C( 3356930063699871657),
       INT64_C( 7487577332208262455),
      }
    },
    { { -INT64_C( 7893153571695773310) },
      {  INT64_C( 4168318472599392229) },
      { -INT64_C( 1213652234887790114) },
      {
      -INT64_C( 7893153571695773310),
       INT64_C( 4168318472599392229),
      -INT64_C( 1213652234887790114),
      }
    },
    { {  INT64_C( 7848230343900050330) },
      {  INT64_C( 2987104008165810748) },
      {  INT64_C( 2768850959988125858) },
      {
       INT64_C( 7848230343900050330),
       INT64_C( 2987104008165810748),
       INT64_C( 2768850959988125858),
      }
    },
    { { -INT64_C( 1506374561952689296) },
      {  INT64_C( 8165687162410349307) },
      {  INT64_C( 2677890818908565691) },
      {
      -INT64_C( 1506374561952689296),
       INT64_C( 8165687162410349307),
       INT64_C( 2677890818908565691),
      }
    },

  };

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

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

    r_ = simde_vld3_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_int64x1x3_t a = { { a0, a1, a2 } };
    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);
    int64_t buf[3];
    simde_vst3_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_vst3_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t r0[8];
    uint8_t r1[8];
    uint8_t r2[8];
    uint8_t a[24];
  } test_vec[] = {
    { { UINT8_C( 12), UINT8_C( 67), UINT8_C(124), UINT8_C(237), UINT8_C(151), UINT8_C(131), UINT8_C(124), UINT8_C(175) },
      { UINT8_C(205), UINT8_C(128), UINT8_C(134), UINT8_C(187), UINT8_C(236), UINT8_C(  2), UINT8_C( 61), UINT8_C( 50) },
      { UINT8_C( 18), UINT8_C(148), UINT8_C(148), UINT8_C( 14), UINT8_C(133), UINT8_C( 73), UINT8_C( 44), UINT8_C(182) },
      {
      UINT8_C( 12),
      UINT8_C(205),
      UINT8_C( 18),
      UINT8_C( 67),
      UINT8_C(128),
      UINT8_C(148),
      UINT8_C(124),
      UINT8_C(134),
      UINT8_C(148),
      UINT8_C(237),
      UINT8_C(187),
      UINT8_C( 14),
      UINT8_C(151),
      UINT8_C(236),
      UINT8_C(133),
      UINT8_C(131),
      UINT8_C(  2),
      UINT8_C( 73),
      UINT8_C(124),
      UINT8_C( 61),
      UINT8_C( 44),
      UINT8_C(175),
      UINT8_C( 50),
      UINT8_C(182),
      }
    },
    { { UINT8_C( 10), UINT8_C(157), UINT8_C(245), UINT8_C( 84), UINT8_C(206), UINT8_C( 89), UINT8_C(211), UINT8_C(218) },
      { UINT8_C(156), UINT8_C( 79), UINT8_C(199), UINT8_C( 51), UINT8_C(210), UINT8_C( 67), UINT8_C(226), UINT8_C(159) },
      { UINT8_C(196), UINT8_C(104), UINT8_C( 90), UINT8_C(176), UINT8_C(106), UINT8_C(152), UINT8_C(226), UINT8_C(125) },
      {
      UINT8_C( 10),
      UINT8_C(156),
      UINT8_C(196),
      UINT8_C(157),
      UINT8_C( 79),
      UINT8_C(104),
      UINT8_C(245),
      UINT8_C(199),
      UINT8_C( 90),
      UINT8_C( 84),
      UINT8_C( 51),
      UINT8_C(176),
      UINT8_C(206),
      UINT8_C(210),
      UINT8_C(106),
      UINT8_C( 89),
      UINT8_C( 67),
      UINT8_C(152),
      UINT8_C(211),
      UINT8_C(226),
      UINT8_C(226),
      UINT8_C(218),
      UINT8_C(159),
      UINT8_C(125),
      }
    },
    { { UINT8_C( 44), UINT8_C(119), UINT8_C(139), UINT8_C(177), UINT8_C(192), UINT8_C(183), UINT8_C(103), UINT8_C(202) },
      { UINT8_C( 85), UINT8_C( 92), UINT8_C( 30), UINT8_C( 35), UINT8_C(181), UINT8_C(241), UINT8_C(253), UINT8_C( 81) },
      { UINT8_C( 64), UINT8_C(196), UINT8_C(132), UINT8_C( 19), UINT8_C(  8), UINT8_C(103), UINT8_C(178), UINT8_C(204) },
      {
      UINT8_C( 44),
      UINT8_C( 85),
      UINT8_C( 64),
      UINT8_C(119),
      UINT8_C( 92),
      UINT8_C(196),
      UINT8_C(139),
      UINT8_C( 30),
      UINT8_C(132),
      UINT8_C(177),
      UINT8_C( 35),
      UINT8_C( 19),
      UINT8_C(192),
      UINT8_C(181),
      UINT8_C(  8),
      UINT8_C(183),
      UINT8_C(241),
      UINT8_C(103),
      UINT8_C(103),
      UINT8_C(253),
      UINT8_C(178),
      UINT8_C(202),
      UINT8_C( 81),
      UINT8_C(204),
      }
    },
    { { UINT8_C(207), UINT8_C( 13), UINT8_C(124), UINT8_C( 58), UINT8_C(165), UINT8_C( 94), UINT8_C(183), UINT8_C(209) },
      { UINT8_C(213), UINT8_C( 66), UINT8_C(130), UINT8_C(150), UINT8_C(250), UINT8_C(233), UINT8_C( 96), UINT8_C( 79) },
      { UINT8_C( 69), UINT8_C(127), UINT8_C(114), UINT8_C(250), UINT8_C(112), UINT8_C(111), UINT8_C( 75), UINT8_C(177) },
      {
      UINT8_C(207),
      UINT8_C(213),
      UINT8_C( 69),
      UINT8_C( 13),
      UINT8_C( 66),
      UINT8_C(127),
      UINT8_C(124),
      UINT8_C(130),
      UINT8_C(114),
      UINT8_C( 58),
      UINT8_C(150),
      UINT8_C(250),
      UINT8_C(165),
      UINT8_C(250),
      UINT8_C(112),
      UINT8_C( 94),
      UINT8_C(233),
      UINT8_C(111),
      UINT8_C(183),
      UINT8_C( 96),
      UINT8_C( 75),
      UINT8_C(209),
      UINT8_C( 79),
      UINT8_C(177),
      }
    },
    { { UINT8_C( 51), UINT8_C(207), UINT8_C(196), UINT8_C( 59), UINT8_C( 54), UINT8_C(118), UINT8_C(  7), UINT8_C(  6) },
      { UINT8_C(131), UINT8_C(131), UINT8_C( 64), UINT8_C( 40), UINT8_C(226), UINT8_C(247), UINT8_C(249), UINT8_C(183) },
      { UINT8_C( 57), UINT8_C(123), UINT8_C( 77), UINT8_C( 51), UINT8_C(100), UINT8_C(174), UINT8_C(130), UINT8_C(169) },
      {
      UINT8_C( 51),
      UINT8_C(131),
      UINT8_C( 57),
      UINT8_C(207),
      UINT8_C(131),
      UINT8_C(123),
      UINT8_C(196),
      UINT8_C( 64),
      UINT8_C( 77),
      UINT8_C( 59),
      UINT8_C( 40),
      UINT8_C( 51),
      UINT8_C( 54),
      UINT8_C(226),
      UINT8_C(100),
      UINT8_C(118),
      UINT8_C(247),
      UINT8_C(174),
      UINT8_C(  7),
      UINT8_C(249),
      UINT8_C(130),
      UINT8_C(  6),
      UINT8_C(183),
      UINT8_C(169),
      }
    },
    { { UINT8_C( 45), UINT8_C(244), UINT8_C(163), UINT8_C(157), UINT8_C( 99), UINT8_C(238), UINT8_C( 78), UINT8_C(151) },
      { UINT8_C(190), UINT8_C( 18), UINT8_C(210), UINT8_C(244), UINT8_C(137), UINT8_C(218), UINT8_C(250), UINT8_C( 12) },
      { UINT8_C( 93), UINT8_C( 58), UINT8_C( 53), UINT8_C( 63), UINT8_C( 49), UINT8_C( 46), UINT8_C(247), UINT8_C(107) },
      {
      UINT8_C( 45),
      UINT8_C(190),
      UINT8_C( 93),
      UINT8_C(244),
      UINT8_C( 18),
      UINT8_C( 58),
      UINT8_C(163),
      UINT8_C(210),
      UINT8_C( 53),
      UINT8_C(157),
      UINT8_C(244),
      UINT8_C( 63),
      UINT8_C( 99),
      UINT8_C(137),
      UINT8_C( 49),
      UINT8_C(238),
      UINT8_C(218),
      UINT8_C( 46),
      UINT8_C( 78),
      UINT8_C(250),
      UINT8_C(247),
      UINT8_C(151),
      UINT8_C( 12),
      UINT8_C(107),
      }
    },
    { { UINT8_C(170), UINT8_C( 68), UINT8_C(158), UINT8_C( 14), UINT8_C(242), UINT8_C( 33), UINT8_C(184), UINT8_C( 31) },
      { UINT8_C( 21), UINT8_C( 91), UINT8_C(189), UINT8_C(121), UINT8_C( 74), UINT8_C( 11), UINT8_C( 16), UINT8_C(  8) },
      { UINT8_C( 30), UINT8_C(226), UINT8_C(252), UINT8_C(167), UINT8_C(188), UINT8_C(247), UINT8_C(179), UINT8_C( 26) },
      {
      UINT8_C(170),
      UINT8_C( 21),
      UINT8_C( 30),
      UINT8_C( 68),
      UINT8_C( 91),
      UINT8_C(226),
      UINT8_C(158),
      UINT8_C(189),
      UINT8_C(252),
      UINT8_C( 14),
      UINT8_C(121),
      UINT8_C(167),
      UINT8_C(242),
      UINT8_C( 74),
      UINT8_C(188),
      UINT8_C( 33),
      UINT8_C( 11),
      UINT8_C(247),
      UINT8_C(184),
      UINT8_C( 16),
      UINT8_C(179),
      UINT8_C( 31),
      UINT8_C(  8),
      UINT8_C( 26),
      }
    },
    { { UINT8_C( 49), UINT8_C(232), UINT8_C( 89), UINT8_C( 99), UINT8_C( 23), UINT8_C( 80), UINT8_C(206), UINT8_C(193) },
      { UINT8_C(149), UINT8_C(108), UINT8_C(207), UINT8_C(135), UINT8_C(141), UINT8_C(135), UINT8_C(167), UINT8_C(163) },
      { UINT8_C(227), UINT8_C(100), UINT8_C( 28), UINT8_C( 45), UINT8_C(111), UINT8_C( 44), UINT8_C( 53), UINT8_C(141) },
      {
      UINT8_C( 49),
      UINT8_C(149),
      UINT8_C(227),
      UINT8_C(232),
      UINT8_C(108),
      UINT8_C(100),
      UINT8_C( 89),
      UINT8_C(207),
      UINT8_C( 28),
      UINT8_C( 99),
      UINT8_C(135),
      UINT8_C( 45),
      UINT8_C( 23),
      UINT8_C(141),
      UINT8_C(111),
      UINT8_C( 80),
      UINT8_C(135),
      UINT8_C( 44),
      UINT8_C(206),
      UINT8_C(167),
      UINT8_C( 53),
      UINT8_C(193),
      UINT8_C(163),
      UINT8_C(141),
      }
    },

  };

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

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

    r_ = simde_vld3_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_uint8x8x3_t a = { { a0, a1, a2 } };
    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);
    uint8_t buf[24];
    simde_vst3_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_vst3_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t r0[4];
    uint16_t r1[4];
    uint16_t r2[4];
    uint16_t a[12];
  } test_vec[] = {
    { { UINT16_C( 9344), UINT16_C(14996), UINT16_C( 7435), UINT16_C(59276) },
      { UINT16_C(26277), UINT16_C(23774), UINT16_C(21915), UINT16_C(  425) },
      { UINT16_C(18737), UINT16_C(57584), UINT16_C(38525), UINT16_C(39425) },
      {
      UINT16_C( 9344),
      UINT16_C(26277),
      UINT16_C(18737),
      UINT16_C(14996),
      UINT16_C(23774),
      UINT16_C(57584),
      UINT16_C( 7435),
      UINT16_C(21915),
      UINT16_C(38525),
      UINT16_C(59276),
      UINT16_C(  425),
      UINT16_C(39425),
      }
    },
    { { UINT16_C(31766), UINT16_C(36501), UINT16_C(13366), UINT16_C(47054) },
      { UINT16_C(25177), UINT16_C(25841), UINT16_C(32127), UINT16_C( 9547) },
      { UINT16_C(10724), UINT16_C(32641), UINT16_C(10878), UINT16_C(45184) },
      {
      UINT16_C(31766),
      UINT16_C(25177),
      UINT16_C(10724),
      UINT16_C(36501),
      UINT16_C(25841),
      UINT16_C(32641),
      UINT16_C(13366),
      UINT16_C(32127),
      UINT16_C(10878),
      UINT16_C(47054),
      UINT16_C( 9547),
      UINT16_C(45184),
      }
    },
    { { UINT16_C(29044), UINT16_C(61840), UINT16_C(37127), UINT16_C( 7563) },
      { UINT16_C( 8206), UINT16_C(17579), UINT16_C(31317), UINT16_C(44795) },
      { UINT16_C(60892), UINT16_C(23570), UINT16_C(23914), UINT16_C(20097) },
      {
      UINT16_C(29044),
      UINT16_C( 8206),
      UINT16_C(60892),
      UINT16_C(61840),
      UINT16_C(17579),
      UINT16_C(23570),
      UINT16_C(37127),
      UINT16_C(31317),
      UINT16_C(23914),
      UINT16_C( 7563),
      UINT16_C(44795),
      UINT16_C(20097),
      }
    },
    { { UINT16_C(  646), UINT16_C( 1230), UINT16_C(20013), UINT16_C(41396) },
      { UINT16_C(17599), UINT16_C(51090), UINT16_C( 7638), UINT16_C(58596) },
      { UINT16_C(36926), UINT16_C(37672), UINT16_C( 9226), UINT16_C(58945) },
      {
      UINT16_C(  646),
      UINT16_C(17599),
      UINT16_C(36926),
      UINT16_C( 1230),
      UINT16_C(51090),
      UINT16_C(37672),
      UINT16_C(20013),
      UINT16_C( 7638),
      UINT16_C( 9226),
      UINT16_C(41396),
      UINT16_C(58596),
      UINT16_C(58945),
      }
    },
    { { UINT16_C(21265), UINT16_C(31554), UINT16_C(50096), UINT16_C(14026) },
      { UINT16_C(39110), UINT16_C(62266), UINT16_C(61414), UINT16_C(42644) },
      { UINT16_C( 9779), UINT16_C( 2413), UINT16_C(20803), UINT16_C(33261) },
      {
      UINT16_C(21265),
      UINT16_C(39110),
      UINT16_C( 9779),
      UINT16_C(31554),
      UINT16_C(62266),
      UINT16_C( 2413),
      UINT16_C(50096),
      UINT16_C(61414),
      UINT16_C(20803),
      UINT16_C(14026),
      UINT16_C(42644),
      UINT16_C(33261),
      }
    },
    { { UINT16_C( 5857), UINT16_C(60180), UINT16_C(21818), UINT16_C(19410) },
      { UINT16_C( 5288), UINT16_C(22726), UINT16_C(37080), UINT16_C(40590) },
      { UINT16_C(51496), UINT16_C( 3985), UINT16_C( 9656), UINT16_C(60341) },
      {
      UINT16_C( 5857),
      UINT16_C( 5288),
      UINT16_C(51496),
      UINT16_C(60180),
      UINT16_C(22726),
      UINT16_C( 3985),
      UINT16_C(21818),
      UINT16_C(37080),
      UINT16_C( 9656),
      UINT16_C(19410),
      UINT16_C(40590),
      UINT16_C(60341),
      }
    },
    { { UINT16_C( 8779), UINT16_C(36597), UINT16_C(57971), UINT16_C(21776) },
      { UINT16_C( 9464), UINT16_C(12864), UINT16_C( 4730), UINT16_C( 8829) },
      { UINT16_C(17447), UINT16_C(65403), UINT16_C( 2516), UINT16_C(64925) },
      {
      UINT16_C( 8779),
      UINT16_C( 9464),
      UINT16_C(17447),
      UINT16_C(36597),
      UINT16_C(12864),
      UINT16_C(65403),
      UINT16_C(57971),
      UINT16_C( 4730),
      UINT16_C( 2516),
      UINT16_C(21776),
      UINT16_C( 8829),
      UINT16_C(64925),
      }
    },
    { { UINT16_C(11986), UINT16_C(35340), UINT16_C(49491), UINT16_C(40566) },
      { UINT16_C(27619), UINT16_C(22060), UINT16_C(15437), UINT16_C(18091) },
      { UINT16_C(60513), UINT16_C(56184), UINT16_C(63230), UINT16_C( 9725) },
      {
      UINT16_C(11986),
      UINT16_C(27619),
      UINT16_C(60513),
      UINT16_C(35340),
      UINT16_C(22060),
      UINT16_C(56184),
      UINT16_C(49491),
      UINT16_C(15437),
      UINT16_C(63230),
      UINT16_C(40566),
      UINT16_C(18091),
      UINT16_C( 9725),
      }
    },

  };

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

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

    r_ = simde_vld3_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_uint16x4x3_t a = { { a0, a1, a2 } };
    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);
    uint16_t buf[12];
    simde_vst3_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_vst3_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t r0[2];
    uint32_t r1[2];
    uint32_t r2[2];
    uint32_t a[6];
  } test_vec[] = {
    { { UINT32_C(1250214441), UINT32_C(1747430402) },
      { UINT32_C( 407036501), UINT32_C( 975185396) },
      { UINT32_C(3833042844), UINT32_C( 714403033) },
      {
      UINT32_C(1250214441),
      UINT32_C( 407036501),
      UINT32_C(3833042844),
      UINT32_C(1747430402),
      UINT32_C( 975185396),
      UINT32_C( 714403033),
      }
    },
    { { UINT32_C( 284881893), UINT32_C(1679415099) },
      { UINT32_C(2628689306), UINT32_C(2667894090) },
      { UINT32_C(2897692599), UINT32_C( 149346156) },
      {
      UINT32_C( 284881893),
      UINT32_C(2628689306),
      UINT32_C(2897692599),
      UINT32_C(1679415099),
      UINT32_C(2667894090),
      UINT32_C( 149346156),
      }
    },
    { { UINT32_C(1206738286), UINT32_C( 779190601) },
      { UINT32_C(2956880757), UINT32_C(3709098051) },
      { UINT32_C(1064944373), UINT32_C(1323203991) },
      {
      UINT32_C(1206738286),
      UINT32_C(2956880757),
      UINT32_C(1064944373),
      UINT32_C( 779190601),
      UINT32_C(3709098051),
      UINT32_C(1323203991),
      }
    },
    { { UINT32_C( 838505924), UINT32_C(3661226348) },
      { UINT32_C(2283939390), UINT32_C( 498504616) },
      { UINT32_C(1120794111), UINT32_C(1109385549) },
      {
      UINT32_C( 838505924),
      UINT32_C(2283939390),
      UINT32_C(1120794111),
      UINT32_C(3661226348),
      UINT32_C( 498504616),
      UINT32_C(1109385549),
      }
    },
    { { UINT32_C( 981637283), UINT32_C(3666370581) },
      { UINT32_C(1644921846), UINT32_C(2721924196) },
      { UINT32_C( 321544043), UINT32_C(4046512626) },
      {
      UINT32_C( 981637283),
      UINT32_C(1644921846),
      UINT32_C( 321544043),
      UINT32_C(3666370581),
      UINT32_C(2721924196),
      UINT32_C(4046512626),
      }
    },
    { { UINT32_C( 590609878), UINT32_C(2170901214) },
      { UINT32_C(  12314602), UINT32_C(1054491464) },
      { UINT32_C( 715187654), UINT32_C(2496519465) },
      {
      UINT32_C( 590609878),
      UINT32_C(  12314602),
      UINT32_C( 715187654),
      UINT32_C(2170901214),
      UINT32_C(1054491464),
      UINT32_C(2496519465),
      }
    },
    { { UINT32_C( 799536956), UINT32_C(2921387992) },
      { UINT32_C(3000063188), UINT32_C(2436052902) },
      { UINT32_C(1720839710), UINT32_C(4171524914) },
      {
      UINT32_C( 799536956),
      UINT32_C(3000063188),
      UINT32_C(1720839710),
      UINT32_C(2921387992),
      UINT32_C(2436052902),
      UINT32_C(4171524914),
      }
    },
    { { UINT32_C(2032354640), UINT32_C(1594814498) },
      { UINT32_C(3230578151), UINT32_C(1634643597) },
      { UINT32_C(2836676610), UINT32_C(2503624567) },
      {
      UINT32_C(2032354640),
      UINT32_C(3230578151),
      UINT32_C(2836676610),
      UINT32_C(1594814498),
      UINT32_C(1634643597),
      UINT32_C(2503624567),
      }
    },

  };

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

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

    r_ = simde_vld3_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_uint32x2x3_t a = { { a0, a1, a2 } };
    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);
    uint32_t buf[6];
    simde_vst3_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_vst3_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t r0[1];
    uint64_t r1[1];
    uint64_t r2[1];
    uint64_t a[3];
  } test_vec[] = {
    { { UINT64_C(12422824856183467782) },
      { UINT64_C( 7004324963154263795) },
      { UINT64_C( 9338655374062009309) },
      {
      UINT64_C(12422824856183467782),
      UINT64_C( 7004324963154263795),
      UINT64_C( 9338655374062009309),
      }
    },
    { { UINT64_C( 6390283869042032365) },
      { UINT64_C( 1465642543073747784) },
      { UINT64_C(14254966942331603968) },
      {
      UINT64_C( 6390283869042032365),
      UINT64_C( 1465642543073747784),
      UINT64_C(14254966942331603968),
      }
    },
    { { UINT64_C( 1378937280728634636) },
      { UINT64_C( 7737497671101794998) },
      { UINT64_C(18425754395142978945) },
      {
      UINT64_C( 1378937280728634636),
      UINT64_C( 7737497671101794998),
      UINT64_C(18425754395142978945),
      }
    },
    { { UINT64_C( 3361450187992158969) },
      { UINT64_C(13048320093653501658) },
      { UINT64_C( 2506568346036438075) },
      {
      UINT64_C( 3361450187992158969),
      UINT64_C(13048320093653501658),
      UINT64_C( 2506568346036438075),
      }
    },
    { { UINT64_C( 4979425705785089819) },
      { UINT64_C(12329956177065970635) },
      { UINT64_C( 1839369556765502675) },
      {
      UINT64_C( 4979425705785089819),
      UINT64_C(12329956177065970635),
      UINT64_C( 1839369556765502675),
      }
    },
    { { UINT64_C( 9081580541621781572) },
      { UINT64_C( 1275277660055456800) },
      { UINT64_C( 8771073248822548798) },
      {
      UINT64_C( 9081580541621781572),
      UINT64_C( 1275277660055456800),
      UINT64_C( 8771073248822548798),
      }
    },
    { { UINT64_C( 7709829577090688264) },
      { UINT64_C(15561442731964266005) },
      { UINT64_C( 9114713076917374501) },
      {
      UINT64_C( 7709829577090688264),
      UINT64_C(15561442731964266005),
      UINT64_C( 9114713076917374501),
      }
    },
    { { UINT64_C(11596565186140273872) },
      { UINT64_C( 2250819095794956716) },
      { UINT64_C(  831350528676433402) },
      {
      UINT64_C(11596565186140273872),
      UINT64_C( 2250819095794956716),
      UINT64_C(  831350528676433402),
      }
    },

  };

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

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

    r_ = simde_vld3_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_uint64x1x3_t a = { { a0, a1, a2 } };
    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);
    uint64_t buf[3];
    simde_vst3_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_vst3q_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 a[24];
  } test_vec[] = {
    { {  SIMDE_FLOAT16_VALUE( 58.181), SIMDE_FLOAT16_VALUE( - 74.070),  SIMDE_FLOAT16_VALUE(  2.770),  SIMDE_FLOAT16_VALUE( 89.824),
        SIMDE_FLOAT16_VALUE( - 73.116),  SIMDE_FLOAT16_VALUE( 77.533), SIMDE_FLOAT16_VALUE( - 71.575),  SIMDE_FLOAT16_VALUE( 68.580) },
      {  SIMDE_FLOAT16_VALUE( 27.343),  SIMDE_FLOAT16_VALUE( 89.326), SIMDE_FLOAT16_VALUE( - 80.249), SIMDE_FLOAT16_VALUE( - 44.763),
         SIMDE_FLOAT16_VALUE( 75.289), SIMDE_FLOAT16_VALUE( -  8.705),  SIMDE_FLOAT16_VALUE( 79.289), SIMDE_FLOAT16_VALUE( - 12.997) },
      {  SIMDE_FLOAT16_VALUE( 88.201), SIMDE_FLOAT16_VALUE( - 99.297),  SIMDE_FLOAT16_VALUE( 94.888), SIMDE_FLOAT16_VALUE( - 94.830),
        SIMDE_FLOAT16_VALUE( - 82.408), SIMDE_FLOAT16_VALUE( - 38.270),  SIMDE_FLOAT16_VALUE( 33.263),  SIMDE_FLOAT16_VALUE( 12.688) },
      {  SIMDE_FLOAT16_VALUE( 58.181),  SIMDE_FLOAT16_VALUE( 27.343),  SIMDE_FLOAT16_VALUE( 88.201), SIMDE_FLOAT16_VALUE( - 74.070),
         SIMDE_FLOAT16_VALUE( 89.326), SIMDE_FLOAT16_VALUE( - 99.297),  SIMDE_FLOAT16_VALUE(  2.770), SIMDE_FLOAT16_VALUE( - 80.249),
         SIMDE_FLOAT16_VALUE( 94.888),  SIMDE_FLOAT16_VALUE( 89.824), SIMDE_FLOAT16_VALUE( - 44.763), SIMDE_FLOAT16_VALUE( - 94.830),
        SIMDE_FLOAT16_VALUE( - 73.116),  SIMDE_FLOAT16_VALUE( 75.289), SIMDE_FLOAT16_VALUE( - 82.408),  SIMDE_FLOAT16_VALUE( 77.533),
        SIMDE_FLOAT16_VALUE( -  8.705), SIMDE_FLOAT16_VALUE( - 38.270), SIMDE_FLOAT16_VALUE( - 71.575),  SIMDE_FLOAT16_VALUE( 79.289),
         SIMDE_FLOAT16_VALUE( 33.263),  SIMDE_FLOAT16_VALUE( 68.580), SIMDE_FLOAT16_VALUE( - 12.997),  SIMDE_FLOAT16_VALUE( 12.688) } },
    { { SIMDE_FLOAT16_VALUE( - 68.228), SIMDE_FLOAT16_VALUE( - 30.795), SIMDE_FLOAT16_VALUE( - 93.060),  SIMDE_FLOAT16_VALUE( 88.656),
         SIMDE_FLOAT16_VALUE( 71.174), SIMDE_FLOAT16_VALUE( - 83.014),  SIMDE_FLOAT16_VALUE( 34.681), SIMDE_FLOAT16_VALUE( - 81.096) },
      {  SIMDE_FLOAT16_VALUE( 80.371),  SIMDE_FLOAT16_VALUE( 94.314), SIMDE_FLOAT16_VALUE( - 28.329), SIMDE_FLOAT16_VALUE( - 76.339),
         SIMDE_FLOAT16_VALUE( 13.986),  SIMDE_FLOAT16_VALUE( 15.222),  SIMDE_FLOAT16_VALUE( 76.136), SIMDE_FLOAT16_VALUE( - 47.982) },
      { SIMDE_FLOAT16_VALUE( - 71.178), SIMDE_FLOAT16_VALUE( - 44.770), SIMDE_FLOAT16_VALUE( - 67.133),  SIMDE_FLOAT16_VALUE( 84.421),
        SIMDE_FLOAT16_VALUE( - 74.326), SIMDE_FLOAT16_VALUE( -  0.009), SIMDE_FLOAT16_VALUE( - 15.213),  SIMDE_FLOAT16_VALUE( 78.007) },
      { SIMDE_FLOAT16_VALUE( - 68.228),  SIMDE_FLOAT16_VALUE( 80.371), SIMDE_FLOAT16_VALUE( - 71.178), SIMDE_FLOAT16_VALUE( - 30.795),
         SIMDE_FLOAT16_VALUE( 94.314), SIMDE_FLOAT16_VALUE( - 44.770), SIMDE_FLOAT16_VALUE( - 93.060), SIMDE_FLOAT16_VALUE( - 28.329),
        SIMDE_FLOAT16_VALUE( - 67.133),  SIMDE_FLOAT16_VALUE( 88.656), SIMDE_FLOAT16_VALUE( - 76.339),  SIMDE_FLOAT16_VALUE( 84.421),
         SIMDE_FLOAT16_VALUE( 71.174),  SIMDE_FLOAT16_VALUE( 13.986), SIMDE_FLOAT16_VALUE( - 74.326), SIMDE_FLOAT16_VALUE( - 83.014),
         SIMDE_FLOAT16_VALUE( 15.222), SIMDE_FLOAT16_VALUE( -  0.009),  SIMDE_FLOAT16_VALUE( 34.681),  SIMDE_FLOAT16_VALUE( 76.136),
        SIMDE_FLOAT16_VALUE( - 15.213), SIMDE_FLOAT16_VALUE( - 81.096), SIMDE_FLOAT16_VALUE( - 47.982),  SIMDE_FLOAT16_VALUE( 78.007) } },
    { { SIMDE_FLOAT16_VALUE( - 99.134), SIMDE_FLOAT16_VALUE( - 13.860), SIMDE_FLOAT16_VALUE( - 92.713), SIMDE_FLOAT16_VALUE( - 86.987),
        SIMDE_FLOAT16_VALUE( - 46.071), SIMDE_FLOAT16_VALUE( - 46.428), SIMDE_FLOAT16_VALUE( - 55.358),  SIMDE_FLOAT16_VALUE( 14.468) },
      { SIMDE_FLOAT16_VALUE( - 16.248), SIMDE_FLOAT16_VALUE( - 50.317), SIMDE_FLOAT16_VALUE( - 57.890),  SIMDE_FLOAT16_VALUE( 13.081),
         SIMDE_FLOAT16_VALUE( 58.363),  SIMDE_FLOAT16_VALUE(  4.390),  SIMDE_FLOAT16_VALUE(  3.684), SIMDE_FLOAT16_VALUE( - 18.959) },
      {  SIMDE_FLOAT16_VALUE( 85.928),  SIMDE_FLOAT16_VALUE( 31.159),  SIMDE_FLOAT16_VALUE( 77.301),  SIMDE_FLOAT16_VALUE( 10.011),
        SIMDE_FLOAT16_VALUE( - 90.228), SIMDE_FLOAT16_VALUE( - 85.132),  SIMDE_FLOAT16_VALUE( 25.086), SIMDE_FLOAT16_VALUE( - 86.977) },
      { SIMDE_FLOAT16_VALUE( - 99.134), SIMDE_FLOAT16_VALUE( - 16.248),  SIMDE_FLOAT16_VALUE( 85.928), SIMDE_FLOAT16_VALUE( - 13.860),
        SIMDE_FLOAT16_VALUE( - 50.317),  SIMDE_FLOAT16_VALUE( 31.159), SIMDE_FLOAT16_VALUE( - 92.713), SIMDE_FLOAT16_VALUE( - 57.890),
         SIMDE_FLOAT16_VALUE( 77.301), SIMDE_FLOAT16_VALUE( - 86.987),  SIMDE_FLOAT16_VALUE( 13.081),  SIMDE_FLOAT16_VALUE( 10.011),
        SIMDE_FLOAT16_VALUE( - 46.071),  SIMDE_FLOAT16_VALUE( 58.363), SIMDE_FLOAT16_VALUE( - 90.228), SIMDE_FLOAT16_VALUE( - 46.428),
         SIMDE_FLOAT16_VALUE(  4.390), SIMDE_FLOAT16_VALUE( - 85.132), SIMDE_FLOAT16_VALUE( - 55.358),  SIMDE_FLOAT16_VALUE(  3.684),
         SIMDE_FLOAT16_VALUE( 25.086),  SIMDE_FLOAT16_VALUE( 14.468), SIMDE_FLOAT16_VALUE( - 18.959), SIMDE_FLOAT16_VALUE( - 86.977) } },
    { {  SIMDE_FLOAT16_VALUE( 30.458), SIMDE_FLOAT16_VALUE( - 38.116), SIMDE_FLOAT16_VALUE( - 23.410), SIMDE_FLOAT16_VALUE( - 76.968),
         SIMDE_FLOAT16_VALUE( 94.449), SIMDE_FLOAT16_VALUE( - 25.593), SIMDE_FLOAT16_VALUE( - 22.524),  SIMDE_FLOAT16_VALUE( 61.018) },
      {  SIMDE_FLOAT16_VALUE( 52.150),  SIMDE_FLOAT16_VALUE(  3.559), SIMDE_FLOAT16_VALUE( - 11.531), SIMDE_FLOAT16_VALUE( - 16.763),
         SIMDE_FLOAT16_VALUE( 58.053),  SIMDE_FLOAT16_VALUE( 59.411), SIMDE_FLOAT16_VALUE( - 87.074),  SIMDE_FLOAT16_VALUE( 76.655) },
      {  SIMDE_FLOAT16_VALUE( 31.620), SIMDE_FLOAT16_VALUE( -  8.034),  SIMDE_FLOAT16_VALUE( 77.915),  SIMDE_FLOAT16_VALUE( 90.009),
         SIMDE_FLOAT16_VALUE( 40.231), SIMDE_FLOAT16_VALUE( - 28.817), SIMDE_FLOAT16_VALUE( - 12.330), SIMDE_FLOAT16_VALUE( - 39.982) },
      {  SIMDE_FLOAT16_VALUE( 30.458),  SIMDE_FLOAT16_VALUE( 52.150),  SIMDE_FLOAT16_VALUE( 31.620), SIMDE_FLOAT16_VALUE( - 38.116),
         SIMDE_FLOAT16_VALUE(  3.559), SIMDE_FLOAT16_VALUE( -  8.034), SIMDE_FLOAT16_VALUE( - 23.410), SIMDE_FLOAT16_VALUE( - 11.531),
         SIMDE_FLOAT16_VALUE( 77.915), SIMDE_FLOAT16_VALUE( - 76.968), SIMDE_FLOAT16_VALUE( - 16.763),  SIMDE_FLOAT16_VALUE( 90.009),
         SIMDE_FLOAT16_VALUE( 94.449),  SIMDE_FLOAT16_VALUE( 58.053),  SIMDE_FLOAT16_VALUE( 40.231), SIMDE_FLOAT16_VALUE( - 25.593),
         SIMDE_FLOAT16_VALUE( 59.411), SIMDE_FLOAT16_VALUE( - 28.817), SIMDE_FLOAT16_VALUE( - 22.524), SIMDE_FLOAT16_VALUE( - 87.074),
        SIMDE_FLOAT16_VALUE( - 12.330),  SIMDE_FLOAT16_VALUE( 61.018),  SIMDE_FLOAT16_VALUE( 76.655), SIMDE_FLOAT16_VALUE( - 39.982) } },
    { {  SIMDE_FLOAT16_VALUE(  3.549), SIMDE_FLOAT16_VALUE( - 62.385), SIMDE_FLOAT16_VALUE( - 33.808),  SIMDE_FLOAT16_VALUE( 25.597),
        SIMDE_FLOAT16_VALUE( - 26.574),  SIMDE_FLOAT16_VALUE( 78.316),  SIMDE_FLOAT16_VALUE(  6.102),  SIMDE_FLOAT16_VALUE( 23.670) },
      { SIMDE_FLOAT16_VALUE( -  9.134),  SIMDE_FLOAT16_VALUE( 38.254),  SIMDE_FLOAT16_VALUE( 59.581),  SIMDE_FLOAT16_VALUE( 25.105),
         SIMDE_FLOAT16_VALUE( 24.218), SIMDE_FLOAT16_VALUE( - 76.984), SIMDE_FLOAT16_VALUE( - 55.415),  SIMDE_FLOAT16_VALUE( 57.498) },
      {  SIMDE_FLOAT16_VALUE( 75.669),  SIMDE_FLOAT16_VALUE( 51.566),  SIMDE_FLOAT16_VALUE( 76.383), SIMDE_FLOAT16_VALUE( - 88.090),
        SIMDE_FLOAT16_VALUE( - 39.212), SIMDE_FLOAT16_VALUE( - 12.840), SIMDE_FLOAT16_VALUE( - 66.692), SIMDE_FLOAT16_VALUE( - 49.509) },
      {  SIMDE_FLOAT16_VALUE(  3.549), SIMDE_FLOAT16_VALUE( -  9.134),  SIMDE_FLOAT16_VALUE( 75.669), SIMDE_FLOAT16_VALUE( - 62.385),
         SIMDE_FLOAT16_VALUE( 38.254),  SIMDE_FLOAT16_VALUE( 51.566), SIMDE_FLOAT16_VALUE( - 33.808),  SIMDE_FLOAT16_VALUE( 59.581),
         SIMDE_FLOAT16_VALUE( 76.383),  SIMDE_FLOAT16_VALUE( 25.597),  SIMDE_FLOAT16_VALUE( 25.105), SIMDE_FLOAT16_VALUE( - 88.090),
        SIMDE_FLOAT16_VALUE( - 26.574),  SIMDE_FLOAT16_VALUE( 24.218), SIMDE_FLOAT16_VALUE( - 39.212),  SIMDE_FLOAT16_VALUE( 78.316),
        SIMDE_FLOAT16_VALUE( - 76.984), SIMDE_FLOAT16_VALUE( - 12.840),  SIMDE_FLOAT16_VALUE(  6.102), SIMDE_FLOAT16_VALUE( - 55.415),
        SIMDE_FLOAT16_VALUE( - 66.692),  SIMDE_FLOAT16_VALUE( 23.670),  SIMDE_FLOAT16_VALUE( 57.498), SIMDE_FLOAT16_VALUE( - 49.509) } },
    { {  SIMDE_FLOAT16_VALUE( 77.925),  SIMDE_FLOAT16_VALUE( 25.899),  SIMDE_FLOAT16_VALUE( 36.333),  SIMDE_FLOAT16_VALUE( 28.714),
        SIMDE_FLOAT16_VALUE( - 36.012), SIMDE_FLOAT16_VALUE( - 29.170), SIMDE_FLOAT16_VALUE( - 11.929),  SIMDE_FLOAT16_VALUE( 80.628) },
      { SIMDE_FLOAT16_VALUE( - 83.488),  SIMDE_FLOAT16_VALUE(  9.307),  SIMDE_FLOAT16_VALUE( 58.801),  SIMDE_FLOAT16_VALUE( 94.273),
        SIMDE_FLOAT16_VALUE( - 86.784),  SIMDE_FLOAT16_VALUE( 18.524),  SIMDE_FLOAT16_VALUE( 82.621), SIMDE_FLOAT16_VALUE( - 81.155) },
      {  SIMDE_FLOAT16_VALUE(  4.254),  SIMDE_FLOAT16_VALUE( 15.849),  SIMDE_FLOAT16_VALUE( 96.241), SIMDE_FLOAT16_VALUE( -  5.090),
         SIMDE_FLOAT16_VALUE( 47.936), SIMDE_FLOAT16_VALUE( - 88.844),  SIMDE_FLOAT16_VALUE( 93.898), SIMDE_FLOAT16_VALUE( - 39.333) },
      {  SIMDE_FLOAT16_VALUE( 77.925), SIMDE_FLOAT16_VALUE( - 83.488),  SIMDE_FLOAT16_VALUE(  4.254),  SIMDE_FLOAT16_VALUE( 25.899),
         SIMDE_FLOAT16_VALUE(  9.307),  SIMDE_FLOAT16_VALUE( 15.849),  SIMDE_FLOAT16_VALUE( 36.333),  SIMDE_FLOAT16_VALUE( 58.801),
         SIMDE_FLOAT16_VALUE( 96.241),  SIMDE_FLOAT16_VALUE( 28.714),  SIMDE_FLOAT16_VALUE( 94.273), SIMDE_FLOAT16_VALUE( -  5.090),
        SIMDE_FLOAT16_VALUE( - 36.012), SIMDE_FLOAT16_VALUE( - 86.784),  SIMDE_FLOAT16_VALUE( 47.936), SIMDE_FLOAT16_VALUE( - 29.170),
         SIMDE_FLOAT16_VALUE( 18.524), SIMDE_FLOAT16_VALUE( - 88.844), SIMDE_FLOAT16_VALUE( - 11.929),  SIMDE_FLOAT16_VALUE( 82.621),
         SIMDE_FLOAT16_VALUE( 93.898),  SIMDE_FLOAT16_VALUE( 80.628), SIMDE_FLOAT16_VALUE( - 81.155), SIMDE_FLOAT16_VALUE( - 39.333) } },
    { { SIMDE_FLOAT16_VALUE( - 60.634),  SIMDE_FLOAT16_VALUE( 75.923), SIMDE_FLOAT16_VALUE( - 88.231), SIMDE_FLOAT16_VALUE( - 87.014),
         SIMDE_FLOAT16_VALUE( 31.833), SIMDE_FLOAT16_VALUE( - 64.054),  SIMDE_FLOAT16_VALUE( 59.268), SIMDE_FLOAT16_VALUE( - 10.180) },
      {  SIMDE_FLOAT16_VALUE( 89.023), SIMDE_FLOAT16_VALUE( - 72.712),  SIMDE_FLOAT16_VALUE( 78.505),  SIMDE_FLOAT16_VALUE( 11.950),
         SIMDE_FLOAT16_VALUE( 37.332), SIMDE_FLOAT16_VALUE( - 36.100), SIMDE_FLOAT16_VALUE( - 81.490),  SIMDE_FLOAT16_VALUE( 70.182) },
      {  SIMDE_FLOAT16_VALUE( 83.870), SIMDE_FLOAT16_VALUE( - 68.922), SIMDE_FLOAT16_VALUE( - 62.692), SIMDE_FLOAT16_VALUE( - 32.504),
        SIMDE_FLOAT16_VALUE( - 81.255),  SIMDE_FLOAT16_VALUE( 91.033), SIMDE_FLOAT16_VALUE( - 71.163), SIMDE_FLOAT16_VALUE( - 22.896) },
      { SIMDE_FLOAT16_VALUE( - 60.634),  SIMDE_FLOAT16_VALUE( 89.023),  SIMDE_FLOAT16_VALUE( 83.870),  SIMDE_FLOAT16_VALUE( 75.923),
        SIMDE_FLOAT16_VALUE( - 72.712), SIMDE_FLOAT16_VALUE( - 68.922), SIMDE_FLOAT16_VALUE( - 88.231),  SIMDE_FLOAT16_VALUE( 78.505),
        SIMDE_FLOAT16_VALUE( - 62.692), SIMDE_FLOAT16_VALUE( - 87.014),  SIMDE_FLOAT16_VALUE( 11.950), SIMDE_FLOAT16_VALUE( - 32.504),
         SIMDE_FLOAT16_VALUE( 31.833),  SIMDE_FLOAT16_VALUE( 37.332), SIMDE_FLOAT16_VALUE( - 81.255), SIMDE_FLOAT16_VALUE( - 64.054),
        SIMDE_FLOAT16_VALUE( - 36.100),  SIMDE_FLOAT16_VALUE( 91.033),  SIMDE_FLOAT16_VALUE( 59.268), SIMDE_FLOAT16_VALUE( - 81.490),
        SIMDE_FLOAT16_VALUE( - 71.163), SIMDE_FLOAT16_VALUE( - 10.180),  SIMDE_FLOAT16_VALUE( 70.182), SIMDE_FLOAT16_VALUE( - 22.896) } },
    { {  SIMDE_FLOAT16_VALUE( 30.680),  SIMDE_FLOAT16_VALUE( 70.181),  SIMDE_FLOAT16_VALUE( 61.927),  SIMDE_FLOAT16_VALUE( 89.100),
        SIMDE_FLOAT16_VALUE( - 41.719),  SIMDE_FLOAT16_VALUE( 79.129),  SIMDE_FLOAT16_VALUE( 27.325), SIMDE_FLOAT16_VALUE( - 19.893) },
      { SIMDE_FLOAT16_VALUE( - 95.074),  SIMDE_FLOAT16_VALUE( 39.687), SIMDE_FLOAT16_VALUE( - 65.504),  SIMDE_FLOAT16_VALUE( 87.309),
        SIMDE_FLOAT16_VALUE( - 63.357),  SIMDE_FLOAT16_VALUE( 37.794),  SIMDE_FLOAT16_VALUE( 30.688),  SIMDE_FLOAT16_VALUE(  3.602) },
      { SIMDE_FLOAT16_VALUE( - 90.304), SIMDE_FLOAT16_VALUE( - 57.865),  SIMDE_FLOAT16_VALUE(  1.237),  SIMDE_FLOAT16_VALUE( 95.036),
        SIMDE_FLOAT16_VALUE( - 46.211),  SIMDE_FLOAT16_VALUE( 17.337),  SIMDE_FLOAT16_VALUE( 24.755),  SIMDE_FLOAT16_VALUE( 20.183) },
      {  SIMDE_FLOAT16_VALUE( 30.680), SIMDE_FLOAT16_VALUE( - 95.074), SIMDE_FLOAT16_VALUE( - 90.304),  SIMDE_FLOAT16_VALUE( 70.181),
         SIMDE_FLOAT16_VALUE( 39.687), SIMDE_FLOAT16_VALUE( - 57.865),  SIMDE_FLOAT16_VALUE( 61.927), SIMDE_FLOAT16_VALUE( - 65.504),
         SIMDE_FLOAT16_VALUE(  1.237),  SIMDE_FLOAT16_VALUE( 89.100),  SIMDE_FLOAT16_VALUE( 87.309),  SIMDE_FLOAT16_VALUE( 95.036),
        SIMDE_FLOAT16_VALUE( - 41.719), SIMDE_FLOAT16_VALUE( - 63.357), SIMDE_FLOAT16_VALUE( - 46.211),  SIMDE_FLOAT16_VALUE( 79.129),
         SIMDE_FLOAT16_VALUE( 37.794),  SIMDE_FLOAT16_VALUE( 17.337),  SIMDE_FLOAT16_VALUE( 27.325),  SIMDE_FLOAT16_VALUE( 30.688),
         SIMDE_FLOAT16_VALUE( 24.755), SIMDE_FLOAT16_VALUE( - 19.893),  SIMDE_FLOAT16_VALUE(  3.602),  SIMDE_FLOAT16_VALUE( 20.183) } },
  };

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

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

    r_ = simde_vld3q_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);
  }

  return 0;

#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde_float16x8_t a = simde_test_arm_neon_random_f16x8();
    simde_float16x8_t b = simde_test_arm_neon_random_f16x8();
    simde_float16x8_t c = simde_test_arm_neon_random_f16x8();
    simde_float16x8x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_f16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_f16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_f16x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_float16_t buf[24];
    simde_vst3q_f16(buf, d);

    simde_test_codegen_write_vf16(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3q_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float32 r0[4];
    simde_float32 r1[4];
    simde_float32 r2[4];
    simde_float32 a[12];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -985.78), SIMDE_FLOAT32_C(  -181.56), SIMDE_FLOAT32_C(  -910.82), SIMDE_FLOAT32_C(  -732.91) },
      { SIMDE_FLOAT32_C(  -353.18), SIMDE_FLOAT32_C(  -450.78), SIMDE_FLOAT32_C(   -83.42), SIMDE_FLOAT32_C(  -225.91) },
      { SIMDE_FLOAT32_C(  -974.60), SIMDE_FLOAT32_C(  -205.59), SIMDE_FLOAT32_C(  -350.99), SIMDE_FLOAT32_C(  -219.80) },
      {
      SIMDE_FLOAT32_C(  -985.78),
      SIMDE_FLOAT32_C(  -353.18),
      SIMDE_FLOAT32_C(  -974.60),
      SIMDE_FLOAT32_C(  -181.56),
      SIMDE_FLOAT32_C(  -450.78),
      SIMDE_FLOAT32_C(  -205.59),
      SIMDE_FLOAT32_C(  -910.82),
      SIMDE_FLOAT32_C(   -83.42),
      SIMDE_FLOAT32_C(  -350.99),
      SIMDE_FLOAT32_C(  -732.91),
      SIMDE_FLOAT32_C(  -225.91),
      SIMDE_FLOAT32_C(  -219.80),
      }
    },
    { { SIMDE_FLOAT32_C(   583.13), SIMDE_FLOAT32_C(   717.32), SIMDE_FLOAT32_C(  -138.31), SIMDE_FLOAT32_C(   428.23) },
      { SIMDE_FLOAT32_C(   -15.12), SIMDE_FLOAT32_C(  -349.44), SIMDE_FLOAT32_C(   838.60), SIMDE_FLOAT32_C(   645.26) },
      { SIMDE_FLOAT32_C(   917.57), SIMDE_FLOAT32_C(  -862.79), SIMDE_FLOAT32_C(   403.85), SIMDE_FLOAT32_C(   196.39) },
      {
      SIMDE_FLOAT32_C(   583.13),
      SIMDE_FLOAT32_C(   -15.12),
      SIMDE_FLOAT32_C(   917.57),
      SIMDE_FLOAT32_C(   717.32),
      SIMDE_FLOAT32_C(  -349.44),
      SIMDE_FLOAT32_C(  -862.79),
      SIMDE_FLOAT32_C(  -138.31),
      SIMDE_FLOAT32_C(   838.60),
      SIMDE_FLOAT32_C(   403.85),
      SIMDE_FLOAT32_C(   428.23),
      SIMDE_FLOAT32_C(   645.26),
      SIMDE_FLOAT32_C(   196.39),
      }
    },
    { { SIMDE_FLOAT32_C(  -768.47), SIMDE_FLOAT32_C(  -949.16), SIMDE_FLOAT32_C(    42.85), SIMDE_FLOAT32_C(  -252.64) },
      { SIMDE_FLOAT32_C(  -690.55), SIMDE_FLOAT32_C(  -771.86), SIMDE_FLOAT32_C(  -903.80), SIMDE_FLOAT32_C(  -676.33) },
      { SIMDE_FLOAT32_C(    46.58), SIMDE_FLOAT32_C(  -814.62), SIMDE_FLOAT32_C(  -409.24), SIMDE_FLOAT32_C(   693.40) },
      {
      SIMDE_FLOAT32_C(  -768.47),
      SIMDE_FLOAT32_C(  -690.55),
      SIMDE_FLOAT32_C(    46.58),
      SIMDE_FLOAT32_C(  -949.16),
      SIMDE_FLOAT32_C(  -771.86),
      SIMDE_FLOAT32_C(  -814.62),
      SIMDE_FLOAT32_C(    42.85),
      SIMDE_FLOAT32_C(  -903.80),
      SIMDE_FLOAT32_C(  -409.24),
      SIMDE_FLOAT32_C(  -252.64),
      SIMDE_FLOAT32_C(  -676.33),
      SIMDE_FLOAT32_C(   693.40),
      }
    },
    { { SIMDE_FLOAT32_C(  -265.40), SIMDE_FLOAT32_C(   507.34), SIMDE_FLOAT32_C(  -532.51), SIMDE_FLOAT32_C(  -240.00) },
      { SIMDE_FLOAT32_C(  -698.24), SIMDE_FLOAT32_C(   116.50), SIMDE_FLOAT32_C(   540.20), SIMDE_FLOAT32_C(   884.89) },
      { SIMDE_FLOAT32_C(  -166.18), SIMDE_FLOAT32_C(  -598.11), SIMDE_FLOAT32_C(   313.12), SIMDE_FLOAT32_C(   818.70) },
      {
      SIMDE_FLOAT32_C(  -265.40),
      SIMDE_FLOAT32_C(  -698.24),
      SIMDE_FLOAT32_C(  -166.18),
      SIMDE_FLOAT32_C(   507.34),
      SIMDE_FLOAT32_C(   116.50),
      SIMDE_FLOAT32_C(  -598.11),
      SIMDE_FLOAT32_C(  -532.51),
      SIMDE_FLOAT32_C(   540.20),
      SIMDE_FLOAT32_C(   313.12),
      SIMDE_FLOAT32_C(  -240.00),
      SIMDE_FLOAT32_C(   884.89),
      SIMDE_FLOAT32_C(   818.70),
      }
    },
    { { SIMDE_FLOAT32_C(    52.45), SIMDE_FLOAT32_C(   151.71), SIMDE_FLOAT32_C(   463.96), SIMDE_FLOAT32_C(   -29.98) },
      { SIMDE_FLOAT32_C(   288.92), SIMDE_FLOAT32_C(  -132.19), SIMDE_FLOAT32_C(  -833.58), SIMDE_FLOAT32_C(   520.45) },
      { SIMDE_FLOAT32_C(   -81.36), SIMDE_FLOAT32_C(   209.27), SIMDE_FLOAT32_C(  -732.19), SIMDE_FLOAT32_C(   228.09) },
      {
      SIMDE_FLOAT32_C(    52.45),
      SIMDE_FLOAT32_C(   288.92),
      SIMDE_FLOAT32_C(   -81.36),
      SIMDE_FLOAT32_C(   151.71),
      SIMDE_FLOAT32_C(  -132.19),
      SIMDE_FLOAT32_C(   209.27),
      SIMDE_FLOAT32_C(   463.96),
      SIMDE_FLOAT32_C(  -833.58),
      SIMDE_FLOAT32_C(  -732.19),
      SIMDE_FLOAT32_C(   -29.98),
      SIMDE_FLOAT32_C(   520.45),
      SIMDE_FLOAT32_C(   228.09),
      }
    },
    { { SIMDE_FLOAT32_C(   437.41), SIMDE_FLOAT32_C(  -635.99), SIMDE_FLOAT32_C(   551.76), SIMDE_FLOAT32_C(  -516.01) },
      { SIMDE_FLOAT32_C(  -450.62), SIMDE_FLOAT32_C(  -857.48), SIMDE_FLOAT32_C(  -822.60), SIMDE_FLOAT32_C(   283.98) },
      { SIMDE_FLOAT32_C(   649.87), SIMDE_FLOAT32_C(  -355.11), SIMDE_FLOAT32_C(  -956.02), SIMDE_FLOAT32_C(   951.62) },
      {
      SIMDE_FLOAT32_C(   437.41),
      SIMDE_FLOAT32_C(  -450.62),
      SIMDE_FLOAT32_C(   649.87),
      SIMDE_FLOAT32_C(  -635.99),
      SIMDE_FLOAT32_C(  -857.48),
      SIMDE_FLOAT32_C(  -355.11),
      SIMDE_FLOAT32_C(   551.76),
      SIMDE_FLOAT32_C(  -822.60),
      SIMDE_FLOAT32_C(  -956.02),
      SIMDE_FLOAT32_C(  -516.01),
      SIMDE_FLOAT32_C(   283.98),
      SIMDE_FLOAT32_C(   951.62),
      }
    },
    { { SIMDE_FLOAT32_C(   761.38), SIMDE_FLOAT32_C(   584.18), SIMDE_FLOAT32_C(   836.51), SIMDE_FLOAT32_C(  -404.80) },
      { SIMDE_FLOAT32_C(   986.07), SIMDE_FLOAT32_C(   149.63), SIMDE_FLOAT32_C(  -586.10), SIMDE_FLOAT32_C(    38.52) },
      { SIMDE_FLOAT32_C(  -698.66), SIMDE_FLOAT32_C(   877.86), SIMDE_FLOAT32_C(  -991.46), SIMDE_FLOAT32_C(   590.26) },
      {
      SIMDE_FLOAT32_C(   761.38),
      SIMDE_FLOAT32_C(   986.07),
      SIMDE_FLOAT32_C(  -698.66),
      SIMDE_FLOAT32_C(   584.18),
      SIMDE_FLOAT32_C(   149.63),
      SIMDE_FLOAT32_C(   877.86),
      SIMDE_FLOAT32_C(   836.51),
      SIMDE_FLOAT32_C(  -586.10),
      SIMDE_FLOAT32_C(  -991.46),
      SIMDE_FLOAT32_C(  -404.80),
      SIMDE_FLOAT32_C(    38.52),
      SIMDE_FLOAT32_C(   590.26),
      }
    },
    { { SIMDE_FLOAT32_C(  -254.33), SIMDE_FLOAT32_C(  -825.04), SIMDE_FLOAT32_C(   110.71), SIMDE_FLOAT32_C(   664.31) },
      { SIMDE_FLOAT32_C(   384.23), SIMDE_FLOAT32_C(   378.52), SIMDE_FLOAT32_C(  -107.59), SIMDE_FLOAT32_C(  -178.36) },
      { SIMDE_FLOAT32_C(   742.53), SIMDE_FLOAT32_C(  -555.83), SIMDE_FLOAT32_C(   305.63), SIMDE_FLOAT32_C(  -708.09) },
      {
      SIMDE_FLOAT32_C(  -254.33),
      SIMDE_FLOAT32_C(   384.23),
      SIMDE_FLOAT32_C(   742.53),
      SIMDE_FLOAT32_C(  -825.04),
      SIMDE_FLOAT32_C(   378.52),
      SIMDE_FLOAT32_C(  -555.83),
      SIMDE_FLOAT32_C(   110.71),
      SIMDE_FLOAT32_C(  -107.59),
      SIMDE_FLOAT32_C(   305.63),
      SIMDE_FLOAT32_C(   664.31),
      SIMDE_FLOAT32_C(  -178.36),
      SIMDE_FLOAT32_C(  -708.09),
      }
    },

  };

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

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

    r_ = simde_vld3q_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);
  }

  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_float32x4x3_t a = { { a0, a1, a2 } };
    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_float32_t buf[12];
    simde_vst3q_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_vst3q_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    simde_float64 r0[2];
    simde_float64 r1[2];
    simde_float64 r2[2];
    simde_float64 a[6];
  } test_vec[] = {
    { { SIMDE_FLOAT64_C(   758.07), SIMDE_FLOAT64_C(    84.29) },
      { SIMDE_FLOAT64_C(  -600.63), SIMDE_FLOAT64_C(  -472.51) },
      { SIMDE_FLOAT64_C(   725.40), SIMDE_FLOAT64_C(   903.42) },
      {
      SIMDE_FLOAT64_C(   758.07),
      SIMDE_FLOAT64_C(  -600.63),
      SIMDE_FLOAT64_C(   725.40),
      SIMDE_FLOAT64_C(    84.29),
      SIMDE_FLOAT64_C(  -472.51),
      SIMDE_FLOAT64_C(   903.42),
      }
    },
    { { SIMDE_FLOAT64_C(  -564.41), SIMDE_FLOAT64_C(  -453.39) },
      { SIMDE_FLOAT64_C(  -311.50), SIMDE_FLOAT64_C(  -928.88) },
      { SIMDE_FLOAT64_C(   670.94), SIMDE_FLOAT64_C(  -991.23) },
      {
      SIMDE_FLOAT64_C(  -564.41),
      SIMDE_FLOAT64_C(  -311.50),
      SIMDE_FLOAT64_C(   670.94),
      SIMDE_FLOAT64_C(  -453.39),
      SIMDE_FLOAT64_C(  -928.88),
      SIMDE_FLOAT64_C(  -991.23),
      }
    },
    { { SIMDE_FLOAT64_C(   354.81), SIMDE_FLOAT64_C(   507.91) },
      { SIMDE_FLOAT64_C(    71.00), SIMDE_FLOAT64_C(   659.02) },
      { SIMDE_FLOAT64_C(   105.92), SIMDE_FLOAT64_C(   373.60) },
      {
      SIMDE_FLOAT64_C(   354.81),
      SIMDE_FLOAT64_C(    71.00),
      SIMDE_FLOAT64_C(   105.92),
      SIMDE_FLOAT64_C(   507.91),
      SIMDE_FLOAT64_C(   659.02),
      SIMDE_FLOAT64_C(   373.60),
      }
    },
    { { SIMDE_FLOAT64_C(  -261.08), SIMDE_FLOAT64_C(  -713.36) },
      { SIMDE_FLOAT64_C(   -70.21), SIMDE_FLOAT64_C(   417.30) },
      { SIMDE_FLOAT64_C(  -815.10), SIMDE_FLOAT64_C(   451.49) },
      {
      SIMDE_FLOAT64_C(  -261.08),
      SIMDE_FLOAT64_C(   -70.21),
      SIMDE_FLOAT64_C(  -815.10),
      SIMDE_FLOAT64_C(  -713.36),
      SIMDE_FLOAT64_C(   417.30),
      SIMDE_FLOAT64_C(   451.49),
      }
    },
    { { SIMDE_FLOAT64_C(   701.42), SIMDE_FLOAT64_C(  -485.46) },
      { SIMDE_FLOAT64_C(  -486.64), SIMDE_FLOAT64_C(   421.84) },
      { SIMDE_FLOAT64_C(  -955.83), SIMDE_FLOAT64_C(  -150.69) },
      {
      SIMDE_FLOAT64_C(   701.42),
      SIMDE_FLOAT64_C(  -486.64),
      SIMDE_FLOAT64_C(  -955.83),
      SIMDE_FLOAT64_C(  -485.46),
      SIMDE_FLOAT64_C(   421.84),
      SIMDE_FLOAT64_C(  -150.69),
      }
    },
    { { SIMDE_FLOAT64_C(   498.32), SIMDE_FLOAT64_C(   802.24) },
      { SIMDE_FLOAT64_C(   933.60), SIMDE_FLOAT64_C(   897.69) },
      { SIMDE_FLOAT64_C(  -670.27), SIMDE_FLOAT64_C(   659.00) },
      {
      SIMDE_FLOAT64_C(   498.32),
      SIMDE_FLOAT64_C(   933.60),
      SIMDE_FLOAT64_C(  -670.27),
      SIMDE_FLOAT64_C(   802.24),
      SIMDE_FLOAT64_C(   897.69),
      SIMDE_FLOAT64_C(   659.00),
      }
    },
    { { SIMDE_FLOAT64_C(   801.12), SIMDE_FLOAT64_C(  -234.68) },
      { SIMDE_FLOAT64_C(  -794.39), SIMDE_FLOAT64_C(  -510.38) },
      { SIMDE_FLOAT64_C(  -163.56), SIMDE_FLOAT64_C(   876.55) },
      {
      SIMDE_FLOAT64_C(   801.12),
      SIMDE_FLOAT64_C(  -794.39),
      SIMDE_FLOAT64_C(  -163.56),
      SIMDE_FLOAT64_C(  -234.68),
      SIMDE_FLOAT64_C(  -510.38),
      SIMDE_FLOAT64_C(   876.55),
      }
    },
    { { SIMDE_FLOAT64_C(  -501.62), SIMDE_FLOAT64_C(  -808.75) },
      { SIMDE_FLOAT64_C(   384.46), SIMDE_FLOAT64_C(   569.38) },
      { SIMDE_FLOAT64_C(   850.27), SIMDE_FLOAT64_C(  -509.62) },
      {
      SIMDE_FLOAT64_C(  -501.62),
      SIMDE_FLOAT64_C(   384.46),
      SIMDE_FLOAT64_C(   850.27),
      SIMDE_FLOAT64_C(  -808.75),
      SIMDE_FLOAT64_C(   569.38),
      SIMDE_FLOAT64_C(  -509.62),
      }
    },

  };

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

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

    r_ = simde_vld3q_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);
  }

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

  };

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

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

    r_ = simde_vld3q_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_int8x16x3_t a = { { a0, a1, a2 } };
    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);
    int8_t buf[48];
    simde_vst3q_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_vst3q_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int16_t r0[8];
    int16_t r1[8];
    int16_t r2[8];
    int16_t a[24];
  } test_vec[] = {
    { { -INT16_C(  7093),  INT16_C(  1303), -INT16_C( 17439), -INT16_C( 22859),  INT16_C( 31645),  INT16_C(  1370),  INT16_C( 32280), -INT16_C( 15440) },
      {  INT16_C( 13391),  INT16_C(  3162),  INT16_C(  2283),  INT16_C( 24508), -INT16_C(  9937),  INT16_C( 27470),  INT16_C( 29591), -INT16_C(  7429) },
      {  INT16_C(  4695),  INT16_C( 14823), -INT16_C( 25139),  INT16_C( 27359),  INT16_C( 14616),  INT16_C( 12399),  INT16_C(  8375),  INT16_C(  1779) },
      {
      -INT16_C(  7093),
       INT16_C( 13391),
       INT16_C(  4695),
       INT16_C(  1303),
       INT16_C(  3162),
       INT16_C( 14823),
      -INT16_C( 17439),
       INT16_C(  2283),
      -INT16_C( 25139),
      -INT16_C( 22859),
       INT16_C( 24508),
       INT16_C( 27359),
       INT16_C( 31645),
      -INT16_C(  9937),
       INT16_C( 14616),
       INT16_C(  1370),
       INT16_C( 27470),
       INT16_C( 12399),
       INT16_C( 32280),
       INT16_C( 29591),
       INT16_C(  8375),
      -INT16_C( 15440),
      -INT16_C(  7429),
       INT16_C(  1779),
      }
    },
    { {  INT16_C( 19796),  INT16_C( 16147), -INT16_C( 12459), -INT16_C( 31586), -INT16_C(  4952),  INT16_C( 16368), -INT16_C(  5280), -INT16_C( 18655) },
      {  INT16_C(  2557), -INT16_C( 13328), -INT16_C( 12378), -INT16_C( 16843), -INT16_C( 23288), -INT16_C( 16402), -INT16_C(  7483),  INT16_C(  6598) },
      { -INT16_C(  9937), -INT16_C( 31400), -INT16_C(  2392),  INT16_C( 20489), -INT16_C(  1566),  INT16_C( 17040), -INT16_C( 19996), -INT16_C(  7430) },
      {
       INT16_C( 19796),
       INT16_C(  2557),
      -INT16_C(  9937),
       INT16_C( 16147),
      -INT16_C( 13328),
      -INT16_C( 31400),
      -INT16_C( 12459),
      -INT16_C( 12378),
      -INT16_C(  2392),
      -INT16_C( 31586),
      -INT16_C( 16843),
       INT16_C( 20489),
      -INT16_C(  4952),
      -INT16_C( 23288),
      -INT16_C(  1566),
       INT16_C( 16368),
      -INT16_C( 16402),
       INT16_C( 17040),
      -INT16_C(  5280),
      -INT16_C(  7483),
      -INT16_C( 19996),
      -INT16_C( 18655),
       INT16_C(  6598),
      -INT16_C(  7430),
      }
    },
    { { -INT16_C(  5446),  INT16_C( 24749), -INT16_C(  7494), -INT16_C( 15842),  INT16_C(  3463),  INT16_C( 19586),  INT16_C( 18671),  INT16_C(  7781) },
      { -INT16_C( 17119), -INT16_C( 13917), -INT16_C( 21069), -INT16_C( 27111), -INT16_C( 22106), -INT16_C( 29736), -INT16_C( 11685),  INT16_C(  5485) },
      {  INT16_C(  6845),  INT16_C( 30582), -INT16_C( 27396), -INT16_C( 31687), -INT16_C( 17503), -INT16_C( 28464),  INT16_C( 13827),  INT16_C(  9391) },
      {
      -INT16_C(  5446),
      -INT16_C( 17119),
       INT16_C(  6845),
       INT16_C( 24749),
      -INT16_C( 13917),
       INT16_C( 30582),
      -INT16_C(  7494),
      -INT16_C( 21069),
      -INT16_C( 27396),
      -INT16_C( 15842),
      -INT16_C( 27111),
      -INT16_C( 31687),
       INT16_C(  3463),
      -INT16_C( 22106),
      -INT16_C( 17503),
       INT16_C( 19586),
      -INT16_C( 29736),
      -INT16_C( 28464),
       INT16_C( 18671),
      -INT16_C( 11685),
       INT16_C( 13827),
       INT16_C(  7781),
       INT16_C(  5485),
       INT16_C(  9391),
      }
    },
    { {  INT16_C( 21235), -INT16_C( 22547),  INT16_C(  2047), -INT16_C( 22979),  INT16_C(  5552),  INT16_C(  2865), -INT16_C( 24856), -INT16_C( 23263) },
      { -INT16_C( 26696), -INT16_C( 19428),  INT16_C( 21803), -INT16_C( 13000),  INT16_C(  2321),  INT16_C(  5213),  INT16_C(  3135),  INT16_C( 12857) },
      {  INT16_C(  9823),  INT16_C( 24281),  INT16_C(  5677), -INT16_C(  8700),  INT16_C( 13612),  INT16_C(  5353),  INT16_C(  2771), -INT16_C( 29767) },
      {
       INT16_C( 21235),
      -INT16_C( 26696),
       INT16_C(  9823),
      -INT16_C( 22547),
      -INT16_C( 19428),
       INT16_C( 24281),
       INT16_C(  2047),
       INT16_C( 21803),
       INT16_C(  5677),
      -INT16_C( 22979),
      -INT16_C( 13000),
      -INT16_C(  8700),
       INT16_C(  5552),
       INT16_C(  2321),
       INT16_C( 13612),
       INT16_C(  2865),
       INT16_C(  5213),
       INT16_C(  5353),
      -INT16_C( 24856),
       INT16_C(  3135),
       INT16_C(  2771),
      -INT16_C( 23263),
       INT16_C( 12857),
      -INT16_C( 29767),
      }
    },
    { { -INT16_C( 10847), -INT16_C( 12992),  INT16_C( 30762),  INT16_C( 15258), -INT16_C(  2175), -INT16_C( 16304), -INT16_C( 30460),  INT16_C( 25587) },
      { -INT16_C( 13137), -INT16_C(  8767), -INT16_C( 14621),  INT16_C(  4027), -INT16_C( 23301), -INT16_C( 12509), -INT16_C(  9041),  INT16_C( 20570) },
      { -INT16_C( 25935), -INT16_C(  9443), -INT16_C( 18669), -INT16_C( 27625),  INT16_C( 26543), -INT16_C( 19627),  INT16_C( 18672), -INT16_C( 24810) },
      {
      -INT16_C( 10847),
      -INT16_C( 13137),
      -INT16_C( 25935),
      -INT16_C( 12992),
      -INT16_C(  8767),
      -INT16_C(  9443),
       INT16_C( 30762),
      -INT16_C( 14621),
      -INT16_C( 18669),
       INT16_C( 15258),
       INT16_C(  4027),
      -INT16_C( 27625),
      -INT16_C(  2175),
      -INT16_C( 23301),
       INT16_C( 26543),
      -INT16_C( 16304),
      -INT16_C( 12509),
      -INT16_C( 19627),
      -INT16_C( 30460),
      -INT16_C(  9041),
       INT16_C( 18672),
       INT16_C( 25587),
       INT16_C( 20570),
      -INT16_C( 24810),
      }
    },
    { { -INT16_C( 10476), -INT16_C(  2180),  INT16_C( 14237), -INT16_C( 26362),  INT16_C( 10716), -INT16_C( 29848), -INT16_C( 15867), -INT16_C( 18725) },
      { -INT16_C(  1699),  INT16_C( 28818), -INT16_C( 22096),  INT16_C( 24324),  INT16_C( 22800),  INT16_C(    18),  INT16_C( 10401), -INT16_C( 18785) },
      {  INT16_C(  7168), -INT16_C( 25171), -INT16_C( 19373),  INT16_C( 12086), -INT16_C( 24867), -INT16_C(  7238), -INT16_C( 27039), -INT16_C( 16743) },
      {
      -INT16_C( 10476),
      -INT16_C(  1699),
       INT16_C(  7168),
      -INT16_C(  2180),
       INT16_C( 28818),
      -INT16_C( 25171),
       INT16_C( 14237),
      -INT16_C( 22096),
      -INT16_C( 19373),
      -INT16_C( 26362),
       INT16_C( 24324),
       INT16_C( 12086),
       INT16_C( 10716),
       INT16_C( 22800),
      -INT16_C( 24867),
      -INT16_C( 29848),
       INT16_C(    18),
      -INT16_C(  7238),
      -INT16_C( 15867),
       INT16_C( 10401),
      -INT16_C( 27039),
      -INT16_C( 18725),
      -INT16_C( 18785),
      -INT16_C( 16743),
      }
    },
    { {  INT16_C( 11151),  INT16_C( 16174),  INT16_C( 13012), -INT16_C(  7009), -INT16_C( 20084),  INT16_C( 11748), -INT16_C( 31526), -INT16_C(  9501) },
      { -INT16_C( 28256), -INT16_C(  3209), -INT16_C( 20923),  INT16_C(  8739), -INT16_C(  8884), -INT16_C( 21243), -INT16_C( 24717),  INT16_C(   619) },
      { -INT16_C( 26166), -INT16_C( 24766), -INT16_C(  7732),  INT16_C( 22659),  INT16_C( 26770),  INT16_C( 27781),  INT16_C( 27116), -INT16_C( 29626) },
      {
       INT16_C( 11151),
      -INT16_C( 28256),
      -INT16_C( 26166),
       INT16_C( 16174),
      -INT16_C(  3209),
      -INT16_C( 24766),
       INT16_C( 13012),
      -INT16_C( 20923),
      -INT16_C(  7732),
      -INT16_C(  7009),
       INT16_C(  8739),
       INT16_C( 22659),
      -INT16_C( 20084),
      -INT16_C(  8884),
       INT16_C( 26770),
       INT16_C( 11748),
      -INT16_C( 21243),
       INT16_C( 27781),
      -INT16_C( 31526),
      -INT16_C( 24717),
       INT16_C( 27116),
      -INT16_C(  9501),
       INT16_C(   619),
      -INT16_C( 29626),
      }
    },
    { { -INT16_C( 16646),  INT16_C( 16255), -INT16_C( 23956), -INT16_C( 18335),  INT16_C( 26496), -INT16_C(  3226), -INT16_C( 12026), -INT16_C( 12042) },
      {  INT16_C( 14443),  INT16_C( 14191), -INT16_C(  3303), -INT16_C( 21617),  INT16_C(  5211),  INT16_C( 18200),  INT16_C( 24189),  INT16_C( 30675) },
      {  INT16_C( 21020), -INT16_C( 30538),  INT16_C(  6389),  INT16_C( 30017), -INT16_C( 22657), -INT16_C( 31384),  INT16_C( 24184), -INT16_C(  7339) },
      {
      -INT16_C( 16646),
       INT16_C( 14443),
       INT16_C( 21020),
       INT16_C( 16255),
       INT16_C( 14191),
      -INT16_C( 30538),
      -INT16_C( 23956),
      -INT16_C(  3303),
       INT16_C(  6389),
      -INT16_C( 18335),
      -INT16_C( 21617),
       INT16_C( 30017),
       INT16_C( 26496),
       INT16_C(  5211),
      -INT16_C( 22657),
      -INT16_C(  3226),
       INT16_C( 18200),
      -INT16_C( 31384),
      -INT16_C( 12026),
       INT16_C( 24189),
       INT16_C( 24184),
      -INT16_C( 12042),
       INT16_C( 30675),
      -INT16_C(  7339),
      }
    },

  };

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

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

    r_ = simde_vld3q_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_int16x8x3_t a = { { a0, a1, a2 } };
    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);
    int16_t buf[24];
    simde_vst3q_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_vst3q_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int32_t r0[4];
    int32_t r1[4];
    int32_t r2[4];
    int32_t a[12];
  } test_vec[] = {
    { { -INT32_C(  1750261198),  INT32_C(   365683672),  INT32_C(   720805854),  INT32_C(    97011150) },
      {  INT32_C(   497640506),  INT32_C(  1227936960),  INT32_C(  1527923171), -INT32_C(  1488084108) },
      { -INT32_C(  1640039482), -INT32_C(  1112340002),  INT32_C(  1994893736),  INT32_C(   696037359) },
      {
      -INT32_C(  1750261198),
       INT32_C(   497640506),
      -INT32_C(  1640039482),
       INT32_C(   365683672),
       INT32_C(  1227936960),
      -INT32_C(  1112340002),
       INT32_C(   720805854),
       INT32_C(  1527923171),
       INT32_C(  1994893736),
       INT32_C(    97011150),
      -INT32_C(  1488084108),
       INT32_C(   696037359),
      }
    },
    { { -INT32_C(   733600492), -INT32_C(   602048519),  INT32_C(   741814200), -INT32_C(  1714190893) },
      {  INT32_C(  1580667264), -INT32_C(  1021580774), -INT32_C(  2110192749), -INT32_C(   961825358) },
      { -INT32_C(   744820006),  INT32_C(   565164137), -INT32_C(  1169299481), -INT32_C(   330096276) },
      {
      -INT32_C(   733600492),
       INT32_C(  1580667264),
      -INT32_C(   744820006),
      -INT32_C(   602048519),
      -INT32_C(  1021580774),
       INT32_C(   565164137),
       INT32_C(   741814200),
      -INT32_C(  2110192749),
      -INT32_C(  1169299481),
      -INT32_C(  1714190893),
      -INT32_C(   961825358),
      -INT32_C(   330096276),
      }
    },
    { {  INT32_C(  1296730674),  INT32_C(   135292532),  INT32_C(   462047593), -INT32_C(   639486209) },
      { -INT32_C(  1850901464),  INT32_C(   481451060), -INT32_C(  1344864445),  INT32_C(  1402677792) },
      {  INT32_C(   698410676), -INT32_C(  1255034804), -INT32_C(   120538119),  INT32_C(   433238769) },
      {
       INT32_C(  1296730674),
      -INT32_C(  1850901464),
       INT32_C(   698410676),
       INT32_C(   135292532),
       INT32_C(   481451060),
      -INT32_C(  1255034804),
       INT32_C(   462047593),
      -INT32_C(  1344864445),
      -INT32_C(   120538119),
      -INT32_C(   639486209),
       INT32_C(  1402677792),
       INT32_C(   433238769),
      }
    },
    { {  INT32_C(  1672118063),  INT32_C(   528440539),  INT32_C(  2093897308),  INT32_C(   886008448) },
      { -INT32_C(  1671598256),  INT32_C(   424775199),  INT32_C(   990978378),  INT32_C(    55960532) },
      {  INT32_C(  1046937442), -INT32_C(  1201805732), -INT32_C(  1137431748), -INT32_C(   437255019) },
      {
       INT32_C(  1672118063),
      -INT32_C(  1671598256),
       INT32_C(  1046937442),
       INT32_C(   528440539),
       INT32_C(   424775199),
      -INT32_C(  1201805732),
       INT32_C(  2093897308),
       INT32_C(   990978378),
      -INT32_C(  1137431748),
       INT32_C(   886008448),
       INT32_C(    55960532),
      -INT32_C(   437255019),
      }
    },
    { { -INT32_C(  1820242317),  INT32_C(   648860380), -INT32_C(   933052940),  INT32_C(    63682465) },
      {  INT32_C(   306262454),  INT32_C(  1405787671),  INT32_C(  1594884042),  INT32_C(  1984233475) },
      {  INT32_C(   705283662), -INT32_C(  1924024935),  INT32_C(   341160819),  INT32_C(   538386538) },
      {
      -INT32_C(  1820242317),
       INT32_C(   306262454),
       INT32_C(   705283662),
       INT32_C(   648860380),
       INT32_C(  1405787671),
      -INT32_C(  1924024935),
      -INT32_C(   933052940),
       INT32_C(  1594884042),
       INT32_C(   341160819),
       INT32_C(    63682465),
       INT32_C(  1984233475),
       INT32_C(   538386538),
      }
    },
    { {  INT32_C(  1764972881), -INT32_C(  1044578825), -INT32_C(    14562052),  INT32_C(   443967180) },
      { -INT32_C(   985366740), -INT32_C(  1470982859), -INT32_C(  1296259256),  INT32_C(   433312711) },
      {  INT32_C(   612501036),  INT32_C(    15023619), -INT32_C(   687929846), -INT32_C(  1712294548) },
      {
       INT32_C(  1764972881),
      -INT32_C(   985366740),
       INT32_C(   612501036),
      -INT32_C(  1044578825),
      -INT32_C(  1470982859),
       INT32_C(    15023619),
      -INT32_C(    14562052),
      -INT32_C(  1296259256),
      -INT32_C(   687929846),
       INT32_C(   443967180),
       INT32_C(   433312711),
      -INT32_C(  1712294548),
      }
    },
    { {  INT32_C(   710817269),  INT32_C(   332575178),  INT32_C(   549817944), -INT32_C(  1908828063) },
      { -INT32_C(  1565344866),  INT32_C(    77764601),  INT32_C(   182100382),  INT32_C(   212060951) },
      { -INT32_C(   902430208),  INT32_C(   199035059), -INT32_C(   148135018), -INT32_C(   628792261) },
      {
       INT32_C(   710817269),
      -INT32_C(  1565344866),
      -INT32_C(   902430208),
       INT32_C(   332575178),
       INT32_C(    77764601),
       INT32_C(   199035059),
       INT32_C(   549817944),
       INT32_C(   182100382),
      -INT32_C(   148135018),
      -INT32_C(  1908828063),
       INT32_C(   212060951),
      -INT32_C(   628792261),
      }
    },
    { {  INT32_C(   427570975),  INT32_C(  1830624975), -INT32_C(   696780865), -INT32_C(  1025369150) },
      { -INT32_C(   796059619), -INT32_C(  1227134432),  INT32_C(  1236141837), -INT32_C(  1960627349) },
      {  INT32_C(   983867243),  INT32_C(  2091368893),  INT32_C(  2069044920),  INT32_C(  1446851897) },
      {
       INT32_C(   427570975),
      -INT32_C(   796059619),
       INT32_C(   983867243),
       INT32_C(  1830624975),
      -INT32_C(  1227134432),
       INT32_C(  2091368893),
      -INT32_C(   696780865),
       INT32_C(  1236141837),
       INT32_C(  2069044920),
      -INT32_C(  1025369150),
      -INT32_C(  1960627349),
       INT32_C(  1446851897),
      }
    },

  };


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

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

    r_ = simde_vld3q_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_int32x4x3_t a = { { a0, a1, a2 } };
    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);
    int32_t buf[12];
    simde_vst3q_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_vst3q_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    int64_t r0[2];
    int64_t r1[2];
    int64_t r2[2];
    int64_t a[6];
  } test_vec[] = {
    { { -INT64_C(  635012862125708663), -INT64_C( 4551834836964699426) },
      { -INT64_C( 6853432729242667566), -INT64_C(  286868685105955221) },
      {  INT64_C( 1108378301783684416),  INT64_C( 5650045543870290514) },
      {
      -INT64_C(  635012862125708663),
      -INT64_C( 6853432729242667566),
       INT64_C( 1108378301783684416),
      -INT64_C( 4551834836964699426),
      -INT64_C(  286868685105955221),
       INT64_C( 5650045543870290514),
      }
    },
    { { -INT64_C(   49088157496910733),  INT64_C( 8829424968667718680) },
      {  INT64_C( 3306001507121699489),  INT64_C( 9073411890563255072) },
      {  INT64_C( 6245507785642976025),  INT64_C( 2349307249855435749) },
      {
      -INT64_C(   49088157496910733),
       INT64_C( 3306001507121699489),
       INT64_C( 6245507785642976025),
       INT64_C( 8829424968667718680),
       INT64_C( 9073411890563255072),
       INT64_C( 2349307249855435749),
      }
    },
    { { -INT64_C( 1833858103574888572), -INT64_C( 5303429886675558177) },
      { -INT64_C(  313828010536757999),  INT64_C( 8557601191857129251) },
      {  INT64_C( 7412750748315137075), -INT64_C( 2155897315551911231) },
      {
      -INT64_C( 1833858103574888572),
      -INT64_C(  313828010536757999),
       INT64_C( 7412750748315137075),
      -INT64_C( 5303429886675558177),
       INT64_C( 8557601191857129251),
      -INT64_C( 2155897315551911231),
      }
    },
    { { -INT64_C( 6170821512464861365),  INT64_C( 6900656108198459229) },
      { -INT64_C( 4850315250566129214),  INT64_C(   93220673490190233) },
      { -INT64_C( 5775937637409719130), -INT64_C(  882492009611386058) },
      {
      -INT64_C( 6170821512464861365),
      -INT64_C( 4850315250566129214),
      -INT64_C( 5775937637409719130),
       INT64_C( 6900656108198459229),
       INT64_C(   93220673490190233),
      -INT64_C(  882492009611386058),
      }
    },
    { { -INT64_C( 1724054782324434852),  INT64_C(  190168630465539564) },
      { -INT64_C(  424455724669598438),  INT64_C( 4057774997028739627) },
      {  INT64_C( 7380732911912193333),  INT64_C( 8515650882758033358) },
      {
      -INT64_C( 1724054782324434852),
      -INT64_C(  424455724669598438),
       INT64_C( 7380732911912193333),
       INT64_C(  190168630465539564),
       INT64_C( 4057774997028739627),
       INT64_C( 8515650882758033358),
      }
    },
    { { -INT64_C( 8110702121954615887),  INT64_C( 2102685047284616217) },
      {  INT64_C( 3290177900306939337),  INT64_C( 1054269323458622158) },
      { -INT64_C( 7145536389092440863), -INT64_C( 4123397312635354688) },
      {
      -INT64_C( 8110702121954615887),
       INT64_C( 3290177900306939337),
      -INT64_C( 7145536389092440863),
       INT64_C( 2102685047284616217),
       INT64_C( 1054269323458622158),
      -INT64_C( 4123397312635354688),
      }
    },
    { {  INT64_C( 4974423115788019836), -INT64_C( 4192551203404554395) },
      {  INT64_C(  699150071208039828), -INT64_C( 9122473133432814174) },
      { -INT64_C( 8603172560225668897), -INT64_C( 5733896944988058685) },
      {
       INT64_C( 4974423115788019836),
       INT64_C(  699150071208039828),
      -INT64_C( 8603172560225668897),
      -INT64_C( 4192551203404554395),
      -INT64_C( 9122473133432814174),
      -INT64_C( 5733896944988058685),
      }
    },
    { { -INT64_C(  233488605370681232), -INT64_C( 3799627498977987392) },
      { -INT64_C( 3954797066086932110), -INT64_C(  823070748352419640) },
      { -INT64_C( 7589848679630152874), -INT64_C( 4856393004998834204) },
      {
      -INT64_C(  233488605370681232),
      -INT64_C( 3954797066086932110),
      -INT64_C( 7589848679630152874),
      -INT64_C( 3799627498977987392),
      -INT64_C(  823070748352419640),
      -INT64_C( 4856393004998834204),
      }
    },

  };


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

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

    r_ = simde_vld3q_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_int64x2x3_t a = { { a0, a1, a2 } };
    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);
    int64_t buf[6];
    simde_vst3q_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_vst3q_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint8_t r0[16];
    uint8_t r1[16];
    uint8_t r2[16];
    uint8_t a[48];
  } test_vec[] = {
    { { UINT8_C(195), UINT8_C( 18), UINT8_C( 66), UINT8_C( 58), UINT8_C(252), UINT8_C(168), UINT8_C( 43), UINT8_C(  6),
        UINT8_C(179), UINT8_C( 14), UINT8_C(200), UINT8_C( 15), UINT8_C( 92), UINT8_C(143), UINT8_C( 19), UINT8_C(  5) },
      { UINT8_C(122), UINT8_C(198), UINT8_C(166), UINT8_C(235), UINT8_C(197), UINT8_C(222), UINT8_C(151), UINT8_C(111),
        UINT8_C( 19), UINT8_C(223), UINT8_C(248), UINT8_C(105), UINT8_C( 28), UINT8_C(  2), UINT8_C(173), UINT8_C(223) },
      { UINT8_C( 20), UINT8_C(240), UINT8_C( 26), UINT8_C( 16), UINT8_C(152), UINT8_C( 69), UINT8_C( 23), UINT8_C( 76),
        UINT8_C( 84), UINT8_C(223), UINT8_C( 91), UINT8_C(176), UINT8_C(111), UINT8_C(110), UINT8_C(181), UINT8_C(233) },
      {
      UINT8_C(195),
      UINT8_C(122),
      UINT8_C( 20),
      UINT8_C( 18),
      UINT8_C(198),
      UINT8_C(240),
      UINT8_C( 66),
      UINT8_C(166),
      UINT8_C( 26),
      UINT8_C( 58),
      UINT8_C(235),
      UINT8_C( 16),
      UINT8_C(252),
      UINT8_C(197),
      UINT8_C(152),
      UINT8_C(168),
      UINT8_C(222),
      UINT8_C( 69),
      UINT8_C( 43),
      UINT8_C(151),
      UINT8_C( 23),
      UINT8_C(  6),
      UINT8_C(111),
      UINT8_C( 76),
      UINT8_C(179),
      UINT8_C( 19),
      UINT8_C( 84),
      UINT8_C( 14),
      UINT8_C(223),
      UINT8_C(223),
      UINT8_C(200),
      UINT8_C(248),
      UINT8_C( 91),
      UINT8_C( 15),
      UINT8_C(105),
      UINT8_C(176),
      UINT8_C( 92),
      UINT8_C( 28),
      UINT8_C(111),
      UINT8_C(143),
      UINT8_C(  2),
      UINT8_C(110),
      UINT8_C( 19),
      UINT8_C(173),
      UINT8_C(181),
      UINT8_C(  5),
      UINT8_C(223),
      UINT8_C(233),
      }
    },
    { { UINT8_C( 53), UINT8_C( 92), UINT8_C(212), UINT8_C(250), UINT8_C( 58), UINT8_C(108), UINT8_C(105), UINT8_C( 78),
        UINT8_C( 75), UINT8_C( 97), UINT8_C(183), UINT8_C(103), UINT8_C( 99), UINT8_C(100), UINT8_C( 71), UINT8_C(119) },
      { UINT8_C( 84), UINT8_C( 97), UINT8_C(136), UINT8_C(237), UINT8_C(166), UINT8_C(159), UINT8_C( 57), UINT8_C(250),
        UINT8_C(126), UINT8_C(148), UINT8_C(171), UINT8_C(237), UINT8_C(  2), UINT8_C( 96), UINT8_C(215), UINT8_C( 55) },
      { UINT8_C(188), UINT8_C(171), UINT8_C( 49), UINT8_C(247), UINT8_C( 23), UINT8_C(154), UINT8_C( 69), UINT8_C( 98),
        UINT8_C(252), UINT8_C(252), UINT8_C(202), UINT8_C( 95), UINT8_C( 96), UINT8_C( 17), UINT8_C(215), UINT8_C(181) },
      {
      UINT8_C( 53),
      UINT8_C( 84),
      UINT8_C(188),
      UINT8_C( 92),
      UINT8_C( 97),
      UINT8_C(171),
      UINT8_C(212),
      UINT8_C(136),
      UINT8_C( 49),
      UINT8_C(250),
      UINT8_C(237),
      UINT8_C(247),
      UINT8_C( 58),
      UINT8_C(166),
      UINT8_C( 23),
      UINT8_C(108),
      UINT8_C(159),
      UINT8_C(154),
      UINT8_C(105),
      UINT8_C( 57),
      UINT8_C( 69),
      UINT8_C( 78),
      UINT8_C(250),
      UINT8_C( 98),
      UINT8_C( 75),
      UINT8_C(126),
      UINT8_C(252),
      UINT8_C( 97),
      UINT8_C(148),
      UINT8_C(252),
      UINT8_C(183),
      UINT8_C(171),
      UINT8_C(202),
      UINT8_C(103),
      UINT8_C(237),
      UINT8_C( 95),
      UINT8_C( 99),
      UINT8_C(  2),
      UINT8_C( 96),
      UINT8_C(100),
      UINT8_C( 96),
      UINT8_C( 17),
      UINT8_C( 71),
      UINT8_C(215),
      UINT8_C(215),
      UINT8_C(119),
      UINT8_C( 55),
      UINT8_C(181),
      }
    },
    { { UINT8_C(114), UINT8_C( 95), UINT8_C(162), UINT8_C( 24), UINT8_C(254), UINT8_C(219), UINT8_C( 19), UINT8_C(124),
        UINT8_C(111), UINT8_C(190), UINT8_C(106), UINT8_C(113), UINT8_C( 30), UINT8_C( 65), UINT8_C(169), UINT8_C(219) },
      { UINT8_C(236), UINT8_C(218), UINT8_C(210), UINT8_C(  4), UINT8_C(117), UINT8_C( 23), UINT8_C(102), UINT8_C(113),
        UINT8_C( 19), UINT8_C( 48), UINT8_C(208), UINT8_C(115), UINT8_C( 65), UINT8_C(167), UINT8_C( 40), UINT8_C(179) },
      { UINT8_C(  6), UINT8_C(202), UINT8_C(204), UINT8_C(  4), UINT8_C(165), UINT8_C(223), UINT8_C(129), UINT8_C( 20),
        UINT8_C(157), UINT8_C(235), UINT8_C(134), UINT8_C(187), UINT8_C( 44), UINT8_C( 47), UINT8_C(150), UINT8_C( 24) },
      {
      UINT8_C(114),
      UINT8_C(236),
      UINT8_C(  6),
      UINT8_C( 95),
      UINT8_C(218),
      UINT8_C(202),
      UINT8_C(162),
      UINT8_C(210),
      UINT8_C(204),
      UINT8_C( 24),
      UINT8_C(  4),
      UINT8_C(  4),
      UINT8_C(254),
      UINT8_C(117),
      UINT8_C(165),
      UINT8_C(219),
      UINT8_C( 23),
      UINT8_C(223),
      UINT8_C( 19),
      UINT8_C(102),
      UINT8_C(129),
      UINT8_C(124),
      UINT8_C(113),
      UINT8_C( 20),
      UINT8_C(111),
      UINT8_C( 19),
      UINT8_C(157),
      UINT8_C(190),
      UINT8_C( 48),
      UINT8_C(235),
      UINT8_C(106),
      UINT8_C(208),
      UINT8_C(134),
      UINT8_C(113),
      UINT8_C(115),
      UINT8_C(187),
      UINT8_C( 30),
      UINT8_C( 65),
      UINT8_C( 44),
      UINT8_C( 65),
      UINT8_C(167),
      UINT8_C( 47),
      UINT8_C(169),
      UINT8_C( 40),
      UINT8_C(150),
      UINT8_C(219),
      UINT8_C(179),
      UINT8_C( 24),
      }
    },
    { { UINT8_C(  9), UINT8_C(104), UINT8_C( 28), UINT8_C(126), UINT8_C(127), UINT8_C(131), UINT8_C(239), UINT8_C(146),
        UINT8_C(179), UINT8_C(192), UINT8_C(  6), UINT8_C(245), UINT8_C(103), UINT8_C( 46), UINT8_C(168), UINT8_C(110) },
      { UINT8_C(249), UINT8_C(116), UINT8_C(114), UINT8_C(158), UINT8_C( 83), UINT8_C(243), UINT8_C(179), UINT8_C(240),
        UINT8_C(222), UINT8_C( 57), UINT8_C(172), UINT8_C( 10), UINT8_C(104), UINT8_C( 66), UINT8_C( 35), UINT8_C(113) },
      { UINT8_C(171), UINT8_C( 63), UINT8_C(240), UINT8_C( 42), UINT8_C(194), UINT8_C(223), UINT8_C(189), UINT8_C(118),
        UINT8_C(159), UINT8_C(195), UINT8_C(107), UINT8_C(  7), UINT8_C(241), UINT8_C( 19), UINT8_C(117), UINT8_C(234) },
      {
      UINT8_C(  9),
      UINT8_C(249),
      UINT8_C(171),
      UINT8_C(104),
      UINT8_C(116),
      UINT8_C( 63),
      UINT8_C( 28),
      UINT8_C(114),
      UINT8_C(240),
      UINT8_C(126),
      UINT8_C(158),
      UINT8_C( 42),
      UINT8_C(127),
      UINT8_C( 83),
      UINT8_C(194),
      UINT8_C(131),
      UINT8_C(243),
      UINT8_C(223),
      UINT8_C(239),
      UINT8_C(179),
      UINT8_C(189),
      UINT8_C(146),
      UINT8_C(240),
      UINT8_C(118),
      UINT8_C(179),
      UINT8_C(222),
      UINT8_C(159),
      UINT8_C(192),
      UINT8_C( 57),
      UINT8_C(195),
      UINT8_C(  6),
      UINT8_C(172),
      UINT8_C(107),
      UINT8_C(245),
      UINT8_C( 10),
      UINT8_C(  7),
      UINT8_C(103),
      UINT8_C(104),
      UINT8_C(241),
      UINT8_C( 46),
      UINT8_C( 66),
      UINT8_C( 19),
      UINT8_C(168),
      UINT8_C( 35),
      UINT8_C(117),
      UINT8_C(110),
      UINT8_C(113),
      UINT8_C(234),
      }
    },
    { { UINT8_C(136), UINT8_C(231), UINT8_C(137), UINT8_C(219), UINT8_C(219), UINT8_C( 60), UINT8_C(204), UINT8_C(185),
        UINT8_C(117), UINT8_C(120), UINT8_C(196), UINT8_C(221), UINT8_C(186), UINT8_C(231), UINT8_C( 78), UINT8_C(101) },
      { UINT8_C( 38), UINT8_C( 62), UINT8_C(144), UINT8_C(233), UINT8_C( 30), UINT8_C( 77), UINT8_C( 95), UINT8_C(189),
        UINT8_C( 16), UINT8_C(202), UINT8_C(196), UINT8_C(  1), UINT8_C(221), UINT8_C( 57), UINT8_C(236), UINT8_C(101) },
      { UINT8_C( 33), UINT8_C(117), UINT8_C( 65), UINT8_C(252), UINT8_C(177), UINT8_C( 13), UINT8_C(181), UINT8_C( 38),
        UINT8_C(133), UINT8_C(121), UINT8_C(  3), UINT8_C( 63), UINT8_C( 96), UINT8_C( 81), UINT8_C(165), UINT8_C(135) },
      {
      UINT8_C(136),
      UINT8_C( 38),
      UINT8_C( 33),
      UINT8_C(231),
      UINT8_C( 62),
      UINT8_C(117),
      UINT8_C(137),
      UINT8_C(144),
      UINT8_C( 65),
      UINT8_C(219),
      UINT8_C(233),
      UINT8_C(252),
      UINT8_C(219),
      UINT8_C( 30),
      UINT8_C(177),
      UINT8_C( 60),
      UINT8_C( 77),
      UINT8_C( 13),
      UINT8_C(204),
      UINT8_C( 95),
      UINT8_C(181),
      UINT8_C(185),
      UINT8_C(189),
      UINT8_C( 38),
      UINT8_C(117),
      UINT8_C( 16),
      UINT8_C(133),
      UINT8_C(120),
      UINT8_C(202),
      UINT8_C(121),
      UINT8_C(196),
      UINT8_C(196),
      UINT8_C(  3),
      UINT8_C(221),
      UINT8_C(  1),
      UINT8_C( 63),
      UINT8_C(186),
      UINT8_C(221),
      UINT8_C( 96),
      UINT8_C(231),
      UINT8_C( 57),
      UINT8_C( 81),
      UINT8_C( 78),
      UINT8_C(236),
      UINT8_C(165),
      UINT8_C(101),
      UINT8_C(101),
      UINT8_C(135),
      }
    },
    { { UINT8_C(144), UINT8_C( 53), UINT8_C(112), UINT8_C(174), UINT8_C(130), UINT8_C(207), UINT8_C(107), UINT8_C(146),
        UINT8_C(153), UINT8_C( 48), UINT8_C(147), UINT8_C(118), UINT8_C(105), UINT8_C(127), UINT8_C(220), UINT8_C(138) },
      { UINT8_C(244), UINT8_C( 29), UINT8_C(134), UINT8_C(165), UINT8_C( 42), UINT8_C( 60), UINT8_C(203), UINT8_C(175),
        UINT8_C(181), UINT8_C(206), UINT8_C(238), UINT8_C( 22), UINT8_C( 32), UINT8_C(147), UINT8_C(157), UINT8_C(176) },
      { UINT8_C(200), UINT8_C( 13), UINT8_C( 94), UINT8_C( 74), UINT8_C(220), UINT8_C(201), UINT8_C(220), UINT8_C(117),
        UINT8_C(249), UINT8_C(112), UINT8_C(235), UINT8_C( 99), UINT8_C(239), UINT8_C(199), UINT8_C(237), UINT8_C(228) },
      {
      UINT8_C(144),
      UINT8_C(244),
      UINT8_C(200),
      UINT8_C( 53),
      UINT8_C( 29),
      UINT8_C( 13),
      UINT8_C(112),
      UINT8_C(134),
      UINT8_C( 94),
      UINT8_C(174),
      UINT8_C(165),
      UINT8_C( 74),
      UINT8_C(130),
      UINT8_C( 42),
      UINT8_C(220),
      UINT8_C(207),
      UINT8_C( 60),
      UINT8_C(201),
      UINT8_C(107),
      UINT8_C(203),
      UINT8_C(220),
      UINT8_C(146),
      UINT8_C(175),
      UINT8_C(117),
      UINT8_C(153),
      UINT8_C(181),
      UINT8_C(249),
      UINT8_C( 48),
      UINT8_C(206),
      UINT8_C(112),
      UINT8_C(147),
      UINT8_C(238),
      UINT8_C(235),
      UINT8_C(118),
      UINT8_C( 22),
      UINT8_C( 99),
      UINT8_C(105),
      UINT8_C( 32),
      UINT8_C(239),
      UINT8_C(127),
      UINT8_C(147),
      UINT8_C(199),
      UINT8_C(220),
      UINT8_C(157),
      UINT8_C(237),
      UINT8_C(138),
      UINT8_C(176),
      UINT8_C(228),
      }
    },
    { { UINT8_C(228), UINT8_C(116), UINT8_C(137), UINT8_C( 14), UINT8_C(176), UINT8_C( 85), UINT8_C(189), UINT8_C(101),
        UINT8_C( 35), UINT8_C(172), UINT8_C(123), UINT8_C( 67), UINT8_C( 63), UINT8_C( 24), UINT8_C(243), UINT8_C(  8) },
      { UINT8_C( 37), UINT8_C( 81), UINT8_C( 82), UINT8_C(  1), UINT8_C( 27), UINT8_C( 47), UINT8_C(118), UINT8_C( 20),
        UINT8_C(159), UINT8_C( 98), UINT8_C(119), UINT8_C(142), UINT8_C( 41), UINT8_C(101), UINT8_C(114), UINT8_C( 14) },
      { UINT8_C(217), UINT8_C(252), UINT8_C( 28), UINT8_C(137), UINT8_C( 81), UINT8_C(218), UINT8_C(238), UINT8_C(116),
        UINT8_C(134), UINT8_C(106), UINT8_C(184), UINT8_C(197), UINT8_C(130), UINT8_C(171), UINT8_C(205), UINT8_C(168) },
      {
      UINT8_C(228),
      UINT8_C( 37),
      UINT8_C(217),
      UINT8_C(116),
      UINT8_C( 81),
      UINT8_C(252),
      UINT8_C(137),
      UINT8_C( 82),
      UINT8_C( 28),
      UINT8_C( 14),
      UINT8_C(  1),
      UINT8_C(137),
      UINT8_C(176),
      UINT8_C( 27),
      UINT8_C( 81),
      UINT8_C( 85),
      UINT8_C( 47),
      UINT8_C(218),
      UINT8_C(189),
      UINT8_C(118),
      UINT8_C(238),
      UINT8_C(101),
      UINT8_C( 20),
      UINT8_C(116),
      UINT8_C( 35),
      UINT8_C(159),
      UINT8_C(134),
      UINT8_C(172),
      UINT8_C( 98),
      UINT8_C(106),
      UINT8_C(123),
      UINT8_C(119),
      UINT8_C(184),
      UINT8_C( 67),
      UINT8_C(142),
      UINT8_C(197),
      UINT8_C( 63),
      UINT8_C( 41),
      UINT8_C(130),
      UINT8_C( 24),
      UINT8_C(101),
      UINT8_C(171),
      UINT8_C(243),
      UINT8_C(114),
      UINT8_C(205),
      UINT8_C(  8),
      UINT8_C( 14),
      UINT8_C(168),
      }
    },
    { { UINT8_C(253), UINT8_C( 32), UINT8_C(169), UINT8_C( 24), UINT8_C( 79), UINT8_C( 32), UINT8_C( 44), UINT8_C(238),
        UINT8_C(130), UINT8_C(164), UINT8_C(124), UINT8_C(171), UINT8_C(  9), UINT8_C(239), UINT8_C(185), UINT8_C(226) },
      { UINT8_C(235), UINT8_C(214), UINT8_C(107), UINT8_C( 60), UINT8_C(176), UINT8_C( 89), UINT8_C(176), UINT8_C( 54),
        UINT8_C(195), UINT8_C(104), UINT8_C(251), UINT8_C( 70), UINT8_C( 20), UINT8_C(201), UINT8_C(238), UINT8_C( 17) },
      { UINT8_C(233), UINT8_C(151), UINT8_C( 41), UINT8_C( 56), UINT8_C(183), UINT8_C( 85), UINT8_C( 38), UINT8_C( 57),
        UINT8_C(249), UINT8_C(162), UINT8_C(229), UINT8_C(  2), UINT8_C(145), UINT8_C(158), UINT8_C(228), UINT8_C(124) },
      {
      UINT8_C(253),
      UINT8_C(235),
      UINT8_C(233),
      UINT8_C( 32),
      UINT8_C(214),
      UINT8_C(151),
      UINT8_C(169),
      UINT8_C(107),
      UINT8_C( 41),
      UINT8_C( 24),
      UINT8_C( 60),
      UINT8_C( 56),
      UINT8_C( 79),
      UINT8_C(176),
      UINT8_C(183),
      UINT8_C( 32),
      UINT8_C( 89),
      UINT8_C( 85),
      UINT8_C( 44),
      UINT8_C(176),
      UINT8_C( 38),
      UINT8_C(238),
      UINT8_C( 54),
      UINT8_C( 57),
      UINT8_C(130),
      UINT8_C(195),
      UINT8_C(249),
      UINT8_C(164),
      UINT8_C(104),
      UINT8_C(162),
      UINT8_C(124),
      UINT8_C(251),
      UINT8_C(229),
      UINT8_C(171),
      UINT8_C( 70),
      UINT8_C(  2),
      UINT8_C(  9),
      UINT8_C( 20),
      UINT8_C(145),
      UINT8_C(239),
      UINT8_C(201),
      UINT8_C(158),
      UINT8_C(185),
      UINT8_C(238),
      UINT8_C(228),
      UINT8_C(226),
      UINT8_C( 17),
      UINT8_C(124),
      }
    },

  };

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

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

    r_ = simde_vld3q_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_uint8x16x3_t a = { { a0, a1, a2 } };
    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);
    uint8_t buf[48];
    simde_vst3q_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_vst3q_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint16_t r0[8];
    uint16_t r1[8];
    uint16_t r2[8];
    uint16_t a[24];
  } test_vec[] = {
    { { UINT16_C(28854), UINT16_C(51168), UINT16_C(18132), UINT16_C(49742), UINT16_C(35222), UINT16_C(24102), UINT16_C(16864), UINT16_C( 8805) },
      { UINT16_C(42923), UINT16_C(13774), UINT16_C(28620), UINT16_C(22537), UINT16_C(57874), UINT16_C(53954), UINT16_C(25731), UINT16_C(14804) },
      { UINT16_C(46548), UINT16_C(43008), UINT16_C(20475), UINT16_C(37226), UINT16_C(37080), UINT16_C(47343), UINT16_C(21714), UINT16_C(32218) },
      {
      UINT16_C(28854),
      UINT16_C(42923),
      UINT16_C(46548),
      UINT16_C(51168),
      UINT16_C(13774),
      UINT16_C(43008),
      UINT16_C(18132),
      UINT16_C(28620),
      UINT16_C(20475),
      UINT16_C(49742),
      UINT16_C(22537),
      UINT16_C(37226),
      UINT16_C(35222),
      UINT16_C(57874),
      UINT16_C(37080),
      UINT16_C(24102),
      UINT16_C(53954),
      UINT16_C(47343),
      UINT16_C(16864),
      UINT16_C(25731),
      UINT16_C(21714),
      UINT16_C( 8805),
      UINT16_C(14804),
      UINT16_C(32218),
      }
    },
    { { UINT16_C(43516), UINT16_C(51378), UINT16_C(48152), UINT16_C(11041), UINT16_C(58270), UINT16_C( 8701), UINT16_C(53831), UINT16_C( 7259) },
      { UINT16_C(23431), UINT16_C(33476), UINT16_C(12202), UINT16_C(33299), UINT16_C(  959), UINT16_C(37178), UINT16_C( 5463), UINT16_C(21262) },
      { UINT16_C(49598), UINT16_C(54812), UINT16_C(15741), UINT16_C( 6913), UINT16_C(65312), UINT16_C(26684), UINT16_C(38865), UINT16_C(22660) },
      {
      UINT16_C(43516),
      UINT16_C(23431),
      UINT16_C(49598),
      UINT16_C(51378),
      UINT16_C(33476),
      UINT16_C(54812),
      UINT16_C(48152),
      UINT16_C(12202),
      UINT16_C(15741),
      UINT16_C(11041),
      UINT16_C(33299),
      UINT16_C( 6913),
      UINT16_C(58270),
      UINT16_C(  959),
      UINT16_C(65312),
      UINT16_C( 8701),
      UINT16_C(37178),
      UINT16_C(26684),
      UINT16_C(53831),
      UINT16_C( 5463),
      UINT16_C(38865),
      UINT16_C( 7259),
      UINT16_C(21262),
      UINT16_C(22660),
      }
    },
    { { UINT16_C(18675), UINT16_C(40410), UINT16_C(60791), UINT16_C(14112), UINT16_C(23280), UINT16_C(18632), UINT16_C(55151), UINT16_C(11675) },
      { UINT16_C(47000), UINT16_C( 5380), UINT16_C( 1524), UINT16_C( 5424), UINT16_C(27652), UINT16_C(54653), UINT16_C(  260), UINT16_C(63277) },
      { UINT16_C( 1865), UINT16_C(49556), UINT16_C(46325), UINT16_C(58872), UINT16_C(49167), UINT16_C(32301), UINT16_C(51607), UINT16_C(12204) },
      {
      UINT16_C(18675),
      UINT16_C(47000),
      UINT16_C( 1865),
      UINT16_C(40410),
      UINT16_C( 5380),
      UINT16_C(49556),
      UINT16_C(60791),
      UINT16_C( 1524),
      UINT16_C(46325),
      UINT16_C(14112),
      UINT16_C( 5424),
      UINT16_C(58872),
      UINT16_C(23280),
      UINT16_C(27652),
      UINT16_C(49167),
      UINT16_C(18632),
      UINT16_C(54653),
      UINT16_C(32301),
      UINT16_C(55151),
      UINT16_C(  260),
      UINT16_C(51607),
      UINT16_C(11675),
      UINT16_C(63277),
      UINT16_C(12204),
      }
    },
    { { UINT16_C(45184), UINT16_C(30020), UINT16_C(29877), UINT16_C(47754), UINT16_C( 2017), UINT16_C(58767), UINT16_C(48392), UINT16_C(20956) },
      { UINT16_C(28868), UINT16_C(47378), UINT16_C( 2597), UINT16_C(13471), UINT16_C(52427), UINT16_C(25266), UINT16_C(24213), UINT16_C( 5778) },
      { UINT16_C(54798), UINT16_C(50315), UINT16_C( 5451), UINT16_C(11390), UINT16_C( 3356), UINT16_C( 9233), UINT16_C(60874), UINT16_C(36725) },
      {
      UINT16_C(45184),
      UINT16_C(28868),
      UINT16_C(54798),
      UINT16_C(30020),
      UINT16_C(47378),
      UINT16_C(50315),
      UINT16_C(29877),
      UINT16_C( 2597),
      UINT16_C( 5451),
      UINT16_C(47754),
      UINT16_C(13471),
      UINT16_C(11390),
      UINT16_C( 2017),
      UINT16_C(52427),
      UINT16_C( 3356),
      UINT16_C(58767),
      UINT16_C(25266),
      UINT16_C( 9233),
      UINT16_C(48392),
      UINT16_C(24213),
      UINT16_C(60874),
      UINT16_C(20956),
      UINT16_C( 5778),
      UINT16_C(36725),
      }
    },
    { { UINT16_C(34909), UINT16_C(33352), UINT16_C(59282), UINT16_C(23990), UINT16_C(27060), UINT16_C(18880), UINT16_C(21191), UINT16_C(54879) },
      { UINT16_C(59944), UINT16_C(29594), UINT16_C( 6399), UINT16_C( 7071), UINT16_C(45093), UINT16_C(61503), UINT16_C(46493), UINT16_C(64383) },
      { UINT16_C(51005), UINT16_C(53117), UINT16_C(13487), UINT16_C(25389), UINT16_C(60829), UINT16_C(25772), UINT16_C( 3135), UINT16_C(26426) },
      {
      UINT16_C(34909),
      UINT16_C(59944),
      UINT16_C(51005),
      UINT16_C(33352),
      UINT16_C(29594),
      UINT16_C(53117),
      UINT16_C(59282),
      UINT16_C( 6399),
      UINT16_C(13487),
      UINT16_C(23990),
      UINT16_C( 7071),
      UINT16_C(25389),
      UINT16_C(27060),
      UINT16_C(45093),
      UINT16_C(60829),
      UINT16_C(18880),
      UINT16_C(61503),
      UINT16_C(25772),
      UINT16_C(21191),
      UINT16_C(46493),
      UINT16_C( 3135),
      UINT16_C(54879),
      UINT16_C(64383),
      UINT16_C(26426),
      }
    },
    { { UINT16_C(54518), UINT16_C(63195), UINT16_C(31468), UINT16_C( 4625), UINT16_C(20779), UINT16_C(51202), UINT16_C(33030), UINT16_C(17347) },
      { UINT16_C(16712), UINT16_C(63250), UINT16_C(16245), UINT16_C( 4698), UINT16_C( 1836), UINT16_C(27510), UINT16_C(45331), UINT16_C( 2515) },
      { UINT16_C(44677), UINT16_C(29439), UINT16_C( 4392), UINT16_C(21380), UINT16_C(34402), UINT16_C(26652), UINT16_C(57095), UINT16_C(20395) },
      {
      UINT16_C(54518),
      UINT16_C(16712),
      UINT16_C(44677),
      UINT16_C(63195),
      UINT16_C(63250),
      UINT16_C(29439),
      UINT16_C(31468),
      UINT16_C(16245),
      UINT16_C( 4392),
      UINT16_C( 4625),
      UINT16_C( 4698),
      UINT16_C(21380),
      UINT16_C(20779),
      UINT16_C( 1836),
      UINT16_C(34402),
      UINT16_C(51202),
      UINT16_C(27510),
      UINT16_C(26652),
      UINT16_C(33030),
      UINT16_C(45331),
      UINT16_C(57095),
      UINT16_C(17347),
      UINT16_C( 2515),
      UINT16_C(20395),
      }
    },
    { { UINT16_C(48416), UINT16_C(38215), UINT16_C(41469), UINT16_C(10663), UINT16_C( 7848), UINT16_C(48021), UINT16_C(26831), UINT16_C(21701) },
      { UINT16_C(50198), UINT16_C(16070), UINT16_C(19157), UINT16_C(14226), UINT16_C(44752), UINT16_C(55199), UINT16_C(19085), UINT16_C(44583) },
      { UINT16_C(28168), UINT16_C( 1347), UINT16_C(60175), UINT16_C(47150), UINT16_C(49929), UINT16_C(55411), UINT16_C(14379), UINT16_C(16684) },
      {
      UINT16_C(48416),
      UINT16_C(50198),
      UINT16_C(28168),
      UINT16_C(38215),
      UINT16_C(16070),
      UINT16_C( 1347),
      UINT16_C(41469),
      UINT16_C(19157),
      UINT16_C(60175),
      UINT16_C(10663),
      UINT16_C(14226),
      UINT16_C(47150),
      UINT16_C( 7848),
      UINT16_C(44752),
      UINT16_C(49929),
      UINT16_C(48021),
      UINT16_C(55199),
      UINT16_C(55411),
      UINT16_C(26831),
      UINT16_C(19085),
      UINT16_C(14379),
      UINT16_C(21701),
      UINT16_C(44583),
      UINT16_C(16684),
      }
    },
    { { UINT16_C(62461), UINT16_C(53888), UINT16_C( 4669), UINT16_C( 3594), UINT16_C(43456), UINT16_C(19941), UINT16_C( 3316), UINT16_C(64763) },
      { UINT16_C(16250), UINT16_C(35329), UINT16_C(12074), UINT16_C(13122), UINT16_C(46579), UINT16_C( 7691), UINT16_C(14318), UINT16_C(60256) },
      { UINT16_C(57386), UINT16_C(26813), UINT16_C(51186), UINT16_C(45686), UINT16_C(23409), UINT16_C(26111), UINT16_C(64360), UINT16_C(57953) },
      {
      UINT16_C(62461),
      UINT16_C(16250),
      UINT16_C(57386),
      UINT16_C(53888),
      UINT16_C(35329),
      UINT16_C(26813),
      UINT16_C( 4669),
      UINT16_C(12074),
      UINT16_C(51186),
      UINT16_C( 3594),
      UINT16_C(13122),
      UINT16_C(45686),
      UINT16_C(43456),
      UINT16_C(46579),
      UINT16_C(23409),
      UINT16_C(19941),
      UINT16_C( 7691),
      UINT16_C(26111),
      UINT16_C( 3316),
      UINT16_C(14318),
      UINT16_C(64360),
      UINT16_C(64763),
      UINT16_C(60256),
      UINT16_C(57953),
      }
    },

  };

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

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

    r_ = simde_vld3q_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_uint16x8x3_t a = { { a0, a1, a2 } };
    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);
    uint16_t buf[24];
    simde_vst3q_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_vst3q_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint32_t r0[4];
    uint32_t r1[4];
    uint32_t r2[4];
    uint32_t a[12];
  } test_vec[] = {
    { { UINT32_C(2644289703), UINT32_C(4217165007), UINT32_C(4135406643), UINT32_C(1998399494) },
      { UINT32_C( 139488877), UINT32_C(1168216955), UINT32_C(3519844586), UINT32_C(1657552315) },
      { UINT32_C(3036637413), UINT32_C(1890540348), UINT32_C(2925931687), UINT32_C(3240461140) },
      {
      UINT32_C(2644289703),
      UINT32_C( 139488877),
      UINT32_C(3036637413),
      UINT32_C(4217165007),
      UINT32_C(1168216955),
      UINT32_C(1890540348),
      UINT32_C(4135406643),
      UINT32_C(3519844586),
      UINT32_C(2925931687),
      UINT32_C(1998399494),
      UINT32_C(1657552315),
      UINT32_C(3240461140),
      }
    },
    { { UINT32_C(1841985266), UINT32_C(4088621833), UINT32_C(3066396667), UINT32_C(2702741948) },
      { UINT32_C( 894769145), UINT32_C( 447022195), UINT32_C(2227702832), UINT32_C(2168909455) },
      { UINT32_C(1844383844), UINT32_C(1986110075), UINT32_C(3727500833), UINT32_C(2961130935) },
      {
      UINT32_C(1841985266),
      UINT32_C( 894769145),
      UINT32_C(1844383844),
      UINT32_C(4088621833),
      UINT32_C( 447022195),
      UINT32_C(1986110075),
      UINT32_C(3066396667),
      UINT32_C(2227702832),
      UINT32_C(3727500833),
      UINT32_C(2702741948),
      UINT32_C(2168909455),
      UINT32_C(2961130935),
      }
    },
    { { UINT32_C(3504723293), UINT32_C( 183143385), UINT32_C( 646886295), UINT32_C(  94950561) },
      { UINT32_C(1601345508), UINT32_C(1524028217), UINT32_C(2956461049), UINT32_C(2774579272) },
      { UINT32_C(1718961805), UINT32_C(1752195281), UINT32_C(3029270291), UINT32_C(3099145939) },
      {
      UINT32_C(3504723293),
      UINT32_C(1601345508),
      UINT32_C(1718961805),
      UINT32_C( 183143385),
      UINT32_C(1524028217),
      UINT32_C(1752195281),
      UINT32_C( 646886295),
      UINT32_C(2956461049),
      UINT32_C(3029270291),
      UINT32_C(  94950561),
      UINT32_C(2774579272),
      UINT32_C(3099145939),
      }
    },
    { { UINT32_C( 102181837), UINT32_C(4167167487), UINT32_C( 967416304), UINT32_C(3739093329) },
      { UINT32_C( 541414479), UINT32_C(3347625396), UINT32_C(2289768372), UINT32_C( 457192525) },
      { UINT32_C(1579243359), UINT32_C( 894927429), UINT32_C(1835925532), UINT32_C(1498172681) },
      {
      UINT32_C( 102181837),
      UINT32_C( 541414479),
      UINT32_C(1579243359),
      UINT32_C(4167167487),
      UINT32_C(3347625396),
      UINT32_C( 894927429),
      UINT32_C( 967416304),
      UINT32_C(2289768372),
      UINT32_C(1835925532),
      UINT32_C(3739093329),
      UINT32_C( 457192525),
      UINT32_C(1498172681),
      }
    },
    { { UINT32_C(1434030497), UINT32_C(4212916806), UINT32_C(1719899929), UINT32_C( 713147339) },
      { UINT32_C(1602855706), UINT32_C(1100341285), UINT32_C(3920561120), UINT32_C(4047698768) },
      { UINT32_C(3527851148), UINT32_C(3620561598), UINT32_C(3292352761), UINT32_C( 787463955) },
      {
      UINT32_C(1434030497),
      UINT32_C(1602855706),
      UINT32_C(3527851148),
      UINT32_C(4212916806),
      UINT32_C(1100341285),
      UINT32_C(3620561598),
      UINT32_C(1719899929),
      UINT32_C(3920561120),
      UINT32_C(3292352761),
      UINT32_C( 713147339),
      UINT32_C(4047698768),
      UINT32_C( 787463955),
      }
    },
    { { UINT32_C(2274195554), UINT32_C( 952705624), UINT32_C(1981904934), UINT32_C(4285031539) },
      { UINT32_C(3738283552), UINT32_C( 179674897), UINT32_C(  63959791), UINT32_C( 322027185) },
      { UINT32_C(2392571446), UINT32_C( 130442465), UINT32_C(1333651420), UINT32_C(1800332619) },
      {
      UINT32_C(2274195554),
      UINT32_C(3738283552),
      UINT32_C(2392571446),
      UINT32_C( 952705624),
      UINT32_C( 179674897),
      UINT32_C( 130442465),
      UINT32_C(1981904934),
      UINT32_C(  63959791),
      UINT32_C(1333651420),
      UINT32_C(4285031539),
      UINT32_C( 322027185),
      UINT32_C(1800332619),
      }
    },
    { { UINT32_C(2773032852), UINT32_C(2930769598), UINT32_C(2729541361), UINT32_C(1924588092) },
      { UINT32_C(2164281760), UINT32_C(2441660085), UINT32_C(4192208558), UINT32_C(2137337579) },
      { UINT32_C( 203730509), UINT32_C(2663044269), UINT32_C(2403363666), UINT32_C(3976328781) },
      {
      UINT32_C(2773032852),
      UINT32_C(2164281760),
      UINT32_C( 203730509),
      UINT32_C(2930769598),
      UINT32_C(2441660085),
      UINT32_C(2663044269),
      UINT32_C(2729541361),
      UINT32_C(4192208558),
      UINT32_C(2403363666),
      UINT32_C(1924588092),
      UINT32_C(2137337579),
      UINT32_C(3976328781),
      }
    },
    { { UINT32_C(4235133511), UINT32_C(1989015496), UINT32_C(3916459517), UINT32_C(3915961755) },
      { UINT32_C( 821398915), UINT32_C(3016666977), UINT32_C(1732382490), UINT32_C(1297368069) },
      { UINT32_C( 239715142), UINT32_C(3095779259), UINT32_C(3768710468), UINT32_C(1305021130) },
      {
      UINT32_C(4235133511),
      UINT32_C( 821398915),
      UINT32_C( 239715142),
      UINT32_C(1989015496),
      UINT32_C(3016666977),
      UINT32_C(3095779259),
      UINT32_C(3916459517),
      UINT32_C(1732382490),
      UINT32_C(3768710468),
      UINT32_C(3915961755),
      UINT32_C(1297368069),
      UINT32_C(1305021130),
      }
    },

  };

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

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

    r_ = simde_vld3q_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_uint32x4x3_t a = { { a0, a1, a2 } };
    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);
    uint32_t buf[12];
    simde_vst3q_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_vst3q_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    uint64_t r0[2];
    uint64_t r1[2];
    uint64_t r2[2];
    uint64_t a[6];
  } test_vec[] = {
    { { UINT64_C(18060883008768479347), UINT64_C( 5018011187030834501) },
      { UINT64_C(11625139375786132363), UINT64_C( 5059326699072687921) },
      { UINT64_C( 2974855029542469350), UINT64_C( 5361348160817082507) },
      {
      UINT64_C(18060883008768479347),
      UINT64_C(11625139375786132363),
      UINT64_C( 2974855029542469350),
      UINT64_C( 5018011187030834501),
      UINT64_C( 5059326699072687921),
      UINT64_C( 5361348160817082507),
      }
    },
    { { UINT64_C( 9666145736659077849), UINT64_C( 4878956801423443611) },
      { UINT64_C( 4131166095989137223), UINT64_C( 3824614212338648586) },
      { UINT64_C( 8298128430671186765), UINT64_C( 5441640290016459493) },
      {
      UINT64_C( 9666145736659077849),
      UINT64_C( 4131166095989137223),
      UINT64_C( 8298128430671186765),
      UINT64_C( 4878956801423443611),
      UINT64_C( 3824614212338648586),
      UINT64_C( 5441640290016459493),
      }
    },
    { { UINT64_C(17968741216735860086), UINT64_C(14366999007002278096) },
      { UINT64_C(16134869119939451808), UINT64_C(15734070097341369356) },
      { UINT64_C( 7755862228120555706), UINT64_C(15660697304851506195) },
      {
      UINT64_C(17968741216735860086),
      UINT64_C(16134869119939451808),
      UINT64_C( 7755862228120555706),
      UINT64_C(14366999007002278096),
      UINT64_C(15734070097341369356),
      UINT64_C(15660697304851506195),
      }
    },
    { { UINT64_C( 6696073435993456404), UINT64_C( 7874199468129389832) },
      { UINT64_C(13014481120863339927), UINT64_C( 4697420632340706333) },
      { UINT64_C(14196257235655426390), UINT64_C(14801492728372883273) },
      {
      UINT64_C( 6696073435993456404),
      UINT64_C(13014481120863339927),
      UINT64_C(14196257235655426390),
      UINT64_C( 7874199468129389832),
      UINT64_C( 4697420632340706333),
      UINT64_C(14801492728372883273),
      }
    },
    { { UINT64_C( 6201908828263317436), UINT64_C( 4701157587375969231) },
      { UINT64_C( 1288570213115661407), UINT64_C( 5070620563681907291) },
      { UINT64_C(14304757290167917814), UINT64_C( 7940689536953233671) },
      {
      UINT64_C( 6201908828263317436),
      UINT64_C( 1288570213115661407),
      UINT64_C(14304757290167917814),
      UINT64_C( 4701157587375969231),
      UINT64_C( 5070620563681907291),
      UINT64_C( 7940689536953233671),
      }
    },
    { { UINT64_C( 7018133269242321547), UINT64_C(16090324530462093949) },
      { UINT64_C(12279788565508779948), UINT64_C(13276838393395555779) },
      { UINT64_C(12848893113834130153), UINT64_C( 4515709179427111651) },
      {
      UINT64_C( 7018133269242321547),
      UINT64_C(12279788565508779948),
      UINT64_C(12848893113834130153),
      UINT64_C(16090324530462093949),
      UINT64_C(13276838393395555779),
      UINT64_C( 4515709179427111651),
      }
    },
    { { UINT64_C( 1027750122758519029), UINT64_C(10835134783212806010) },
      { UINT64_C(13678511626096306923), UINT64_C( 9793135194231376919) },
      { UINT64_C(10467880760741186285), UINT64_C( 3640481109499192897) },
      {
      UINT64_C( 1027750122758519029),
      UINT64_C(13678511626096306923),
      UINT64_C(10467880760741186285),
      UINT64_C(10835134783212806010),
      UINT64_C( 9793135194231376919),
      UINT64_C( 3640481109499192897),
      }
    },
    { { UINT64_C(17913111364571958016), UINT64_C( 4885430699418526387) },
      { UINT64_C(10447718153612684372), UINT64_C(14726776052189705702) },
      { UINT64_C(10297550757555581711), UINT64_C( 7492758411626645857) },
      {
      UINT64_C(17913111364571958016),
      UINT64_C(10447718153612684372),
      UINT64_C(10297550757555581711),
      UINT64_C( 4885430699418526387),
      UINT64_C(14726776052189705702),
      UINT64_C( 7492758411626645857),
      }
    },

  };

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

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

    r_ = simde_vld3q_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_uint64x2x3_t a = { { a0, a1, a2 } };
    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);
    uint64_t buf[6];
    simde_vst3q_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_vst3_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 a[24];
  } test_vec[] = {
    { { SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(124), SIMDE_POLY8_C(237), SIMDE_POLY8_C(151), SIMDE_POLY8_C(131), SIMDE_POLY8_C(124), SIMDE_POLY8_C(175) },
      { SIMDE_POLY8_C(205), SIMDE_POLY8_C(128), SIMDE_POLY8_C(134), SIMDE_POLY8_C(187), SIMDE_POLY8_C(236), SIMDE_POLY8_C(  2), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 50) },
      { SIMDE_POLY8_C( 18), SIMDE_POLY8_C(148), SIMDE_POLY8_C(148), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 44), SIMDE_POLY8_C(182) },
      {
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(205),
      SIMDE_POLY8_C( 18),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C(128),
      SIMDE_POLY8_C(148),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(134),
      SIMDE_POLY8_C(148),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(187),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C(236),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C(131),
      SIMDE_POLY8_C(  2),
      SIMDE_POLY8_C( 73),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C( 61),
      SIMDE_POLY8_C( 44),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C( 50),
      SIMDE_POLY8_C(182),
      }
    },
    { { SIMDE_POLY8_C( 10), SIMDE_POLY8_C(157), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(211), SIMDE_POLY8_C(218) },
      { SIMDE_POLY8_C(156), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(226), SIMDE_POLY8_C(159) },
      { SIMDE_POLY8_C(196), SIMDE_POLY8_C(104), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(176), SIMDE_POLY8_C(106), SIMDE_POLY8_C(152), SIMDE_POLY8_C(226), SIMDE_POLY8_C(125) },
      {
      SIMDE_POLY8_C( 10),
      SIMDE_POLY8_C(156),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C(245),
      SIMDE_POLY8_C(199),
      SIMDE_POLY8_C( 90),
      SIMDE_POLY8_C( 84),
      SIMDE_POLY8_C( 51),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(210),
      SIMDE_POLY8_C(106),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C(152),
      SIMDE_POLY8_C(211),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(218),
      SIMDE_POLY8_C(159),
      SIMDE_POLY8_C(125),
      }
    },
    { { SIMDE_POLY8_C( 44), SIMDE_POLY8_C(119), SIMDE_POLY8_C(139), SIMDE_POLY8_C(177), SIMDE_POLY8_C(192), SIMDE_POLY8_C(183), SIMDE_POLY8_C(103), SIMDE_POLY8_C(202) },
      { SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(181), SIMDE_POLY8_C(241), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 81) },
      { SIMDE_POLY8_C( 64), SIMDE_POLY8_C(196), SIMDE_POLY8_C(132), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(  8), SIMDE_POLY8_C(103), SIMDE_POLY8_C(178), SIMDE_POLY8_C(204) },
      {
      SIMDE_POLY8_C( 44),
      SIMDE_POLY8_C( 85),
      SIMDE_POLY8_C( 64),
      SIMDE_POLY8_C(119),
      SIMDE_POLY8_C( 92),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C(139),
      SIMDE_POLY8_C( 30),
      SIMDE_POLY8_C(132),
      SIMDE_POLY8_C(177),
      SIMDE_POLY8_C( 35),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C(192),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C(  8),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(241),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(253),
      SIMDE_POLY8_C(178),
      SIMDE_POLY8_C(202),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C(204),
      }
    },
    { { SIMDE_POLY8_C(207), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(183), SIMDE_POLY8_C(209) },
      { SIMDE_POLY8_C(213), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(130), SIMDE_POLY8_C(150), SIMDE_POLY8_C(250), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 79) },
      { SIMDE_POLY8_C( 69), SIMDE_POLY8_C(127), SIMDE_POLY8_C(114), SIMDE_POLY8_C(250), SIMDE_POLY8_C(112), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(177) },
      {
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C(213),
      SIMDE_POLY8_C( 69),
      SIMDE_POLY8_C( 13),
      SIMDE_POLY8_C( 66),
      SIMDE_POLY8_C(127),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(130),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C( 58),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C(112),
      SIMDE_POLY8_C( 94),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C( 75),
      SIMDE_POLY8_C(209),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C(177),
      }
    },
    { { SIMDE_POLY8_C( 51), SIMDE_POLY8_C(207), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(118), SIMDE_POLY8_C(  7), SIMDE_POLY8_C(  6) },
      { SIMDE_POLY8_C(131), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(226), SIMDE_POLY8_C(247), SIMDE_POLY8_C(249), SIMDE_POLY8_C(183) },
      { SIMDE_POLY8_C( 57), SIMDE_POLY8_C(123), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 51), SIMDE_POLY8_C(100), SIMDE_POLY8_C(174), SIMDE_POLY8_C(130), SIMDE_POLY8_C(169) },
      {
      SIMDE_POLY8_C( 51),
      SIMDE_POLY8_C(131),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C(131),
      SIMDE_POLY8_C(123),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C( 64),
      SIMDE_POLY8_C( 77),
      SIMDE_POLY8_C( 59),
      SIMDE_POLY8_C( 40),
      SIMDE_POLY8_C( 51),
      SIMDE_POLY8_C( 54),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C(247),
      SIMDE_POLY8_C(174),
      SIMDE_POLY8_C(  7),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C(130),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(169),
      }
    },
    { { SIMDE_POLY8_C( 45), SIMDE_POLY8_C(244), SIMDE_POLY8_C(163), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(151) },
      { SIMDE_POLY8_C(190), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(210), SIMDE_POLY8_C(244), SIMDE_POLY8_C(137), SIMDE_POLY8_C(218), SIMDE_POLY8_C(250), SIMDE_POLY8_C( 12) },
      { SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 46), SIMDE_POLY8_C(247), SIMDE_POLY8_C(107) },
      {
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C(190),
      SIMDE_POLY8_C( 93),
      SIMDE_POLY8_C(244),
      SIMDE_POLY8_C( 18),
      SIMDE_POLY8_C( 58),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C(210),
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C(244),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C(218),
      SIMDE_POLY8_C( 46),
      SIMDE_POLY8_C( 78),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C(247),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C( 12),
      SIMDE_POLY8_C(107),
      }
    },
    { { SIMDE_POLY8_C(170), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 31) },
      { SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(189), SIMDE_POLY8_C(121), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 16), SIMDE_POLY8_C(  8) },
      { SIMDE_POLY8_C( 30), SIMDE_POLY8_C(226), SIMDE_POLY8_C(252), SIMDE_POLY8_C(167), SIMDE_POLY8_C(188), SIMDE_POLY8_C(247), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 26) },
      {
      SIMDE_POLY8_C(170),
      SIMDE_POLY8_C( 21),
      SIMDE_POLY8_C( 30),
      SIMDE_POLY8_C( 68),
      SIMDE_POLY8_C( 91),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C(158),
      SIMDE_POLY8_C(189),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C(121),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C(242),
      SIMDE_POLY8_C( 74),
      SIMDE_POLY8_C(188),
      SIMDE_POLY8_C( 33),
      SIMDE_POLY8_C( 11),
      SIMDE_POLY8_C(247),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C( 16),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C( 31),
      SIMDE_POLY8_C(  8),
      SIMDE_POLY8_C( 26),
      }
    },
    { { SIMDE_POLY8_C( 49), SIMDE_POLY8_C(232), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(206), SIMDE_POLY8_C(193) },
      { SIMDE_POLY8_C(149), SIMDE_POLY8_C(108), SIMDE_POLY8_C(207), SIMDE_POLY8_C(135), SIMDE_POLY8_C(141), SIMDE_POLY8_C(135), SIMDE_POLY8_C(167), SIMDE_POLY8_C(163) },
      { SIMDE_POLY8_C(227), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(141) },
      {
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C(149),
      SIMDE_POLY8_C(227),
      SIMDE_POLY8_C(232),
      SIMDE_POLY8_C(108),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C( 28),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C(135),
      SIMDE_POLY8_C( 45),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C(141),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C( 80),
      SIMDE_POLY8_C(135),
      SIMDE_POLY8_C( 44),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C(193),
      SIMDE_POLY8_C(163),
      SIMDE_POLY8_C(141),
      }
    },

  };

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

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

    r_ = simde_vld3_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 (int i = 0 ; i < 8 ; i++) {
    simde_poly8x8_t a = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
    simde_poly8x8_t c = simde_test_arm_neon_random_p8x8();
    simde_poly8x8x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_p8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_poly8_t buf[24];
    simde_vst3_p8(buf, d);

    simde_test_codegen_write_vp8(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3_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 a[12];
  } test_vec[] = {
    { { SIMDE_POLY16_C( 9344), SIMDE_POLY16_C(14996), SIMDE_POLY16_C( 7435), SIMDE_POLY16_C(59276) },
      { SIMDE_POLY16_C(26277), SIMDE_POLY16_C(23774), SIMDE_POLY16_C(21915), SIMDE_POLY16_C(  425) },
      { SIMDE_POLY16_C(18737), SIMDE_POLY16_C(57584), SIMDE_POLY16_C(38525), SIMDE_POLY16_C(39425) },
      {
      SIMDE_POLY16_C( 9344),
      SIMDE_POLY16_C(26277),
      SIMDE_POLY16_C(18737),
      SIMDE_POLY16_C(14996),
      SIMDE_POLY16_C(23774),
      SIMDE_POLY16_C(57584),
      SIMDE_POLY16_C( 7435),
      SIMDE_POLY16_C(21915),
      SIMDE_POLY16_C(38525),
      SIMDE_POLY16_C(59276),
      SIMDE_POLY16_C(  425),
      SIMDE_POLY16_C(39425),
      }
    },
    { { SIMDE_POLY16_C(31766), SIMDE_POLY16_C(36501), SIMDE_POLY16_C(13366), SIMDE_POLY16_C(47054) },
      { SIMDE_POLY16_C(25177), SIMDE_POLY16_C(25841), SIMDE_POLY16_C(32127), SIMDE_POLY16_C( 9547) },
      { SIMDE_POLY16_C(10724), SIMDE_POLY16_C(32641), SIMDE_POLY16_C(10878), SIMDE_POLY16_C(45184) },
      {
      SIMDE_POLY16_C(31766),
      SIMDE_POLY16_C(25177),
      SIMDE_POLY16_C(10724),
      SIMDE_POLY16_C(36501),
      SIMDE_POLY16_C(25841),
      SIMDE_POLY16_C(32641),
      SIMDE_POLY16_C(13366),
      SIMDE_POLY16_C(32127),
      SIMDE_POLY16_C(10878),
      SIMDE_POLY16_C(47054),
      SIMDE_POLY16_C( 9547),
      SIMDE_POLY16_C(45184),
      }
    },
    { { SIMDE_POLY16_C(29044), SIMDE_POLY16_C(61840), SIMDE_POLY16_C(37127), SIMDE_POLY16_C( 7563) },
      { SIMDE_POLY16_C( 8206), SIMDE_POLY16_C(17579), SIMDE_POLY16_C(31317), SIMDE_POLY16_C(44795) },
      { SIMDE_POLY16_C(60892), SIMDE_POLY16_C(23570), SIMDE_POLY16_C(23914), SIMDE_POLY16_C(20097) },
      {
      SIMDE_POLY16_C(29044),
      SIMDE_POLY16_C( 8206),
      SIMDE_POLY16_C(60892),
      SIMDE_POLY16_C(61840),
      SIMDE_POLY16_C(17579),
      SIMDE_POLY16_C(23570),
      SIMDE_POLY16_C(37127),
      SIMDE_POLY16_C(31317),
      SIMDE_POLY16_C(23914),
      SIMDE_POLY16_C( 7563),
      SIMDE_POLY16_C(44795),
      SIMDE_POLY16_C(20097),
      }
    },
    { { SIMDE_POLY16_C(  646), SIMDE_POLY16_C( 1230), SIMDE_POLY16_C(20013), SIMDE_POLY16_C(41396) },
      { SIMDE_POLY16_C(17599), SIMDE_POLY16_C(51090), SIMDE_POLY16_C( 7638), SIMDE_POLY16_C(58596) },
      { SIMDE_POLY16_C(36926), SIMDE_POLY16_C(37672), SIMDE_POLY16_C( 9226), SIMDE_POLY16_C(58945) },
      {
      SIMDE_POLY16_C(  646),
      SIMDE_POLY16_C(17599),
      SIMDE_POLY16_C(36926),
      SIMDE_POLY16_C( 1230),
      SIMDE_POLY16_C(51090),
      SIMDE_POLY16_C(37672),
      SIMDE_POLY16_C(20013),
      SIMDE_POLY16_C( 7638),
      SIMDE_POLY16_C( 9226),
      SIMDE_POLY16_C(41396),
      SIMDE_POLY16_C(58596),
      SIMDE_POLY16_C(58945),
      }
    },
    { { SIMDE_POLY16_C(21265), SIMDE_POLY16_C(31554), SIMDE_POLY16_C(50096), SIMDE_POLY16_C(14026) },
      { SIMDE_POLY16_C(39110), SIMDE_POLY16_C(62266), SIMDE_POLY16_C(61414), SIMDE_POLY16_C(42644) },
      { SIMDE_POLY16_C( 9779), SIMDE_POLY16_C( 2413), SIMDE_POLY16_C(20803), SIMDE_POLY16_C(33261) },
      {
      SIMDE_POLY16_C(21265),
      SIMDE_POLY16_C(39110),
      SIMDE_POLY16_C( 9779),
      SIMDE_POLY16_C(31554),
      SIMDE_POLY16_C(62266),
      SIMDE_POLY16_C( 2413),
      SIMDE_POLY16_C(50096),
      SIMDE_POLY16_C(61414),
      SIMDE_POLY16_C(20803),
      SIMDE_POLY16_C(14026),
      SIMDE_POLY16_C(42644),
      SIMDE_POLY16_C(33261),
      }
    },
    { { SIMDE_POLY16_C( 5857), SIMDE_POLY16_C(60180), SIMDE_POLY16_C(21818), SIMDE_POLY16_C(19410) },
      { SIMDE_POLY16_C( 5288), SIMDE_POLY16_C(22726), SIMDE_POLY16_C(37080), SIMDE_POLY16_C(40590) },
      { SIMDE_POLY16_C(51496), SIMDE_POLY16_C( 3985), SIMDE_POLY16_C( 9656), SIMDE_POLY16_C(60341) },
      {
      SIMDE_POLY16_C( 5857),
      SIMDE_POLY16_C( 5288),
      SIMDE_POLY16_C(51496),
      SIMDE_POLY16_C(60180),
      SIMDE_POLY16_C(22726),
      SIMDE_POLY16_C( 3985),
      SIMDE_POLY16_C(21818),
      SIMDE_POLY16_C(37080),
      SIMDE_POLY16_C( 9656),
      SIMDE_POLY16_C(19410),
      SIMDE_POLY16_C(40590),
      SIMDE_POLY16_C(60341),
      }
    },
    { { SIMDE_POLY16_C( 8779), SIMDE_POLY16_C(36597), SIMDE_POLY16_C(57971), SIMDE_POLY16_C(21776) },
      { SIMDE_POLY16_C( 9464), SIMDE_POLY16_C(12864), SIMDE_POLY16_C( 4730), SIMDE_POLY16_C( 8829) },
      { SIMDE_POLY16_C(17447), SIMDE_POLY16_C(65403), SIMDE_POLY16_C( 2516), SIMDE_POLY16_C(64925) },
      {
      SIMDE_POLY16_C( 8779),
      SIMDE_POLY16_C( 9464),
      SIMDE_POLY16_C(17447),
      SIMDE_POLY16_C(36597),
      SIMDE_POLY16_C(12864),
      SIMDE_POLY16_C(65403),
      SIMDE_POLY16_C(57971),
      SIMDE_POLY16_C( 4730),
      SIMDE_POLY16_C( 2516),
      SIMDE_POLY16_C(21776),
      SIMDE_POLY16_C( 8829),
      SIMDE_POLY16_C(64925),
      }
    },
    { { SIMDE_POLY16_C(11986), SIMDE_POLY16_C(35340), SIMDE_POLY16_C(49491), SIMDE_POLY16_C(40566) },
      { SIMDE_POLY16_C(27619), SIMDE_POLY16_C(22060), SIMDE_POLY16_C(15437), SIMDE_POLY16_C(18091) },
      { SIMDE_POLY16_C(60513), SIMDE_POLY16_C(56184), SIMDE_POLY16_C(63230), SIMDE_POLY16_C( 9725) },
      {
      SIMDE_POLY16_C(11986),
      SIMDE_POLY16_C(27619),
      SIMDE_POLY16_C(60513),
      SIMDE_POLY16_C(35340),
      SIMDE_POLY16_C(22060),
      SIMDE_POLY16_C(56184),
      SIMDE_POLY16_C(49491),
      SIMDE_POLY16_C(15437),
      SIMDE_POLY16_C(63230),
      SIMDE_POLY16_C(40566),
      SIMDE_POLY16_C(18091),
      SIMDE_POLY16_C( 9725),
      }
    },

  };

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

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

    r_ = simde_vld3_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 (int i = 0 ; i < 8 ; i++) {
    simde_poly16x4_t a = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
    simde_poly16x4_t c = simde_test_arm_neon_random_p16x4();
    simde_poly16x4x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_p16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x4(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_poly16_t buf[12];
    simde_vst3_p16(buf, d);

    simde_test_codegen_write_vp16(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3_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 a[3];
  } test_vec[] = {
    { { SIMDE_POLY64_C(12422824856183467782) },
      { SIMDE_POLY64_C( 7004324963154263795) },
      { SIMDE_POLY64_C( 9338655374062009309) },
      {
      SIMDE_POLY64_C(12422824856183467782),
      SIMDE_POLY64_C( 7004324963154263795),
      SIMDE_POLY64_C( 9338655374062009309),
      }
    },
    { { SIMDE_POLY64_C( 6390283869042032365) },
      { SIMDE_POLY64_C( 1465642543073747784) },
      { SIMDE_POLY64_C(14254966942331603968) },
      {
      SIMDE_POLY64_C( 6390283869042032365),
      SIMDE_POLY64_C( 1465642543073747784),
      SIMDE_POLY64_C(14254966942331603968),
      }
    },
    { { SIMDE_POLY64_C( 1378937280728634636) },
      { SIMDE_POLY64_C( 7737497671101794998) },
      { SIMDE_POLY64_C(18425754395142978945) },
      {
      SIMDE_POLY64_C( 1378937280728634636),
      SIMDE_POLY64_C( 7737497671101794998),
      SIMDE_POLY64_C(18425754395142978945),
      }
    },
    { { SIMDE_POLY64_C( 3361450187992158969) },
      { SIMDE_POLY64_C(13048320093653501658) },
      { SIMDE_POLY64_C( 2506568346036438075) },
      {
      SIMDE_POLY64_C( 3361450187992158969),
      SIMDE_POLY64_C(13048320093653501658),
      SIMDE_POLY64_C( 2506568346036438075),
      }
    },
    { { SIMDE_POLY64_C( 4979425705785089819) },
      { SIMDE_POLY64_C(12329956177065970635) },
      { SIMDE_POLY64_C( 1839369556765502675) },
      {
      SIMDE_POLY64_C( 4979425705785089819),
      SIMDE_POLY64_C(12329956177065970635),
      SIMDE_POLY64_C( 1839369556765502675),
      }
    },
    { { SIMDE_POLY64_C( 9081580541621781572) },
      { SIMDE_POLY64_C( 1275277660055456800) },
      { SIMDE_POLY64_C( 8771073248822548798) },
      {
      SIMDE_POLY64_C( 9081580541621781572),
      SIMDE_POLY64_C( 1275277660055456800),
      SIMDE_POLY64_C( 8771073248822548798),
      }
    },
    { { SIMDE_POLY64_C( 7709829577090688264) },
      { SIMDE_POLY64_C(15561442731964266005) },
      { SIMDE_POLY64_C( 9114713076917374501) },
      {
      SIMDE_POLY64_C( 7709829577090688264),
      SIMDE_POLY64_C(15561442731964266005),
      SIMDE_POLY64_C( 9114713076917374501),
      }
    },
    { { SIMDE_POLY64_C(11596565186140273872) },
      { SIMDE_POLY64_C( 2250819095794956716) },
      { SIMDE_POLY64_C(  831350528676433402) },
      {
      SIMDE_POLY64_C(11596565186140273872),
      SIMDE_POLY64_C( 2250819095794956716),
      SIMDE_POLY64_C(  831350528676433402),
      }
    },

  };

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

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

    r_ = simde_vld3_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 (int i = 0 ; i < 8 ; i++) {
    simde_poly64x1_t a = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t b = simde_test_arm_neon_random_p64x1();
    simde_poly64x1_t c = simde_test_arm_neon_random_p64x1();
    simde_poly64x1x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_p64x1(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x1(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_poly64_t buf[3];
    simde_vst3_p64(buf, d);

    simde_test_codegen_write_vp64(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3q_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 a[48];
  } test_vec[] = {
    { { SIMDE_POLY8_C(195), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(252), SIMDE_POLY8_C(168), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(  6),
        SIMDE_POLY8_C(179), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(200), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(  5) },
      { SIMDE_POLY8_C(122), SIMDE_POLY8_C(198), SIMDE_POLY8_C(166), SIMDE_POLY8_C(235), SIMDE_POLY8_C(197), SIMDE_POLY8_C(222), SIMDE_POLY8_C(151), SIMDE_POLY8_C(111),
        SIMDE_POLY8_C( 19), SIMDE_POLY8_C(223), SIMDE_POLY8_C(248), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(  2), SIMDE_POLY8_C(173), SIMDE_POLY8_C(223) },
      { SIMDE_POLY8_C( 20), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 16), SIMDE_POLY8_C(152), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 76),
        SIMDE_POLY8_C( 84), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(176), SIMDE_POLY8_C(111), SIMDE_POLY8_C(110), SIMDE_POLY8_C(181), SIMDE_POLY8_C(233) },
      {
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C(122),
      SIMDE_POLY8_C( 20),
      SIMDE_POLY8_C( 18),
      SIMDE_POLY8_C(198),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C( 66),
      SIMDE_POLY8_C(166),
      SIMDE_POLY8_C( 26),
      SIMDE_POLY8_C( 58),
      SIMDE_POLY8_C(235),
      SIMDE_POLY8_C( 16),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C(152),
      SIMDE_POLY8_C(168),
      SIMDE_POLY8_C(222),
      SIMDE_POLY8_C( 69),
      SIMDE_POLY8_C( 43),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C( 76),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C( 84),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C(223),
      SIMDE_POLY8_C(223),
      SIMDE_POLY8_C(200),
      SIMDE_POLY8_C(248),
      SIMDE_POLY8_C( 91),
      SIMDE_POLY8_C( 15),
      SIMDE_POLY8_C(105),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 92),
      SIMDE_POLY8_C( 28),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C(143),
      SIMDE_POLY8_C(  2),
      SIMDE_POLY8_C(110),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C(173),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C(  5),
      SIMDE_POLY8_C(223),
      SIMDE_POLY8_C(233),
      }
    },
    { { SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(212), SIMDE_POLY8_C(250), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(108), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 78),
        SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 97), SIMDE_POLY8_C(183), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(119) },
      { SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 97), SIMDE_POLY8_C(136), SIMDE_POLY8_C(237), SIMDE_POLY8_C(166), SIMDE_POLY8_C(159), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(250),
        SIMDE_POLY8_C(126), SIMDE_POLY8_C(148), SIMDE_POLY8_C(171), SIMDE_POLY8_C(237), SIMDE_POLY8_C(  2), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 55) },
      { SIMDE_POLY8_C(188), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(154), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 98),
        SIMDE_POLY8_C(252), SIMDE_POLY8_C(252), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(215), SIMDE_POLY8_C(181) },
      {
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C( 84),
      SIMDE_POLY8_C(188),
      SIMDE_POLY8_C( 92),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C(212),
      SIMDE_POLY8_C(136),
      SIMDE_POLY8_C( 49),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(247),
      SIMDE_POLY8_C( 58),
      SIMDE_POLY8_C(166),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C(108),
      SIMDE_POLY8_C(159),
      SIMDE_POLY8_C(154),
      SIMDE_POLY8_C(105),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C( 69),
      SIMDE_POLY8_C( 78),
      SIMDE_POLY8_C(250),
      SIMDE_POLY8_C( 98),
      SIMDE_POLY8_C( 75),
      SIMDE_POLY8_C(126),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C( 97),
      SIMDE_POLY8_C(148),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C(202),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C(  2),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C(100),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C( 17),
      SIMDE_POLY8_C( 71),
      SIMDE_POLY8_C(215),
      SIMDE_POLY8_C(215),
      SIMDE_POLY8_C(119),
      SIMDE_POLY8_C( 55),
      SIMDE_POLY8_C(181),
      }
    },
    { { SIMDE_POLY8_C(114), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(162), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(254), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(124),
        SIMDE_POLY8_C(111), SIMDE_POLY8_C(190), SIMDE_POLY8_C(106), SIMDE_POLY8_C(113), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 65), SIMDE_POLY8_C(169), SIMDE_POLY8_C(219) },
      { SIMDE_POLY8_C(236), SIMDE_POLY8_C(218), SIMDE_POLY8_C(210), SIMDE_POLY8_C(  4), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(102), SIMDE_POLY8_C(113),
        SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(208), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 65), SIMDE_POLY8_C(167), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(179) },
      { SIMDE_POLY8_C(  6), SIMDE_POLY8_C(202), SIMDE_POLY8_C(204), SIMDE_POLY8_C(  4), SIMDE_POLY8_C(165), SIMDE_POLY8_C(223), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 20),
        SIMDE_POLY8_C(157), SIMDE_POLY8_C(235), SIMDE_POLY8_C(134), SIMDE_POLY8_C(187), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(150), SIMDE_POLY8_C( 24) },
      {
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C(236),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C(218),
      SIMDE_POLY8_C(202),
      SIMDE_POLY8_C(162),
      SIMDE_POLY8_C(210),
      SIMDE_POLY8_C(204),
      SIMDE_POLY8_C( 24),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C(  4),
      SIMDE_POLY8_C(254),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C( 23),
      SIMDE_POLY8_C(223),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C(102),
      SIMDE_POLY8_C(129),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(113),
      SIMDE_POLY8_C( 20),
      SIMDE_POLY8_C(111),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C(190),
      SIMDE_POLY8_C( 48),
      SIMDE_POLY8_C(235),
      SIMDE_POLY8_C(106),
      SIMDE_POLY8_C(208),
      SIMDE_POLY8_C(134),
      SIMDE_POLY8_C(113),
      SIMDE_POLY8_C(115),
      SIMDE_POLY8_C(187),
      SIMDE_POLY8_C( 30),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C( 44),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C(167),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C( 40),
      SIMDE_POLY8_C(150),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C( 24),
      }
    },
    { { SIMDE_POLY8_C(  9), SIMDE_POLY8_C(104), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(126), SIMDE_POLY8_C(127), SIMDE_POLY8_C(131), SIMDE_POLY8_C(239), SIMDE_POLY8_C(146),
        SIMDE_POLY8_C(179), SIMDE_POLY8_C(192), SIMDE_POLY8_C(  6), SIMDE_POLY8_C(245), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 46), SIMDE_POLY8_C(168), SIMDE_POLY8_C(110) },
      { SIMDE_POLY8_C(249), SIMDE_POLY8_C(116), SIMDE_POLY8_C(114), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(243), SIMDE_POLY8_C(179), SIMDE_POLY8_C(240),
        SIMDE_POLY8_C(222), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(104), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(113) },
      { SIMDE_POLY8_C(171), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 42), SIMDE_POLY8_C(194), SIMDE_POLY8_C(223), SIMDE_POLY8_C(189), SIMDE_POLY8_C(118),
        SIMDE_POLY8_C(159), SIMDE_POLY8_C(195), SIMDE_POLY8_C(107), SIMDE_POLY8_C(  7), SIMDE_POLY8_C(241), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(117), SIMDE_POLY8_C(234) },
      {
      SIMDE_POLY8_C(  9),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C(116),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C( 28),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C(126),
      SIMDE_POLY8_C(158),
      SIMDE_POLY8_C( 42),
      SIMDE_POLY8_C(127),
      SIMDE_POLY8_C( 83),
      SIMDE_POLY8_C(194),
      SIMDE_POLY8_C(131),
      SIMDE_POLY8_C(243),
      SIMDE_POLY8_C(223),
      SIMDE_POLY8_C(239),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C(189),
      SIMDE_POLY8_C(146),
      SIMDE_POLY8_C(240),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C(179),
      SIMDE_POLY8_C(222),
      SIMDE_POLY8_C(159),
      SIMDE_POLY8_C(192),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C(  6),
      SIMDE_POLY8_C(172),
      SIMDE_POLY8_C(107),
      SIMDE_POLY8_C(245),
      SIMDE_POLY8_C( 10),
      SIMDE_POLY8_C(  7),
      SIMDE_POLY8_C(103),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C(241),
      SIMDE_POLY8_C( 46),
      SIMDE_POLY8_C( 66),
      SIMDE_POLY8_C( 19),
      SIMDE_POLY8_C(168),
      SIMDE_POLY8_C( 35),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(110),
      SIMDE_POLY8_C(113),
      SIMDE_POLY8_C(234),
      }
    },
    { { SIMDE_POLY8_C(136), SIMDE_POLY8_C(231), SIMDE_POLY8_C(137), SIMDE_POLY8_C(219), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(204), SIMDE_POLY8_C(185),
        SIMDE_POLY8_C(117), SIMDE_POLY8_C(120), SIMDE_POLY8_C(196), SIMDE_POLY8_C(221), SIMDE_POLY8_C(186), SIMDE_POLY8_C(231), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(101) },
      { SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(144), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(189),
        SIMDE_POLY8_C( 16), SIMDE_POLY8_C(202), SIMDE_POLY8_C(196), SIMDE_POLY8_C(  1), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(236), SIMDE_POLY8_C(101) },
      { SIMDE_POLY8_C( 33), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 65), SIMDE_POLY8_C(252), SIMDE_POLY8_C(177), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 38),
        SIMDE_POLY8_C(133), SIMDE_POLY8_C(121), SIMDE_POLY8_C(  3), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(165), SIMDE_POLY8_C(135) },
      {
      SIMDE_POLY8_C(136),
      SIMDE_POLY8_C( 38),
      SIMDE_POLY8_C( 33),
      SIMDE_POLY8_C(231),
      SIMDE_POLY8_C( 62),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C(144),
      SIMDE_POLY8_C( 65),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C(219),
      SIMDE_POLY8_C( 30),
      SIMDE_POLY8_C(177),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C( 77),
      SIMDE_POLY8_C( 13),
      SIMDE_POLY8_C(204),
      SIMDE_POLY8_C( 95),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C(185),
      SIMDE_POLY8_C(189),
      SIMDE_POLY8_C( 38),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C( 16),
      SIMDE_POLY8_C(133),
      SIMDE_POLY8_C(120),
      SIMDE_POLY8_C(202),
      SIMDE_POLY8_C(121),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C(196),
      SIMDE_POLY8_C(  3),
      SIMDE_POLY8_C(221),
      SIMDE_POLY8_C(  1),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C(186),
      SIMDE_POLY8_C(221),
      SIMDE_POLY8_C( 96),
      SIMDE_POLY8_C(231),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C( 78),
      SIMDE_POLY8_C(236),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C(135),
      }
    },
    { { SIMDE_POLY8_C(144), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(112), SIMDE_POLY8_C(174), SIMDE_POLY8_C(130), SIMDE_POLY8_C(207), SIMDE_POLY8_C(107), SIMDE_POLY8_C(146),
        SIMDE_POLY8_C(153), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(147), SIMDE_POLY8_C(118), SIMDE_POLY8_C(105), SIMDE_POLY8_C(127), SIMDE_POLY8_C(220), SIMDE_POLY8_C(138) },
      { SIMDE_POLY8_C(244), SIMDE_POLY8_C( 29), SIMDE_POLY8_C(134), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(203), SIMDE_POLY8_C(175),
        SIMDE_POLY8_C(181), SIMDE_POLY8_C(206), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(147), SIMDE_POLY8_C(157), SIMDE_POLY8_C(176) },
      { SIMDE_POLY8_C(200), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(220), SIMDE_POLY8_C(201), SIMDE_POLY8_C(220), SIMDE_POLY8_C(117),
        SIMDE_POLY8_C(249), SIMDE_POLY8_C(112), SIMDE_POLY8_C(235), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(239), SIMDE_POLY8_C(199), SIMDE_POLY8_C(237), SIMDE_POLY8_C(228) },
      {
      SIMDE_POLY8_C(144),
      SIMDE_POLY8_C(244),
      SIMDE_POLY8_C(200),
      SIMDE_POLY8_C( 53),
      SIMDE_POLY8_C( 29),
      SIMDE_POLY8_C( 13),
      SIMDE_POLY8_C(112),
      SIMDE_POLY8_C(134),
      SIMDE_POLY8_C( 94),
      SIMDE_POLY8_C(174),
      SIMDE_POLY8_C(165),
      SIMDE_POLY8_C( 74),
      SIMDE_POLY8_C(130),
      SIMDE_POLY8_C( 42),
      SIMDE_POLY8_C(220),
      SIMDE_POLY8_C(207),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C(201),
      SIMDE_POLY8_C(107),
      SIMDE_POLY8_C(203),
      SIMDE_POLY8_C(220),
      SIMDE_POLY8_C(146),
      SIMDE_POLY8_C(175),
      SIMDE_POLY8_C(117),
      SIMDE_POLY8_C(153),
      SIMDE_POLY8_C(181),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C( 48),
      SIMDE_POLY8_C(206),
      SIMDE_POLY8_C(112),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C(235),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C( 22),
      SIMDE_POLY8_C( 99),
      SIMDE_POLY8_C(105),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C(239),
      SIMDE_POLY8_C(127),
      SIMDE_POLY8_C(147),
      SIMDE_POLY8_C(199),
      SIMDE_POLY8_C(220),
      SIMDE_POLY8_C(157),
      SIMDE_POLY8_C(237),
      SIMDE_POLY8_C(138),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C(228),
      }
    },
    { { SIMDE_POLY8_C(228), SIMDE_POLY8_C(116), SIMDE_POLY8_C(137), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(189), SIMDE_POLY8_C(101),
        SIMDE_POLY8_C( 35), SIMDE_POLY8_C(172), SIMDE_POLY8_C(123), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(243), SIMDE_POLY8_C(  8) },
      { SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(  1), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 20),
        SIMDE_POLY8_C(159), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(119), SIMDE_POLY8_C(142), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(101), SIMDE_POLY8_C(114), SIMDE_POLY8_C( 14) },
      { SIMDE_POLY8_C(217), SIMDE_POLY8_C(252), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(137), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(218), SIMDE_POLY8_C(238), SIMDE_POLY8_C(116),
        SIMDE_POLY8_C(134), SIMDE_POLY8_C(106), SIMDE_POLY8_C(184), SIMDE_POLY8_C(197), SIMDE_POLY8_C(130), SIMDE_POLY8_C(171), SIMDE_POLY8_C(205), SIMDE_POLY8_C(168) },
      {
      SIMDE_POLY8_C(228),
      SIMDE_POLY8_C( 37),
      SIMDE_POLY8_C(217),
      SIMDE_POLY8_C(116),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C(252),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C( 82),
      SIMDE_POLY8_C( 28),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C(  1),
      SIMDE_POLY8_C(137),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 27),
      SIMDE_POLY8_C( 81),
      SIMDE_POLY8_C( 85),
      SIMDE_POLY8_C( 47),
      SIMDE_POLY8_C(218),
      SIMDE_POLY8_C(189),
      SIMDE_POLY8_C(118),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C( 20),
      SIMDE_POLY8_C(116),
      SIMDE_POLY8_C( 35),
      SIMDE_POLY8_C(159),
      SIMDE_POLY8_C(134),
      SIMDE_POLY8_C(172),
      SIMDE_POLY8_C( 98),
      SIMDE_POLY8_C(106),
      SIMDE_POLY8_C(123),
      SIMDE_POLY8_C(119),
      SIMDE_POLY8_C(184),
      SIMDE_POLY8_C( 67),
      SIMDE_POLY8_C(142),
      SIMDE_POLY8_C(197),
      SIMDE_POLY8_C( 63),
      SIMDE_POLY8_C( 41),
      SIMDE_POLY8_C(130),
      SIMDE_POLY8_C( 24),
      SIMDE_POLY8_C(101),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C(243),
      SIMDE_POLY8_C(114),
      SIMDE_POLY8_C(205),
      SIMDE_POLY8_C(  8),
      SIMDE_POLY8_C( 14),
      SIMDE_POLY8_C(168),
      }
    },
    { { SIMDE_POLY8_C(253), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 44), SIMDE_POLY8_C(238),
        SIMDE_POLY8_C(130), SIMDE_POLY8_C(164), SIMDE_POLY8_C(124), SIMDE_POLY8_C(171), SIMDE_POLY8_C(  9), SIMDE_POLY8_C(239), SIMDE_POLY8_C(185), SIMDE_POLY8_C(226) },
      { SIMDE_POLY8_C(235), SIMDE_POLY8_C(214), SIMDE_POLY8_C(107), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 54),
        SIMDE_POLY8_C(195), SIMDE_POLY8_C(104), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(201), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 17) },
      { SIMDE_POLY8_C(233), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 57),
        SIMDE_POLY8_C(249), SIMDE_POLY8_C(162), SIMDE_POLY8_C(229), SIMDE_POLY8_C(  2), SIMDE_POLY8_C(145), SIMDE_POLY8_C(158), SIMDE_POLY8_C(228), SIMDE_POLY8_C(124) },
      {
      SIMDE_POLY8_C(253),
      SIMDE_POLY8_C(235),
      SIMDE_POLY8_C(233),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C(214),
      SIMDE_POLY8_C(151),
      SIMDE_POLY8_C(169),
      SIMDE_POLY8_C(107),
      SIMDE_POLY8_C( 41),
      SIMDE_POLY8_C( 24),
      SIMDE_POLY8_C( 60),
      SIMDE_POLY8_C( 56),
      SIMDE_POLY8_C( 79),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C(183),
      SIMDE_POLY8_C( 32),
      SIMDE_POLY8_C( 89),
      SIMDE_POLY8_C( 85),
      SIMDE_POLY8_C( 44),
      SIMDE_POLY8_C(176),
      SIMDE_POLY8_C( 38),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C( 54),
      SIMDE_POLY8_C( 57),
      SIMDE_POLY8_C(130),
      SIMDE_POLY8_C(195),
      SIMDE_POLY8_C(249),
      SIMDE_POLY8_C(164),
      SIMDE_POLY8_C(104),
      SIMDE_POLY8_C(162),
      SIMDE_POLY8_C(124),
      SIMDE_POLY8_C(251),
      SIMDE_POLY8_C(229),
      SIMDE_POLY8_C(171),
      SIMDE_POLY8_C( 70),
      SIMDE_POLY8_C(  2),
      SIMDE_POLY8_C(  9),
      SIMDE_POLY8_C( 20),
      SIMDE_POLY8_C(145),
      SIMDE_POLY8_C(239),
      SIMDE_POLY8_C(201),
      SIMDE_POLY8_C(158),
      SIMDE_POLY8_C(185),
      SIMDE_POLY8_C(238),
      SIMDE_POLY8_C(228),
      SIMDE_POLY8_C(226),
      SIMDE_POLY8_C( 17),
      SIMDE_POLY8_C(124),
      }
    },

  };

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

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

    r_ = simde_vld3q_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 (int i = 0 ; i < 8 ; i++) {
    simde_poly8x16_t a = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
    simde_poly8x16_t c = simde_test_arm_neon_random_p8x16();
    simde_poly8x16x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_p8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p8x16(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_poly8_t buf[48];
    simde_vst3q_p8(buf, d);

    simde_test_codegen_write_vp8(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3q_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 a[24];
  } test_vec[] = {
    { { SIMDE_POLY16_C(28854), SIMDE_POLY16_C(51168), SIMDE_POLY16_C(18132), SIMDE_POLY16_C(49742), SIMDE_POLY16_C(35222), SIMDE_POLY16_C(24102), SIMDE_POLY16_C(16864), SIMDE_POLY16_C( 8805) },
      { SIMDE_POLY16_C(42923), SIMDE_POLY16_C(13774), SIMDE_POLY16_C(28620), SIMDE_POLY16_C(22537), SIMDE_POLY16_C(57874), SIMDE_POLY16_C(53954), SIMDE_POLY16_C(25731), SIMDE_POLY16_C(14804) },
      { SIMDE_POLY16_C(46548), SIMDE_POLY16_C(43008), SIMDE_POLY16_C(20475), SIMDE_POLY16_C(37226), SIMDE_POLY16_C(37080), SIMDE_POLY16_C(47343), SIMDE_POLY16_C(21714), SIMDE_POLY16_C(32218) },
      {
      SIMDE_POLY16_C(28854),
      SIMDE_POLY16_C(42923),
      SIMDE_POLY16_C(46548),
      SIMDE_POLY16_C(51168),
      SIMDE_POLY16_C(13774),
      SIMDE_POLY16_C(43008),
      SIMDE_POLY16_C(18132),
      SIMDE_POLY16_C(28620),
      SIMDE_POLY16_C(20475),
      SIMDE_POLY16_C(49742),
      SIMDE_POLY16_C(22537),
      SIMDE_POLY16_C(37226),
      SIMDE_POLY16_C(35222),
      SIMDE_POLY16_C(57874),
      SIMDE_POLY16_C(37080),
      SIMDE_POLY16_C(24102),
      SIMDE_POLY16_C(53954),
      SIMDE_POLY16_C(47343),
      SIMDE_POLY16_C(16864),
      SIMDE_POLY16_C(25731),
      SIMDE_POLY16_C(21714),
      SIMDE_POLY16_C( 8805),
      SIMDE_POLY16_C(14804),
      SIMDE_POLY16_C(32218),
      }
    },
    { { SIMDE_POLY16_C(43516), SIMDE_POLY16_C(51378), SIMDE_POLY16_C(48152), SIMDE_POLY16_C(11041), SIMDE_POLY16_C(58270), SIMDE_POLY16_C( 8701), SIMDE_POLY16_C(53831), SIMDE_POLY16_C( 7259) },
      { SIMDE_POLY16_C(23431), SIMDE_POLY16_C(33476), SIMDE_POLY16_C(12202), SIMDE_POLY16_C(33299), SIMDE_POLY16_C(  959), SIMDE_POLY16_C(37178), SIMDE_POLY16_C( 5463), SIMDE_POLY16_C(21262) },
      { SIMDE_POLY16_C(49598), SIMDE_POLY16_C(54812), SIMDE_POLY16_C(15741), SIMDE_POLY16_C( 6913), SIMDE_POLY16_C(65312), SIMDE_POLY16_C(26684), SIMDE_POLY16_C(38865), SIMDE_POLY16_C(22660) },
      {
      SIMDE_POLY16_C(43516),
      SIMDE_POLY16_C(23431),
      SIMDE_POLY16_C(49598),
      SIMDE_POLY16_C(51378),
      SIMDE_POLY16_C(33476),
      SIMDE_POLY16_C(54812),
      SIMDE_POLY16_C(48152),
      SIMDE_POLY16_C(12202),
      SIMDE_POLY16_C(15741),
      SIMDE_POLY16_C(11041),
      SIMDE_POLY16_C(33299),
      SIMDE_POLY16_C( 6913),
      SIMDE_POLY16_C(58270),
      SIMDE_POLY16_C(  959),
      SIMDE_POLY16_C(65312),
      SIMDE_POLY16_C( 8701),
      SIMDE_POLY16_C(37178),
      SIMDE_POLY16_C(26684),
      SIMDE_POLY16_C(53831),
      SIMDE_POLY16_C( 5463),
      SIMDE_POLY16_C(38865),
      SIMDE_POLY16_C( 7259),
      SIMDE_POLY16_C(21262),
      SIMDE_POLY16_C(22660),
      }
    },
    { { SIMDE_POLY16_C(18675), SIMDE_POLY16_C(40410), SIMDE_POLY16_C(60791), SIMDE_POLY16_C(14112), SIMDE_POLY16_C(23280), SIMDE_POLY16_C(18632), SIMDE_POLY16_C(55151), SIMDE_POLY16_C(11675) },
      { SIMDE_POLY16_C(47000), SIMDE_POLY16_C( 5380), SIMDE_POLY16_C( 1524), SIMDE_POLY16_C( 5424), SIMDE_POLY16_C(27652), SIMDE_POLY16_C(54653), SIMDE_POLY16_C(  260), SIMDE_POLY16_C(63277) },
      { SIMDE_POLY16_C( 1865), SIMDE_POLY16_C(49556), SIMDE_POLY16_C(46325), SIMDE_POLY16_C(58872), SIMDE_POLY16_C(49167), SIMDE_POLY16_C(32301), SIMDE_POLY16_C(51607), SIMDE_POLY16_C(12204) },
      {
      SIMDE_POLY16_C(18675),
      SIMDE_POLY16_C(47000),
      SIMDE_POLY16_C( 1865),
      SIMDE_POLY16_C(40410),
      SIMDE_POLY16_C( 5380),
      SIMDE_POLY16_C(49556),
      SIMDE_POLY16_C(60791),
      SIMDE_POLY16_C( 1524),
      SIMDE_POLY16_C(46325),
      SIMDE_POLY16_C(14112),
      SIMDE_POLY16_C( 5424),
      SIMDE_POLY16_C(58872),
      SIMDE_POLY16_C(23280),
      SIMDE_POLY16_C(27652),
      SIMDE_POLY16_C(49167),
      SIMDE_POLY16_C(18632),
      SIMDE_POLY16_C(54653),
      SIMDE_POLY16_C(32301),
      SIMDE_POLY16_C(55151),
      SIMDE_POLY16_C(  260),
      SIMDE_POLY16_C(51607),
      SIMDE_POLY16_C(11675),
      SIMDE_POLY16_C(63277),
      SIMDE_POLY16_C(12204),
      }
    },
    { { SIMDE_POLY16_C(45184), SIMDE_POLY16_C(30020), SIMDE_POLY16_C(29877), SIMDE_POLY16_C(47754), SIMDE_POLY16_C( 2017), SIMDE_POLY16_C(58767), SIMDE_POLY16_C(48392), SIMDE_POLY16_C(20956) },
      { SIMDE_POLY16_C(28868), SIMDE_POLY16_C(47378), SIMDE_POLY16_C( 2597), SIMDE_POLY16_C(13471), SIMDE_POLY16_C(52427), SIMDE_POLY16_C(25266), SIMDE_POLY16_C(24213), SIMDE_POLY16_C( 5778) },
      { SIMDE_POLY16_C(54798), SIMDE_POLY16_C(50315), SIMDE_POLY16_C( 5451), SIMDE_POLY16_C(11390), SIMDE_POLY16_C( 3356), SIMDE_POLY16_C( 9233), SIMDE_POLY16_C(60874), SIMDE_POLY16_C(36725) },
      {
      SIMDE_POLY16_C(45184),
      SIMDE_POLY16_C(28868),
      SIMDE_POLY16_C(54798),
      SIMDE_POLY16_C(30020),
      SIMDE_POLY16_C(47378),
      SIMDE_POLY16_C(50315),
      SIMDE_POLY16_C(29877),
      SIMDE_POLY16_C( 2597),
      SIMDE_POLY16_C( 5451),
      SIMDE_POLY16_C(47754),
      SIMDE_POLY16_C(13471),
      SIMDE_POLY16_C(11390),
      SIMDE_POLY16_C( 2017),
      SIMDE_POLY16_C(52427),
      SIMDE_POLY16_C( 3356),
      SIMDE_POLY16_C(58767),
      SIMDE_POLY16_C(25266),
      SIMDE_POLY16_C( 9233),
      SIMDE_POLY16_C(48392),
      SIMDE_POLY16_C(24213),
      SIMDE_POLY16_C(60874),
      SIMDE_POLY16_C(20956),
      SIMDE_POLY16_C( 5778),
      SIMDE_POLY16_C(36725),
      }
    },
    { { SIMDE_POLY16_C(34909), SIMDE_POLY16_C(33352), SIMDE_POLY16_C(59282), SIMDE_POLY16_C(23990), SIMDE_POLY16_C(27060), SIMDE_POLY16_C(18880), SIMDE_POLY16_C(21191), SIMDE_POLY16_C(54879) },
      { SIMDE_POLY16_C(59944), SIMDE_POLY16_C(29594), SIMDE_POLY16_C( 6399), SIMDE_POLY16_C( 7071), SIMDE_POLY16_C(45093), SIMDE_POLY16_C(61503), SIMDE_POLY16_C(46493), SIMDE_POLY16_C(64383) },
      { SIMDE_POLY16_C(51005), SIMDE_POLY16_C(53117), SIMDE_POLY16_C(13487), SIMDE_POLY16_C(25389), SIMDE_POLY16_C(60829), SIMDE_POLY16_C(25772), SIMDE_POLY16_C( 3135), SIMDE_POLY16_C(26426) },
      {
      SIMDE_POLY16_C(34909),
      SIMDE_POLY16_C(59944),
      SIMDE_POLY16_C(51005),
      SIMDE_POLY16_C(33352),
      SIMDE_POLY16_C(29594),
      SIMDE_POLY16_C(53117),
      SIMDE_POLY16_C(59282),
      SIMDE_POLY16_C( 6399),
      SIMDE_POLY16_C(13487),
      SIMDE_POLY16_C(23990),
      SIMDE_POLY16_C( 7071),
      SIMDE_POLY16_C(25389),
      SIMDE_POLY16_C(27060),
      SIMDE_POLY16_C(45093),
      SIMDE_POLY16_C(60829),
      SIMDE_POLY16_C(18880),
      SIMDE_POLY16_C(61503),
      SIMDE_POLY16_C(25772),
      SIMDE_POLY16_C(21191),
      SIMDE_POLY16_C(46493),
      SIMDE_POLY16_C( 3135),
      SIMDE_POLY16_C(54879),
      SIMDE_POLY16_C(64383),
      SIMDE_POLY16_C(26426),
      }
    },
    { { SIMDE_POLY16_C(54518), SIMDE_POLY16_C(63195), SIMDE_POLY16_C(31468), SIMDE_POLY16_C( 4625), SIMDE_POLY16_C(20779), SIMDE_POLY16_C(51202), SIMDE_POLY16_C(33030), SIMDE_POLY16_C(17347) },
      { SIMDE_POLY16_C(16712), SIMDE_POLY16_C(63250), SIMDE_POLY16_C(16245), SIMDE_POLY16_C( 4698), SIMDE_POLY16_C( 1836), SIMDE_POLY16_C(27510), SIMDE_POLY16_C(45331), SIMDE_POLY16_C( 2515) },
      { SIMDE_POLY16_C(44677), SIMDE_POLY16_C(29439), SIMDE_POLY16_C( 4392), SIMDE_POLY16_C(21380), SIMDE_POLY16_C(34402), SIMDE_POLY16_C(26652), SIMDE_POLY16_C(57095), SIMDE_POLY16_C(20395) },
      {
      SIMDE_POLY16_C(54518),
      SIMDE_POLY16_C(16712),
      SIMDE_POLY16_C(44677),
      SIMDE_POLY16_C(63195),
      SIMDE_POLY16_C(63250),
      SIMDE_POLY16_C(29439),
      SIMDE_POLY16_C(31468),
      SIMDE_POLY16_C(16245),
      SIMDE_POLY16_C( 4392),
      SIMDE_POLY16_C( 4625),
      SIMDE_POLY16_C( 4698),
      SIMDE_POLY16_C(21380),
      SIMDE_POLY16_C(20779),
      SIMDE_POLY16_C( 1836),
      SIMDE_POLY16_C(34402),
      SIMDE_POLY16_C(51202),
      SIMDE_POLY16_C(27510),
      SIMDE_POLY16_C(26652),
      SIMDE_POLY16_C(33030),
      SIMDE_POLY16_C(45331),
      SIMDE_POLY16_C(57095),
      SIMDE_POLY16_C(17347),
      SIMDE_POLY16_C( 2515),
      SIMDE_POLY16_C(20395),
      }
    },
    { { SIMDE_POLY16_C(48416), SIMDE_POLY16_C(38215), SIMDE_POLY16_C(41469), SIMDE_POLY16_C(10663), SIMDE_POLY16_C( 7848), SIMDE_POLY16_C(48021), SIMDE_POLY16_C(26831), SIMDE_POLY16_C(21701) },
      { SIMDE_POLY16_C(50198), SIMDE_POLY16_C(16070), SIMDE_POLY16_C(19157), SIMDE_POLY16_C(14226), SIMDE_POLY16_C(44752), SIMDE_POLY16_C(55199), SIMDE_POLY16_C(19085), SIMDE_POLY16_C(44583) },
      { SIMDE_POLY16_C(28168), SIMDE_POLY16_C( 1347), SIMDE_POLY16_C(60175), SIMDE_POLY16_C(47150), SIMDE_POLY16_C(49929), SIMDE_POLY16_C(55411), SIMDE_POLY16_C(14379), SIMDE_POLY16_C(16684) },
      {
      SIMDE_POLY16_C(48416),
      SIMDE_POLY16_C(50198),
      SIMDE_POLY16_C(28168),
      SIMDE_POLY16_C(38215),
      SIMDE_POLY16_C(16070),
      SIMDE_POLY16_C( 1347),
      SIMDE_POLY16_C(41469),
      SIMDE_POLY16_C(19157),
      SIMDE_POLY16_C(60175),
      SIMDE_POLY16_C(10663),
      SIMDE_POLY16_C(14226),
      SIMDE_POLY16_C(47150),
      SIMDE_POLY16_C( 7848),
      SIMDE_POLY16_C(44752),
      SIMDE_POLY16_C(49929),
      SIMDE_POLY16_C(48021),
      SIMDE_POLY16_C(55199),
      SIMDE_POLY16_C(55411),
      SIMDE_POLY16_C(26831),
      SIMDE_POLY16_C(19085),
      SIMDE_POLY16_C(14379),
      SIMDE_POLY16_C(21701),
      SIMDE_POLY16_C(44583),
      SIMDE_POLY16_C(16684),
      }
    },
    { { SIMDE_POLY16_C(62461), SIMDE_POLY16_C(53888), SIMDE_POLY16_C( 4669), SIMDE_POLY16_C( 3594), SIMDE_POLY16_C(43456), SIMDE_POLY16_C(19941), SIMDE_POLY16_C( 3316), SIMDE_POLY16_C(64763) },
      { SIMDE_POLY16_C(16250), SIMDE_POLY16_C(35329), SIMDE_POLY16_C(12074), SIMDE_POLY16_C(13122), SIMDE_POLY16_C(46579), SIMDE_POLY16_C( 7691), SIMDE_POLY16_C(14318), SIMDE_POLY16_C(60256) },
      { SIMDE_POLY16_C(57386), SIMDE_POLY16_C(26813), SIMDE_POLY16_C(51186), SIMDE_POLY16_C(45686), SIMDE_POLY16_C(23409), SIMDE_POLY16_C(26111), SIMDE_POLY16_C(64360), SIMDE_POLY16_C(57953) },
      {
      SIMDE_POLY16_C(62461),
      SIMDE_POLY16_C(16250),
      SIMDE_POLY16_C(57386),
      SIMDE_POLY16_C(53888),
      SIMDE_POLY16_C(35329),
      SIMDE_POLY16_C(26813),
      SIMDE_POLY16_C( 4669),
      SIMDE_POLY16_C(12074),
      SIMDE_POLY16_C(51186),
      SIMDE_POLY16_C( 3594),
      SIMDE_POLY16_C(13122),
      SIMDE_POLY16_C(45686),
      SIMDE_POLY16_C(43456),
      SIMDE_POLY16_C(46579),
      SIMDE_POLY16_C(23409),
      SIMDE_POLY16_C(19941),
      SIMDE_POLY16_C( 7691),
      SIMDE_POLY16_C(26111),
      SIMDE_POLY16_C( 3316),
      SIMDE_POLY16_C(14318),
      SIMDE_POLY16_C(64360),
      SIMDE_POLY16_C(64763),
      SIMDE_POLY16_C(60256),
      SIMDE_POLY16_C(57953),
      }
    },

  };

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

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

    r_ = simde_vld3q_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 (int i = 0 ; i < 8 ; i++) {
    simde_poly16x8_t a = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
    simde_poly16x8_t c = simde_test_arm_neon_random_p16x8();
    simde_poly16x8x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_p16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p16x8(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_poly16_t buf[24];
    simde_vst3q_p16(buf, d);

    simde_test_codegen_write_vp16(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3q_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 a[6];
  } test_vec[] = {
    { { SIMDE_POLY64_C(18060883008768479347), SIMDE_POLY64_C( 5018011187030834501) },
      { SIMDE_POLY64_C(11625139375786132363), SIMDE_POLY64_C( 5059326699072687921) },
      { SIMDE_POLY64_C( 2974855029542469350), SIMDE_POLY64_C( 5361348160817082507) },
      {
      SIMDE_POLY64_C(18060883008768479347),
      SIMDE_POLY64_C(11625139375786132363),
      SIMDE_POLY64_C( 2974855029542469350),
      SIMDE_POLY64_C( 5018011187030834501),
      SIMDE_POLY64_C( 5059326699072687921),
      SIMDE_POLY64_C( 5361348160817082507),
      }
    },
    { { SIMDE_POLY64_C( 9666145736659077849), SIMDE_POLY64_C( 4878956801423443611) },
      { SIMDE_POLY64_C( 4131166095989137223), SIMDE_POLY64_C( 3824614212338648586) },
      { SIMDE_POLY64_C( 8298128430671186765), SIMDE_POLY64_C( 5441640290016459493) },
      {
      SIMDE_POLY64_C( 9666145736659077849),
      SIMDE_POLY64_C( 4131166095989137223),
      SIMDE_POLY64_C( 8298128430671186765),
      SIMDE_POLY64_C( 4878956801423443611),
      SIMDE_POLY64_C( 3824614212338648586),
      SIMDE_POLY64_C( 5441640290016459493),
      }
    },
    { { SIMDE_POLY64_C(17968741216735860086), SIMDE_POLY64_C(14366999007002278096) },
      { SIMDE_POLY64_C(16134869119939451808), SIMDE_POLY64_C(15734070097341369356) },
      { SIMDE_POLY64_C( 7755862228120555706), SIMDE_POLY64_C(15660697304851506195) },
      {
      SIMDE_POLY64_C(17968741216735860086),
      SIMDE_POLY64_C(16134869119939451808),
      SIMDE_POLY64_C( 7755862228120555706),
      SIMDE_POLY64_C(14366999007002278096),
      SIMDE_POLY64_C(15734070097341369356),
      SIMDE_POLY64_C(15660697304851506195),
      }
    },
    { { SIMDE_POLY64_C( 6696073435993456404), SIMDE_POLY64_C( 7874199468129389832) },
      { SIMDE_POLY64_C(13014481120863339927), SIMDE_POLY64_C( 4697420632340706333) },
      { SIMDE_POLY64_C(14196257235655426390), SIMDE_POLY64_C(14801492728372883273) },
      {
      SIMDE_POLY64_C( 6696073435993456404),
      SIMDE_POLY64_C(13014481120863339927),
      SIMDE_POLY64_C(14196257235655426390),
      SIMDE_POLY64_C( 7874199468129389832),
      SIMDE_POLY64_C( 4697420632340706333),
      SIMDE_POLY64_C(14801492728372883273),
      }
    },
    { { SIMDE_POLY64_C( 6201908828263317436), SIMDE_POLY64_C( 4701157587375969231) },
      { SIMDE_POLY64_C( 1288570213115661407), SIMDE_POLY64_C( 5070620563681907291) },
      { SIMDE_POLY64_C(14304757290167917814), SIMDE_POLY64_C( 7940689536953233671) },
      {
      SIMDE_POLY64_C( 6201908828263317436),
      SIMDE_POLY64_C( 1288570213115661407),
      SIMDE_POLY64_C(14304757290167917814),
      SIMDE_POLY64_C( 4701157587375969231),
      SIMDE_POLY64_C( 5070620563681907291),
      SIMDE_POLY64_C( 7940689536953233671),
      }
    },
    { { SIMDE_POLY64_C( 7018133269242321547), SIMDE_POLY64_C(16090324530462093949) },
      { SIMDE_POLY64_C(12279788565508779948), SIMDE_POLY64_C(13276838393395555779) },
      { SIMDE_POLY64_C(12848893113834130153), SIMDE_POLY64_C( 4515709179427111651) },
      {
      SIMDE_POLY64_C( 7018133269242321547),
      SIMDE_POLY64_C(12279788565508779948),
      SIMDE_POLY64_C(12848893113834130153),
      SIMDE_POLY64_C(16090324530462093949),
      SIMDE_POLY64_C(13276838393395555779),
      SIMDE_POLY64_C( 4515709179427111651),
      }
    },
    { { SIMDE_POLY64_C( 1027750122758519029), SIMDE_POLY64_C(10835134783212806010) },
      { SIMDE_POLY64_C(13678511626096306923), SIMDE_POLY64_C( 9793135194231376919) },
      { SIMDE_POLY64_C(10467880760741186285), SIMDE_POLY64_C( 3640481109499192897) },
      {
      SIMDE_POLY64_C( 1027750122758519029),
      SIMDE_POLY64_C(13678511626096306923),
      SIMDE_POLY64_C(10467880760741186285),
      SIMDE_POLY64_C(10835134783212806010),
      SIMDE_POLY64_C( 9793135194231376919),
      SIMDE_POLY64_C( 3640481109499192897),
      }
    },
    { { SIMDE_POLY64_C(17913111364571958016), SIMDE_POLY64_C( 4885430699418526387) },
      { SIMDE_POLY64_C(10447718153612684372), SIMDE_POLY64_C(14726776052189705702) },
      { SIMDE_POLY64_C(10297550757555581711), SIMDE_POLY64_C( 7492758411626645857) },
      {
      SIMDE_POLY64_C(17913111364571958016),
      SIMDE_POLY64_C(10447718153612684372),
      SIMDE_POLY64_C(10297550757555581711),
      SIMDE_POLY64_C( 4885430699418526387),
      SIMDE_POLY64_C(14726776052189705702),
      SIMDE_POLY64_C( 7492758411626645857),
      }
    },

  };

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

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

    r_ = simde_vld3q_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 (int i = 0 ; i < 8 ; i++) {
    simde_poly64x2_t a = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
    simde_poly64x2_t c = simde_test_arm_neon_random_p64x2();
    simde_poly64x2x3_t d = {{a, b, c}};

    simde_test_arm_neon_write_p64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_arm_neon_write_p64x2(2, c, SIMDE_TEST_VEC_POS_MIDDLE);

    simde_poly64_t buf[6];
    simde_vst3q_p64(buf, d);

    simde_test_codegen_write_vp64(2, sizeof(buf) / sizeof(buf[0]), buf,
                                  SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16 r0[4];
    simde_bfloat16 r1[4];
    simde_bfloat16 r2[4];
    simde_bfloat16 a[12];
  } test_vec[] = {
    { {  SIMDE_BFLOAT16_VALUE( 96.588), SIMDE_BFLOAT16_VALUE( -  1.777),  SIMDE_BFLOAT16_VALUE( 46.463),  SIMDE_BFLOAT16_VALUE( 56.300) },
      {  SIMDE_BFLOAT16_VALUE( 56.067),  SIMDE_BFLOAT16_VALUE( 76.113), SIMDE_BFLOAT16_VALUE( - 80.190), SIMDE_BFLOAT16_VALUE( - 59.487) },
      { SIMDE_BFLOAT16_VALUE( - 85.440),  SIMDE_BFLOAT16_VALUE( 11.955),  SIMDE_BFLOAT16_VALUE( 31.790), SIMDE_BFLOAT16_VALUE( - 31.309) },
      {  SIMDE_BFLOAT16_VALUE( 96.588),  SIMDE_BFLOAT16_VALUE( 56.067), SIMDE_BFLOAT16_VALUE( - 85.440), SIMDE_BFLOAT16_VALUE( -  1.777),
         SIMDE_BFLOAT16_VALUE( 76.113),  SIMDE_BFLOAT16_VALUE( 11.955),  SIMDE_BFLOAT16_VALUE( 46.463), SIMDE_BFLOAT16_VALUE( - 80.190),
         SIMDE_BFLOAT16_VALUE( 31.790),  SIMDE_BFLOAT16_VALUE( 56.300), SIMDE_BFLOAT16_VALUE( - 59.487), SIMDE_BFLOAT16_VALUE( - 31.309) } },
    { { SIMDE_BFLOAT16_VALUE( - 63.610),  SIMDE_BFLOAT16_VALUE(  8.056), SIMDE_BFLOAT16_VALUE( - 12.504),  SIMDE_BFLOAT16_VALUE( 76.738) },
      { SIMDE_BFLOAT16_VALUE( - 48.058), SIMDE_BFLOAT16_VALUE( -  5.714), SIMDE_BFLOAT16_VALUE( -  3.043),  SIMDE_BFLOAT16_VALUE( 60.984) },
      { SIMDE_BFLOAT16_VALUE( - 90.940),  SIMDE_BFLOAT16_VALUE( 77.403), SIMDE_BFLOAT16_VALUE( - 57.046),  SIMDE_BFLOAT16_VALUE( 37.511) },
      { SIMDE_BFLOAT16_VALUE( - 63.610), SIMDE_BFLOAT16_VALUE( - 48.058), SIMDE_BFLOAT16_VALUE( - 90.940),  SIMDE_BFLOAT16_VALUE(  8.056),
        SIMDE_BFLOAT16_VALUE( -  5.714),  SIMDE_BFLOAT16_VALUE( 77.403), SIMDE_BFLOAT16_VALUE( - 12.504), SIMDE_BFLOAT16_VALUE( -  3.043),
        SIMDE_BFLOAT16_VALUE( - 57.046),  SIMDE_BFLOAT16_VALUE( 76.738),  SIMDE_BFLOAT16_VALUE( 60.984),  SIMDE_BFLOAT16_VALUE( 37.511) } },
    { {  SIMDE_BFLOAT16_VALUE( 93.849),  SIMDE_BFLOAT16_VALUE( 43.255),  SIMDE_BFLOAT16_VALUE( 95.638), SIMDE_BFLOAT16_VALUE( - 54.607) },
      {  SIMDE_BFLOAT16_VALUE( 99.776),  SIMDE_BFLOAT16_VALUE( 59.886),  SIMDE_BFLOAT16_VALUE( 53.777), SIMDE_BFLOAT16_VALUE( - 64.378) },
      { SIMDE_BFLOAT16_VALUE( - 44.354),  SIMDE_BFLOAT16_VALUE( 90.343), SIMDE_BFLOAT16_VALUE( - 22.346), SIMDE_BFLOAT16_VALUE( - 70.759) },
      {  SIMDE_BFLOAT16_VALUE( 93.849),  SIMDE_BFLOAT16_VALUE( 99.776), SIMDE_BFLOAT16_VALUE( - 44.354),  SIMDE_BFLOAT16_VALUE( 43.255),
         SIMDE_BFLOAT16_VALUE( 59.886),  SIMDE_BFLOAT16_VALUE( 90.343),  SIMDE_BFLOAT16_VALUE( 95.638),  SIMDE_BFLOAT16_VALUE( 53.777),
        SIMDE_BFLOAT16_VALUE( - 22.346), SIMDE_BFLOAT16_VALUE( - 54.607), SIMDE_BFLOAT16_VALUE( - 64.378), SIMDE_BFLOAT16_VALUE( - 70.759) } },
    { {  SIMDE_BFLOAT16_VALUE( 82.593), SIMDE_BFLOAT16_VALUE( - 78.757), SIMDE_BFLOAT16_VALUE( - 89.472), SIMDE_BFLOAT16_VALUE( - 65.210) },
      {  SIMDE_BFLOAT16_VALUE( 71.127),  SIMDE_BFLOAT16_VALUE( 81.667), SIMDE_BFLOAT16_VALUE( - 51.422),  SIMDE_BFLOAT16_VALUE( 71.658) },
      { SIMDE_BFLOAT16_VALUE( - 37.830), SIMDE_BFLOAT16_VALUE( - 63.633),  SIMDE_BFLOAT16_VALUE( 47.933),  SIMDE_BFLOAT16_VALUE(  6.764) },
      {  SIMDE_BFLOAT16_VALUE( 82.593),  SIMDE_BFLOAT16_VALUE( 71.127), SIMDE_BFLOAT16_VALUE( - 37.830), SIMDE_BFLOAT16_VALUE( - 78.757),
         SIMDE_BFLOAT16_VALUE( 81.667), SIMDE_BFLOAT16_VALUE( - 63.633), SIMDE_BFLOAT16_VALUE( - 89.472), SIMDE_BFLOAT16_VALUE( - 51.422),
         SIMDE_BFLOAT16_VALUE( 47.933), SIMDE_BFLOAT16_VALUE( - 65.210),  SIMDE_BFLOAT16_VALUE( 71.658),  SIMDE_BFLOAT16_VALUE(  6.764) } },
    { { SIMDE_BFLOAT16_VALUE( - 18.391),  SIMDE_BFLOAT16_VALUE( 36.835),  SIMDE_BFLOAT16_VALUE( 22.395),  SIMDE_BFLOAT16_VALUE(  6.510) },
      {  SIMDE_BFLOAT16_VALUE( 44.811), SIMDE_BFLOAT16_VALUE( - 12.385), SIMDE_BFLOAT16_VALUE( -  7.166), SIMDE_BFLOAT16_VALUE( - 93.173) },
      {  SIMDE_BFLOAT16_VALUE( 14.253),  SIMDE_BFLOAT16_VALUE( 90.608), SIMDE_BFLOAT16_VALUE( - 83.326), SIMDE_BFLOAT16_VALUE( - 35.862) },
      { SIMDE_BFLOAT16_VALUE( - 18.391),  SIMDE_BFLOAT16_VALUE( 44.811),  SIMDE_BFLOAT16_VALUE( 14.253),  SIMDE_BFLOAT16_VALUE( 36.835),
        SIMDE_BFLOAT16_VALUE( - 12.385),  SIMDE_BFLOAT16_VALUE( 90.608),  SIMDE_BFLOAT16_VALUE( 22.395), SIMDE_BFLOAT16_VALUE( -  7.166),
        SIMDE_BFLOAT16_VALUE( - 83.326),  SIMDE_BFLOAT16_VALUE(  6.510), SIMDE_BFLOAT16_VALUE( - 93.173), SIMDE_BFLOAT16_VALUE( - 35.862) } },
    { {  SIMDE_BFLOAT16_VALUE( 29.457),  SIMDE_BFLOAT16_VALUE( 71.643), SIMDE_BFLOAT16_VALUE( - 73.821), SIMDE_BFLOAT16_VALUE( - 57.149) },
      {  SIMDE_BFLOAT16_VALUE( 53.561),  SIMDE_BFLOAT16_VALUE( 52.606), SIMDE_BFLOAT16_VALUE( - 93.208),  SIMDE_BFLOAT16_VALUE( 61.772) },
      {  SIMDE_BFLOAT16_VALUE( 29.595), SIMDE_BFLOAT16_VALUE( -  0.911), SIMDE_BFLOAT16_VALUE( - 25.184), SIMDE_BFLOAT16_VALUE( - 63.522) },
      {  SIMDE_BFLOAT16_VALUE( 29.457),  SIMDE_BFLOAT16_VALUE( 53.561),  SIMDE_BFLOAT16_VALUE( 29.595),  SIMDE_BFLOAT16_VALUE( 71.643),
         SIMDE_BFLOAT16_VALUE( 52.606), SIMDE_BFLOAT16_VALUE( -  0.911), SIMDE_BFLOAT16_VALUE( - 73.821), SIMDE_BFLOAT16_VALUE( - 93.208),
        SIMDE_BFLOAT16_VALUE( - 25.184), SIMDE_BFLOAT16_VALUE( - 57.149),  SIMDE_BFLOAT16_VALUE( 61.772), SIMDE_BFLOAT16_VALUE( - 63.522) } },
    { { SIMDE_BFLOAT16_VALUE( - 25.263), SIMDE_BFLOAT16_VALUE( - 21.565),  SIMDE_BFLOAT16_VALUE( 30.769),  SIMDE_BFLOAT16_VALUE( 63.051) },
      {  SIMDE_BFLOAT16_VALUE(  9.949),  SIMDE_BFLOAT16_VALUE(  3.818),  SIMDE_BFLOAT16_VALUE( 91.706), SIMDE_BFLOAT16_VALUE( - 56.254) },
      { SIMDE_BFLOAT16_VALUE( - 62.534),  SIMDE_BFLOAT16_VALUE( 15.090),  SIMDE_BFLOAT16_VALUE( 33.667), SIMDE_BFLOAT16_VALUE( - 11.503) },
      { SIMDE_BFLOAT16_VALUE( - 25.263),  SIMDE_BFLOAT16_VALUE(  9.949), SIMDE_BFLOAT16_VALUE( - 62.534), SIMDE_BFLOAT16_VALUE( - 21.565),
         SIMDE_BFLOAT16_VALUE(  3.818),  SIMDE_BFLOAT16_VALUE( 15.090),  SIMDE_BFLOAT16_VALUE( 30.769),  SIMDE_BFLOAT16_VALUE( 91.706),
         SIMDE_BFLOAT16_VALUE( 33.667),  SIMDE_BFLOAT16_VALUE( 63.051), SIMDE_BFLOAT16_VALUE( - 56.254), SIMDE_BFLOAT16_VALUE( - 11.503) } },
    { {  SIMDE_BFLOAT16_VALUE(  8.202), SIMDE_BFLOAT16_VALUE( - 16.555),  SIMDE_BFLOAT16_VALUE( 92.084),  SIMDE_BFLOAT16_VALUE( 72.240) },
      { SIMDE_BFLOAT16_VALUE( - 95.149), SIMDE_BFLOAT16_VALUE( - 39.732), SIMDE_BFLOAT16_VALUE( - 56.675), SIMDE_BFLOAT16_VALUE( -  0.718) },
      {  SIMDE_BFLOAT16_VALUE( 73.858), SIMDE_BFLOAT16_VALUE( - 78.753), SIMDE_BFLOAT16_VALUE( - 19.882),  SIMDE_BFLOAT16_VALUE( 17.845) },
      {  SIMDE_BFLOAT16_VALUE(  8.202), SIMDE_BFLOAT16_VALUE( - 95.149),  SIMDE_BFLOAT16_VALUE( 73.858), SIMDE_BFLOAT16_VALUE( - 16.555),
        SIMDE_BFLOAT16_VALUE( - 39.732), SIMDE_BFLOAT16_VALUE( - 78.753),  SIMDE_BFLOAT16_VALUE( 92.084), SIMDE_BFLOAT16_VALUE( - 56.675),
        SIMDE_BFLOAT16_VALUE( - 19.882),  SIMDE_BFLOAT16_VALUE( 72.240), SIMDE_BFLOAT16_VALUE( -  0.718),  SIMDE_BFLOAT16_VALUE( 17.845) } },
  };

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

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

    r_ = simde_vld3_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);
  }

  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_bfloat16x12_t a = simde_vst3_bf16(r0, r1, r2);

    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_bf16x12(2, a, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_vst3q_bf16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  struct {
    simde_bfloat16 r0[8];
    simde_bfloat16 r1[8];
    simde_bfloat16 r2[8];
    simde_bfloat16 a[24];
  } test_vec[] = {
    { {  SIMDE_BFLOAT16_VALUE( 58.181), SIMDE_BFLOAT16_VALUE( - 74.070),  SIMDE_BFLOAT16_VALUE(  2.770),  SIMDE_BFLOAT16_VALUE( 89.824),
        SIMDE_BFLOAT16_VALUE( - 73.116),  SIMDE_BFLOAT16_VALUE( 77.533), SIMDE_BFLOAT16_VALUE( - 71.575),  SIMDE_BFLOAT16_VALUE( 68.580) },
      {  SIMDE_BFLOAT16_VALUE( 27.343),  SIMDE_BFLOAT16_VALUE( 89.326), SIMDE_BFLOAT16_VALUE( - 80.249), SIMDE_BFLOAT16_VALUE( - 44.763),
         SIMDE_BFLOAT16_VALUE( 75.289), SIMDE_BFLOAT16_VALUE( -  8.705),  SIMDE_BFLOAT16_VALUE( 79.289), SIMDE_BFLOAT16_VALUE( - 12.997) },
      {  SIMDE_BFLOAT16_VALUE( 88.201), SIMDE_BFLOAT16_VALUE( - 99.297),  SIMDE_BFLOAT16_VALUE( 94.888), SIMDE_BFLOAT16_VALUE( - 94.830),
        SIMDE_BFLOAT16_VALUE( - 82.408), SIMDE_BFLOAT16_VALUE( - 38.270),  SIMDE_BFLOAT16_VALUE( 33.263),  SIMDE_BFLOAT16_VALUE( 12.688) },
      {  SIMDE_BFLOAT16_VALUE( 58.181),  SIMDE_BFLOAT16_VALUE( 27.343),  SIMDE_BFLOAT16_VALUE( 88.201), SIMDE_BFLOAT16_VALUE( - 74.070),
         SIMDE_BFLOAT16_VALUE( 89.326), SIMDE_BFLOAT16_VALUE( - 99.297),  SIMDE_BFLOAT16_VALUE(  2.770), SIMDE_BFLOAT16_VALUE( - 80.249),
         SIMDE_BFLOAT16_VALUE( 94.888),  SIMDE_BFLOAT16_VALUE( 89.824), SIMDE_BFLOAT16_VALUE( - 44.763), SIMDE_BFLOAT16_VALUE( - 94.830),
        SIMDE_BFLOAT16_VALUE( - 73.116),  SIMDE_BFLOAT16_VALUE( 75.289), SIMDE_BFLOAT16_VALUE( - 82.408),  SIMDE_BFLOAT16_VALUE( 77.533),
        SIMDE_BFLOAT16_VALUE( -  8.705), SIMDE_BFLOAT16_VALUE( - 38.270), SIMDE_BFLOAT16_VALUE( - 71.575),  SIMDE_BFLOAT16_VALUE( 79.289),
         SIMDE_BFLOAT16_VALUE( 33.263),  SIMDE_BFLOAT16_VALUE( 68.580), SIMDE_BFLOAT16_VALUE( - 12.997),  SIMDE_BFLOAT16_VALUE( 12.688) } },
    { { SIMDE_BFLOAT16_VALUE( - 68.228), SIMDE_BFLOAT16_VALUE( - 30.795), SIMDE_BFLOAT16_VALUE( - 93.060),  SIMDE_BFLOAT16_VALUE( 88.656),
         SIMDE_BFLOAT16_VALUE( 71.174), SIMDE_BFLOAT16_VALUE( - 83.014),  SIMDE_BFLOAT16_VALUE( 34.681), SIMDE_BFLOAT16_VALUE( - 81.096) },
      {  SIMDE_BFLOAT16_VALUE( 80.371),  SIMDE_BFLOAT16_VALUE( 94.314), SIMDE_BFLOAT16_VALUE( - 28.329), SIMDE_BFLOAT16_VALUE( - 76.339),
         SIMDE_BFLOAT16_VALUE( 13.986),  SIMDE_BFLOAT16_VALUE( 15.222),  SIMDE_BFLOAT16_VALUE( 76.136), SIMDE_BFLOAT16_VALUE( - 47.982) },
      { SIMDE_BFLOAT16_VALUE( - 71.178), SIMDE_BFLOAT16_VALUE( - 44.770), SIMDE_BFLOAT16_VALUE( - 67.133),  SIMDE_BFLOAT16_VALUE( 84.421),
        SIMDE_BFLOAT16_VALUE( - 74.326), SIMDE_BFLOAT16_VALUE( -  0.009), SIMDE_BFLOAT16_VALUE( - 15.213),  SIMDE_BFLOAT16_VALUE( 78.007) },
      { SIMDE_BFLOAT16_VALUE( - 68.228),  SIMDE_BFLOAT16_VALUE( 80.371), SIMDE_BFLOAT16_VALUE( - 71.178), SIMDE_BFLOAT16_VALUE( - 30.795),
         SIMDE_BFLOAT16_VALUE( 94.314), SIMDE_BFLOAT16_VALUE( - 44.770), SIMDE_BFLOAT16_VALUE( - 93.060), SIMDE_BFLOAT16_VALUE( - 28.329),
        SIMDE_BFLOAT16_VALUE( - 67.133),  SIMDE_BFLOAT16_VALUE( 88.656), SIMDE_BFLOAT16_VALUE( - 76.339),  SIMDE_BFLOAT16_VALUE( 84.421),
         SIMDE_BFLOAT16_VALUE( 71.174),  SIMDE_BFLOAT16_VALUE( 13.986), SIMDE_BFLOAT16_VALUE( - 74.326), SIMDE_BFLOAT16_VALUE( - 83.014),
         SIMDE_BFLOAT16_VALUE( 15.222), SIMDE_BFLOAT16_VALUE( -  0.009),  SIMDE_BFLOAT16_VALUE( 34.681),  SIMDE_BFLOAT16_VALUE( 76.136),
        SIMDE_BFLOAT16_VALUE( - 15.213), SIMDE_BFLOAT16_VALUE( - 81.096), SIMDE_BFLOAT16_VALUE( - 47.982),  SIMDE_BFLOAT16_VALUE( 78.007) } },
    { { SIMDE_BFLOAT16_VALUE( - 99.134), SIMDE_BFLOAT16_VALUE( - 13.860), SIMDE_BFLOAT16_VALUE( - 92.713), SIMDE_BFLOAT16_VALUE( - 86.987),
        SIMDE_BFLOAT16_VALUE( - 46.071), SIMDE_BFLOAT16_VALUE( - 46.428), SIMDE_BFLOAT16_VALUE( - 55.358),  SIMDE_BFLOAT16_VALUE( 14.468) },
      { SIMDE_BFLOAT16_VALUE( - 16.248), SIMDE_BFLOAT16_VALUE( - 50.317), SIMDE_BFLOAT16_VALUE( - 57.890),  SIMDE_BFLOAT16_VALUE( 13.081),
         SIMDE_BFLOAT16_VALUE( 58.363),  SIMDE_BFLOAT16_VALUE(  4.390),  SIMDE_BFLOAT16_VALUE(  3.684), SIMDE_BFLOAT16_VALUE( - 18.959) },
      {  SIMDE_BFLOAT16_VALUE( 85.928),  SIMDE_BFLOAT16_VALUE( 31.159),  SIMDE_BFLOAT16_VALUE( 77.301),  SIMDE_BFLOAT16_VALUE( 10.011),
        SIMDE_BFLOAT16_VALUE( - 90.228), SIMDE_BFLOAT16_VALUE( - 85.132),  SIMDE_BFLOAT16_VALUE( 25.086), SIMDE_BFLOAT16_VALUE( - 86.977) },
      { SIMDE_BFLOAT16_VALUE( - 99.134), SIMDE_BFLOAT16_VALUE( - 16.248),  SIMDE_BFLOAT16_VALUE( 85.928), SIMDE_BFLOAT16_VALUE( - 13.860),
        SIMDE_BFLOAT16_VALUE( - 50.317),  SIMDE_BFLOAT16_VALUE( 31.159), SIMDE_BFLOAT16_VALUE( - 92.713), SIMDE_BFLOAT16_VALUE( - 57.890),
         SIMDE_BFLOAT16_VALUE( 77.301), SIMDE_BFLOAT16_VALUE( - 86.987),  SIMDE_BFLOAT16_VALUE( 13.081),  SIMDE_BFLOAT16_VALUE( 10.011),
        SIMDE_BFLOAT16_VALUE( - 46.071),  SIMDE_BFLOAT16_VALUE( 58.363), SIMDE_BFLOAT16_VALUE( - 90.228), SIMDE_BFLOAT16_VALUE( - 46.428),
         SIMDE_BFLOAT16_VALUE(  4.390), SIMDE_BFLOAT16_VALUE( - 85.132), SIMDE_BFLOAT16_VALUE( - 55.358),  SIMDE_BFLOAT16_VALUE(  3.684),
         SIMDE_BFLOAT16_VALUE( 25.086),  SIMDE_BFLOAT16_VALUE( 14.468), SIMDE_BFLOAT16_VALUE( - 18.959), SIMDE_BFLOAT16_VALUE( - 86.977) } },
    { {  SIMDE_BFLOAT16_VALUE( 30.458), SIMDE_BFLOAT16_VALUE( - 38.116), SIMDE_BFLOAT16_VALUE( - 23.410), SIMDE_BFLOAT16_VALUE( - 76.968),
         SIMDE_BFLOAT16_VALUE( 94.449), SIMDE_BFLOAT16_VALUE( - 25.593), SIMDE_BFLOAT16_VALUE( - 22.524),  SIMDE_BFLOAT16_VALUE( 61.018) },
      {  SIMDE_BFLOAT16_VALUE( 52.150),  SIMDE_BFLOAT16_VALUE(  3.559), SIMDE_BFLOAT16_VALUE( - 11.531), SIMDE_BFLOAT16_VALUE( - 16.763),
         SIMDE_BFLOAT16_VALUE( 58.053),  SIMDE_BFLOAT16_VALUE( 59.411), SIMDE_BFLOAT16_VALUE( - 87.074),  SIMDE_BFLOAT16_VALUE( 76.655) },
      {  SIMDE_BFLOAT16_VALUE( 31.620), SIMDE_BFLOAT16_VALUE( -  8.034),  SIMDE_BFLOAT16_VALUE( 77.915),  SIMDE_BFLOAT16_VALUE( 90.009),
         SIMDE_BFLOAT16_VALUE( 40.231), SIMDE_BFLOAT16_VALUE( - 28.817), SIMDE_BFLOAT16_VALUE( - 12.330), SIMDE_BFLOAT16_VALUE( - 39.982) },
      {  SIMDE_BFLOAT16_VALUE( 30.458),  SIMDE_BFLOAT16_VALUE( 52.150),  SIMDE_BFLOAT16_VALUE( 31.620), SIMDE_BFLOAT16_VALUE( - 38.116),
         SIMDE_BFLOAT16_VALUE(  3.559), SIMDE_BFLOAT16_VALUE( -  8.034), SIMDE_BFLOAT16_VALUE( - 23.410), SIMDE_BFLOAT16_VALUE( - 11.531),
         SIMDE_BFLOAT16_VALUE( 77.915), SIMDE_BFLOAT16_VALUE( - 76.968), SIMDE_BFLOAT16_VALUE( - 16.763),  SIMDE_BFLOAT16_VALUE( 90.009),
         SIMDE_BFLOAT16_VALUE( 94.449),  SIMDE_BFLOAT16_VALUE( 58.053),  SIMDE_BFLOAT16_VALUE( 40.231), SIMDE_BFLOAT16_VALUE( - 25.593),
         SIMDE_BFLOAT16_VALUE( 59.411), SIMDE_BFLOAT16_VALUE( - 28.817), SIMDE_BFLOAT16_VALUE( - 22.524), SIMDE_BFLOAT16_VALUE( - 87.074),
        SIMDE_BFLOAT16_VALUE( - 12.330),  SIMDE_BFLOAT16_VALUE( 61.018),  SIMDE_BFLOAT16_VALUE( 76.655), SIMDE_BFLOAT16_VALUE( - 39.982) } },
    { {  SIMDE_BFLOAT16_VALUE(  3.549), SIMDE_BFLOAT16_VALUE( - 62.385), SIMDE_BFLOAT16_VALUE( - 33.808),  SIMDE_BFLOAT16_VALUE( 25.597),
        SIMDE_BFLOAT16_VALUE( - 26.574),  SIMDE_BFLOAT16_VALUE( 78.316),  SIMDE_BFLOAT16_VALUE(  6.102),  SIMDE_BFLOAT16_VALUE( 23.670) },
      { SIMDE_BFLOAT16_VALUE( -  9.134),  SIMDE_BFLOAT16_VALUE( 38.254),  SIMDE_BFLOAT16_VALUE( 59.581),  SIMDE_BFLOAT16_VALUE( 25.105),
         SIMDE_BFLOAT16_VALUE( 24.218), SIMDE_BFLOAT16_VALUE( - 76.984), SIMDE_BFLOAT16_VALUE( - 55.415),  SIMDE_BFLOAT16_VALUE( 57.498) },
      {  SIMDE_BFLOAT16_VALUE( 75.669),  SIMDE_BFLOAT16_VALUE( 51.566),  SIMDE_BFLOAT16_VALUE( 76.383), SIMDE_BFLOAT16_VALUE( - 88.090),
        SIMDE_BFLOAT16_VALUE( - 39.212), SIMDE_BFLOAT16_VALUE( - 12.840), SIMDE_BFLOAT16_VALUE( - 66.692), SIMDE_BFLOAT16_VALUE( - 49.509) },
      {  SIMDE_BFLOAT16_VALUE(  3.549), SIMDE_BFLOAT16_VALUE( -  9.134),  SIMDE_BFLOAT16_VALUE( 75.669), SIMDE_BFLOAT16_VALUE( - 62.385),
         SIMDE_BFLOAT16_VALUE( 38.254),  SIMDE_BFLOAT16_VALUE( 51.566), SIMDE_BFLOAT16_VALUE( - 33.808),  SIMDE_BFLOAT16_VALUE( 59.581),
         SIMDE_BFLOAT16_VALUE( 76.383),  SIMDE_BFLOAT16_VALUE( 25.597),  SIMDE_BFLOAT16_VALUE( 25.105), SIMDE_BFLOAT16_VALUE( - 88.090),
        SIMDE_BFLOAT16_VALUE( - 26.574),  SIMDE_BFLOAT16_VALUE( 24.218), SIMDE_BFLOAT16_VALUE( - 39.212),  SIMDE_BFLOAT16_VALUE( 78.316),
        SIMDE_BFLOAT16_VALUE( - 76.984), SIMDE_BFLOAT16_VALUE( - 12.840),  SIMDE_BFLOAT16_VALUE(  6.102), SIMDE_BFLOAT16_VALUE( - 55.415),
        SIMDE_BFLOAT16_VALUE( - 66.692),  SIMDE_BFLOAT16_VALUE( 23.670),  SIMDE_BFLOAT16_VALUE( 57.498), SIMDE_BFLOAT16_VALUE( - 49.509) } },
    { {  SIMDE_BFLOAT16_VALUE( 77.925),  SIMDE_BFLOAT16_VALUE( 25.899),  SIMDE_BFLOAT16_VALUE( 36.333),  SIMDE_BFLOAT16_VALUE( 28.714),
        SIMDE_BFLOAT16_VALUE( - 36.012), SIMDE_BFLOAT16_VALUE( - 29.170), SIMDE_BFLOAT16_VALUE( - 11.929),  SIMDE_BFLOAT16_VALUE( 80.628) },
      { SIMDE_BFLOAT16_VALUE( - 83.488),  SIMDE_BFLOAT16_VALUE(  9.307),  SIMDE_BFLOAT16_VALUE( 58.801),  SIMDE_BFLOAT16_VALUE( 94.273),
        SIMDE_BFLOAT16_VALUE( - 86.784),  SIMDE_BFLOAT16_VALUE( 18.524),  SIMDE_BFLOAT16_VALUE( 82.621), SIMDE_BFLOAT16_VALUE( - 81.155) },
      {  SIMDE_BFLOAT16_VALUE(  4.254),  SIMDE_BFLOAT16_VALUE( 15.849),  SIMDE_BFLOAT16_VALUE( 96.241), SIMDE_BFLOAT16_VALUE( -  5.090),
         SIMDE_BFLOAT16_VALUE( 47.936), SIMDE_BFLOAT16_VALUE( - 88.844),  SIMDE_BFLOAT16_VALUE( 93.898), SIMDE_BFLOAT16_VALUE( - 39.333) },
      {  SIMDE_BFLOAT16_VALUE( 77.925), SIMDE_BFLOAT16_VALUE( - 83.488),  SIMDE_BFLOAT16_VALUE(  4.254),  SIMDE_BFLOAT16_VALUE( 25.899),
         SIMDE_BFLOAT16_VALUE(  9.307),  SIMDE_BFLOAT16_VALUE( 15.849),  SIMDE_BFLOAT16_VALUE( 36.333),  SIMDE_BFLOAT16_VALUE( 58.801),
         SIMDE_BFLOAT16_VALUE( 96.241),  SIMDE_BFLOAT16_VALUE( 28.714),  SIMDE_BFLOAT16_VALUE( 94.273), SIMDE_BFLOAT16_VALUE( -  5.090),
        SIMDE_BFLOAT16_VALUE( - 36.012), SIMDE_BFLOAT16_VALUE( - 86.784),  SIMDE_BFLOAT16_VALUE( 47.936), SIMDE_BFLOAT16_VALUE( - 29.170),
         SIMDE_BFLOAT16_VALUE( 18.524), SIMDE_BFLOAT16_VALUE( - 88.844), SIMDE_BFLOAT16_VALUE( - 11.929),  SIMDE_BFLOAT16_VALUE( 82.621),
         SIMDE_BFLOAT16_VALUE( 93.898),  SIMDE_BFLOAT16_VALUE( 80.628), SIMDE_BFLOAT16_VALUE( - 81.155), SIMDE_BFLOAT16_VALUE( - 39.333) } },
    { { SIMDE_BFLOAT16_VALUE( - 60.634),  SIMDE_BFLOAT16_VALUE( 75.923), SIMDE_BFLOAT16_VALUE( - 88.231), SIMDE_BFLOAT16_VALUE( - 87.014),
         SIMDE_BFLOAT16_VALUE( 31.833), SIMDE_BFLOAT16_VALUE( - 64.054),  SIMDE_BFLOAT16_VALUE( 59.268), SIMDE_BFLOAT16_VALUE( - 10.180) },
      {  SIMDE_BFLOAT16_VALUE( 89.023), SIMDE_BFLOAT16_VALUE( - 72.712),  SIMDE_BFLOAT16_VALUE( 78.505),  SIMDE_BFLOAT16_VALUE( 11.950),
         SIMDE_BFLOAT16_VALUE( 37.332), SIMDE_BFLOAT16_VALUE( - 36.100), SIMDE_BFLOAT16_VALUE( - 81.490),  SIMDE_BFLOAT16_VALUE( 70.182) },
      {  SIMDE_BFLOAT16_VALUE( 83.870), SIMDE_BFLOAT16_VALUE( - 68.922), SIMDE_BFLOAT16_VALUE( - 62.692), SIMDE_BFLOAT16_VALUE( - 32.504),
        SIMDE_BFLOAT16_VALUE( - 81.255),  SIMDE_BFLOAT16_VALUE( 91.033), SIMDE_BFLOAT16_VALUE( - 71.163), SIMDE_BFLOAT16_VALUE( - 22.896) },
      { SIMDE_BFLOAT16_VALUE( - 60.634),  SIMDE_BFLOAT16_VALUE( 89.023),  SIMDE_BFLOAT16_VALUE( 83.870),  SIMDE_BFLOAT16_VALUE( 75.923),
        SIMDE_BFLOAT16_VALUE( - 72.712), SIMDE_BFLOAT16_VALUE( - 68.922), SIMDE_BFLOAT16_VALUE( - 88.231),  SIMDE_BFLOAT16_VALUE( 78.505),
        SIMDE_BFLOAT16_VALUE( - 62.692), SIMDE_BFLOAT16_VALUE( - 87.014),  SIMDE_BFLOAT16_VALUE( 11.950), SIMDE_BFLOAT16_VALUE( - 32.504),
         SIMDE_BFLOAT16_VALUE( 31.833),  SIMDE_BFLOAT16_VALUE( 37.332), SIMDE_BFLOAT16_VALUE( - 81.255), SIMDE_BFLOAT16_VALUE( - 64.054),
        SIMDE_BFLOAT16_VALUE( - 36.100),  SIMDE_BFLOAT16_VALUE( 91.033),  SIMDE_BFLOAT16_VALUE( 59.268), SIMDE_BFLOAT16_VALUE( - 81.490),
        SIMDE_BFLOAT16_VALUE( - 71.163), SIMDE_BFLOAT16_VALUE( - 10.180),  SIMDE_BFLOAT16_VALUE( 70.182), SIMDE_BFLOAT16_VALUE( - 22.896) } },
    { {  SIMDE_BFLOAT16_VALUE( 30.680),  SIMDE_BFLOAT16_VALUE( 70.181),  SIMDE_BFLOAT16_VALUE( 61.927),  SIMDE_BFLOAT16_VALUE( 89.100),
        SIMDE_BFLOAT16_VALUE( - 41.719),  SIMDE_BFLOAT16_VALUE( 79.129),  SIMDE_BFLOAT16_VALUE( 27.325), SIMDE_BFLOAT16_VALUE( - 19.893) },
      { SIMDE_BFLOAT16_VALUE( - 95.074),  SIMDE_BFLOAT16_VALUE( 39.687), SIMDE_BFLOAT16_VALUE( - 65.504),  SIMDE_BFLOAT16_VALUE( 87.309),
        SIMDE_BFLOAT16_VALUE( - 63.357),  SIMDE_BFLOAT16_VALUE( 37.794),  SIMDE_BFLOAT16_VALUE( 30.688),  SIMDE_BFLOAT16_VALUE(  3.602) },
      { SIMDE_BFLOAT16_VALUE( - 90.304), SIMDE_BFLOAT16_VALUE( - 57.865),  SIMDE_BFLOAT16_VALUE(  1.237),  SIMDE_BFLOAT16_VALUE( 95.036),
        SIMDE_BFLOAT16_VALUE( - 46.211),  SIMDE_BFLOAT16_VALUE( 17.337),  SIMDE_BFLOAT16_VALUE( 24.755),  SIMDE_BFLOAT16_VALUE( 20.183) },
      {  SIMDE_BFLOAT16_VALUE( 30.680), SIMDE_BFLOAT16_VALUE( - 95.074), SIMDE_BFLOAT16_VALUE( - 90.304),  SIMDE_BFLOAT16_VALUE( 70.181),
         SIMDE_BFLOAT16_VALUE( 39.687), SIMDE_BFLOAT16_VALUE( - 57.865),  SIMDE_BFLOAT16_VALUE( 61.927), SIMDE_BFLOAT16_VALUE( - 65.504),
         SIMDE_BFLOAT16_VALUE(  1.237),  SIMDE_BFLOAT16_VALUE( 89.100),  SIMDE_BFLOAT16_VALUE( 87.309),  SIMDE_BFLOAT16_VALUE( 95.036),
        SIMDE_BFLOAT16_VALUE( - 41.719), SIMDE_BFLOAT16_VALUE( - 63.357), SIMDE_BFLOAT16_VALUE( - 46.211),  SIMDE_BFLOAT16_VALUE( 79.129),
         SIMDE_BFLOAT16_VALUE( 37.794),  SIMDE_BFLOAT16_VALUE( 17.337),  SIMDE_BFLOAT16_VALUE( 27.325),  SIMDE_BFLOAT16_VALUE( 30.688),
         SIMDE_BFLOAT16_VALUE( 24.755), SIMDE_BFLOAT16_VALUE( - 19.893),  SIMDE_BFLOAT16_VALUE(  3.602),  SIMDE_BFLOAT16_VALUE( 20.183) } },
  };

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

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

    r_ = simde_vld3q_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);
  }

  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_bfloat16x24_t a = simde_vst3q_bf16(r0, r1, r2);

    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_bf16x24(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(vst3_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_u64)

SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_p64)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3_bf16)
SIMDE_TEST_FUNC_LIST_ENTRY(vst3q_bf16)
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_END

#include "test-neon-footer.h"